// This C++ source file was generated by the TTCN-3 compiler
// of the TTCN-3 Test Executor version 11.1.0
// The generation of user and time information were disabled by the -D flag.

// Copyright (c) 2000-2025 Ericsson Telecom AB

// Do not edit this file unless you know what you are doing.

/* Including header files */

#include "RLCMAC_CSN1_Types.hh"

namespace RLCMAC__CSN1__Types {

/* Literal string constants */

const unsigned char bs_1_bits[] = { 0 },
bs_2_bits[] = { 0 },
bs_3_bits[] = { 2 },
bs_0_bits[] = { 1 },
bs_4_bits[] = { 1 },
bs_7_bits[] = { 1 },
bs_8_bits[] = { 5 },
bs_5_bits[] = { 3 },
bs_6_bits[] = { 3 },
bs_9_bits[] = { 3 },
bs_10_bits[] = { 51 },
bs_11_bits[] = { 43 },
bs_12_bits[] = { 27 },
bs_13_bits[] = { 59 },
bs_14_bits[] = { 7 },
bs_15_bits[] = { 39 };
extern const BITSTRING bs_1(1, bs_1_bits),
bs_2(2, bs_2_bits),
bs_3(2, bs_3_bits),
bs_0(1, bs_0_bits),
bs_4(2, bs_4_bits),
bs_7(3, bs_7_bits),
bs_8(3, bs_8_bits),
bs_5(2, bs_5_bits),
bs_6(3, bs_6_bits),
bs_9(6, bs_9_bits),
bs_10(6, bs_10_bits),
bs_11(6, bs_11_bits),
bs_12(6, bs_12_bits),
bs_13(6, bs_13_bits),
bs_14(6, bs_14_bits),
bs_15(6, bs_15_bits);
const unsigned char module_checksum[] = { 0xb3, 0xf6, 0xdc, 0x8a, 0x16, 0x11, 0x93, 0x63, 0x07, 0xfe, 0x4e, 0x21, 0x2d, 0x79, 0xf0, 0xf7 };

/* Global variable definitions */

const TTCN_RAWdescriptor_t RlcmacDlCtrlMsgType_raw_ = {6,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RlcmacDlCtrlMsgType
const TTCN_Typedescriptor_t RlcmacDlCtrlMsgType_descr_ = { "@RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType", NULL, &RlcmacDlCtrlMsgType_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RlcmacDlCtrlMsgType_default_coding("RAW");
const TTCN_RAWdescriptor_t RlcmacUlCtrlMsgType_raw_ = {6,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RlcmacUlCtrlMsgType
const TTCN_Typedescriptor_t RlcmacUlCtrlMsgType_descr_ = { "@RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType", NULL, &RlcmacUlCtrlMsgType_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RlcmacUlCtrlMsgType_default_coding("RAW");
const TTCN_RAWdescriptor_t EgprsChCodingCommand_raw_ = {4,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for EgprsChCodingCommand
const TTCN_Typedescriptor_t EgprsChCodingCommand_descr_ = { "@RLCMAC_CSN1_Types.EgprsChCodingCommand", NULL, &EgprsChCodingCommand_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EgprsChCodingCommand_default_coding("RAW");
const TTCN_RAWdescriptor_t EgprsWindowSize_raw_ = {5,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for EgprsWindowSize
const TTCN_Typedescriptor_t EgprsWindowSize_descr_ = { "@RLCMAC_CSN1_Types.EgprsWindowSize", NULL, &EgprsWindowSize_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EgprsWindowSize_default_coding("RAW");
const TTCN_RAWdescriptor_t NullGlobalTfi_presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       NullGlobalTfi_presence_xer_ = { {"presence>\n", "presence>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t NullGlobalTfi_presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t NullGlobalTfi_presence_descr_ = { "@RLCMAC_CSN1_Types.NullGlobalTfi.presence", &BITSTRING_ber_, &NullGlobalTfi_presence_raw_, NULL, &NullGlobalTfi_presence_xer_, &BITSTRING_json_, &NullGlobalTfi_presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NullGlobalTfi_presence_default_coding("RAW");
const TTCN_RAWdescriptor_t GlobalTfi_is__dl__tfi_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       GlobalTfi_is__dl__tfi_xer_ = { {"is_dl_tfi>\n", "is_dl_tfi>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int GlobalTfi_is__dl__tfi_oer_ext_arr_[0] = {};
const int GlobalTfi_is__dl__tfi_oer_p_[0] = {};
const TTCN_OERdescriptor_t GlobalTfi_is__dl__tfi_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GlobalTfi_is__dl__tfi_oer_ext_arr_, 0, GlobalTfi_is__dl__tfi_oer_p_};
const TTCN_Typedescriptor_t GlobalTfi_is__dl__tfi_descr_ = { "@RLCMAC_CSN1_Types.GlobalTfi.is_dl_tfi", &BOOLEAN_ber_, &GlobalTfi_is__dl__tfi_raw_, &BOOLEAN_text_, &GlobalTfi_is__dl__tfi_xer_, &BOOLEAN_json_, &GlobalTfi_is__dl__tfi_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GlobalTfi_is__dl__tfi_default_coding("RAW");
const TTCN_RAWdescriptor_t GlobalTfi_tfi_raw_ = {5,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       GlobalTfi_tfi_xer_ = { {"tfi>\n", "tfi>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GlobalTfi_tfi_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GlobalTfi_tfi_descr_ = { "@RLCMAC_CSN1_Types.GlobalTfi.tfi", &INTEGER_ber_, &GlobalTfi_tfi_raw_, &INTEGER_text_, &GlobalTfi_tfi_xer_, &INTEGER_json_, &GlobalTfi_tfi_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GlobalTfi_tfi_default_coding("RAW");
const TTCN_RAWdescriptor_t GlobalTfi_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for GlobalTfi
const TTCN_Typedescriptor_t GlobalTfi_descr_ = { "@RLCMAC_CSN1_Types.GlobalTfi", NULL, &GlobalTfi_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GlobalTfi_default_coding("RAW");
const TTCN_RAWdescriptor_t NullGlobalTfi_global__tfi_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for NullGlobalTfi_global__tfi
const TTCN_Typedescriptor_t NullGlobalTfi_global__tfi_descr_ = { "@RLCMAC_CSN1_Types.NullGlobalTfi.global_tfi", NULL, &NullGlobalTfi_global__tfi_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NullGlobalTfi_global__tfi_default_coding("RAW");
const TTCN_RAWdescriptor_t NullGlobalTfi_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for NullGlobalTfi
const TTCN_Typedescriptor_t NullGlobalTfi_descr_ = { "@RLCMAC_CSN1_Types.NullGlobalTfi", NULL, &NullGlobalTfi_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NullGlobalTfi_default_coding("RAW");
const TTCN_RAWdescriptor_t TenTlli_presence_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       TenTlli_presence_xer_ = { {"presence>\n", "presence>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t TenTlli_presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t TenTlli_presence_descr_ = { "@RLCMAC_CSN1_Types.TenTlli.presence", &BITSTRING_ber_, &TenTlli_presence_raw_, NULL, &TenTlli_presence_xer_, &BITSTRING_json_, &TenTlli_presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TenTlli_presence_default_coding("RAW");
const TTCN_RAWdescriptor_t TenTlli_tlli_raw_ = {32,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,4,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       TenTlli_tlli_xer_ = { {"tlli>\n", "tlli>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int TenTlli_tlli_oer_ext_arr_[0] = {};
const int TenTlli_tlli_oer_p_[0] = {};
const TTCN_OERdescriptor_t TenTlli_tlli_oer_ = { -1, TRUE, 4, FALSE, 0, 0, TenTlli_tlli_oer_ext_arr_, 0, TenTlli_tlli_oer_p_};
const TTCN_Typedescriptor_t TenTlli_tlli_descr_ = { "@RLCMAC_CSN1_Types.TenTlli.tlli", &OCTETSTRING_ber_, &TenTlli_tlli_raw_, &OCTETSTRING_text_, &TenTlli_tlli_xer_, &OCTETSTRING_json_, &TenTlli_tlli_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TenTlli_tlli_default_coding("RAW");
const TTCN_RAWdescriptor_t TenTlli_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for TenTlli
const TTCN_Typedescriptor_t TenTlli_descr_ = { "@RLCMAC_CSN1_Types.TenTlli", NULL, &TenTlli_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TenTlli_default_coding("RAW");
const TTCN_RAWdescriptor_t GlobalTfiOrTlli_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for GlobalTfiOrTlli
const TTCN_Typedescriptor_t GlobalTfiOrTlli_descr_ = { "@RLCMAC_CSN1_Types.GlobalTfiOrTlli", NULL, &GlobalTfiOrTlli_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t GlobalTfiOrTlli_global__tfi_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for GlobalTfiOrTlli_global__tfi
const TTCN_Typedescriptor_t GlobalTfiOrTlli_global__tfi_descr_ = { "@RLCMAC_CSN1_Types.GlobalTfiOrTlli.global_tfi", NULL, &GlobalTfiOrTlli_global__tfi_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GlobalTfiOrTlli_global__tfi_default_coding("RAW");
const TTCN_RAWdescriptor_t GlobalTfiOrTlli_tlli_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for GlobalTfiOrTlli_tlli
const TTCN_Typedescriptor_t GlobalTfiOrTlli_tlli_descr_ = { "@RLCMAC_CSN1_Types.GlobalTfiOrTlli.tlli", NULL, &GlobalTfiOrTlli_tlli_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GlobalTfiOrTlli_tlli_default_coding("RAW");
UNIVERSAL_CHARSTRING GlobalTfiOrTlli_default_coding("RAW");
const TTCN_RAWdescriptor_t PageMode_raw_ = {2,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PageMode
const TTCN_Typedescriptor_t PageMode_descr_ = { "@RLCMAC_CSN1_Types.PageMode", NULL, &PageMode_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PageMode_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketDlAssignment_page__mode_raw_ = {2,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketDlAssignment_page__mode
const TTCN_Typedescriptor_t PacketDlAssignment_page__mode_descr_ = { "@RLCMAC_CSN1_Types.PacketDlAssignment.page_mode", NULL, &PacketDlAssignment_page__mode_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketDlAssignment_page__mode_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketDlAssignment_pres1_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketDlAssignment_pres1_xer_ = { {"pres1>\n", "pres1>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketDlAssignment_pres1_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketDlAssignment_pres1_descr_ = { "@RLCMAC_CSN1_Types.PacketDlAssignment.pres1", &BITSTRING_ber_, &PacketDlAssignment_pres1_raw_, NULL, &PacketDlAssignment_pres1_xer_, &BITSTRING_json_, &PacketDlAssignment_pres1_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketDlAssignment_pres1_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketDlAssignment_tfi__or__tlli_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketDlAssignment_tfi__or__tlli
const TTCN_Typedescriptor_t PacketDlAssignment_tfi__or__tlli_descr_ = { "@RLCMAC_CSN1_Types.PacketDlAssignment.tfi_or_tlli", NULL, &PacketDlAssignment_tfi__or__tlli_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketDlAssignment_tfi__or__tlli_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketDlAssignment_egprs2_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketDlAssignment_egprs2_xer_ = { {"egprs2>\n", "egprs2>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketDlAssignment_egprs2_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketDlAssignment_egprs2_descr_ = { "@RLCMAC_CSN1_Types.PacketDlAssignment.egprs2", &BITSTRING_ber_, &PacketDlAssignment_egprs2_raw_, NULL, &PacketDlAssignment_egprs2_xer_, &BITSTRING_json_, &PacketDlAssignment_egprs2_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketDlAssignment_egprs2_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketDlAssignment_mac__mode_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketDlAssignment_mac__mode_xer_ = { {"mac_mode>\n", "mac_mode>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketDlAssignment_mac__mode_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketDlAssignment_mac__mode_descr_ = { "@RLCMAC_CSN1_Types.PacketDlAssignment.mac_mode", &BITSTRING_ber_, &PacketDlAssignment_mac__mode_raw_, NULL, &PacketDlAssignment_mac__mode_xer_, &BITSTRING_json_, &PacketDlAssignment_mac__mode_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketDlAssignment_mac__mode_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketDlAssignment_rlc__mode_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketDlAssignment_rlc__mode_xer_ = { {"rlc_mode>\n", "rlc_mode>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketDlAssignment_rlc__mode_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketDlAssignment_rlc__mode_descr_ = { "@RLCMAC_CSN1_Types.PacketDlAssignment.rlc_mode", &BITSTRING_ber_, &PacketDlAssignment_rlc__mode_raw_, NULL, &PacketDlAssignment_rlc__mode_xer_, &BITSTRING_json_, &PacketDlAssignment_rlc__mode_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketDlAssignment_rlc__mode_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketDlAssignment_control__ack_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketDlAssignment_control__ack_xer_ = { {"control_ack>\n", "control_ack>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketDlAssignment_control__ack_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketDlAssignment_control__ack_descr_ = { "@RLCMAC_CSN1_Types.PacketDlAssignment.control_ack", &BITSTRING_ber_, &PacketDlAssignment_control__ack_raw_, NULL, &PacketDlAssignment_control__ack_xer_, &BITSTRING_json_, &PacketDlAssignment_control__ack_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketDlAssignment_control__ack_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketDlAssignment_timeslot__alloc_raw_ = {8,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketDlAssignment_timeslot__alloc_xer_ = { {"timeslot_alloc>\n", "timeslot_alloc>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketDlAssignment_timeslot__alloc_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketDlAssignment_timeslot__alloc_descr_ = { "@RLCMAC_CSN1_Types.PacketDlAssignment.timeslot_alloc", &BITSTRING_ber_, &PacketDlAssignment_timeslot__alloc_raw_, NULL, &PacketDlAssignment_timeslot__alloc_xer_, &BITSTRING_json_, &PacketDlAssignment_timeslot__alloc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketDlAssignment_timeslot__alloc_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketTimingAdvance_val__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketTimingAdvance_val__present_xer_ = { {"val_present>\n", "val_present>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketTimingAdvance_val__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketTimingAdvance_val__present_descr_ = { "@RLCMAC_CSN1_Types.PacketTimingAdvance.val_present", &BITSTRING_ber_, &PacketTimingAdvance_val__present_raw_, NULL, &PacketTimingAdvance_val__present_xer_, &BITSTRING_json_, &PacketTimingAdvance_val__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketTimingAdvance_val__present_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketTimingAdvance_idx__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketTimingAdvance_idx__present_xer_ = { {"idx_present>\n", "idx_present>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketTimingAdvance_idx__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketTimingAdvance_idx__present_descr_ = { "@RLCMAC_CSN1_Types.PacketTimingAdvance.idx_present", &BITSTRING_ber_, &PacketTimingAdvance_idx__present_raw_, NULL, &PacketTimingAdvance_idx__present_xer_, &BITSTRING_json_, &PacketTimingAdvance_idx__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketTimingAdvance_idx__present_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketTimingAdvance_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketTimingAdvance
const TTCN_Typedescriptor_t PacketTimingAdvance_descr_ = { "@RLCMAC_CSN1_Types.PacketTimingAdvance", NULL, &PacketTimingAdvance_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t PacketTimingAdvance_val_raw_ = {6,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketTimingAdvance_val_xer_ = { {"val>\n", "val>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketTimingAdvance_val_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketTimingAdvance_val_descr_ = { "@RLCMAC_CSN1_Types.PacketTimingAdvance.val", &INTEGER_ber_, &PacketTimingAdvance_val_raw_, &INTEGER_text_, &PacketTimingAdvance_val_xer_, &INTEGER_json_, &PacketTimingAdvance_val_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketTimingAdvance_val_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketTimingAdvance_idx_raw_ = {4,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketTimingAdvance_idx_xer_ = { {"idx>\n", "idx>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketTimingAdvance_idx_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketTimingAdvance_idx_descr_ = { "@RLCMAC_CSN1_Types.PacketTimingAdvance.idx", &INTEGER_ber_, &PacketTimingAdvance_idx_raw_, &INTEGER_text_, &PacketTimingAdvance_idx_xer_, &INTEGER_json_, &PacketTimingAdvance_idx_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketTimingAdvance_idx_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketTimingAdvance_timeslot__nr_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketTimingAdvance_timeslot__nr_xer_ = { {"timeslot_nr>\n", "timeslot_nr>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketTimingAdvance_timeslot__nr_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketTimingAdvance_timeslot__nr_descr_ = { "@RLCMAC_CSN1_Types.PacketTimingAdvance.timeslot_nr", &INTEGER_ber_, &PacketTimingAdvance_timeslot__nr_raw_, &INTEGER_text_, &PacketTimingAdvance_timeslot__nr_xer_, &INTEGER_json_, &PacketTimingAdvance_timeslot__nr_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketTimingAdvance_timeslot__nr_default_coding("RAW");
UNIVERSAL_CHARSTRING PacketTimingAdvance_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketDlAssignment_pkt__ta_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketDlAssignment_pkt__ta
const TTCN_Typedescriptor_t PacketDlAssignment_pkt__ta_descr_ = { "@RLCMAC_CSN1_Types.PacketDlAssignment.pkt_ta", NULL, &PacketDlAssignment_pkt__ta_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketDlAssignment_pkt__ta_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketDlAssignment_p0__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketDlAssignment_p0__present_xer_ = { {"p0_present>\n", "p0_present>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketDlAssignment_p0__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketDlAssignment_p0__present_descr_ = { "@RLCMAC_CSN1_Types.PacketDlAssignment.p0_present", &BITSTRING_ber_, &PacketDlAssignment_p0__present_raw_, NULL, &PacketDlAssignment_p0__present_xer_, &BITSTRING_json_, &PacketDlAssignment_p0__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketDlAssignment_p0__present_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketDlAssignment_freq__par__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketDlAssignment_freq__par__present_xer_ = { {"freq_par_present>\n", "freq_par_present>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketDlAssignment_freq__par__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketDlAssignment_freq__par__present_descr_ = { "@RLCMAC_CSN1_Types.PacketDlAssignment.freq_par_present", &BITSTRING_ber_, &PacketDlAssignment_freq__par__present_raw_, NULL, &PacketDlAssignment_freq__par__present_xer_, &BITSTRING_json_, &PacketDlAssignment_freq__par__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketDlAssignment_freq__par__present_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketDlAssignment_dl__tfi__ass__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketDlAssignment_dl__tfi__ass__present_xer_ = { {"dl_tfi_ass_present>\n", "dl_tfi_ass_present>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketDlAssignment_dl__tfi__ass__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketDlAssignment_dl__tfi__ass__present_descr_ = { "@RLCMAC_CSN1_Types.PacketDlAssignment.dl_tfi_ass_present", &BITSTRING_ber_, &PacketDlAssignment_dl__tfi__ass__present_raw_, NULL, &PacketDlAssignment_dl__tfi__ass__present_xer_, &BITSTRING_json_, &PacketDlAssignment_dl__tfi__ass__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketDlAssignment_dl__tfi__ass__present_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketDlAssignment_pwr__ctrl__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketDlAssignment_pwr__ctrl__present_xer_ = { {"pwr_ctrl_present>\n", "pwr_ctrl_present>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketDlAssignment_pwr__ctrl__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketDlAssignment_pwr__ctrl__present_descr_ = { "@RLCMAC_CSN1_Types.PacketDlAssignment.pwr_ctrl_present", &BITSTRING_ber_, &PacketDlAssignment_pwr__ctrl__present_raw_, NULL, &PacketDlAssignment_pwr__ctrl__present_xer_, &BITSTRING_json_, &PacketDlAssignment_pwr__ctrl__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketDlAssignment_pwr__ctrl__present_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketDlAssignment_tbf__starting__time__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketDlAssignment_tbf__starting__time__present_xer_ = { {"tbf_starting_time_present>\n", "tbf_starting_time_present>\n"}, {27, 27}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketDlAssignment_tbf__starting__time__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketDlAssignment_tbf__starting__time__present_descr_ = { "@RLCMAC_CSN1_Types.PacketDlAssignment.tbf_starting_time_present", &BITSTRING_ber_, &PacketDlAssignment_tbf__starting__time__present_raw_, NULL, &PacketDlAssignment_tbf__starting__time__present_xer_, &BITSTRING_json_, &PacketDlAssignment_tbf__starting__time__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketDlAssignment_tbf__starting__time__present_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketDlAssignment_spare_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketDlAssignment_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketDlAssignment_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketDlAssignment_spare_descr_ = { "@RLCMAC_CSN1_Types.PacketDlAssignment.spare", &BITSTRING_ber_, &PacketDlAssignment_spare_raw_, NULL, &PacketDlAssignment_spare_xer_, &BITSTRING_json_, &PacketDlAssignment_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketDlAssignment_spare_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketDlAssignment_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketDlAssignment
const TTCN_Typedescriptor_t PacketDlAssignment_descr_ = { "@RLCMAC_CSN1_Types.PacketDlAssignment", NULL, &PacketDlAssignment_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t PersistenceLevels_raw_ = {4,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PersistenceLevels
const TTCN_Typedescriptor_t PersistenceLevels_descr_ = { "@RLCMAC_CSN1_Types.PersistenceLevels", NULL, &PersistenceLevels_raw_, NULL, NULL, NULL, NULL, NULL, &PersistenceLevels_0_descr_, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t PersistenceLevels_0_raw_ = {4,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PersistenceLevels_0_xer_ = { {"uint4_t>\n", "uint4_t>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PersistenceLevels_0_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PersistenceLevels_0_descr_ = { "@RLCMAC_CSN1_Types.PersistenceLevels.<oftype>", &INTEGER_ber_, &PersistenceLevels_0_raw_, &INTEGER_text_, &PersistenceLevels_0_xer_, &INTEGER_json_, &PersistenceLevels_0_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PersistenceLevels_0_default_coding("RAW");
UNIVERSAL_CHARSTRING PersistenceLevels_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketDlAssignment_persistence__levels_raw_ = {4,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketDlAssignment_persistence__levels
const TTCN_Typedescriptor_t PacketDlAssignment_persistence__levels_descr_ = { "@RLCMAC_CSN1_Types.PacketDlAssignment.persistence_levels", NULL, &PacketDlAssignment_persistence__levels_raw_, NULL, NULL, NULL, NULL, NULL, &PersistenceLevels_0_descr_, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketDlAssignment_persistence__levels_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketDlAssignment_p0_raw_ = {4,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketDlAssignment_p0_xer_ = { {"p0>\n", "p0>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketDlAssignment_p0_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketDlAssignment_p0_descr_ = { "@RLCMAC_CSN1_Types.PacketDlAssignment.p0", &INTEGER_ber_, &PacketDlAssignment_p0_raw_, &INTEGER_text_, &PacketDlAssignment_p0_xer_, &INTEGER_json_, &PacketDlAssignment_p0_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketDlAssignment_p0_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketDlAssignment_reserved_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketDlAssignment_reserved_xer_ = { {"reserved>\n", "reserved>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketDlAssignment_reserved_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketDlAssignment_reserved_descr_ = { "@RLCMAC_CSN1_Types.PacketDlAssignment.reserved", &BITSTRING_ber_, &PacketDlAssignment_reserved_raw_, NULL, &PacketDlAssignment_reserved_xer_, &BITSTRING_json_, &PacketDlAssignment_reserved_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketDlAssignment_reserved_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketDlAssignment_pr__mode_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketDlAssignment_pr__mode_xer_ = { {"pr_mode>\n", "pr_mode>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketDlAssignment_pr__mode_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketDlAssignment_pr__mode_descr_ = { "@RLCMAC_CSN1_Types.PacketDlAssignment.pr_mode", &BITSTRING_ber_, &PacketDlAssignment_pr__mode_raw_, NULL, &PacketDlAssignment_pr__mode_xer_, &BITSTRING_json_, &PacketDlAssignment_pr__mode_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketDlAssignment_pr__mode_default_coding("RAW");
const TTCN_RAWdescriptor_t FrequencyParameters_tsc_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       FrequencyParameters_tsc_xer_ = { {"tsc>\n", "tsc>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t FrequencyParameters_tsc_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t FrequencyParameters_tsc_descr_ = { "@RLCMAC_CSN1_Types.FrequencyParameters.tsc", &INTEGER_ber_, &FrequencyParameters_tsc_raw_, &INTEGER_text_, &FrequencyParameters_tsc_xer_, &INTEGER_json_, &FrequencyParameters_tsc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING FrequencyParameters_tsc_default_coding("RAW");
const TTCN_RAWdescriptor_t FrequencyParameters_presence_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       FrequencyParameters_presence_xer_ = { {"presence>\n", "presence>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t FrequencyParameters_presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t FrequencyParameters_presence_descr_ = { "@RLCMAC_CSN1_Types.FrequencyParameters.presence", &BITSTRING_ber_, &FrequencyParameters_presence_raw_, NULL, &FrequencyParameters_presence_xer_, &BITSTRING_json_, &FrequencyParameters_presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING FrequencyParameters_presence_default_coding("RAW");
const TTCN_RAWdescriptor_t FrequencyParameters_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for FrequencyParameters
const TTCN_Typedescriptor_t FrequencyParameters_descr_ = { "@RLCMAC_CSN1_Types.FrequencyParameters", NULL, &FrequencyParameters_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t FrequencyParameters_arfcn_raw_ = {10,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       FrequencyParameters_arfcn_xer_ = { {"arfcn>\n", "arfcn>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t FrequencyParameters_arfcn_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t FrequencyParameters_arfcn_descr_ = { "@RLCMAC_CSN1_Types.FrequencyParameters.arfcn", &INTEGER_ber_, &FrequencyParameters_arfcn_raw_, &INTEGER_text_, &FrequencyParameters_arfcn_xer_, &INTEGER_json_, &FrequencyParameters_arfcn_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING FrequencyParameters_arfcn_default_coding("RAW");
const TTCN_RAWdescriptor_t FreqIndirect_maio_raw_ = {6,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       FreqIndirect_maio_xer_ = { {"maio>\n", "maio>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t FreqIndirect_maio_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t FreqIndirect_maio_descr_ = { "@RLCMAC_CSN1_Types.FreqIndirect.maio", &INTEGER_ber_, &FreqIndirect_maio_raw_, &INTEGER_text_, &FreqIndirect_maio_xer_, &INTEGER_json_, &FreqIndirect_maio_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING FreqIndirect_maio_default_coding("RAW");
const TTCN_RAWdescriptor_t FreqIndirect_ma__number_raw_ = {4,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       FreqIndirect_ma__number_xer_ = { {"ma_number>\n", "ma_number>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t FreqIndirect_ma__number_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t FreqIndirect_ma__number_descr_ = { "@RLCMAC_CSN1_Types.FreqIndirect.ma_number", &INTEGER_ber_, &FreqIndirect_ma__number_raw_, &INTEGER_text_, &FreqIndirect_ma__number_xer_, &INTEGER_json_, &FreqIndirect_ma__number_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING FreqIndirect_ma__number_default_coding("RAW");
const TTCN_RAWdescriptor_t FreqIndirect_change__mark1__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       FreqIndirect_change__mark1__present_xer_ = { {"change_mark1_present>\n", "change_mark1_present>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t FreqIndirect_change__mark1__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t FreqIndirect_change__mark1__present_descr_ = { "@RLCMAC_CSN1_Types.FreqIndirect.change_mark1_present", &BITSTRING_ber_, &FreqIndirect_change__mark1__present_raw_, NULL, &FreqIndirect_change__mark1__present_xer_, &BITSTRING_json_, &FreqIndirect_change__mark1__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING FreqIndirect_change__mark1__present_default_coding("RAW");
const TTCN_RAWdescriptor_t FreqIndirect_change__mark2__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       FreqIndirect_change__mark2__present_xer_ = { {"change_mark2_present>\n", "change_mark2_present>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t FreqIndirect_change__mark2__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t FreqIndirect_change__mark2__present_descr_ = { "@RLCMAC_CSN1_Types.FreqIndirect.change_mark2_present", &BITSTRING_ber_, &FreqIndirect_change__mark2__present_raw_, NULL, &FreqIndirect_change__mark2__present_xer_, &BITSTRING_json_, &FreqIndirect_change__mark2__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING FreqIndirect_change__mark2__present_default_coding("RAW");
const TTCN_RAWdescriptor_t FreqIndirect_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for FreqIndirect
const TTCN_Typedescriptor_t FreqIndirect_descr_ = { "@RLCMAC_CSN1_Types.FreqIndirect", NULL, &FreqIndirect_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t FreqIndirect_change__mark1_raw_ = {2,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       FreqIndirect_change__mark1_xer_ = { {"change_mark1>\n", "change_mark1>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t FreqIndirect_change__mark1_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t FreqIndirect_change__mark1_descr_ = { "@RLCMAC_CSN1_Types.FreqIndirect.change_mark1", &INTEGER_ber_, &FreqIndirect_change__mark1_raw_, &INTEGER_text_, &FreqIndirect_change__mark1_xer_, &INTEGER_json_, &FreqIndirect_change__mark1_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING FreqIndirect_change__mark1_default_coding("RAW");
const TTCN_RAWdescriptor_t FreqIndirect_change__mark2_raw_ = {2,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       FreqIndirect_change__mark2_xer_ = { {"change_mark2>\n", "change_mark2>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t FreqIndirect_change__mark2_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t FreqIndirect_change__mark2_descr_ = { "@RLCMAC_CSN1_Types.FreqIndirect.change_mark2", &INTEGER_ber_, &FreqIndirect_change__mark2_raw_, &INTEGER_text_, &FreqIndirect_change__mark2_xer_, &INTEGER_json_, &FreqIndirect_change__mark2_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING FreqIndirect_change__mark2_default_coding("RAW");
UNIVERSAL_CHARSTRING FreqIndirect_default_coding("RAW");
const TTCN_RAWdescriptor_t FrequencyParameters_indirect_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for FrequencyParameters_indirect
const TTCN_Typedescriptor_t FrequencyParameters_indirect_descr_ = { "@RLCMAC_CSN1_Types.FrequencyParameters.indirect", NULL, &FrequencyParameters_indirect_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING FrequencyParameters_indirect_default_coding("RAW");
const TTCN_RAWdescriptor_t FreqDirect1_maio_raw_ = {6,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       FreqDirect1_maio_xer_ = { {"maio>\n", "maio>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t FreqDirect1_maio_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t FreqDirect1_maio_descr_ = { "@RLCMAC_CSN1_Types.FreqDirect1.maio", &INTEGER_ber_, &FreqDirect1_maio_raw_, &INTEGER_text_, &FreqDirect1_maio_xer_, &INTEGER_json_, &FreqDirect1_maio_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING FreqDirect1_maio_default_coding("RAW");
const TTCN_RAWdescriptor_t GprsMobileAllocation_hsn_raw_ = {6,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       GprsMobileAllocation_hsn_xer_ = { {"hsn>\n", "hsn>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GprsMobileAllocation_hsn_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GprsMobileAllocation_hsn_descr_ = { "@RLCMAC_CSN1_Types.GprsMobileAllocation.hsn", &INTEGER_ber_, &GprsMobileAllocation_hsn_raw_, &INTEGER_text_, &GprsMobileAllocation_hsn_xer_, &INTEGER_json_, &GprsMobileAllocation_hsn_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GprsMobileAllocation_hsn_default_coding("RAW");
const TTCN_RAWdescriptor_t GprsMobileAllocation_rfl__number__list__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       GprsMobileAllocation_rfl__number__list__present_xer_ = { {"rfl_number_list_present>\n", "rfl_number_list_present>\n"}, {25, 25}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GprsMobileAllocation_rfl__number__list__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GprsMobileAllocation_rfl__number__list__present_descr_ = { "@RLCMAC_CSN1_Types.GprsMobileAllocation.rfl_number_list_present", &BITSTRING_ber_, &GprsMobileAllocation_rfl__number__list__present_raw_, NULL, &GprsMobileAllocation_rfl__number__list__present_xer_, &BITSTRING_json_, &GprsMobileAllocation_rfl__number__list__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GprsMobileAllocation_rfl__number__list__present_default_coding("RAW");
const TTCN_RAWdescriptor_t GprsMobileAllocation_ma__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       GprsMobileAllocation_ma__present_xer_ = { {"ma_present>\n", "ma_present>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GprsMobileAllocation_ma__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GprsMobileAllocation_ma__present_descr_ = { "@RLCMAC_CSN1_Types.GprsMobileAllocation.ma_present", &BITSTRING_ber_, &GprsMobileAllocation_ma__present_raw_, NULL, &GprsMobileAllocation_ma__present_xer_, &BITSTRING_json_, &GprsMobileAllocation_ma__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GprsMobileAllocation_ma__present_default_coding("RAW");
const TTCN_RAWdescriptor_t GprsMobileAllocation_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for GprsMobileAllocation
const TTCN_Typedescriptor_t GprsMobileAllocation_descr_ = { "@RLCMAC_CSN1_Types.GprsMobileAllocation", NULL, &GprsMobileAllocation_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t RflNumberList_rfl__number_raw_ = {4,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       RflNumberList_rfl__number_xer_ = { {"rfl_number>\n", "rfl_number>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RflNumberList_rfl__number_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RflNumberList_rfl__number_descr_ = { "@RLCMAC_CSN1_Types.RflNumberList.rfl_number", &INTEGER_ber_, &RflNumberList_rfl__number_raw_, &INTEGER_text_, &RflNumberList_rfl__number_xer_, &INTEGER_json_, &RflNumberList_rfl__number_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RflNumberList_rfl__number_default_coding("RAW");
const TTCN_RAWdescriptor_t RflNumberList_presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       RflNumberList_presence_xer_ = { {"presence>\n", "presence>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RflNumberList_presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RflNumberList_presence_descr_ = { "@RLCMAC_CSN1_Types.RflNumberList.presence", &BITSTRING_ber_, &RflNumberList_presence_raw_, NULL, &RflNumberList_presence_xer_, &BITSTRING_json_, &RflNumberList_presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RflNumberList_presence_default_coding("RAW");
const TTCN_RAWdescriptor_t RflNumberList_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RflNumberList
const TTCN_Typedescriptor_t RflNumberList_descr_ = { "@RLCMAC_CSN1_Types.RflNumberList", NULL, &RflNumberList_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t RflNumberList_rfl__number__list_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RflNumberList_rfl__number__list
const TTCN_Typedescriptor_t RflNumberList_rfl__number__list_descr_ = { "@RLCMAC_CSN1_Types.RflNumberList.rfl_number_list", NULL, &RflNumberList_rfl__number__list_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RflNumberList_rfl__number__list_default_coding("RAW");
UNIVERSAL_CHARSTRING RflNumberList_default_coding("RAW");
const TTCN_RAWdescriptor_t GprsMobileAllocation_rfl__number__list_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for GprsMobileAllocation_rfl__number__list
const TTCN_Typedescriptor_t GprsMobileAllocation_rfl__number__list_descr_ = { "@RLCMAC_CSN1_Types.GprsMobileAllocation.rfl_number_list", NULL, &GprsMobileAllocation_rfl__number__list_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GprsMobileAllocation_rfl__number__list_default_coding("RAW");
const TTCN_RAWdescriptor_t GprsMobileAllocation_ma__length_raw_ = {6,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,1,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       GprsMobileAllocation_ma__length_xer_ = { {"ma_length>\n", "ma_length>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GprsMobileAllocation_ma__length_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GprsMobileAllocation_ma__length_descr_ = { "@RLCMAC_CSN1_Types.GprsMobileAllocation.ma_length", &INTEGER_ber_, &GprsMobileAllocation_ma__length_raw_, &INTEGER_text_, &GprsMobileAllocation_ma__length_xer_, &INTEGER_json_, &GprsMobileAllocation_ma__length_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GprsMobileAllocation_ma__length_default_coding("RAW");
const TTCN_RAWdescriptor_t GprsMobileAllocation_ma__bitmap_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       GprsMobileAllocation_ma__bitmap_xer_ = { {"ma_bitmap>\n", "ma_bitmap>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t GprsMobileAllocation_ma__bitmap_descr_ = { "@RLCMAC_CSN1_Types.GprsMobileAllocation.ma_bitmap", &BITSTRING_ber_, &GprsMobileAllocation_ma__bitmap_raw_, NULL, &GprsMobileAllocation_ma__bitmap_xer_, &BITSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GprsMobileAllocation_ma__bitmap_default_coding("RAW");
UNIVERSAL_CHARSTRING GprsMobileAllocation_default_coding("RAW");
const TTCN_RAWdescriptor_t FreqDirect1_mobile__allocation_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for FreqDirect1_mobile__allocation
const TTCN_Typedescriptor_t FreqDirect1_mobile__allocation_descr_ = { "@RLCMAC_CSN1_Types.FreqDirect1.mobile_allocation", NULL, &FreqDirect1_mobile__allocation_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING FreqDirect1_mobile__allocation_default_coding("RAW");
const TTCN_RAWdescriptor_t FreqDirect1_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for FreqDirect1
const TTCN_Typedescriptor_t FreqDirect1_descr_ = { "@RLCMAC_CSN1_Types.FreqDirect1", NULL, &FreqDirect1_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING FreqDirect1_default_coding("RAW");
const TTCN_RAWdescriptor_t FrequencyParameters_direct1_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for FrequencyParameters_direct1
const TTCN_Typedescriptor_t FrequencyParameters_direct1_descr_ = { "@RLCMAC_CSN1_Types.FrequencyParameters.direct1", NULL, &FrequencyParameters_direct1_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING FrequencyParameters_direct1_default_coding("RAW");
const TTCN_RAWdescriptor_t FreqDirect2_maio_raw_ = {6,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       FreqDirect2_maio_xer_ = { {"maio>\n", "maio>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t FreqDirect2_maio_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t FreqDirect2_maio_descr_ = { "@RLCMAC_CSN1_Types.FreqDirect2.maio", &INTEGER_ber_, &FreqDirect2_maio_raw_, &INTEGER_text_, &FreqDirect2_maio_xer_, &INTEGER_json_, &FreqDirect2_maio_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING FreqDirect2_maio_default_coding("RAW");
const TTCN_RAWdescriptor_t FreqDirect2_hsn_raw_ = {6,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       FreqDirect2_hsn_xer_ = { {"hsn>\n", "hsn>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t FreqDirect2_hsn_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t FreqDirect2_hsn_descr_ = { "@RLCMAC_CSN1_Types.FreqDirect2.hsn", &INTEGER_ber_, &FreqDirect2_hsn_raw_, &INTEGER_text_, &FreqDirect2_hsn_xer_, &INTEGER_json_, &FreqDirect2_hsn_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING FreqDirect2_hsn_default_coding("RAW");
const TTCN_RAWdescriptor_t FreqDirect2_ma__freq__len_raw_ = {4,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       FreqDirect2_ma__freq__len_xer_ = { {"ma_freq_len>\n", "ma_freq_len>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t FreqDirect2_ma__freq__len_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t FreqDirect2_ma__freq__len_descr_ = { "@RLCMAC_CSN1_Types.FreqDirect2.ma_freq_len", &INTEGER_ber_, &FreqDirect2_ma__freq__len_raw_, &INTEGER_text_, &FreqDirect2_ma__freq__len_xer_, &INTEGER_json_, &FreqDirect2_ma__freq__len_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING FreqDirect2_ma__freq__len_default_coding("RAW");
const TTCN_RAWdescriptor_t FreqDirect2_m1__freq__list_raw_ = {0,SG_NO,ORDER_MSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       FreqDirect2_m1__freq__list_xer_ = { {"m1_freq_list>\n", "m1_freq_list>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int FreqDirect2_m1__freq__list_oer_ext_arr_[0] = {};
const int FreqDirect2_m1__freq__list_oer_p_[0] = {};
const TTCN_OERdescriptor_t FreqDirect2_m1__freq__list_oer_ = { -1, TRUE, -1, FALSE, 0, 0, FreqDirect2_m1__freq__list_oer_ext_arr_, 0, FreqDirect2_m1__freq__list_oer_p_};
const TTCN_Typedescriptor_t FreqDirect2_m1__freq__list_descr_ = { "@RLCMAC_CSN1_Types.FreqDirect2.m1_freq_list", &OCTETSTRING_ber_, &FreqDirect2_m1__freq__list_raw_, &OCTETSTRING_text_, &FreqDirect2_m1__freq__list_xer_, &OCTETSTRING_json_, &FreqDirect2_m1__freq__list_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING FreqDirect2_m1__freq__list_default_coding("RAW");
const TTCN_RAWdescriptor_t FreqDirect2_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for FreqDirect2
const TTCN_Typedescriptor_t FreqDirect2_descr_ = { "@RLCMAC_CSN1_Types.FreqDirect2", NULL, &FreqDirect2_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING FreqDirect2_default_coding("RAW");
const TTCN_RAWdescriptor_t FrequencyParameters_direct2_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for FrequencyParameters_direct2
const TTCN_Typedescriptor_t FrequencyParameters_direct2_descr_ = { "@RLCMAC_CSN1_Types.FrequencyParameters.direct2", NULL, &FrequencyParameters_direct2_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING FrequencyParameters_direct2_default_coding("RAW");
UNIVERSAL_CHARSTRING FrequencyParameters_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketDlAssignment_freq__par_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketDlAssignment_freq__par
const TTCN_Typedescriptor_t PacketDlAssignment_freq__par_descr_ = { "@RLCMAC_CSN1_Types.PacketDlAssignment.freq_par", NULL, &PacketDlAssignment_freq__par_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketDlAssignment_freq__par_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketDlAssignment_dl__tfi__assignment_raw_ = {5,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketDlAssignment_dl__tfi__assignment_xer_ = { {"dl_tfi_assignment>\n", "dl_tfi_assignment>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketDlAssignment_dl__tfi__assignment_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketDlAssignment_dl__tfi__assignment_descr_ = { "@RLCMAC_CSN1_Types.PacketDlAssignment.dl_tfi_assignment", &INTEGER_ber_, &PacketDlAssignment_dl__tfi__assignment_raw_, &INTEGER_text_, &PacketDlAssignment_dl__tfi__assignment_xer_, &INTEGER_json_, &PacketDlAssignment_dl__tfi__assignment_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketDlAssignment_dl__tfi__assignment_default_coding("RAW");
const TTCN_RAWdescriptor_t PowerControlParameters_alpha_raw_ = {4,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PowerControlParameters_alpha_xer_ = { {"alpha>\n", "alpha>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PowerControlParameters_alpha_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PowerControlParameters_alpha_descr_ = { "@RLCMAC_CSN1_Types.PowerControlParameters.alpha", &INTEGER_ber_, &PowerControlParameters_alpha_raw_, &INTEGER_text_, &PowerControlParameters_alpha_xer_, &INTEGER_json_, &PowerControlParameters_alpha_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PowerControlParameters_alpha_default_coding("RAW");
const TTCN_RAWdescriptor_t ZeroOneGammas_raw_ = {8,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for ZeroOneGammas
const TTCN_Typedescriptor_t ZeroOneGammas_descr_ = { "@RLCMAC_CSN1_Types.ZeroOneGammas", NULL, &ZeroOneGammas_raw_, NULL, NULL, NULL, NULL, NULL, &ZeroOneGammas_0_descr_, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t ZeroOneGamma_gamma__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       ZeroOneGamma_gamma__present_xer_ = { {"gamma_present>\n", "gamma_present>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ZeroOneGamma_gamma__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ZeroOneGamma_gamma__present_descr_ = { "@RLCMAC_CSN1_Types.ZeroOneGamma.gamma_present", &BITSTRING_ber_, &ZeroOneGamma_gamma__present_raw_, NULL, &ZeroOneGamma_gamma__present_xer_, &BITSTRING_json_, &ZeroOneGamma_gamma__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ZeroOneGamma_gamma__present_default_coding("RAW");
const TTCN_RAWdescriptor_t ZeroOneGamma_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for ZeroOneGamma
const TTCN_Typedescriptor_t ZeroOneGamma_descr_ = { "@RLCMAC_CSN1_Types.ZeroOneGamma", NULL, &ZeroOneGamma_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t ZeroOneGamma_gamma_raw_ = {5,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       ZeroOneGamma_gamma_xer_ = { {"gamma>\n", "gamma>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ZeroOneGamma_gamma_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ZeroOneGamma_gamma_descr_ = { "@RLCMAC_CSN1_Types.ZeroOneGamma.gamma", &INTEGER_ber_, &ZeroOneGamma_gamma_raw_, &INTEGER_text_, &ZeroOneGamma_gamma_xer_, &INTEGER_json_, &ZeroOneGamma_gamma_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ZeroOneGamma_gamma_default_coding("RAW");
UNIVERSAL_CHARSTRING ZeroOneGamma_default_coding("RAW");
const TTCN_RAWdescriptor_t ZeroOneGammas_0_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for ZeroOneGammas_0
const TTCN_Typedescriptor_t ZeroOneGammas_0_descr_ = { "@RLCMAC_CSN1_Types.ZeroOneGammas.<oftype>", NULL, &ZeroOneGammas_0_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ZeroOneGammas_0_default_coding("RAW");
UNIVERSAL_CHARSTRING ZeroOneGammas_default_coding("RAW");
const TTCN_RAWdescriptor_t PowerControlParameters_gamma_raw_ = {8,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PowerControlParameters_gamma
const TTCN_Typedescriptor_t PowerControlParameters_gamma_descr_ = { "@RLCMAC_CSN1_Types.PowerControlParameters.gamma", NULL, &PowerControlParameters_gamma_raw_, NULL, NULL, NULL, NULL, NULL, &ZeroOneGammas_0_descr_, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PowerControlParameters_gamma_default_coding("RAW");
const TTCN_RAWdescriptor_t PowerControlParameters_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PowerControlParameters
const TTCN_Typedescriptor_t PowerControlParameters_descr_ = { "@RLCMAC_CSN1_Types.PowerControlParameters", NULL, &PowerControlParameters_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PowerControlParameters_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketDlAssignment_pwr__ctrl_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketDlAssignment_pwr__ctrl
const TTCN_Typedescriptor_t PacketDlAssignment_pwr__ctrl_descr_ = { "@RLCMAC_CSN1_Types.PacketDlAssignment.pwr_ctrl", NULL, &PacketDlAssignment_pwr__ctrl_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketDlAssignment_pwr__ctrl_default_coding("RAW");
const TTCN_RAWdescriptor_t StartingFnDesc_presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       StartingFnDesc_presence_xer_ = { {"presence>\n", "presence>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t StartingFnDesc_presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t StartingFnDesc_presence_descr_ = { "@RLCMAC_CSN1_Types.StartingFnDesc.presence", &BITSTRING_ber_, &StartingFnDesc_presence_raw_, NULL, &StartingFnDesc_presence_xer_, &BITSTRING_json_, &StartingFnDesc_presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING StartingFnDesc_presence_default_coding("RAW");
const TTCN_RAWdescriptor_t StartingFnDesc_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for StartingFnDesc
const TTCN_Typedescriptor_t StartingFnDesc_descr_ = { "@RLCMAC_CSN1_Types.StartingFnDesc", NULL, &StartingFnDesc_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t StartingFnDesc_absolute__starting__time_raw_ = {16,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       StartingFnDesc_absolute__starting__time_xer_ = { {"absolute_starting_time>\n", "absolute_starting_time>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t StartingFnDesc_absolute__starting__time_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t StartingFnDesc_absolute__starting__time_descr_ = { "@RLCMAC_CSN1_Types.StartingFnDesc.absolute_starting_time", &INTEGER_ber_, &StartingFnDesc_absolute__starting__time_raw_, &INTEGER_text_, &StartingFnDesc_absolute__starting__time_xer_, &INTEGER_json_, &StartingFnDesc_absolute__starting__time_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING StartingFnDesc_absolute__starting__time_default_coding("RAW");
const TTCN_RAWdescriptor_t StartingFnDesc_relative__k_raw_ = {13,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       StartingFnDesc_relative__k_xer_ = { {"relative_k>\n", "relative_k>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t StartingFnDesc_relative__k_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t StartingFnDesc_relative__k_descr_ = { "@RLCMAC_CSN1_Types.StartingFnDesc.relative_k", &INTEGER_ber_, &StartingFnDesc_relative__k_raw_, &INTEGER_text_, &StartingFnDesc_relative__k_xer_, &INTEGER_json_, &StartingFnDesc_relative__k_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING StartingFnDesc_relative__k_default_coding("RAW");
UNIVERSAL_CHARSTRING StartingFnDesc_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketDlAssignment_tbf__starting__time_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketDlAssignment_tbf__starting__time
const TTCN_Typedescriptor_t PacketDlAssignment_tbf__starting__time_descr_ = { "@RLCMAC_CSN1_Types.PacketDlAssignment.tbf_starting_time", NULL, &PacketDlAssignment_tbf__starting__time_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketDlAssignment_tbf__starting__time_default_coding("RAW");
const TTCN_RAWdescriptor_t PktDlAssRelAdditions_rel99__presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktDlAssRelAdditions_rel99__presence_xer_ = { {"rel99_presence>\n", "rel99_presence>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PktDlAssRelAdditions_rel99__presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PktDlAssRelAdditions_rel99__presence_descr_ = { "@RLCMAC_CSN1_Types.PktDlAssRelAdditions.rel99_presence", &BITSTRING_ber_, &PktDlAssRelAdditions_rel99__presence_raw_, NULL, &PktDlAssRelAdditions_rel99__presence_xer_, &BITSTRING_json_, &PktDlAssRelAdditions_rel99__presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktDlAssRelAdditions_rel99__presence_default_coding("RAW");
const TTCN_RAWdescriptor_t PktDlAssRelAdditions_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktDlAssRelAdditions
const TTCN_Typedescriptor_t PktDlAssRelAdditions_descr_ = { "@RLCMAC_CSN1_Types.PktDlAssRelAdditions", NULL, &PktDlAssRelAdditions_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t PktDlAssR99Additions_egprs__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktDlAssR99Additions_egprs__present_xer_ = { {"egprs_present>\n", "egprs_present>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PktDlAssR99Additions_egprs__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PktDlAssR99Additions_egprs__present_descr_ = { "@RLCMAC_CSN1_Types.PktDlAssR99Additions.egprs_present", &BITSTRING_ber_, &PktDlAssR99Additions_egprs__present_raw_, NULL, &PktDlAssR99Additions_egprs__present_xer_, &BITSTRING_json_, &PktDlAssR99Additions_egprs__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktDlAssR99Additions_egprs__present_default_coding("RAW");
const TTCN_RAWdescriptor_t PktDlAssR99Additions_pkt__ext__ta__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktDlAssR99Additions_pkt__ext__ta__present_xer_ = { {"pkt_ext_ta_present>\n", "pkt_ext_ta_present>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PktDlAssR99Additions_pkt__ext__ta__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PktDlAssR99Additions_pkt__ext__ta__present_descr_ = { "@RLCMAC_CSN1_Types.PktDlAssR99Additions.pkt_ext_ta_present", &BITSTRING_ber_, &PktDlAssR99Additions_pkt__ext__ta__present_raw_, NULL, &PktDlAssR99Additions_pkt__ext__ta__present_xer_, &BITSTRING_json_, &PktDlAssR99Additions_pkt__ext__ta__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktDlAssR99Additions_pkt__ext__ta__present_default_coding("RAW");
const TTCN_RAWdescriptor_t PktDlAssR99Additions_compact__reduced__ma__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktDlAssR99Additions_compact__reduced__ma__present_xer_ = { {"compact_reduced_ma_present>\n", "compact_reduced_ma_present>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PktDlAssR99Additions_compact__reduced__ma__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PktDlAssR99Additions_compact__reduced__ma__present_descr_ = { "@RLCMAC_CSN1_Types.PktDlAssR99Additions.compact_reduced_ma_present", &BITSTRING_ber_, &PktDlAssR99Additions_compact__reduced__ma__present_raw_, NULL, &PktDlAssR99Additions_compact__reduced__ma__present_xer_, &BITSTRING_json_, &PktDlAssR99Additions_compact__reduced__ma__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktDlAssR99Additions_compact__reduced__ma__present_default_coding("RAW");
const TTCN_RAWdescriptor_t PktDlAssR99Additions_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktDlAssR99Additions
const TTCN_Typedescriptor_t PktDlAssR99Additions_descr_ = { "@RLCMAC_CSN1_Types.PktDlAssR99Additions", NULL, &PktDlAssR99Additions_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t PktDlAssR99EGPRS_window__size_raw_ = {5,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktDlAssR99EGPRS_window__size
const TTCN_Typedescriptor_t PktDlAssR99EGPRS_window__size_descr_ = { "@RLCMAC_CSN1_Types.PktDlAssR99EGPRS.window_size", NULL, &PktDlAssR99EGPRS_window__size_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktDlAssR99EGPRS_window__size_default_coding("RAW");
const TTCN_RAWdescriptor_t PktDlAssR99EGPRS_link__quality__meas__mode_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktDlAssR99EGPRS_link__quality__meas__mode_xer_ = { {"link_quality_meas_mode>\n", "link_quality_meas_mode>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PktDlAssR99EGPRS_link__quality__meas__mode_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PktDlAssR99EGPRS_link__quality__meas__mode_descr_ = { "@RLCMAC_CSN1_Types.PktDlAssR99EGPRS.link_quality_meas_mode", &BITSTRING_ber_, &PktDlAssR99EGPRS_link__quality__meas__mode_raw_, NULL, &PktDlAssR99EGPRS_link__quality__meas__mode_xer_, &BITSTRING_json_, &PktDlAssR99EGPRS_link__quality__meas__mode_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktDlAssR99EGPRS_link__quality__meas__mode_default_coding("RAW");
const TTCN_RAWdescriptor_t PktDlAssR99EGPRS_bep__period2__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktDlAssR99EGPRS_bep__period2__present_xer_ = { {"bep_period2_present>\n", "bep_period2_present>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PktDlAssR99EGPRS_bep__period2__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PktDlAssR99EGPRS_bep__period2__present_descr_ = { "@RLCMAC_CSN1_Types.PktDlAssR99EGPRS.bep_period2_present", &BITSTRING_ber_, &PktDlAssR99EGPRS_bep__period2__present_raw_, NULL, &PktDlAssR99EGPRS_bep__period2__present_xer_, &BITSTRING_json_, &PktDlAssR99EGPRS_bep__period2__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktDlAssR99EGPRS_bep__period2__present_default_coding("RAW");
const TTCN_RAWdescriptor_t PktDlAssR99EGPRS_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktDlAssR99EGPRS
const TTCN_Typedescriptor_t PktDlAssR99EGPRS_descr_ = { "@RLCMAC_CSN1_Types.PktDlAssR99EGPRS", NULL, &PktDlAssR99EGPRS_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t PktDlAssR99EGPRS_bep__period2_raw_ = {4,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktDlAssR99EGPRS_bep__period2_xer_ = { {"bep_period2>\n", "bep_period2>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PktDlAssR99EGPRS_bep__period2_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PktDlAssR99EGPRS_bep__period2_descr_ = { "@RLCMAC_CSN1_Types.PktDlAssR99EGPRS.bep_period2", &BITSTRING_ber_, &PktDlAssR99EGPRS_bep__period2_raw_, NULL, &PktDlAssR99EGPRS_bep__period2_xer_, &BITSTRING_json_, &PktDlAssR99EGPRS_bep__period2_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktDlAssR99EGPRS_bep__period2_default_coding("RAW");
UNIVERSAL_CHARSTRING PktDlAssR99EGPRS_default_coding("RAW");
const TTCN_RAWdescriptor_t PktDlAssR99Additions_egprs_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktDlAssR99Additions_egprs
const TTCN_Typedescriptor_t PktDlAssR99Additions_egprs_descr_ = { "@RLCMAC_CSN1_Types.PktDlAssR99Additions.egprs", NULL, &PktDlAssR99Additions_egprs_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktDlAssR99Additions_egprs_default_coding("RAW");
const TTCN_RAWdescriptor_t PktDlAssR99Additions_pkt__ext__ta_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktDlAssR99Additions_pkt__ext__ta_xer_ = { {"pkt_ext_ta>\n", "pkt_ext_ta>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PktDlAssR99Additions_pkt__ext__ta_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PktDlAssR99Additions_pkt__ext__ta_descr_ = { "@RLCMAC_CSN1_Types.PktDlAssR99Additions.pkt_ext_ta", &BITSTRING_ber_, &PktDlAssR99Additions_pkt__ext__ta_raw_, NULL, &PktDlAssR99Additions_pkt__ext__ta_xer_, &BITSTRING_json_, &PktDlAssR99Additions_pkt__ext__ta_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktDlAssR99Additions_pkt__ext__ta_default_coding("RAW");
const TTCN_RAWdescriptor_t COMPACTreducedMA_ma__bitmap__length_raw_ = {7,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,1,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       COMPACTreducedMA_ma__bitmap__length_xer_ = { {"ma_bitmap_length>\n", "ma_bitmap_length>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t COMPACTreducedMA_ma__bitmap__length_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t COMPACTreducedMA_ma__bitmap__length_descr_ = { "@RLCMAC_CSN1_Types.COMPACTreducedMA.ma_bitmap_length", &INTEGER_ber_, &COMPACTreducedMA_ma__bitmap__length_raw_, &INTEGER_text_, &COMPACTreducedMA_ma__bitmap__length_xer_, &INTEGER_json_, &COMPACTreducedMA_ma__bitmap__length_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING COMPACTreducedMA_ma__bitmap__length_default_coding("RAW");
const TTCN_RAWdescriptor_t COMPACTreducedMA_ma__bitmap_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       COMPACTreducedMA_ma__bitmap_xer_ = { {"ma_bitmap>\n", "ma_bitmap>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t COMPACTreducedMA_ma__bitmap_descr_ = { "@RLCMAC_CSN1_Types.COMPACTreducedMA.ma_bitmap", &BITSTRING_ber_, &COMPACTreducedMA_ma__bitmap_raw_, NULL, &COMPACTreducedMA_ma__bitmap_xer_, &BITSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING COMPACTreducedMA_ma__bitmap_default_coding("RAW");
const TTCN_RAWdescriptor_t COMPACTreducedMA_maio__2__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       COMPACTreducedMA_maio__2__present_xer_ = { {"maio_2_present>\n", "maio_2_present>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t COMPACTreducedMA_maio__2__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t COMPACTreducedMA_maio__2__present_descr_ = { "@RLCMAC_CSN1_Types.COMPACTreducedMA.maio_2_present", &BITSTRING_ber_, &COMPACTreducedMA_maio__2__present_raw_, NULL, &COMPACTreducedMA_maio__2__present_xer_, &BITSTRING_json_, &COMPACTreducedMA_maio__2__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING COMPACTreducedMA_maio__2__present_default_coding("RAW");
const TTCN_RAWdescriptor_t COMPACTreducedMA_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for COMPACTreducedMA
const TTCN_Typedescriptor_t COMPACTreducedMA_descr_ = { "@RLCMAC_CSN1_Types.COMPACTreducedMA", NULL, &COMPACTreducedMA_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t COMPACTreducedMA_maio__2_raw_ = {6,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,6,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       COMPACTreducedMA_maio__2_xer_ = { {"maio_2>\n", "maio_2>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t COMPACTreducedMA_maio__2_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t COMPACTreducedMA_maio__2_descr_ = { "@RLCMAC_CSN1_Types.COMPACTreducedMA.maio_2", &BITSTRING_ber_, &COMPACTreducedMA_maio__2_raw_, NULL, &COMPACTreducedMA_maio__2_xer_, &BITSTRING_json_, &COMPACTreducedMA_maio__2_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING COMPACTreducedMA_maio__2_default_coding("RAW");
UNIVERSAL_CHARSTRING COMPACTreducedMA_default_coding("RAW");
const TTCN_RAWdescriptor_t PktDlAssR99Additions_compact__reduced__ma_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktDlAssR99Additions_compact__reduced__ma
const TTCN_Typedescriptor_t PktDlAssR99Additions_compact__reduced__ma_descr_ = { "@RLCMAC_CSN1_Types.PktDlAssR99Additions.compact_reduced_ma", NULL, &PktDlAssR99Additions_compact__reduced__ma_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktDlAssR99Additions_compact__reduced__ma_default_coding("RAW");
UNIVERSAL_CHARSTRING PktDlAssR99Additions_default_coding("RAW");
const TTCN_RAWdescriptor_t PktDlAssRelAdditions_rel99_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktDlAssRelAdditions_rel99
const TTCN_Typedescriptor_t PktDlAssRelAdditions_rel99_descr_ = { "@RLCMAC_CSN1_Types.PktDlAssRelAdditions.rel99", NULL, &PktDlAssRelAdditions_rel99_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktDlAssRelAdditions_rel99_default_coding("RAW");
UNIVERSAL_CHARSTRING PktDlAssRelAdditions_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketDlAssignment_rel__additions_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketDlAssignment_rel__additions
const TTCN_Typedescriptor_t PacketDlAssignment_rel__additions_descr_ = { "@RLCMAC_CSN1_Types.PacketDlAssignment.rel_additions", NULL, &PacketDlAssignment_rel__additions_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketDlAssignment_rel__additions_default_coding("RAW");
UNIVERSAL_CHARSTRING PacketDlAssignment_default_coding("RAW");
const TTCN_RAWdescriptor_t NetworkControlOrder_raw_ = {2,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for NetworkControlOrder
const TTCN_Typedescriptor_t NetworkControlOrder_descr_ = { "@RLCMAC_CSN1_Types.NetworkControlOrder", NULL, &NetworkControlOrder_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NetworkControlOrder_default_coding("RAW");
const TTCN_RAWdescriptor_t CellSelection_cell__barr__access__2_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       CellSelection_cell__barr__access__2_xer_ = { {"cell_barr_access_2>\n", "cell_barr_access_2>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t CellSelection_cell__barr__access__2_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t CellSelection_cell__barr__access__2_descr_ = { "@RLCMAC_CSN1_Types.CellSelection.cell_barr_access_2", &BITSTRING_ber_, &CellSelection_cell__barr__access__2_raw_, NULL, &CellSelection_cell__barr__access__2_xer_, &BITSTRING_json_, &CellSelection_cell__barr__access__2_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CellSelection_cell__barr__access__2_default_coding("RAW");
const TTCN_RAWdescriptor_t CellSelection_exc__acc_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       CellSelection_exc__acc_xer_ = { {"exc_acc>\n", "exc_acc>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t CellSelection_exc__acc_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t CellSelection_exc__acc_descr_ = { "@RLCMAC_CSN1_Types.CellSelection.exc_acc", &BITSTRING_ber_, &CellSelection_exc__acc_raw_, NULL, &CellSelection_exc__acc_xer_, &BITSTRING_json_, &CellSelection_exc__acc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CellSelection_exc__acc_default_coding("RAW");
const TTCN_RAWdescriptor_t CellSelection_same__ra__as__serving__cell_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       CellSelection_same__ra__as__serving__cell_xer_ = { {"same_ra_as_serving_cell>\n", "same_ra_as_serving_cell>\n"}, {25, 25}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t CellSelection_same__ra__as__serving__cell_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t CellSelection_same__ra__as__serving__cell_descr_ = { "@RLCMAC_CSN1_Types.CellSelection.same_ra_as_serving_cell", &BITSTRING_ber_, &CellSelection_same__ra__as__serving__cell_raw_, NULL, &CellSelection_same__ra__as__serving__cell_xer_, &BITSTRING_json_, &CellSelection_same__ra__as__serving__cell_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CellSelection_same__ra__as__serving__cell_default_coding("RAW");
const TTCN_RAWdescriptor_t CellSelection_gprs__rxlev__access__min__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       CellSelection_gprs__rxlev__access__min__present_xer_ = { {"gprs_rxlev_access_min_present>\n", "gprs_rxlev_access_min_present>\n"}, {31, 31}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t CellSelection_gprs__rxlev__access__min__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t CellSelection_gprs__rxlev__access__min__present_descr_ = { "@RLCMAC_CSN1_Types.CellSelection.gprs_rxlev_access_min_present", &BITSTRING_ber_, &CellSelection_gprs__rxlev__access__min__present_raw_, NULL, &CellSelection_gprs__rxlev__access__min__present_xer_, &BITSTRING_json_, &CellSelection_gprs__rxlev__access__min__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CellSelection_gprs__rxlev__access__min__present_default_coding("RAW");
const TTCN_RAWdescriptor_t CellSelection_gprs__temporary__offset__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       CellSelection_gprs__temporary__offset__present_xer_ = { {"gprs_temporary_offset_present>\n", "gprs_temporary_offset_present>\n"}, {31, 31}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t CellSelection_gprs__temporary__offset__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t CellSelection_gprs__temporary__offset__present_descr_ = { "@RLCMAC_CSN1_Types.CellSelection.gprs_temporary_offset_present", &BITSTRING_ber_, &CellSelection_gprs__temporary__offset__present_raw_, NULL, &CellSelection_gprs__temporary__offset__present_xer_, &BITSTRING_json_, &CellSelection_gprs__temporary__offset__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CellSelection_gprs__temporary__offset__present_default_coding("RAW");
const TTCN_RAWdescriptor_t CellSelection_gprs__reselct__offset__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       CellSelection_gprs__reselct__offset__present_xer_ = { {"gprs_reselct_offset_present>\n", "gprs_reselct_offset_present>\n"}, {29, 29}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t CellSelection_gprs__reselct__offset__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t CellSelection_gprs__reselct__offset__present_descr_ = { "@RLCMAC_CSN1_Types.CellSelection.gprs_reselct_offset_present", &BITSTRING_ber_, &CellSelection_gprs__reselct__offset__present_raw_, NULL, &CellSelection_gprs__reselct__offset__present_xer_, &BITSTRING_json_, &CellSelection_gprs__reselct__offset__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CellSelection_gprs__reselct__offset__present_default_coding("RAW");
const TTCN_RAWdescriptor_t CellSelection_hcs__params__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       CellSelection_hcs__params__present_xer_ = { {"hcs_params_present>\n", "hcs_params_present>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t CellSelection_hcs__params__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t CellSelection_hcs__params__present_descr_ = { "@RLCMAC_CSN1_Types.CellSelection.hcs_params_present", &BITSTRING_ber_, &CellSelection_hcs__params__present_raw_, NULL, &CellSelection_hcs__params__present_xer_, &BITSTRING_json_, &CellSelection_hcs__params__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CellSelection_hcs__params__present_default_coding("RAW");
const TTCN_RAWdescriptor_t CellSelection_si13__pbcch__location__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       CellSelection_si13__pbcch__location__present_xer_ = { {"si13_pbcch_location_present>\n", "si13_pbcch_location_present>\n"}, {29, 29}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t CellSelection_si13__pbcch__location__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t CellSelection_si13__pbcch__location__present_descr_ = { "@RLCMAC_CSN1_Types.CellSelection.si13_pbcch_location_present", &BITSTRING_ber_, &CellSelection_si13__pbcch__location__present_raw_, NULL, &CellSelection_si13__pbcch__location__present_xer_, &BITSTRING_json_, &CellSelection_si13__pbcch__location__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CellSelection_si13__pbcch__location__present_default_coding("RAW");
const TTCN_RAWdescriptor_t CellSelection_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for CellSelection
const TTCN_Typedescriptor_t CellSelection_descr_ = { "@RLCMAC_CSN1_Types.CellSelection", NULL, &CellSelection_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CellSelection_default_coding("RAW");
const TTCN_RAWdescriptor_t AddFrequency_start__frequency_raw_ = {10,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       AddFrequency_start__frequency_xer_ = { {"start_frequency>\n", "start_frequency>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AddFrequency_start__frequency_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AddFrequency_start__frequency_descr_ = { "@RLCMAC_CSN1_Types.AddFrequency.start_frequency", &INTEGER_ber_, &AddFrequency_start__frequency_raw_, &INTEGER_text_, &AddFrequency_start__frequency_xer_, &INTEGER_json_, &AddFrequency_start__frequency_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AddFrequency_start__frequency_default_coding("RAW");
const TTCN_RAWdescriptor_t AddFrequency_bsic_raw_ = {6,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       AddFrequency_bsic_xer_ = { {"bsic>\n", "bsic>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AddFrequency_bsic_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AddFrequency_bsic_descr_ = { "@RLCMAC_CSN1_Types.AddFrequency.bsic", &INTEGER_ber_, &AddFrequency_bsic_raw_, &INTEGER_text_, &AddFrequency_bsic_xer_, &INTEGER_json_, &AddFrequency_bsic_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AddFrequency_bsic_default_coding("RAW");
const TTCN_RAWdescriptor_t AddFrequency_cell__sel__par__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       AddFrequency_cell__sel__par__present_xer_ = { {"cell_sel_par_present>\n", "cell_sel_par_present>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AddFrequency_cell__sel__par__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AddFrequency_cell__sel__par__present_descr_ = { "@RLCMAC_CSN1_Types.AddFrequency.cell_sel_par_present", &BITSTRING_ber_, &AddFrequency_cell__sel__par__present_raw_, NULL, &AddFrequency_cell__sel__par__present_xer_, &BITSTRING_json_, &AddFrequency_cell__sel__par__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AddFrequency_cell__sel__par__present_default_coding("RAW");
const TTCN_RAWdescriptor_t AddFrequency_nr__of__frequencies_raw_ = {5,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       AddFrequency_nr__of__frequencies_xer_ = { {"nr_of_frequencies>\n", "nr_of_frequencies>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AddFrequency_nr__of__frequencies_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AddFrequency_nr__of__frequencies_descr_ = { "@RLCMAC_CSN1_Types.AddFrequency.nr_of_frequencies", &INTEGER_ber_, &AddFrequency_nr__of__frequencies_raw_, &INTEGER_text_, &AddFrequency_nr__of__frequencies_xer_, &INTEGER_json_, &AddFrequency_nr__of__frequencies_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AddFrequency_nr__of__frequencies_default_coding("RAW");
const TTCN_RAWdescriptor_t AddFrequency_freq__diff__length_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       AddFrequency_freq__diff__length_xer_ = { {"freq_diff_length>\n", "freq_diff_length>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AddFrequency_freq__diff__length_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AddFrequency_freq__diff__length_descr_ = { "@RLCMAC_CSN1_Types.AddFrequency.freq_diff_length", &INTEGER_ber_, &AddFrequency_freq__diff__length_raw_, &INTEGER_text_, &AddFrequency_freq__diff__length_xer_, &INTEGER_json_, &AddFrequency_freq__diff__length_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AddFrequency_freq__diff__length_default_coding("RAW");
const TTCN_RAWdescriptor_t AddFrequency_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for AddFrequency
const TTCN_Typedescriptor_t AddFrequency_descr_ = { "@RLCMAC_CSN1_Types.AddFrequency", NULL, &AddFrequency_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t AddFrequency_cell__sel__par_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for AddFrequency_cell__sel__par
const TTCN_Typedescriptor_t AddFrequency_cell__sel__par_descr_ = { "@RLCMAC_CSN1_Types.AddFrequency.cell_sel_par", NULL, &AddFrequency_cell__sel__par_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AddFrequency_cell__sel__par_default_coding("RAW");
UNIVERSAL_CHARSTRING AddFrequency_default_coding("RAW");
const TTCN_RAWdescriptor_t RepeatedAddFrequencyItem_presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       RepeatedAddFrequencyItem_presence_xer_ = { {"presence>\n", "presence>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RepeatedAddFrequencyItem_presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RepeatedAddFrequencyItem_presence_descr_ = { "@RLCMAC_CSN1_Types.RepeatedAddFrequencyItem.presence", &BITSTRING_ber_, &RepeatedAddFrequencyItem_presence_raw_, NULL, &RepeatedAddFrequencyItem_presence_xer_, &BITSTRING_json_, &RepeatedAddFrequencyItem_presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RepeatedAddFrequencyItem_presence_default_coding("RAW");
const TTCN_RAWdescriptor_t RepeatedAddFrequencyItem_item_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RepeatedAddFrequencyItem_item
const TTCN_Typedescriptor_t RepeatedAddFrequencyItem_item_descr_ = { "@RLCMAC_CSN1_Types.RepeatedAddFrequencyItem.item", NULL, &RepeatedAddFrequencyItem_item_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RepeatedAddFrequencyItem_item_default_coding("RAW");
const TTCN_RAWdescriptor_t RepeatedAddFrequencyItem_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RepeatedAddFrequencyItem
const TTCN_Typedescriptor_t RepeatedAddFrequencyItem_descr_ = { "@RLCMAC_CSN1_Types.RepeatedAddFrequencyItem", NULL, &RepeatedAddFrequencyItem_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RepeatedAddFrequencyItem_default_coding("RAW");
const TTCN_RAWdescriptor_t FreqIndexList_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for FreqIndexList
const TTCN_Typedescriptor_t FreqIndexList_descr_ = { "@RLCMAC_CSN1_Types.FreqIndexList", NULL, &FreqIndexList_raw_, NULL, NULL, NULL, NULL, NULL, &FreqIndexList_0_descr_, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t FreqIndexList_0_raw_ = {6,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       FreqIndexList_0_xer_ = { {"uint6_t>\n", "uint6_t>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t FreqIndexList_0_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t FreqIndexList_0_descr_ = { "@RLCMAC_CSN1_Types.FreqIndexList.<oftype>", &INTEGER_ber_, &FreqIndexList_0_raw_, &INTEGER_text_, &FreqIndexList_0_xer_, &INTEGER_json_, &FreqIndexList_0_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING FreqIndexList_0_default_coding("RAW");
UNIVERSAL_CHARSTRING FreqIndexList_default_coding("RAW");
const TTCN_RAWdescriptor_t RepeatedAddFrequencyItemList_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RepeatedAddFrequencyItemList
const TTCN_Typedescriptor_t RepeatedAddFrequencyItemList_descr_ = { "@RLCMAC_CSN1_Types.RepeatedAddFrequencyItemList", NULL, &RepeatedAddFrequencyItemList_raw_, NULL, NULL, NULL, NULL, NULL, &RepeatedAddFrequencyItemList_0_descr_, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t RepeatedAddFrequencyItemList_0_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RepeatedAddFrequencyItemList_0
const TTCN_Typedescriptor_t RepeatedAddFrequencyItemList_0_descr_ = { "@RLCMAC_CSN1_Types.RepeatedAddFrequencyItemList.<oftype>", NULL, &RepeatedAddFrequencyItemList_0_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RepeatedAddFrequencyItemList_0_default_coding("RAW");
UNIVERSAL_CHARSTRING RepeatedAddFrequencyItemList_default_coding("RAW");
const TTCN_RAWdescriptor_t NCFrequencyList_removed__freq__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       NCFrequencyList_removed__freq__present_xer_ = { {"removed_freq_present>\n", "removed_freq_present>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t NCFrequencyList_removed__freq__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t NCFrequencyList_removed__freq__present_descr_ = { "@RLCMAC_CSN1_Types.NCFrequencyList.removed_freq_present", &BITSTRING_ber_, &NCFrequencyList_removed__freq__present_raw_, NULL, &NCFrequencyList_removed__freq__present_xer_, &BITSTRING_json_, &NCFrequencyList_removed__freq__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NCFrequencyList_removed__freq__present_default_coding("RAW");
const TTCN_RAWdescriptor_t NCFrequencyList_repeated__add__frequency__term_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       NCFrequencyList_repeated__add__frequency__term_xer_ = { {"repeated_add_frequency_term>\n", "repeated_add_frequency_term>\n"}, {29, 29}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t NCFrequencyList_repeated__add__frequency__term_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t NCFrequencyList_repeated__add__frequency__term_descr_ = { "@RLCMAC_CSN1_Types.NCFrequencyList.repeated_add_frequency_term", &BITSTRING_ber_, &NCFrequencyList_repeated__add__frequency__term_raw_, NULL, &NCFrequencyList_repeated__add__frequency__term_xer_, &BITSTRING_json_, &NCFrequencyList_repeated__add__frequency__term_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NCFrequencyList_repeated__add__frequency__term_default_coding("RAW");
const TTCN_RAWdescriptor_t NCFrequencyList_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for NCFrequencyList
const TTCN_Typedescriptor_t NCFrequencyList_descr_ = { "@RLCMAC_CSN1_Types.NCFrequencyList", NULL, &NCFrequencyList_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t NCFrequencyList_nr__of__removed__freq_raw_ = {5,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,-1,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       NCFrequencyList_nr__of__removed__freq_xer_ = { {"nr_of_removed_freq>\n", "nr_of_removed_freq>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t NCFrequencyList_nr__of__removed__freq_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t NCFrequencyList_nr__of__removed__freq_descr_ = { "@RLCMAC_CSN1_Types.NCFrequencyList.nr_of_removed_freq", &INTEGER_ber_, &NCFrequencyList_nr__of__removed__freq_raw_, &INTEGER_text_, &NCFrequencyList_nr__of__removed__freq_xer_, &INTEGER_json_, &NCFrequencyList_nr__of__removed__freq_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NCFrequencyList_nr__of__removed__freq_default_coding("RAW");
const TTCN_RAWdescriptor_t NCFrequencyList_removed__freq__index_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for NCFrequencyList_removed__freq__index
const TTCN_Typedescriptor_t NCFrequencyList_removed__freq__index_descr_ = { "@RLCMAC_CSN1_Types.NCFrequencyList.removed_freq_index", NULL, &NCFrequencyList_removed__freq__index_raw_, NULL, NULL, NULL, NULL, NULL, &FreqIndexList_0_descr_, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NCFrequencyList_removed__freq__index_default_coding("RAW");
const TTCN_RAWdescriptor_t NCFrequencyList_repeated__add__frequency_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for NCFrequencyList_repeated__add__frequency
const TTCN_Typedescriptor_t NCFrequencyList_repeated__add__frequency_descr_ = { "@RLCMAC_CSN1_Types.NCFrequencyList.repeated_add_frequency", NULL, &NCFrequencyList_repeated__add__frequency_raw_, NULL, NULL, NULL, NULL, NULL, &RepeatedAddFrequencyItemList_0_descr_, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NCFrequencyList_repeated__add__frequency_default_coding("RAW");
UNIVERSAL_CHARSTRING NCFrequencyList_default_coding("RAW");
const TTCN_RAWdescriptor_t NCMeasurementParameters_nco_raw_ = {2,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for NCMeasurementParameters_nco
const TTCN_Typedescriptor_t NCMeasurementParameters_nco_descr_ = { "@RLCMAC_CSN1_Types.NCMeasurementParameters.nco", NULL, &NCMeasurementParameters_nco_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NCMeasurementParameters_nco_default_coding("RAW");
const TTCN_RAWdescriptor_t NCMeasurementParameters_nc__period__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       NCMeasurementParameters_nc__period__present_xer_ = { {"nc_period_present>\n", "nc_period_present>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t NCMeasurementParameters_nc__period__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t NCMeasurementParameters_nc__period__present_descr_ = { "@RLCMAC_CSN1_Types.NCMeasurementParameters.nc_period_present", &BITSTRING_ber_, &NCMeasurementParameters_nc__period__present_raw_, NULL, &NCMeasurementParameters_nc__period__present_xer_, &BITSTRING_json_, &NCMeasurementParameters_nc__period__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NCMeasurementParameters_nc__period__present_default_coding("RAW");
const TTCN_RAWdescriptor_t NCMeasurementParameters_nc__freq__list__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       NCMeasurementParameters_nc__freq__list__present_xer_ = { {"nc_freq_list_present>\n", "nc_freq_list_present>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t NCMeasurementParameters_nc__freq__list__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t NCMeasurementParameters_nc__freq__list__present_descr_ = { "@RLCMAC_CSN1_Types.NCMeasurementParameters.nc_freq_list_present", &BITSTRING_ber_, &NCMeasurementParameters_nc__freq__list__present_raw_, NULL, &NCMeasurementParameters_nc__freq__list__present_xer_, &BITSTRING_json_, &NCMeasurementParameters_nc__freq__list__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NCMeasurementParameters_nc__freq__list__present_default_coding("RAW");
const TTCN_RAWdescriptor_t NCMeasurementParameters_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for NCMeasurementParameters
const TTCN_Typedescriptor_t NCMeasurementParameters_descr_ = { "@RLCMAC_CSN1_Types.NCMeasurementParameters", NULL, &NCMeasurementParameters_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t NCMeasurementParameters_nc__non__drx__period_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       NCMeasurementParameters_nc__non__drx__period_xer_ = { {"nc_non_drx_period>\n", "nc_non_drx_period>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t NCMeasurementParameters_nc__non__drx__period_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t NCMeasurementParameters_nc__non__drx__period_descr_ = { "@RLCMAC_CSN1_Types.NCMeasurementParameters.nc_non_drx_period", &INTEGER_ber_, &NCMeasurementParameters_nc__non__drx__period_raw_, &INTEGER_text_, &NCMeasurementParameters_nc__non__drx__period_xer_, &INTEGER_json_, &NCMeasurementParameters_nc__non__drx__period_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NCMeasurementParameters_nc__non__drx__period_default_coding("RAW");
const TTCN_RAWdescriptor_t NCMeasurementParameters_nc__reporting__period__i_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       NCMeasurementParameters_nc__reporting__period__i_xer_ = { {"nc_reporting_period_i>\n", "nc_reporting_period_i>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t NCMeasurementParameters_nc__reporting__period__i_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t NCMeasurementParameters_nc__reporting__period__i_descr_ = { "@RLCMAC_CSN1_Types.NCMeasurementParameters.nc_reporting_period_i", &INTEGER_ber_, &NCMeasurementParameters_nc__reporting__period__i_raw_, &INTEGER_text_, &NCMeasurementParameters_nc__reporting__period__i_xer_, &INTEGER_json_, &NCMeasurementParameters_nc__reporting__period__i_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NCMeasurementParameters_nc__reporting__period__i_default_coding("RAW");
const TTCN_RAWdescriptor_t NCMeasurementParameters_nc__reporting__period__t_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       NCMeasurementParameters_nc__reporting__period__t_xer_ = { {"nc_reporting_period_t>\n", "nc_reporting_period_t>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t NCMeasurementParameters_nc__reporting__period__t_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t NCMeasurementParameters_nc__reporting__period__t_descr_ = { "@RLCMAC_CSN1_Types.NCMeasurementParameters.nc_reporting_period_t", &INTEGER_ber_, &NCMeasurementParameters_nc__reporting__period__t_raw_, &INTEGER_text_, &NCMeasurementParameters_nc__reporting__period__t_xer_, &INTEGER_json_, &NCMeasurementParameters_nc__reporting__period__t_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NCMeasurementParameters_nc__reporting__period__t_default_coding("RAW");
const TTCN_RAWdescriptor_t NCMeasurementParameters_nc__freq__list_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for NCMeasurementParameters_nc__freq__list
const TTCN_Typedescriptor_t NCMeasurementParameters_nc__freq__list_descr_ = { "@RLCMAC_CSN1_Types.NCMeasurementParameters.nc_freq_list", NULL, &NCMeasurementParameters_nc__freq__list_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NCMeasurementParameters_nc__freq__list_default_coding("RAW");
UNIVERSAL_CHARSTRING NCMeasurementParameters_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketMeasOrder_page__mode_raw_ = {2,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketMeasOrder_page__mode
const TTCN_Typedescriptor_t PacketMeasOrder_page__mode_descr_ = { "@RLCMAC_CSN1_Types.PacketMeasOrder.page_mode", NULL, &PacketMeasOrder_page__mode_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketMeasOrder_page__mode_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketMeasOrder_tfi__or__tlli_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketMeasOrder_tfi__or__tlli
const TTCN_Typedescriptor_t PacketMeasOrder_tfi__or__tlli_descr_ = { "@RLCMAC_CSN1_Types.PacketMeasOrder.tfi_or_tlli", NULL, &PacketMeasOrder_tfi__or__tlli_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketMeasOrder_tfi__or__tlli_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketMeasOrder_pmo__index_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketMeasOrder_pmo__index_xer_ = { {"pmo_index>\n", "pmo_index>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketMeasOrder_pmo__index_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketMeasOrder_pmo__index_descr_ = { "@RLCMAC_CSN1_Types.PacketMeasOrder.pmo_index", &INTEGER_ber_, &PacketMeasOrder_pmo__index_raw_, &INTEGER_text_, &PacketMeasOrder_pmo__index_xer_, &INTEGER_json_, &PacketMeasOrder_pmo__index_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketMeasOrder_pmo__index_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketMeasOrder_pmo__count_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketMeasOrder_pmo__count_xer_ = { {"pmo_count>\n", "pmo_count>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketMeasOrder_pmo__count_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketMeasOrder_pmo__count_descr_ = { "@RLCMAC_CSN1_Types.PacketMeasOrder.pmo_count", &INTEGER_ber_, &PacketMeasOrder_pmo__count_raw_, &INTEGER_text_, &PacketMeasOrder_pmo__count_xer_, &INTEGER_json_, &PacketMeasOrder_pmo__count_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketMeasOrder_pmo__count_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketMeasOrder_nc__meas__param__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketMeasOrder_nc__meas__param__present_xer_ = { {"nc_meas_param_present>\n", "nc_meas_param_present>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketMeasOrder_nc__meas__param__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketMeasOrder_nc__meas__param__present_descr_ = { "@RLCMAC_CSN1_Types.PacketMeasOrder.nc_meas_param_present", &BITSTRING_ber_, &PacketMeasOrder_nc__meas__param__present_raw_, NULL, &PacketMeasOrder_nc__meas__param__present_xer_, &BITSTRING_json_, &PacketMeasOrder_nc__meas__param__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketMeasOrder_nc__meas__param__present_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketMeasOrder_zero_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketMeasOrder_zero_xer_ = { {"zero>\n", "zero>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketMeasOrder_zero_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketMeasOrder_zero_descr_ = { "@RLCMAC_CSN1_Types.PacketMeasOrder.zero", &BITSTRING_ber_, &PacketMeasOrder_zero_raw_, NULL, &PacketMeasOrder_zero_xer_, &BITSTRING_json_, &PacketMeasOrder_zero_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketMeasOrder_zero_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketMeasOrder_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketMeasOrder
const TTCN_Typedescriptor_t PacketMeasOrder_descr_ = { "@RLCMAC_CSN1_Types.PacketMeasOrder", NULL, &PacketMeasOrder_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t PacketMeasOrder_nc__meas__param_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketMeasOrder_nc__meas__param
const TTCN_Typedescriptor_t PacketMeasOrder_nc__meas__param_descr_ = { "@RLCMAC_CSN1_Types.PacketMeasOrder.nc_meas_param", NULL, &PacketMeasOrder_nc__meas__param_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketMeasOrder_nc__meas__param_default_coding("RAW");
UNIVERSAL_CHARSTRING PacketMeasOrder_default_coding("RAW");
const TTCN_RAWdescriptor_t O__Gtfi_presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       O__Gtfi_presence_xer_ = { {"presence>\n", "presence>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t O__Gtfi_presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t O__Gtfi_presence_descr_ = { "@RLCMAC_CSN1_Types.O_Gtfi.presence", &BITSTRING_ber_, &O__Gtfi_presence_raw_, NULL, &O__Gtfi_presence_xer_, &BITSTRING_json_, &O__Gtfi_presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING O__Gtfi_presence_default_coding("RAW");
const TTCN_RAWdescriptor_t O__Gtfi_global__tfi_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for O__Gtfi_global__tfi
const TTCN_Typedescriptor_t O__Gtfi_global__tfi_descr_ = { "@RLCMAC_CSN1_Types.O_Gtfi.global_tfi", NULL, &O__Gtfi_global__tfi_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING O__Gtfi_global__tfi_default_coding("RAW");
const TTCN_RAWdescriptor_t O__Gtfi_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for O__Gtfi
const TTCN_Typedescriptor_t O__Gtfi_descr_ = { "@RLCMAC_CSN1_Types.O_Gtfi", NULL, &O__Gtfi_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING O__Gtfi_default_coding("RAW");
const TTCN_RAWdescriptor_t IO__Tlli_presence_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       IO__Tlli_presence_xer_ = { {"presence>\n", "presence>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t IO__Tlli_presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t IO__Tlli_presence_descr_ = { "@RLCMAC_CSN1_Types.IO_Tlli.presence", &BITSTRING_ber_, &IO__Tlli_presence_raw_, NULL, &IO__Tlli_presence_xer_, &BITSTRING_json_, &IO__Tlli_presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IO__Tlli_presence_default_coding("RAW");
const TTCN_RAWdescriptor_t IO__Tlli_tlli_raw_ = {32,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,4,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       IO__Tlli_tlli_xer_ = { {"tlli>\n", "tlli>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int IO__Tlli_tlli_oer_ext_arr_[0] = {};
const int IO__Tlli_tlli_oer_p_[0] = {};
const TTCN_OERdescriptor_t IO__Tlli_tlli_oer_ = { -1, TRUE, 4, FALSE, 0, 0, IO__Tlli_tlli_oer_ext_arr_, 0, IO__Tlli_tlli_oer_p_};
const TTCN_Typedescriptor_t IO__Tlli_tlli_descr_ = { "@RLCMAC_CSN1_Types.IO_Tlli.tlli", &OCTETSTRING_ber_, &IO__Tlli_tlli_raw_, &OCTETSTRING_text_, &IO__Tlli_tlli_xer_, &OCTETSTRING_json_, &IO__Tlli_tlli_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IO__Tlli_tlli_default_coding("RAW");
const TTCN_RAWdescriptor_t IO__Tlli_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for IO__Tlli
const TTCN_Typedescriptor_t IO__Tlli_descr_ = { "@RLCMAC_CSN1_Types.IO_Tlli", NULL, &IO__Tlli_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IO__Tlli_default_coding("RAW");
const TTCN_RAWdescriptor_t IIO__Tqi_presence_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       IIO__Tqi_presence_xer_ = { {"presence>\n", "presence>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t IIO__Tqi_presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t IIO__Tqi_presence_descr_ = { "@RLCMAC_CSN1_Types.IIO_Tqi.presence", &BITSTRING_ber_, &IIO__Tqi_presence_raw_, NULL, &IIO__Tqi_presence_xer_, &BITSTRING_json_, &IIO__Tqi_presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IIO__Tqi_presence_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketRequestReference_ra__info_raw_ = {11,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketRequestReference_ra__info_xer_ = { {"ra_info>\n", "ra_info>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketRequestReference_ra__info_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketRequestReference_ra__info_descr_ = { "@RLCMAC_CSN1_Types.PacketRequestReference.ra_info", &INTEGER_ber_, &PacketRequestReference_ra__info_raw_, &INTEGER_text_, &PacketRequestReference_ra__info_xer_, &INTEGER_json_, &PacketRequestReference_ra__info_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketRequestReference_ra__info_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketRequestReference_frame__nr_raw_ = {16,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketRequestReference_frame__nr_xer_ = { {"frame_nr>\n", "frame_nr>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketRequestReference_frame__nr_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketRequestReference_frame__nr_descr_ = { "@RLCMAC_CSN1_Types.PacketRequestReference.frame_nr", &INTEGER_ber_, &PacketRequestReference_frame__nr_raw_, &INTEGER_text_, &PacketRequestReference_frame__nr_xer_, &INTEGER_json_, &PacketRequestReference_frame__nr_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketRequestReference_frame__nr_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketRequestReference_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketRequestReference
const TTCN_Typedescriptor_t PacketRequestReference_descr_ = { "@RLCMAC_CSN1_Types.PacketRequestReference", NULL, &PacketRequestReference_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketRequestReference_default_coding("RAW");
const TTCN_RAWdescriptor_t IIO__Tqi_pkt__req__ref_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for IIO__Tqi_pkt__req__ref
const TTCN_Typedescriptor_t IIO__Tqi_pkt__req__ref_descr_ = { "@RLCMAC_CSN1_Types.IIO_Tqi.pkt_req_ref", NULL, &IIO__Tqi_pkt__req__ref_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IIO__Tqi_pkt__req__ref_default_coding("RAW");
const TTCN_RAWdescriptor_t IIO__Tqi_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for IIO__Tqi
const TTCN_Typedescriptor_t IIO__Tqi_descr_ = { "@RLCMAC_CSN1_Types.IIO_Tqi", NULL, &IIO__Tqi_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IIO__Tqi_default_coding("RAW");
const TTCN_RAWdescriptor_t PktUlAssUnion_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktUlAssUnion
const TTCN_Typedescriptor_t PktUlAssUnion_descr_ = { "@RLCMAC_CSN1_Types.PktUlAssUnion", NULL, &PktUlAssUnion_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t PktUlAssUnion_global__tfi_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktUlAssUnion_global__tfi
const TTCN_Typedescriptor_t PktUlAssUnion_global__tfi_descr_ = { "@RLCMAC_CSN1_Types.PktUlAssUnion.global_tfi", NULL, &PktUlAssUnion_global__tfi_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktUlAssUnion_global__tfi_default_coding("RAW");
const TTCN_RAWdescriptor_t PktUlAssUnion_tlli_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktUlAssUnion_tlli
const TTCN_Typedescriptor_t PktUlAssUnion_tlli_descr_ = { "@RLCMAC_CSN1_Types.PktUlAssUnion.tlli", NULL, &PktUlAssUnion_tlli_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktUlAssUnion_tlli_default_coding("RAW");
const TTCN_RAWdescriptor_t PktUlAssUnion_tqi_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktUlAssUnion_tqi
const TTCN_Typedescriptor_t PktUlAssUnion_tqi_descr_ = { "@RLCMAC_CSN1_Types.PktUlAssUnion.tqi", NULL, &PktUlAssUnion_tqi_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktUlAssUnion_tqi_default_coding("RAW");
UNIVERSAL_CHARSTRING PktUlAssUnion_default_coding("RAW");
const TTCN_RAWdescriptor_t DynamicAllocation_extd__dyn__alloc_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       DynamicAllocation_extd__dyn__alloc_xer_ = { {"extd_dyn_alloc>\n", "extd_dyn_alloc>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t DynamicAllocation_extd__dyn__alloc_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t DynamicAllocation_extd__dyn__alloc_descr_ = { "@RLCMAC_CSN1_Types.DynamicAllocation.extd_dyn_alloc", &BITSTRING_ber_, &DynamicAllocation_extd__dyn__alloc_raw_, NULL, &DynamicAllocation_extd__dyn__alloc_xer_, &BITSTRING_json_, &DynamicAllocation_extd__dyn__alloc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DynamicAllocation_extd__dyn__alloc_default_coding("RAW");
const TTCN_RAWdescriptor_t DynamicAllocation_p0__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       DynamicAllocation_p0__present_xer_ = { {"p0_present>\n", "p0_present>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t DynamicAllocation_p0__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t DynamicAllocation_p0__present_descr_ = { "@RLCMAC_CSN1_Types.DynamicAllocation.p0_present", &BITSTRING_ber_, &DynamicAllocation_p0__present_raw_, NULL, &DynamicAllocation_p0__present_xer_, &BITSTRING_json_, &DynamicAllocation_p0__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DynamicAllocation_p0__present_default_coding("RAW");
const TTCN_RAWdescriptor_t DynamicAllocation_usf__granularity_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       DynamicAllocation_usf__granularity_xer_ = { {"usf_granularity>\n", "usf_granularity>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t DynamicAllocation_usf__granularity_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t DynamicAllocation_usf__granularity_descr_ = { "@RLCMAC_CSN1_Types.DynamicAllocation.usf_granularity", &BITSTRING_ber_, &DynamicAllocation_usf__granularity_raw_, NULL, &DynamicAllocation_usf__granularity_xer_, &BITSTRING_json_, &DynamicAllocation_usf__granularity_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DynamicAllocation_usf__granularity_default_coding("RAW");
const TTCN_RAWdescriptor_t DynamicAllocation_ul__tfi__ass__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       DynamicAllocation_ul__tfi__ass__present_xer_ = { {"ul_tfi_ass_present>\n", "ul_tfi_ass_present>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t DynamicAllocation_ul__tfi__ass__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t DynamicAllocation_ul__tfi__ass__present_descr_ = { "@RLCMAC_CSN1_Types.DynamicAllocation.ul_tfi_ass_present", &BITSTRING_ber_, &DynamicAllocation_ul__tfi__ass__present_raw_, NULL, &DynamicAllocation_ul__tfi__ass__present_xer_, &BITSTRING_json_, &DynamicAllocation_ul__tfi__ass__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DynamicAllocation_ul__tfi__ass__present_default_coding("RAW");
const TTCN_RAWdescriptor_t DynamicAllocation_reserved_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       DynamicAllocation_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_OERdescriptor_t DynamicAllocation_reserved_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t DynamicAllocation_reserved_descr_ = { "@RLCMAC_CSN1_Types.DynamicAllocation.reserved", &BITSTRING_ber_, &DynamicAllocation_reserved_raw_, NULL, &DynamicAllocation_reserved_xer_, &BITSTRING_json_, &DynamicAllocation_reserved_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DynamicAllocation_reserved_default_coding("RAW");
const TTCN_RAWdescriptor_t DynamicAllocation_tbf__starting__time__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       DynamicAllocation_tbf__starting__time__present_xer_ = { {"tbf_starting_time_present>\n", "tbf_starting_time_present>\n"}, {27, 27}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t DynamicAllocation_tbf__starting__time__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t DynamicAllocation_tbf__starting__time__present_descr_ = { "@RLCMAC_CSN1_Types.DynamicAllocation.tbf_starting_time_present", &BITSTRING_ber_, &DynamicAllocation_tbf__starting__time__present_raw_, NULL, &DynamicAllocation_tbf__starting__time__present_xer_, &BITSTRING_json_, &DynamicAllocation_tbf__starting__time__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DynamicAllocation_tbf__starting__time__present_default_coding("RAW");
const TTCN_RAWdescriptor_t TsAllocationUnion_presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       TsAllocationUnion_presence_xer_ = { {"presence>\n", "presence>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t TsAllocationUnion_presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t TsAllocationUnion_presence_descr_ = { "@RLCMAC_CSN1_Types.TsAllocationUnion.presence", &BITSTRING_ber_, &TsAllocationUnion_presence_raw_, NULL, &TsAllocationUnion_presence_xer_, &BITSTRING_json_, &TsAllocationUnion_presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TsAllocationUnion_presence_default_coding("RAW");
const TTCN_RAWdescriptor_t TsAllocationUnion_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for TsAllocationUnion
const TTCN_Typedescriptor_t TsAllocationUnion_descr_ = { "@RLCMAC_CSN1_Types.TsAllocationUnion", NULL, &TsAllocationUnion_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t TsAllocationTsArr_raw_ = {8,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for TsAllocationTsArr
const TTCN_Typedescriptor_t TsAllocationTsArr_descr_ = { "@RLCMAC_CSN1_Types.TsAllocationTsArr", NULL, &TsAllocationTsArr_raw_, NULL, NULL, NULL, NULL, NULL, &TsAllocationTsArr_0_descr_, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t TsAllocationTs_presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       TsAllocationTs_presence_xer_ = { {"presence>\n", "presence>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t TsAllocationTs_presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t TsAllocationTs_presence_descr_ = { "@RLCMAC_CSN1_Types.TsAllocationTs.presence", &BITSTRING_ber_, &TsAllocationTs_presence_raw_, NULL, &TsAllocationTs_presence_xer_, &BITSTRING_json_, &TsAllocationTs_presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TsAllocationTs_presence_default_coding("RAW");
const TTCN_RAWdescriptor_t TsAllocationTs_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for TsAllocationTs
const TTCN_Typedescriptor_t TsAllocationTs_descr_ = { "@RLCMAC_CSN1_Types.TsAllocationTs", NULL, &TsAllocationTs_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t TsAllocationTs_usf__tn_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       TsAllocationTs_usf__tn_xer_ = { {"usf_tn>\n", "usf_tn>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t TsAllocationTs_usf__tn_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t TsAllocationTs_usf__tn_descr_ = { "@RLCMAC_CSN1_Types.TsAllocationTs.usf_tn", &INTEGER_ber_, &TsAllocationTs_usf__tn_raw_, &INTEGER_text_, &TsAllocationTs_usf__tn_xer_, &INTEGER_json_, &TsAllocationTs_usf__tn_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TsAllocationTs_usf__tn_default_coding("RAW");
UNIVERSAL_CHARSTRING TsAllocationTs_default_coding("RAW");
const TTCN_RAWdescriptor_t TsAllocationTsArr_0_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for TsAllocationTsArr_0
const TTCN_Typedescriptor_t TsAllocationTsArr_0_descr_ = { "@RLCMAC_CSN1_Types.TsAllocationTsArr.<oftype>", NULL, &TsAllocationTsArr_0_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TsAllocationTsArr_0_default_coding("RAW");
UNIVERSAL_CHARSTRING TsAllocationTsArr_default_coding("RAW");
const TTCN_RAWdescriptor_t TsAllocationUnion_ts_raw_ = {8,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for TsAllocationUnion_ts
const TTCN_Typedescriptor_t TsAllocationUnion_ts_descr_ = { "@RLCMAC_CSN1_Types.TsAllocationUnion.ts", NULL, &TsAllocationUnion_ts_raw_, NULL, NULL, NULL, NULL, NULL, &TsAllocationTsArr_0_descr_, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TsAllocationUnion_ts_default_coding("RAW");
const TTCN_RAWdescriptor_t TsAllocationPwr_alpha_raw_ = {4,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       TsAllocationPwr_alpha_xer_ = { {"alpha>\n", "alpha>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t TsAllocationPwr_alpha_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t TsAllocationPwr_alpha_descr_ = { "@RLCMAC_CSN1_Types.TsAllocationPwr.alpha", &INTEGER_ber_, &TsAllocationPwr_alpha_raw_, &INTEGER_text_, &TsAllocationPwr_alpha_xer_, &INTEGER_json_, &TsAllocationPwr_alpha_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TsAllocationPwr_alpha_default_coding("RAW");
const TTCN_RAWdescriptor_t TnGamma_presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       TnGamma_presence_xer_ = { {"presence>\n", "presence>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t TnGamma_presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t TnGamma_presence_descr_ = { "@RLCMAC_CSN1_Types.TnGamma.presence", &BITSTRING_ber_, &TnGamma_presence_raw_, NULL, &TnGamma_presence_xer_, &BITSTRING_json_, &TnGamma_presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TnGamma_presence_default_coding("RAW");
const TTCN_RAWdescriptor_t TnGamma_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for TnGamma
const TTCN_Typedescriptor_t TnGamma_descr_ = { "@RLCMAC_CSN1_Types.TnGamma", NULL, &TnGamma_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t TnGamma_usf__tn_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       TnGamma_usf__tn_xer_ = { {"usf_tn>\n", "usf_tn>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t TnGamma_usf__tn_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t TnGamma_usf__tn_descr_ = { "@RLCMAC_CSN1_Types.TnGamma.usf_tn", &INTEGER_ber_, &TnGamma_usf__tn_raw_, &INTEGER_text_, &TnGamma_usf__tn_xer_, &INTEGER_json_, &TnGamma_usf__tn_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TnGamma_usf__tn_default_coding("RAW");
const TTCN_RAWdescriptor_t TnGamma_gamma__tn_raw_ = {5,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       TnGamma_gamma__tn_xer_ = { {"gamma_tn>\n", "gamma_tn>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t TnGamma_gamma__tn_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t TnGamma_gamma__tn_descr_ = { "@RLCMAC_CSN1_Types.TnGamma.gamma_tn", &INTEGER_ber_, &TnGamma_gamma__tn_raw_, &INTEGER_text_, &TnGamma_gamma__tn_xer_, &INTEGER_json_, &TnGamma_gamma__tn_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TnGamma_gamma__tn_default_coding("RAW");
UNIVERSAL_CHARSTRING TnGamma_default_coding("RAW");
const TTCN_RAWdescriptor_t TsAllocationPwr_tn__gamma_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for TsAllocationPwr_tn__gamma
const TTCN_Typedescriptor_t TsAllocationPwr_tn__gamma_descr_ = { "@RLCMAC_CSN1_Types.TsAllocationPwr.tn_gamma", NULL, &TsAllocationPwr_tn__gamma_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TsAllocationPwr_tn__gamma_default_coding("RAW");
const TTCN_RAWdescriptor_t TsAllocationPwr_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for TsAllocationPwr
const TTCN_Typedescriptor_t TsAllocationPwr_descr_ = { "@RLCMAC_CSN1_Types.TsAllocationPwr", NULL, &TsAllocationPwr_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TsAllocationPwr_default_coding("RAW");
const TTCN_RAWdescriptor_t TsAllocationUnion_ts__with__pwr_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for TsAllocationUnion_ts__with__pwr
const TTCN_Typedescriptor_t TsAllocationUnion_ts__with__pwr_descr_ = { "@RLCMAC_CSN1_Types.TsAllocationUnion.ts_with_pwr", NULL, &TsAllocationUnion_ts__with__pwr_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TsAllocationUnion_ts__with__pwr_default_coding("RAW");
UNIVERSAL_CHARSTRING TsAllocationUnion_default_coding("RAW");
const TTCN_RAWdescriptor_t DynamicAllocation_ts__allocation_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for DynamicAllocation_ts__allocation
const TTCN_Typedescriptor_t DynamicAllocation_ts__allocation_descr_ = { "@RLCMAC_CSN1_Types.DynamicAllocation.ts_allocation", NULL, &DynamicAllocation_ts__allocation_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DynamicAllocation_ts__allocation_default_coding("RAW");
const TTCN_RAWdescriptor_t DynamicAllocation_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for DynamicAllocation
const TTCN_Typedescriptor_t DynamicAllocation_descr_ = { "@RLCMAC_CSN1_Types.DynamicAllocation", NULL, &DynamicAllocation_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t DynamicAllocation_p0_raw_ = {4,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       DynamicAllocation_p0_xer_ = { {"p0>\n", "p0>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t DynamicAllocation_p0_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t DynamicAllocation_p0_descr_ = { "@RLCMAC_CSN1_Types.DynamicAllocation.p0", &INTEGER_ber_, &DynamicAllocation_p0_raw_, &INTEGER_text_, &DynamicAllocation_p0_xer_, &INTEGER_json_, &DynamicAllocation_p0_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DynamicAllocation_p0_default_coding("RAW");
const TTCN_RAWdescriptor_t DynamicAllocation_pr__mode_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       DynamicAllocation_pr__mode_xer_ = { {"pr_mode>\n", "pr_mode>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t DynamicAllocation_pr__mode_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t DynamicAllocation_pr__mode_descr_ = { "@RLCMAC_CSN1_Types.DynamicAllocation.pr_mode", &BITSTRING_ber_, &DynamicAllocation_pr__mode_raw_, NULL, &DynamicAllocation_pr__mode_xer_, &BITSTRING_json_, &DynamicAllocation_pr__mode_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DynamicAllocation_pr__mode_default_coding("RAW");
const TTCN_RAWdescriptor_t DynamicAllocation_ul__tfi__assignment_raw_ = {5,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       DynamicAllocation_ul__tfi__assignment_xer_ = { {"ul_tfi_assignment>\n", "ul_tfi_assignment>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t DynamicAllocation_ul__tfi__assignment_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t DynamicAllocation_ul__tfi__assignment_descr_ = { "@RLCMAC_CSN1_Types.DynamicAllocation.ul_tfi_assignment", &INTEGER_ber_, &DynamicAllocation_ul__tfi__assignment_raw_, &INTEGER_text_, &DynamicAllocation_ul__tfi__assignment_xer_, &INTEGER_json_, &DynamicAllocation_ul__tfi__assignment_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DynamicAllocation_ul__tfi__assignment_default_coding("RAW");
const TTCN_RAWdescriptor_t DynamicAllocation_tbf__starting__time_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for DynamicAllocation_tbf__starting__time
const TTCN_Typedescriptor_t DynamicAllocation_tbf__starting__time_descr_ = { "@RLCMAC_CSN1_Types.DynamicAllocation.tbf_starting_time", NULL, &DynamicAllocation_tbf__starting__time_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DynamicAllocation_tbf__starting__time_default_coding("RAW");
UNIVERSAL_CHARSTRING DynamicAllocation_default_coding("RAW");
const TTCN_RAWdescriptor_t TnGamma8_raw_ = {8,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for TnGamma8
const TTCN_Typedescriptor_t TnGamma8_descr_ = { "@RLCMAC_CSN1_Types.TnGamma8", NULL, &TnGamma8_raw_, NULL, NULL, NULL, NULL, NULL, &TnGamma8_0_descr_, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t TnGamma8_0_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for TnGamma8_0
const TTCN_Typedescriptor_t TnGamma8_0_descr_ = { "@RLCMAC_CSN1_Types.TnGamma8.<oftype>", NULL, &TnGamma8_0_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TnGamma8_0_default_coding("RAW");
UNIVERSAL_CHARSTRING TnGamma8_default_coding("RAW");
const TTCN_RAWdescriptor_t SingleBlockAllocation_timeslot__nr_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       SingleBlockAllocation_timeslot__nr_xer_ = { {"timeslot_nr>\n", "timeslot_nr>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t SingleBlockAllocation_timeslot__nr_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t SingleBlockAllocation_timeslot__nr_descr_ = { "@RLCMAC_CSN1_Types.SingleBlockAllocation.timeslot_nr", &INTEGER_ber_, &SingleBlockAllocation_timeslot__nr_raw_, &INTEGER_text_, &SingleBlockAllocation_timeslot__nr_xer_, &INTEGER_json_, &SingleBlockAllocation_timeslot__nr_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SingleBlockAllocation_timeslot__nr_default_coding("RAW");
const TTCN_RAWdescriptor_t SingleBlockAllocation_alpha__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       SingleBlockAllocation_alpha__present_xer_ = { {"alpha_present>\n", "alpha_present>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t SingleBlockAllocation_alpha__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t SingleBlockAllocation_alpha__present_descr_ = { "@RLCMAC_CSN1_Types.SingleBlockAllocation.alpha_present", &BITSTRING_ber_, &SingleBlockAllocation_alpha__present_raw_, NULL, &SingleBlockAllocation_alpha__present_xer_, &BITSTRING_json_, &SingleBlockAllocation_alpha__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SingleBlockAllocation_alpha__present_default_coding("RAW");
const TTCN_RAWdescriptor_t SingleBlockAllocation_gamma__tn_raw_ = {5,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       SingleBlockAllocation_gamma__tn_xer_ = { {"gamma_tn>\n", "gamma_tn>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t SingleBlockAllocation_gamma__tn_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t SingleBlockAllocation_gamma__tn_descr_ = { "@RLCMAC_CSN1_Types.SingleBlockAllocation.gamma_tn", &INTEGER_ber_, &SingleBlockAllocation_gamma__tn_raw_, &INTEGER_text_, &SingleBlockAllocation_gamma__tn_xer_, &INTEGER_json_, &SingleBlockAllocation_gamma__tn_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SingleBlockAllocation_gamma__tn_default_coding("RAW");
const TTCN_RAWdescriptor_t SingleBlockAllocation_p0__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       SingleBlockAllocation_p0__present_xer_ = { {"p0_present>\n", "p0_present>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t SingleBlockAllocation_p0__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t SingleBlockAllocation_p0__present_descr_ = { "@RLCMAC_CSN1_Types.SingleBlockAllocation.p0_present", &BITSTRING_ber_, &SingleBlockAllocation_p0__present_raw_, NULL, &SingleBlockAllocation_p0__present_xer_, &BITSTRING_json_, &SingleBlockAllocation_p0__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SingleBlockAllocation_p0__present_default_coding("RAW");
const TTCN_RAWdescriptor_t SingleBlockAllocation_tbf__starting__time_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for SingleBlockAllocation_tbf__starting__time
const TTCN_Typedescriptor_t SingleBlockAllocation_tbf__starting__time_descr_ = { "@RLCMAC_CSN1_Types.SingleBlockAllocation.tbf_starting_time", NULL, &SingleBlockAllocation_tbf__starting__time_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SingleBlockAllocation_tbf__starting__time_default_coding("RAW");
const TTCN_RAWdescriptor_t SingleBlockAllocation_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for SingleBlockAllocation
const TTCN_Typedescriptor_t SingleBlockAllocation_descr_ = { "@RLCMAC_CSN1_Types.SingleBlockAllocation", NULL, &SingleBlockAllocation_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t SingleBlockAllocation_alpha_raw_ = {4,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       SingleBlockAllocation_alpha_xer_ = { {"alpha>\n", "alpha>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t SingleBlockAllocation_alpha_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t SingleBlockAllocation_alpha_descr_ = { "@RLCMAC_CSN1_Types.SingleBlockAllocation.alpha", &INTEGER_ber_, &SingleBlockAllocation_alpha_raw_, &INTEGER_text_, &SingleBlockAllocation_alpha_xer_, &INTEGER_json_, &SingleBlockAllocation_alpha_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SingleBlockAllocation_alpha_default_coding("RAW");
const TTCN_RAWdescriptor_t SingleBlockAllocation_p0_raw_ = {4,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       SingleBlockAllocation_p0_xer_ = { {"p0>\n", "p0>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t SingleBlockAllocation_p0_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t SingleBlockAllocation_p0_descr_ = { "@RLCMAC_CSN1_Types.SingleBlockAllocation.p0", &INTEGER_ber_, &SingleBlockAllocation_p0_raw_, &INTEGER_text_, &SingleBlockAllocation_p0_xer_, &INTEGER_json_, &SingleBlockAllocation_p0_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SingleBlockAllocation_p0_default_coding("RAW");
const TTCN_RAWdescriptor_t SingleBlockAllocation_reserved_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       SingleBlockAllocation_reserved_xer_ = { {"reserved>\n", "reserved>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t SingleBlockAllocation_reserved_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t SingleBlockAllocation_reserved_descr_ = { "@RLCMAC_CSN1_Types.SingleBlockAllocation.reserved", &BITSTRING_ber_, &SingleBlockAllocation_reserved_raw_, NULL, &SingleBlockAllocation_reserved_xer_, &BITSTRING_json_, &SingleBlockAllocation_reserved_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SingleBlockAllocation_reserved_default_coding("RAW");
const TTCN_RAWdescriptor_t SingleBlockAllocation_pr__mode_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       SingleBlockAllocation_pr__mode_xer_ = { {"pr_mode>\n", "pr_mode>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t SingleBlockAllocation_pr__mode_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t SingleBlockAllocation_pr__mode_descr_ = { "@RLCMAC_CSN1_Types.SingleBlockAllocation.pr_mode", &BITSTRING_ber_, &SingleBlockAllocation_pr__mode_raw_, NULL, &SingleBlockAllocation_pr__mode_xer_, &BITSTRING_json_, &SingleBlockAllocation_pr__mode_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SingleBlockAllocation_pr__mode_default_coding("RAW");
UNIVERSAL_CHARSTRING SingleBlockAllocation_default_coding("RAW");
const TTCN_RAWdescriptor_t ChCodingCommand_raw_ = {2,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for ChCodingCommand
const TTCN_Typedescriptor_t ChCodingCommand_descr_ = { "@RLCMAC_CSN1_Types.ChCodingCommand", NULL, &ChCodingCommand_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ChCodingCommand_default_coding("RAW");
const TTCN_RAWdescriptor_t PktUlAssGprs_ch__coding__cmd_raw_ = {2,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktUlAssGprs_ch__coding__cmd
const TTCN_Typedescriptor_t PktUlAssGprs_ch__coding__cmd_descr_ = { "@RLCMAC_CSN1_Types.PktUlAssGprs.ch_coding_cmd", NULL, &PktUlAssGprs_ch__coding__cmd_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktUlAssGprs_ch__coding__cmd_default_coding("RAW");
const TTCN_RAWdescriptor_t PktUlAssGprs_tlli__block__chan__coding_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktUlAssGprs_tlli__block__chan__coding_xer_ = { {"tlli_block_chan_coding>\n", "tlli_block_chan_coding>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PktUlAssGprs_tlli__block__chan__coding_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PktUlAssGprs_tlli__block__chan__coding_descr_ = { "@RLCMAC_CSN1_Types.PktUlAssGprs.tlli_block_chan_coding", &BITSTRING_ber_, &PktUlAssGprs_tlli__block__chan__coding_raw_, NULL, &PktUlAssGprs_tlli__block__chan__coding_xer_, &BITSTRING_json_, &PktUlAssGprs_tlli__block__chan__coding_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktUlAssGprs_tlli__block__chan__coding_default_coding("RAW");
const TTCN_RAWdescriptor_t PktUlAssGprs_pkt__ta_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktUlAssGprs_pkt__ta
const TTCN_Typedescriptor_t PktUlAssGprs_pkt__ta_descr_ = { "@RLCMAC_CSN1_Types.PktUlAssGprs.pkt_ta", NULL, &PktUlAssGprs_pkt__ta_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktUlAssGprs_pkt__ta_default_coding("RAW");
const TTCN_RAWdescriptor_t PktUlAssGprs_freq__par__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktUlAssGprs_freq__par__present_xer_ = { {"freq_par_present>\n", "freq_par_present>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PktUlAssGprs_freq__par__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PktUlAssGprs_freq__par__present_descr_ = { "@RLCMAC_CSN1_Types.PktUlAssGprs.freq_par_present", &BITSTRING_ber_, &PktUlAssGprs_freq__par__present_raw_, NULL, &PktUlAssGprs_freq__par__present_xer_, &BITSTRING_json_, &PktUlAssGprs_freq__par__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktUlAssGprs_freq__par__present_default_coding("RAW");
const TTCN_RAWdescriptor_t PktUlAssGprs_alloc__present_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktUlAssGprs_alloc__present_xer_ = { {"alloc_present>\n", "alloc_present>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PktUlAssGprs_alloc__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PktUlAssGprs_alloc__present_descr_ = { "@RLCMAC_CSN1_Types.PktUlAssGprs.alloc_present", &BITSTRING_ber_, &PktUlAssGprs_alloc__present_raw_, NULL, &PktUlAssGprs_alloc__present_xer_, &BITSTRING_json_, &PktUlAssGprs_alloc__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktUlAssGprs_alloc__present_default_coding("RAW");
const TTCN_RAWdescriptor_t PktUlAssGprs_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktUlAssGprs
const TTCN_Typedescriptor_t PktUlAssGprs_descr_ = { "@RLCMAC_CSN1_Types.PktUlAssGprs", NULL, &PktUlAssGprs_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t PktUlAssGprs_freq__par_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktUlAssGprs_freq__par
const TTCN_Typedescriptor_t PktUlAssGprs_freq__par_descr_ = { "@RLCMAC_CSN1_Types.PktUlAssGprs.freq_par", NULL, &PktUlAssGprs_freq__par_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktUlAssGprs_freq__par_default_coding("RAW");
const TTCN_RAWdescriptor_t PktUlAssGprs_dyn__block__alloc_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktUlAssGprs_dyn__block__alloc
const TTCN_Typedescriptor_t PktUlAssGprs_dyn__block__alloc_descr_ = { "@RLCMAC_CSN1_Types.PktUlAssGprs.dyn_block_alloc", NULL, &PktUlAssGprs_dyn__block__alloc_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktUlAssGprs_dyn__block__alloc_default_coding("RAW");
const TTCN_RAWdescriptor_t PktUlAssGprs_sgl__block__alloc_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktUlAssGprs_sgl__block__alloc
const TTCN_Typedescriptor_t PktUlAssGprs_sgl__block__alloc_descr_ = { "@RLCMAC_CSN1_Types.PktUlAssGprs.sgl_block_alloc", NULL, &PktUlAssGprs_sgl__block__alloc_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktUlAssGprs_sgl__block__alloc_default_coding("RAW");
UNIVERSAL_CHARSTRING PktUlAssGprs_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessTechnologiesRequestRepetition_raw_ = {0,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_REVERSE,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessTechnologiesRequestRepetition
const TTCN_Typedescriptor_t AccessTechnologiesRequestRepetition_descr_ = { "@RLCMAC_CSN1_Types.AccessTechnologiesRequestRepetition", NULL, &AccessTechnologiesRequestRepetition_raw_, NULL, NULL, NULL, NULL, NULL, &AccessTechnologiesRequestRepetition_0_descr_, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t AccessTechnologiesRequest_accessTechnType_raw_ = {4,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessTechnologiesRequest_accessTechnType_xer_ = { {"accessTechnType>\n", "accessTechnType>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessTechnologiesRequest_accessTechnType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessTechnologiesRequest_accessTechnType_descr_ = { "@RLCMAC_CSN1_Types.AccessTechnologiesRequest.accessTechnType", &BITSTRING_ber_, &AccessTechnologiesRequest_accessTechnType_raw_, NULL, &AccessTechnologiesRequest_accessTechnType_xer_, &BITSTRING_json_, &AccessTechnologiesRequest_accessTechnType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessTechnologiesRequest_accessTechnType_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessTechnologiesRequest_extensionBit_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessTechnologiesRequest_extensionBit_xer_ = { {"extensionBit>\n", "extensionBit>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessTechnologiesRequest_extensionBit_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessTechnologiesRequest_extensionBit_descr_ = { "@RLCMAC_CSN1_Types.AccessTechnologiesRequest.extensionBit", &BITSTRING_ber_, &AccessTechnologiesRequest_extensionBit_raw_, NULL, &AccessTechnologiesRequest_extensionBit_xer_, &BITSTRING_json_, &AccessTechnologiesRequest_extensionBit_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessTechnologiesRequest_extensionBit_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessTechnologiesRequest_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for AccessTechnologiesRequest
const TTCN_Typedescriptor_t AccessTechnologiesRequest_descr_ = { "@RLCMAC_CSN1_Types.AccessTechnologiesRequest", NULL, &AccessTechnologiesRequest_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessTechnologiesRequest_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessTechnologiesRequestRepetition_0_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for AccessTechnologiesRequestRepetition_0
const TTCN_Typedescriptor_t AccessTechnologiesRequestRepetition_0_descr_ = { "@RLCMAC_CSN1_Types.AccessTechnologiesRequestRepetition.<oftype>", NULL, &AccessTechnologiesRequestRepetition_0_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessTechnologiesRequestRepetition_0_default_coding("RAW");
UNIVERSAL_CHARSTRING AccessTechnologiesRequestRepetition_default_coding("RAW");
const TTCN_RAWdescriptor_t MultiBlockAllocation_timeslot__nr_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       MultiBlockAllocation_timeslot__nr_xer_ = { {"timeslot_nr>\n", "timeslot_nr>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MultiBlockAllocation_timeslot__nr_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MultiBlockAllocation_timeslot__nr_descr_ = { "@RLCMAC_CSN1_Types.MultiBlockAllocation.timeslot_nr", &INTEGER_ber_, &MultiBlockAllocation_timeslot__nr_raw_, &INTEGER_text_, &MultiBlockAllocation_timeslot__nr_xer_, &INTEGER_json_, &MultiBlockAllocation_timeslot__nr_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MultiBlockAllocation_timeslot__nr_default_coding("RAW");
const TTCN_RAWdescriptor_t MultiBlockAllocation_alpha__gamma__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       MultiBlockAllocation_alpha__gamma__present_xer_ = { {"alpha_gamma_present>\n", "alpha_gamma_present>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MultiBlockAllocation_alpha__gamma__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MultiBlockAllocation_alpha__gamma__present_descr_ = { "@RLCMAC_CSN1_Types.MultiBlockAllocation.alpha_gamma_present", &BITSTRING_ber_, &MultiBlockAllocation_alpha__gamma__present_raw_, NULL, &MultiBlockAllocation_alpha__gamma__present_xer_, &BITSTRING_json_, &MultiBlockAllocation_alpha__gamma__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MultiBlockAllocation_alpha__gamma__present_default_coding("RAW");
const TTCN_RAWdescriptor_t MultiBlockAllocation_p0__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       MultiBlockAllocation_p0__present_xer_ = { {"p0_present>\n", "p0_present>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MultiBlockAllocation_p0__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MultiBlockAllocation_p0__present_descr_ = { "@RLCMAC_CSN1_Types.MultiBlockAllocation.p0_present", &BITSTRING_ber_, &MultiBlockAllocation_p0__present_raw_, NULL, &MultiBlockAllocation_p0__present_xer_, &BITSTRING_json_, &MultiBlockAllocation_p0__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MultiBlockAllocation_p0__present_default_coding("RAW");
const TTCN_RAWdescriptor_t MultiBlockAllocation_tbf__starting__time_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for MultiBlockAllocation_tbf__starting__time
const TTCN_Typedescriptor_t MultiBlockAllocation_tbf__starting__time_descr_ = { "@RLCMAC_CSN1_Types.MultiBlockAllocation.tbf_starting_time", NULL, &MultiBlockAllocation_tbf__starting__time_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MultiBlockAllocation_tbf__starting__time_default_coding("RAW");
const TTCN_RAWdescriptor_t MultiBlockAllocation_num__radio__blocks__alloc_raw_ = {2,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       MultiBlockAllocation_num__radio__blocks__alloc_xer_ = { {"num_radio_blocks_alloc>\n", "num_radio_blocks_alloc>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MultiBlockAllocation_num__radio__blocks__alloc_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MultiBlockAllocation_num__radio__blocks__alloc_descr_ = { "@RLCMAC_CSN1_Types.MultiBlockAllocation.num_radio_blocks_alloc", &INTEGER_ber_, &MultiBlockAllocation_num__radio__blocks__alloc_raw_, &INTEGER_text_, &MultiBlockAllocation_num__radio__blocks__alloc_xer_, &INTEGER_json_, &MultiBlockAllocation_num__radio__blocks__alloc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MultiBlockAllocation_num__radio__blocks__alloc_default_coding("RAW");
const TTCN_RAWdescriptor_t MultiBlockAllocation_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for MultiBlockAllocation
const TTCN_Typedescriptor_t MultiBlockAllocation_descr_ = { "@RLCMAC_CSN1_Types.MultiBlockAllocation", NULL, &MultiBlockAllocation_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t MultiBlockAllocation_alpha_raw_ = {4,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       MultiBlockAllocation_alpha_xer_ = { {"alpha>\n", "alpha>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MultiBlockAllocation_alpha_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MultiBlockAllocation_alpha_descr_ = { "@RLCMAC_CSN1_Types.MultiBlockAllocation.alpha", &INTEGER_ber_, &MultiBlockAllocation_alpha_raw_, &INTEGER_text_, &MultiBlockAllocation_alpha_xer_, &INTEGER_json_, &MultiBlockAllocation_alpha_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MultiBlockAllocation_alpha_default_coding("RAW");
const TTCN_RAWdescriptor_t MultiBlockAllocation_gamma__tn_raw_ = {5,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       MultiBlockAllocation_gamma__tn_xer_ = { {"gamma_tn>\n", "gamma_tn>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MultiBlockAllocation_gamma__tn_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MultiBlockAllocation_gamma__tn_descr_ = { "@RLCMAC_CSN1_Types.MultiBlockAllocation.gamma_tn", &INTEGER_ber_, &MultiBlockAllocation_gamma__tn_raw_, &INTEGER_text_, &MultiBlockAllocation_gamma__tn_xer_, &INTEGER_json_, &MultiBlockAllocation_gamma__tn_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MultiBlockAllocation_gamma__tn_default_coding("RAW");
const TTCN_RAWdescriptor_t MultiBlockAllocation_p0_raw_ = {4,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       MultiBlockAllocation_p0_xer_ = { {"p0>\n", "p0>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MultiBlockAllocation_p0_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MultiBlockAllocation_p0_descr_ = { "@RLCMAC_CSN1_Types.MultiBlockAllocation.p0", &INTEGER_ber_, &MultiBlockAllocation_p0_raw_, &INTEGER_text_, &MultiBlockAllocation_p0_xer_, &INTEGER_json_, &MultiBlockAllocation_p0_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MultiBlockAllocation_p0_default_coding("RAW");
const TTCN_RAWdescriptor_t MultiBlockAllocation_reserved_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       MultiBlockAllocation_reserved_xer_ = { {"reserved>\n", "reserved>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MultiBlockAllocation_reserved_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MultiBlockAllocation_reserved_descr_ = { "@RLCMAC_CSN1_Types.MultiBlockAllocation.reserved", &BITSTRING_ber_, &MultiBlockAllocation_reserved_raw_, NULL, &MultiBlockAllocation_reserved_xer_, &BITSTRING_json_, &MultiBlockAllocation_reserved_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MultiBlockAllocation_reserved_default_coding("RAW");
const TTCN_RAWdescriptor_t MultiBlockAllocation_pr__mode_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       MultiBlockAllocation_pr__mode_xer_ = { {"pr_mode>\n", "pr_mode>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MultiBlockAllocation_pr__mode_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MultiBlockAllocation_pr__mode_descr_ = { "@RLCMAC_CSN1_Types.MultiBlockAllocation.pr_mode", &BITSTRING_ber_, &MultiBlockAllocation_pr__mode_raw_, NULL, &MultiBlockAllocation_pr__mode_xer_, &BITSTRING_json_, &MultiBlockAllocation_pr__mode_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MultiBlockAllocation_pr__mode_default_coding("RAW");
UNIVERSAL_CHARSTRING MultiBlockAllocation_default_coding("RAW");
const TTCN_RAWdescriptor_t PktUlAssEgprs_dual__carrier_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktUlAssEgprs_dual__carrier_xer_ = { {"dual_carrier>\n", "dual_carrier>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PktUlAssEgprs_dual__carrier_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PktUlAssEgprs_dual__carrier_descr_ = { "@RLCMAC_CSN1_Types.PktUlAssEgprs.dual_carrier", &BITSTRING_ber_, &PktUlAssEgprs_dual__carrier_raw_, NULL, &PktUlAssEgprs_dual__carrier_xer_, &BITSTRING_json_, &PktUlAssEgprs_dual__carrier_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktUlAssEgprs_dual__carrier_default_coding("RAW");
const TTCN_RAWdescriptor_t PktUlAssEgprs_tlli__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktUlAssEgprs_tlli__present_xer_ = { {"tlli_present>\n", "tlli_present>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PktUlAssEgprs_tlli__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PktUlAssEgprs_tlli__present_descr_ = { "@RLCMAC_CSN1_Types.PktUlAssEgprs.tlli_present", &BITSTRING_ber_, &PktUlAssEgprs_tlli__present_raw_, NULL, &PktUlAssEgprs_tlli__present_xer_, &BITSTRING_json_, &PktUlAssEgprs_tlli__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktUlAssEgprs_tlli__present_default_coding("RAW");
const TTCN_RAWdescriptor_t PktUlAssEgprs_compact__reduced__ma__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktUlAssEgprs_compact__reduced__ma__present_xer_ = { {"compact_reduced_ma_present>\n", "compact_reduced_ma_present>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PktUlAssEgprs_compact__reduced__ma__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PktUlAssEgprs_compact__reduced__ma__present_descr_ = { "@RLCMAC_CSN1_Types.PktUlAssEgprs.compact_reduced_ma_present", &BITSTRING_ber_, &PktUlAssEgprs_compact__reduced__ma__present_raw_, NULL, &PktUlAssEgprs_compact__reduced__ma__present_xer_, &BITSTRING_json_, &PktUlAssEgprs_compact__reduced__ma__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktUlAssEgprs_compact__reduced__ma__present_default_coding("RAW");
const TTCN_RAWdescriptor_t PktUlAssEgprs_chan__coding__cmd_raw_ = {4,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktUlAssEgprs_chan__coding__cmd
const TTCN_Typedescriptor_t PktUlAssEgprs_chan__coding__cmd_descr_ = { "@RLCMAC_CSN1_Types.PktUlAssEgprs.chan_coding_cmd", NULL, &PktUlAssEgprs_chan__coding__cmd_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktUlAssEgprs_chan__coding__cmd_default_coding("RAW");
const TTCN_RAWdescriptor_t PktUlAssEgprs_resegment_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktUlAssEgprs_resegment_xer_ = { {"resegment>\n", "resegment>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PktUlAssEgprs_resegment_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PktUlAssEgprs_resegment_descr_ = { "@RLCMAC_CSN1_Types.PktUlAssEgprs.resegment", &BITSTRING_ber_, &PktUlAssEgprs_resegment_raw_, NULL, &PktUlAssEgprs_resegment_xer_, &BITSTRING_json_, &PktUlAssEgprs_resegment_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktUlAssEgprs_resegment_default_coding("RAW");
const TTCN_RAWdescriptor_t PktUlAssEgprs_window__size_raw_ = {5,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktUlAssEgprs_window__size
const TTCN_Typedescriptor_t PktUlAssEgprs_window__size_descr_ = { "@RLCMAC_CSN1_Types.PktUlAssEgprs.window_size", NULL, &PktUlAssEgprs_window__size_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktUlAssEgprs_window__size_default_coding("RAW");
const TTCN_RAWdescriptor_t PktUlAssEgprs_ats__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktUlAssEgprs_ats__present_xer_ = { {"ats_present>\n", "ats_present>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PktUlAssEgprs_ats__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PktUlAssEgprs_ats__present_descr_ = { "@RLCMAC_CSN1_Types.PktUlAssEgprs.ats_present", &BITSTRING_ber_, &PktUlAssEgprs_ats__present_raw_, NULL, &PktUlAssEgprs_ats__present_xer_, &BITSTRING_json_, &PktUlAssEgprs_ats__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktUlAssEgprs_ats__present_default_coding("RAW");
const TTCN_RAWdescriptor_t PktUlAssEgprs_arac__retrans__req_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktUlAssEgprs_arac__retrans__req_xer_ = { {"arac_retrans_req>\n", "arac_retrans_req>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PktUlAssEgprs_arac__retrans__req_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PktUlAssEgprs_arac__retrans__req_descr_ = { "@RLCMAC_CSN1_Types.PktUlAssEgprs.arac_retrans_req", &BITSTRING_ber_, &PktUlAssEgprs_arac__retrans__req_raw_, NULL, &PktUlAssEgprs_arac__retrans__req_xer_, &BITSTRING_json_, &PktUlAssEgprs_arac__retrans__req_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktUlAssEgprs_arac__retrans__req_default_coding("RAW");
const TTCN_RAWdescriptor_t PktUlAssEgprs_tlli__block__chan__coding_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktUlAssEgprs_tlli__block__chan__coding_xer_ = { {"tlli_block_chan_coding>\n", "tlli_block_chan_coding>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PktUlAssEgprs_tlli__block__chan__coding_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PktUlAssEgprs_tlli__block__chan__coding_descr_ = { "@RLCMAC_CSN1_Types.PktUlAssEgprs.tlli_block_chan_coding", &BITSTRING_ber_, &PktUlAssEgprs_tlli__block__chan__coding_raw_, NULL, &PktUlAssEgprs_tlli__block__chan__coding_xer_, &BITSTRING_json_, &PktUlAssEgprs_tlli__block__chan__coding_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktUlAssEgprs_tlli__block__chan__coding_default_coding("RAW");
const TTCN_RAWdescriptor_t PktUlAssEgprs_bep__period2__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktUlAssEgprs_bep__period2__present_xer_ = { {"bep_period2_present>\n", "bep_period2_present>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PktUlAssEgprs_bep__period2__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PktUlAssEgprs_bep__period2__present_descr_ = { "@RLCMAC_CSN1_Types.PktUlAssEgprs.bep_period2_present", &BITSTRING_ber_, &PktUlAssEgprs_bep__period2__present_raw_, NULL, &PktUlAssEgprs_bep__period2__present_xer_, &BITSTRING_json_, &PktUlAssEgprs_bep__period2__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktUlAssEgprs_bep__period2__present_default_coding("RAW");
const TTCN_RAWdescriptor_t PktUlAssEgprs_pkt__ta_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktUlAssEgprs_pkt__ta
const TTCN_Typedescriptor_t PktUlAssEgprs_pkt__ta_descr_ = { "@RLCMAC_CSN1_Types.PktUlAssEgprs.pkt_ta", NULL, &PktUlAssEgprs_pkt__ta_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktUlAssEgprs_pkt__ta_default_coding("RAW");
const TTCN_RAWdescriptor_t PktUlAssEgprs_pkt__ext__ta__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktUlAssEgprs_pkt__ext__ta__present_xer_ = { {"pkt_ext_ta_present>\n", "pkt_ext_ta_present>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PktUlAssEgprs_pkt__ext__ta__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PktUlAssEgprs_pkt__ext__ta__present_descr_ = { "@RLCMAC_CSN1_Types.PktUlAssEgprs.pkt_ext_ta_present", &BITSTRING_ber_, &PktUlAssEgprs_pkt__ext__ta__present_raw_, NULL, &PktUlAssEgprs_pkt__ext__ta__present_xer_, &BITSTRING_json_, &PktUlAssEgprs_pkt__ext__ta__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktUlAssEgprs_pkt__ext__ta__present_default_coding("RAW");
const TTCN_RAWdescriptor_t PktUlAssEgprs_freq__par__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktUlAssEgprs_freq__par__present_xer_ = { {"freq_par_present>\n", "freq_par_present>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PktUlAssEgprs_freq__par__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PktUlAssEgprs_freq__par__present_descr_ = { "@RLCMAC_CSN1_Types.PktUlAssEgprs.freq_par_present", &BITSTRING_ber_, &PktUlAssEgprs_freq__par__present_raw_, NULL, &PktUlAssEgprs_freq__par__present_xer_, &BITSTRING_json_, &PktUlAssEgprs_freq__par__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktUlAssEgprs_freq__par__present_default_coding("RAW");
const TTCN_RAWdescriptor_t PktUlAssEgprs_alloc__present_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktUlAssEgprs_alloc__present_xer_ = { {"alloc_present>\n", "alloc_present>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PktUlAssEgprs_alloc__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PktUlAssEgprs_alloc__present_descr_ = { "@RLCMAC_CSN1_Types.PktUlAssEgprs.alloc_present", &BITSTRING_ber_, &PktUlAssEgprs_alloc__present_raw_, NULL, &PktUlAssEgprs_alloc__present_xer_, &BITSTRING_json_, &PktUlAssEgprs_alloc__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktUlAssEgprs_alloc__present_default_coding("RAW");
const TTCN_RAWdescriptor_t PktUlAssEgprs_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktUlAssEgprs
const TTCN_Typedescriptor_t PktUlAssEgprs_descr_ = { "@RLCMAC_CSN1_Types.PktUlAssEgprs", NULL, &PktUlAssEgprs_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t PktUlAssEgprs_tlli_raw_ = {32,SG_NO,ORDER_MSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,4,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktUlAssEgprs_tlli_xer_ = { {"tlli>\n", "tlli>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PktUlAssEgprs_tlli_oer_ext_arr_[0] = {};
const int PktUlAssEgprs_tlli_oer_p_[0] = {};
const TTCN_OERdescriptor_t PktUlAssEgprs_tlli_oer_ = { -1, TRUE, 4, FALSE, 0, 0, PktUlAssEgprs_tlli_oer_ext_arr_, 0, PktUlAssEgprs_tlli_oer_p_};
const TTCN_Typedescriptor_t PktUlAssEgprs_tlli_descr_ = { "@RLCMAC_CSN1_Types.PktUlAssEgprs.tlli", &OCTETSTRING_ber_, &PktUlAssEgprs_tlli_raw_, &OCTETSTRING_text_, &PktUlAssEgprs_tlli_xer_, &OCTETSTRING_json_, &PktUlAssEgprs_tlli_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktUlAssEgprs_tlli_default_coding("RAW");
const TTCN_RAWdescriptor_t PktUlAssEgprs_compact__reduced__ma_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktUlAssEgprs_compact__reduced__ma
const TTCN_Typedescriptor_t PktUlAssEgprs_compact__reduced__ma_descr_ = { "@RLCMAC_CSN1_Types.PktUlAssEgprs.compact_reduced_ma", NULL, &PktUlAssEgprs_compact__reduced__ma_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktUlAssEgprs_compact__reduced__ma_default_coding("RAW");
const TTCN_RAWdescriptor_t PktUlAssEgprs_ats_raw_ = {0,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_REVERSE,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PktUlAssEgprs_ats
const TTCN_Typedescriptor_t PktUlAssEgprs_ats_descr_ = { "@RLCMAC_CSN1_Types.PktUlAssEgprs.ats", NULL, &PktUlAssEgprs_ats_raw_, NULL, NULL, NULL, NULL, NULL, &AccessTechnologiesRequestRepetition_0_descr_, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktUlAssEgprs_ats_default_coding("RAW");
const TTCN_RAWdescriptor_t PktUlAssEgprs_bep__period2_raw_ = {4,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktUlAssEgprs_bep__period2_xer_ = { {"bep_period2>\n", "bep_period2>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PktUlAssEgprs_bep__period2_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PktUlAssEgprs_bep__period2_descr_ = { "@RLCMAC_CSN1_Types.PktUlAssEgprs.bep_period2", &BITSTRING_ber_, &PktUlAssEgprs_bep__period2_raw_, NULL, &PktUlAssEgprs_bep__period2_xer_, &BITSTRING_json_, &PktUlAssEgprs_bep__period2_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktUlAssEgprs_bep__period2_default_coding("RAW");
const TTCN_RAWdescriptor_t PktUlAssEgprs_pkt__ext__ta_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktUlAssEgprs_pkt__ext__ta_xer_ = { {"pkt_ext_ta>\n", "pkt_ext_ta>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PktUlAssEgprs_pkt__ext__ta_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PktUlAssEgprs_pkt__ext__ta_descr_ = { "@RLCMAC_CSN1_Types.PktUlAssEgprs.pkt_ext_ta", &BITSTRING_ber_, &PktUlAssEgprs_pkt__ext__ta_raw_, NULL, &PktUlAssEgprs_pkt__ext__ta_xer_, &BITSTRING_json_, &PktUlAssEgprs_pkt__ext__ta_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktUlAssEgprs_pkt__ext__ta_default_coding("RAW");
const TTCN_RAWdescriptor_t PktUlAssEgprs_freq__par_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktUlAssEgprs_freq__par
const TTCN_Typedescriptor_t PktUlAssEgprs_freq__par_descr_ = { "@RLCMAC_CSN1_Types.PktUlAssEgprs.freq_par", NULL, &PktUlAssEgprs_freq__par_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktUlAssEgprs_freq__par_default_coding("RAW");
const TTCN_RAWdescriptor_t PktUlAssEgprs_dyn__block__alloc_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktUlAssEgprs_dyn__block__alloc
const TTCN_Typedescriptor_t PktUlAssEgprs_dyn__block__alloc_descr_ = { "@RLCMAC_CSN1_Types.PktUlAssEgprs.dyn_block_alloc", NULL, &PktUlAssEgprs_dyn__block__alloc_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktUlAssEgprs_dyn__block__alloc_default_coding("RAW");
const TTCN_RAWdescriptor_t PktUlAssEgprs_multi__block__alloc_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktUlAssEgprs_multi__block__alloc
const TTCN_Typedescriptor_t PktUlAssEgprs_multi__block__alloc_descr_ = { "@RLCMAC_CSN1_Types.PktUlAssEgprs.multi_block_alloc", NULL, &PktUlAssEgprs_multi__block__alloc_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktUlAssEgprs_multi__block__alloc_default_coding("RAW");
UNIVERSAL_CHARSTRING PktUlAssEgprs_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketUlAssignment_page__mode_raw_ = {2,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketUlAssignment_page__mode
const TTCN_Typedescriptor_t PacketUlAssignment_page__mode_descr_ = { "@RLCMAC_CSN1_Types.PacketUlAssignment.page_mode", NULL, &PacketUlAssignment_page__mode_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketUlAssignment_page__mode_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketUlAssignment_persistence__levels__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketUlAssignment_persistence__levels__present_xer_ = { {"persistence_levels_present>\n", "persistence_levels_present>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketUlAssignment_persistence__levels__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketUlAssignment_persistence__levels__present_descr_ = { "@RLCMAC_CSN1_Types.PacketUlAssignment.persistence_levels_present", &BITSTRING_ber_, &PacketUlAssignment_persistence__levels__present_raw_, NULL, &PacketUlAssignment_persistence__levels__present_xer_, &BITSTRING_json_, &PacketUlAssignment_persistence__levels__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketUlAssignment_persistence__levels__present_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketUlAssignment_identity_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketUlAssignment_identity
const TTCN_Typedescriptor_t PacketUlAssignment_identity_descr_ = { "@RLCMAC_CSN1_Types.PacketUlAssignment.identity", NULL, &PacketUlAssignment_identity_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketUlAssignment_identity_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketUlAssignment_is__egprs_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketUlAssignment_is__egprs_xer_ = { {"is_egprs>\n", "is_egprs>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketUlAssignment_is__egprs_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketUlAssignment_is__egprs_descr_ = { "@RLCMAC_CSN1_Types.PacketUlAssignment.is_egprs", &BITSTRING_ber_, &PacketUlAssignment_is__egprs_raw_, NULL, &PacketUlAssignment_is__egprs_xer_, &BITSTRING_json_, &PacketUlAssignment_is__egprs_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketUlAssignment_is__egprs_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketUlAssignment_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketUlAssignment
const TTCN_Typedescriptor_t PacketUlAssignment_descr_ = { "@RLCMAC_CSN1_Types.PacketUlAssignment", NULL, &PacketUlAssignment_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t PacketUlAssignment_persistence__levels_raw_ = {4,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketUlAssignment_persistence__levels
const TTCN_Typedescriptor_t PacketUlAssignment_persistence__levels_descr_ = { "@RLCMAC_CSN1_Types.PacketUlAssignment.persistence_levels", NULL, &PacketUlAssignment_persistence__levels_raw_, NULL, NULL, NULL, NULL, NULL, &PersistenceLevels_0_descr_, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketUlAssignment_persistence__levels_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketUlAssignment_gprs_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketUlAssignment_gprs
const TTCN_Typedescriptor_t PacketUlAssignment_gprs_descr_ = { "@RLCMAC_CSN1_Types.PacketUlAssignment.gprs", NULL, &PacketUlAssignment_gprs_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketUlAssignment_gprs_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketUlAssignment_egprs_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketUlAssignment_egprs
const TTCN_Typedescriptor_t PacketUlAssignment_egprs_descr_ = { "@RLCMAC_CSN1_Types.PacketUlAssignment.egprs", NULL, &PacketUlAssignment_egprs_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketUlAssignment_egprs_default_coding("RAW");
UNIVERSAL_CHARSTRING PacketUlAssignment_default_coding("RAW");
const TTCN_RAWdescriptor_t MobileIdentityLV__Paging_len_raw_ = {4,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       MobileIdentityLV__Paging_len_xer_ = { {"len>\n", "len>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MobileIdentityLV__Paging_len_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MobileIdentityLV__Paging_len_descr_ = { "@RLCMAC_CSN1_Types.MobileIdentityLV_Paging.len", &INTEGER_ber_, &MobileIdentityLV__Paging_len_raw_, &INTEGER_text_, &MobileIdentityLV__Paging_len_xer_, &INTEGER_json_, &MobileIdentityLV__Paging_len_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MobileIdentityLV__Paging_len_default_coding("RAW");
const TTCN_RAWdescriptor_t MobileIdentityLV__Paging_mobile__id_raw_ = {0,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       MobileIdentityLV__Paging_mobile__id_xer_ = { {"mobile_id>\n", "mobile_id>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int MobileIdentityLV__Paging_mobile__id_oer_ext_arr_[0] = {};
const int MobileIdentityLV__Paging_mobile__id_oer_p_[0] = {};
const TTCN_OERdescriptor_t MobileIdentityLV__Paging_mobile__id_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MobileIdentityLV__Paging_mobile__id_oer_ext_arr_, 0, MobileIdentityLV__Paging_mobile__id_oer_p_};
const TTCN_Typedescriptor_t MobileIdentityLV__Paging_mobile__id_descr_ = { "@RLCMAC_CSN1_Types.MobileIdentityLV_Paging.mobile_id", &OCTETSTRING_ber_, &MobileIdentityLV__Paging_mobile__id_raw_, &OCTETSTRING_text_, &MobileIdentityLV__Paging_mobile__id_xer_, &OCTETSTRING_json_, &MobileIdentityLV__Paging_mobile__id_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MobileIdentityLV__Paging_mobile__id_default_coding("RAW");
const TTCN_RAWdescriptor_t MobileIdentityLV__Paging_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for MobileIdentityLV__Paging
const TTCN_Typedescriptor_t MobileIdentityLV__Paging_descr_ = { "@RLCMAC_CSN1_Types.MobileIdentityLV_Paging", NULL, &MobileIdentityLV__Paging_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MobileIdentityLV__Paging_default_coding("RAW");
const TTCN_RAWdescriptor_t PageInfoPs_presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PageInfoPs_presence_xer_ = { {"presence>\n", "presence>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PageInfoPs_presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PageInfoPs_presence_descr_ = { "@RLCMAC_CSN1_Types.PageInfoPs.presence", &BITSTRING_ber_, &PageInfoPs_presence_raw_, NULL, &PageInfoPs_presence_xer_, &BITSTRING_json_, &PageInfoPs_presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PageInfoPs_presence_default_coding("RAW");
const TTCN_RAWdescriptor_t PageInfoPs_ptmsi__or__mobile__id_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PageInfoPs_ptmsi__or__mobile__id_xer_ = { {"ptmsi_or_mobile_id>\n", "ptmsi_or_mobile_id>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PageInfoPs_ptmsi__or__mobile__id_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PageInfoPs_ptmsi__or__mobile__id_descr_ = { "@RLCMAC_CSN1_Types.PageInfoPs.ptmsi_or_mobile_id", &BITSTRING_ber_, &PageInfoPs_ptmsi__or__mobile__id_raw_, NULL, &PageInfoPs_ptmsi__or__mobile__id_xer_, &BITSTRING_json_, &PageInfoPs_ptmsi__or__mobile__id_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PageInfoPs_ptmsi__or__mobile__id_default_coding("RAW");
const TTCN_RAWdescriptor_t PageInfoPs_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PageInfoPs
const TTCN_Typedescriptor_t PageInfoPs_descr_ = { "@RLCMAC_CSN1_Types.PageInfoPs", NULL, &PageInfoPs_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t PageInfoPs_ptmsi_raw_ = {32,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PageInfoPs_ptmsi_xer_ = { {"ptmsi>\n", "ptmsi>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PageInfoPs_ptmsi_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PageInfoPs_ptmsi_descr_ = { "@RLCMAC_CSN1_Types.PageInfoPs.ptmsi", &INTEGER_ber_, &PageInfoPs_ptmsi_raw_, &INTEGER_text_, &PageInfoPs_ptmsi_xer_, &INTEGER_json_, &PageInfoPs_ptmsi_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PageInfoPs_ptmsi_default_coding("RAW");
const TTCN_RAWdescriptor_t PageInfoPs_mobile__identity_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PageInfoPs_mobile__identity
const TTCN_Typedescriptor_t PageInfoPs_mobile__identity_descr_ = { "@RLCMAC_CSN1_Types.PageInfoPs.mobile_identity", NULL, &PageInfoPs_mobile__identity_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PageInfoPs_mobile__identity_default_coding("RAW");
UNIVERSAL_CHARSTRING PageInfoPs_default_coding("RAW");
const TTCN_RAWdescriptor_t PageInfoCs_presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PageInfoCs_presence_xer_ = { {"presence>\n", "presence>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PageInfoCs_presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PageInfoCs_presence_descr_ = { "@RLCMAC_CSN1_Types.PageInfoCs.presence", &BITSTRING_ber_, &PageInfoCs_presence_raw_, NULL, &PageInfoCs_presence_xer_, &BITSTRING_json_, &PageInfoCs_presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PageInfoCs_presence_default_coding("RAW");
const TTCN_RAWdescriptor_t PageInfoCs_tmsi__or__mobile__id_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PageInfoCs_tmsi__or__mobile__id_xer_ = { {"tmsi_or_mobile_id>\n", "tmsi_or_mobile_id>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PageInfoCs_tmsi__or__mobile__id_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PageInfoCs_tmsi__or__mobile__id_descr_ = { "@RLCMAC_CSN1_Types.PageInfoCs.tmsi_or_mobile_id", &BITSTRING_ber_, &PageInfoCs_tmsi__or__mobile__id_raw_, NULL, &PageInfoCs_tmsi__or__mobile__id_xer_, &BITSTRING_json_, &PageInfoCs_tmsi__or__mobile__id_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PageInfoCs_tmsi__or__mobile__id_default_coding("RAW");
const TTCN_RAWdescriptor_t PageInfoCs_chan__needed_raw_ = {2,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PageInfoCs_chan__needed
const TTCN_Typedescriptor_t PageInfoCs_chan__needed_descr_ = { "@RLCMAC_CSN1_Types.PageInfoCs.chan_needed", NULL, &PageInfoCs_chan__needed_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PageInfoCs_chan__needed_default_coding("RAW");
const TTCN_RAWdescriptor_t PageInfoCs_emlpp__prio__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PageInfoCs_emlpp__prio__present_xer_ = { {"emlpp_prio_present>\n", "emlpp_prio_present>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PageInfoCs_emlpp__prio__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PageInfoCs_emlpp__prio__present_descr_ = { "@RLCMAC_CSN1_Types.PageInfoCs.emlpp_prio_present", &BITSTRING_ber_, &PageInfoCs_emlpp__prio__present_raw_, NULL, &PageInfoCs_emlpp__prio__present_xer_, &BITSTRING_json_, &PageInfoCs_emlpp__prio__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PageInfoCs_emlpp__prio__present_default_coding("RAW");
const TTCN_RAWdescriptor_t PageInfoCs_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PageInfoCs
const TTCN_Typedescriptor_t PageInfoCs_descr_ = { "@RLCMAC_CSN1_Types.PageInfoCs", NULL, &PageInfoCs_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t PageInfoCs_tmsi_raw_ = {32,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PageInfoCs_tmsi_xer_ = { {"tmsi>\n", "tmsi>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PageInfoCs_tmsi_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PageInfoCs_tmsi_descr_ = { "@RLCMAC_CSN1_Types.PageInfoCs.tmsi", &INTEGER_ber_, &PageInfoCs_tmsi_raw_, &INTEGER_text_, &PageInfoCs_tmsi_xer_, &INTEGER_json_, &PageInfoCs_tmsi_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PageInfoCs_tmsi_default_coding("RAW");
const TTCN_RAWdescriptor_t PageInfoCs_mobile__identity_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PageInfoCs_mobile__identity
const TTCN_Typedescriptor_t PageInfoCs_mobile__identity_descr_ = { "@RLCMAC_CSN1_Types.PageInfoCs.mobile_identity", NULL, &PageInfoCs_mobile__identity_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PageInfoCs_mobile__identity_default_coding("RAW");
const TTCN_RAWdescriptor_t PageInfoCs_emlpp__prio_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PageInfoCs_emlpp__prio_xer_ = { {"emlpp_prio>\n", "emlpp_prio>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PageInfoCs_emlpp__prio_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PageInfoCs_emlpp__prio_descr_ = { "@RLCMAC_CSN1_Types.PageInfoCs.emlpp_prio", &INTEGER_ber_, &PageInfoCs_emlpp__prio_raw_, &INTEGER_text_, &PageInfoCs_emlpp__prio_xer_, &INTEGER_json_, &PageInfoCs_emlpp__prio_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PageInfoCs_emlpp__prio_default_coding("RAW");
UNIVERSAL_CHARSTRING PageInfoCs_default_coding("RAW");
const TTCN_RAWdescriptor_t PageInfo_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PageInfo
const TTCN_Typedescriptor_t PageInfo_descr_ = { "@RLCMAC_CSN1_Types.PageInfo", NULL, &PageInfo_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t PageInfo_ps_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PageInfo_ps
const TTCN_Typedescriptor_t PageInfo_ps_descr_ = { "@RLCMAC_CSN1_Types.PageInfo.ps", NULL, &PageInfo_ps_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PageInfo_ps_default_coding("RAW");
const TTCN_RAWdescriptor_t PageInfo_cs_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PageInfo_cs
const TTCN_Typedescriptor_t PageInfo_cs_descr_ = { "@RLCMAC_CSN1_Types.PageInfo.cs", NULL, &PageInfo_cs_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PageInfo_cs_default_coding("RAW");
UNIVERSAL_CHARSTRING PageInfo_default_coding("RAW");
const TTCN_RAWdescriptor_t RepeatedPageInfoItem_presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       RepeatedPageInfoItem_presence_xer_ = { {"presence>\n", "presence>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RepeatedPageInfoItem_presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RepeatedPageInfoItem_presence_descr_ = { "@RLCMAC_CSN1_Types.RepeatedPageInfoItem.presence", &BITSTRING_ber_, &RepeatedPageInfoItem_presence_raw_, NULL, &RepeatedPageInfoItem_presence_xer_, &BITSTRING_json_, &RepeatedPageInfoItem_presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RepeatedPageInfoItem_presence_default_coding("RAW");
const TTCN_RAWdescriptor_t RepeatedPageInfoItem_item_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RepeatedPageInfoItem_item
const TTCN_Typedescriptor_t RepeatedPageInfoItem_item_descr_ = { "@RLCMAC_CSN1_Types.RepeatedPageInfoItem.item", NULL, &RepeatedPageInfoItem_item_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RepeatedPageInfoItem_item_default_coding("RAW");
const TTCN_RAWdescriptor_t RepeatedPageInfoItem_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RepeatedPageInfoItem
const TTCN_Typedescriptor_t RepeatedPageInfoItem_descr_ = { "@RLCMAC_CSN1_Types.RepeatedPageInfoItem", NULL, &RepeatedPageInfoItem_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RepeatedPageInfoItem_default_coding("RAW");
const TTCN_RAWdescriptor_t RepeatedPageInfo_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RepeatedPageInfo
const TTCN_Typedescriptor_t RepeatedPageInfo_descr_ = { "@RLCMAC_CSN1_Types.RepeatedPageInfo", NULL, &RepeatedPageInfo_raw_, NULL, NULL, NULL, NULL, NULL, &RepeatedPageInfo_0_descr_, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t RepeatedPageInfo_0_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RepeatedPageInfo_0
const TTCN_Typedescriptor_t RepeatedPageInfo_0_descr_ = { "@RLCMAC_CSN1_Types.RepeatedPageInfo.<oftype>", NULL, &RepeatedPageInfo_0_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RepeatedPageInfo_0_default_coding("RAW");
UNIVERSAL_CHARSTRING RepeatedPageInfo_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketPagingReq_page__mode_raw_ = {2,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketPagingReq_page__mode
const TTCN_Typedescriptor_t PacketPagingReq_page__mode_descr_ = { "@RLCMAC_CSN1_Types.PacketPagingReq.page_mode", NULL, &PacketPagingReq_page__mode_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketPagingReq_page__mode_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketPagingReq_persistence__levels__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketPagingReq_persistence__levels__present_xer_ = { {"persistence_levels_present>\n", "persistence_levels_present>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketPagingReq_persistence__levels__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketPagingReq_persistence__levels__present_descr_ = { "@RLCMAC_CSN1_Types.PacketPagingReq.persistence_levels_present", &BITSTRING_ber_, &PacketPagingReq_persistence__levels__present_raw_, NULL, &PacketPagingReq_persistence__levels__present_xer_, &BITSTRING_json_, &PacketPagingReq_persistence__levels__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketPagingReq_persistence__levels__present_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketPagingReq_nln__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketPagingReq_nln__present_xer_ = { {"nln_present>\n", "nln_present>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketPagingReq_nln__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketPagingReq_nln__present_descr_ = { "@RLCMAC_CSN1_Types.PacketPagingReq.nln_present", &BITSTRING_ber_, &PacketPagingReq_nln__present_raw_, NULL, &PacketPagingReq_nln__present_xer_, &BITSTRING_json_, &PacketPagingReq_nln__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketPagingReq_nln__present_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketPagingReq_repeated__pageinfo__term_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketPagingReq_repeated__pageinfo__term_xer_ = { {"repeated_pageinfo_term>\n", "repeated_pageinfo_term>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketPagingReq_repeated__pageinfo__term_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketPagingReq_repeated__pageinfo__term_descr_ = { "@RLCMAC_CSN1_Types.PacketPagingReq.repeated_pageinfo_term", &BITSTRING_ber_, &PacketPagingReq_repeated__pageinfo__term_raw_, NULL, &PacketPagingReq_repeated__pageinfo__term_xer_, &BITSTRING_json_, &PacketPagingReq_repeated__pageinfo__term_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketPagingReq_repeated__pageinfo__term_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketPagingReq_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketPagingReq
const TTCN_Typedescriptor_t PacketPagingReq_descr_ = { "@RLCMAC_CSN1_Types.PacketPagingReq", NULL, &PacketPagingReq_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t PacketPagingReq_persistence__levels_raw_ = {4,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketPagingReq_persistence__levels
const TTCN_Typedescriptor_t PacketPagingReq_persistence__levels_descr_ = { "@RLCMAC_CSN1_Types.PacketPagingReq.persistence_levels", NULL, &PacketPagingReq_persistence__levels_raw_, NULL, NULL, NULL, NULL, NULL, &PersistenceLevels_0_descr_, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketPagingReq_persistence__levels_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketPagingReq_nln_raw_ = {2,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketPagingReq_nln_xer_ = { {"nln>\n", "nln>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketPagingReq_nln_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketPagingReq_nln_descr_ = { "@RLCMAC_CSN1_Types.PacketPagingReq.nln", &INTEGER_ber_, &PacketPagingReq_nln_raw_, &INTEGER_text_, &PacketPagingReq_nln_xer_, &INTEGER_json_, &PacketPagingReq_nln_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketPagingReq_nln_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketPagingReq_repeated__pageinfo_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketPagingReq_repeated__pageinfo
const TTCN_Typedescriptor_t PacketPagingReq_repeated__pageinfo_descr_ = { "@RLCMAC_CSN1_Types.PacketPagingReq.repeated_pageinfo", NULL, &PacketPagingReq_repeated__pageinfo_raw_, NULL, NULL, NULL, NULL, NULL, &RepeatedPageInfo_0_descr_, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketPagingReq_repeated__pageinfo_default_coding("RAW");
UNIVERSAL_CHARSTRING PacketPagingReq_default_coding("RAW");
const TTCN_RAWdescriptor_t ExtensionBits_extension__length_raw_ = {6,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,1,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       ExtensionBits_extension__length_xer_ = { {"extension_length>\n", "extension_length>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ExtensionBits_extension__length_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ExtensionBits_extension__length_descr_ = { "@RLCMAC_CSN1_Types.ExtensionBits.extension_length", &INTEGER_ber_, &ExtensionBits_extension__length_raw_, &INTEGER_text_, &ExtensionBits_extension__length_xer_, &INTEGER_json_, &ExtensionBits_extension__length_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ExtensionBits_extension__length_default_coding("RAW");
const TTCN_RAWdescriptor_t ExtensionBits_spare__bits_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       ExtensionBits_spare__bits_xer_ = { {"spare_bits>\n", "spare_bits>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t ExtensionBits_spare__bits_descr_ = { "@RLCMAC_CSN1_Types.ExtensionBits.spare_bits", &BITSTRING_ber_, &ExtensionBits_spare__bits_raw_, NULL, &ExtensionBits_spare__bits_xer_, &BITSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ExtensionBits_spare__bits_default_coding("RAW");
const TTCN_RAWdescriptor_t ExtensionBits_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for ExtensionBits
const TTCN_Typedescriptor_t ExtensionBits_descr_ = { "@RLCMAC_CSN1_Types.ExtensionBits", NULL, &ExtensionBits_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ExtensionBits_default_coding("RAW");
const TTCN_RAWdescriptor_t UlAckNackGprsAdditionsRel99_ext__pkt__ta__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       UlAckNackGprsAdditionsRel99_ext__pkt__ta__present_xer_ = { {"ext_pkt_ta_present>\n", "ext_pkt_ta_present>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t UlAckNackGprsAdditionsRel99_ext__pkt__ta__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t UlAckNackGprsAdditionsRel99_ext__pkt__ta__present_descr_ = { "@RLCMAC_CSN1_Types.UlAckNackGprsAdditionsRel99.ext_pkt_ta_present", &BITSTRING_ber_, &UlAckNackGprsAdditionsRel99_ext__pkt__ta__present_raw_, NULL, &UlAckNackGprsAdditionsRel99_ext__pkt__ta__present_xer_, &BITSTRING_json_, &UlAckNackGprsAdditionsRel99_ext__pkt__ta__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UlAckNackGprsAdditionsRel99_ext__pkt__ta__present_default_coding("RAW");
const TTCN_RAWdescriptor_t UlAckNackGprsAdditionsRel99_tbf__est_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       UlAckNackGprsAdditionsRel99_tbf__est_xer_ = { {"tbf_est>\n", "tbf_est>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int UlAckNackGprsAdditionsRel99_tbf__est_oer_ext_arr_[0] = {};
const int UlAckNackGprsAdditionsRel99_tbf__est_oer_p_[0] = {};
const TTCN_OERdescriptor_t UlAckNackGprsAdditionsRel99_tbf__est_oer_ = { -1, TRUE, -1, FALSE, 0, 0, UlAckNackGprsAdditionsRel99_tbf__est_oer_ext_arr_, 0, UlAckNackGprsAdditionsRel99_tbf__est_oer_p_};
const TTCN_Typedescriptor_t UlAckNackGprsAdditionsRel99_tbf__est_descr_ = { "@RLCMAC_CSN1_Types.UlAckNackGprsAdditionsRel99.tbf_est", &BOOLEAN_ber_, &UlAckNackGprsAdditionsRel99_tbf__est_raw_, &BOOLEAN_text_, &UlAckNackGprsAdditionsRel99_tbf__est_xer_, &BOOLEAN_json_, &UlAckNackGprsAdditionsRel99_tbf__est_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UlAckNackGprsAdditionsRel99_tbf__est_default_coding("RAW");
const TTCN_RAWdescriptor_t UlAckNackGprsAdditionsRel99_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for UlAckNackGprsAdditionsRel99
const TTCN_Typedescriptor_t UlAckNackGprsAdditionsRel99_descr_ = { "@RLCMAC_CSN1_Types.UlAckNackGprsAdditionsRel99", NULL, &UlAckNackGprsAdditionsRel99_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t UlAckNackGprsAdditionsRel99_ext__pkt__ta_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       UlAckNackGprsAdditionsRel99_ext__pkt__ta_xer_ = { {"ext_pkt_ta>\n", "ext_pkt_ta>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t UlAckNackGprsAdditionsRel99_ext__pkt__ta_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t UlAckNackGprsAdditionsRel99_ext__pkt__ta_descr_ = { "@RLCMAC_CSN1_Types.UlAckNackGprsAdditionsRel99.ext_pkt_ta", &BITSTRING_ber_, &UlAckNackGprsAdditionsRel99_ext__pkt__ta_raw_, NULL, &UlAckNackGprsAdditionsRel99_ext__pkt__ta_xer_, &BITSTRING_json_, &UlAckNackGprsAdditionsRel99_ext__pkt__ta_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UlAckNackGprsAdditionsRel99_ext__pkt__ta_default_coding("RAW");
UNIVERSAL_CHARSTRING UlAckNackGprsAdditionsRel99_default_coding("RAW");
const TTCN_RAWdescriptor_t UlAckNackGprs_ch__coding__cmd_raw_ = {2,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for UlAckNackGprs_ch__coding__cmd
const TTCN_Typedescriptor_t UlAckNackGprs_ch__coding__cmd_descr_ = { "@RLCMAC_CSN1_Types.UlAckNackGprs.ch_coding_cmd", NULL, &UlAckNackGprs_ch__coding__cmd_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UlAckNackGprs_ch__coding__cmd_default_coding("RAW");
const TTCN_RAWdescriptor_t AckNackDescription_final__ack_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       AckNackDescription_final__ack_xer_ = { {"final_ack>\n", "final_ack>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AckNackDescription_final__ack_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AckNackDescription_final__ack_descr_ = { "@RLCMAC_CSN1_Types.AckNackDescription.final_ack", &BITSTRING_ber_, &AckNackDescription_final__ack_raw_, NULL, &AckNackDescription_final__ack_xer_, &BITSTRING_json_, &AckNackDescription_final__ack_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AckNackDescription_final__ack_default_coding("RAW");
const TTCN_RAWdescriptor_t AckNackDescription_starting__seq__nr_raw_ = {7,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       AckNackDescription_starting__seq__nr_xer_ = { {"starting_seq_nr>\n", "starting_seq_nr>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AckNackDescription_starting__seq__nr_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AckNackDescription_starting__seq__nr_descr_ = { "@RLCMAC_CSN1_Types.AckNackDescription.starting_seq_nr", &INTEGER_ber_, &AckNackDescription_starting__seq__nr_raw_, &INTEGER_text_, &AckNackDescription_starting__seq__nr_xer_, &INTEGER_json_, &AckNackDescription_starting__seq__nr_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AckNackDescription_starting__seq__nr_default_coding("RAW");
const TTCN_RAWdescriptor_t ReceivedBlockBitmap_raw_ = {64,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       ReceivedBlockBitmap_xer_ = { {"ReceivedBlockBitmap>\n", "ReceivedBlockBitmap>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t ReceivedBlockBitmap_descr_ = { "@RLCMAC_CSN1_Types.ReceivedBlockBitmap", &BITSTRING_ber_, &ReceivedBlockBitmap_raw_, NULL, &ReceivedBlockBitmap_xer_, &BITSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ReceivedBlockBitmap_default_coding("RAW");
const TTCN_RAWdescriptor_t AckNackDescription_receive__block__bitmap_raw_ = {64,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       AckNackDescription_receive__block__bitmap_xer_ = { {"receive_block_bitmap>\n", "receive_block_bitmap>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AckNackDescription_receive__block__bitmap_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AckNackDescription_receive__block__bitmap_descr_ = { "@RLCMAC_CSN1_Types.AckNackDescription.receive_block_bitmap", &BITSTRING_ber_, &AckNackDescription_receive__block__bitmap_raw_, NULL, &AckNackDescription_receive__block__bitmap_xer_, &BITSTRING_json_, &AckNackDescription_receive__block__bitmap_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AckNackDescription_receive__block__bitmap_default_coding("RAW");
const TTCN_RAWdescriptor_t AckNackDescription_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for AckNackDescription
const TTCN_Typedescriptor_t AckNackDescription_descr_ = { "@RLCMAC_CSN1_Types.AckNackDescription", NULL, &AckNackDescription_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AckNackDescription_default_coding("RAW");
const TTCN_RAWdescriptor_t UlAckNackGprs_ack__nack__desc_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for UlAckNackGprs_ack__nack__desc
const TTCN_Typedescriptor_t UlAckNackGprs_ack__nack__desc_descr_ = { "@RLCMAC_CSN1_Types.UlAckNackGprs.ack_nack_desc", NULL, &UlAckNackGprs_ack__nack__desc_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UlAckNackGprs_ack__nack__desc_default_coding("RAW");
const TTCN_RAWdescriptor_t UlAckNackGprs_cont__res__tlli__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       UlAckNackGprs_cont__res__tlli__present_xer_ = { {"cont_res_tlli_present>\n", "cont_res_tlli_present>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t UlAckNackGprs_cont__res__tlli__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t UlAckNackGprs_cont__res__tlli__present_descr_ = { "@RLCMAC_CSN1_Types.UlAckNackGprs.cont_res_tlli_present", &BITSTRING_ber_, &UlAckNackGprs_cont__res__tlli__present_raw_, NULL, &UlAckNackGprs_cont__res__tlli__present_xer_, &BITSTRING_json_, &UlAckNackGprs_cont__res__tlli__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UlAckNackGprs_cont__res__tlli__present_default_coding("RAW");
const TTCN_RAWdescriptor_t UlAckNackGprs_pkt__ta__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       UlAckNackGprs_pkt__ta__present_xer_ = { {"pkt_ta_present>\n", "pkt_ta_present>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t UlAckNackGprs_pkt__ta__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t UlAckNackGprs_pkt__ta__present_descr_ = { "@RLCMAC_CSN1_Types.UlAckNackGprs.pkt_ta_present", &BITSTRING_ber_, &UlAckNackGprs_pkt__ta__present_raw_, NULL, &UlAckNackGprs_pkt__ta__present_xer_, &BITSTRING_json_, &UlAckNackGprs_pkt__ta__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UlAckNackGprs_pkt__ta__present_default_coding("RAW");
const TTCN_RAWdescriptor_t UlAckNackGprs_pwr__ctrl__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       UlAckNackGprs_pwr__ctrl__present_xer_ = { {"pwr_ctrl_present>\n", "pwr_ctrl_present>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t UlAckNackGprs_pwr__ctrl__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t UlAckNackGprs_pwr__ctrl__present_descr_ = { "@RLCMAC_CSN1_Types.UlAckNackGprs.pwr_ctrl_present", &BITSTRING_ber_, &UlAckNackGprs_pwr__ctrl__present_raw_, NULL, &UlAckNackGprs_pwr__ctrl__present_xer_, &BITSTRING_json_, &UlAckNackGprs_pwr__ctrl__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UlAckNackGprs_pwr__ctrl__present_default_coding("RAW");
const TTCN_RAWdescriptor_t UlAckNackGprs_extension__bits__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       UlAckNackGprs_extension__bits__present_xer_ = { {"extension_bits_present>\n", "extension_bits_present>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t UlAckNackGprs_extension__bits__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t UlAckNackGprs_extension__bits__present_descr_ = { "@RLCMAC_CSN1_Types.UlAckNackGprs.extension_bits_present", &BITSTRING_ber_, &UlAckNackGprs_extension__bits__present_raw_, NULL, &UlAckNackGprs_extension__bits__present_xer_, &BITSTRING_json_, &UlAckNackGprs_extension__bits__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UlAckNackGprs_extension__bits__present_default_coding("RAW");
const TTCN_RAWdescriptor_t UlAckNackGprs_not__used_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       UlAckNackGprs_not__used_xer_ = { {"not_used>\n", "not_used>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t UlAckNackGprs_not__used_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t UlAckNackGprs_not__used_descr_ = { "@RLCMAC_CSN1_Types.UlAckNackGprs.not_used", &BITSTRING_ber_, &UlAckNackGprs_not__used_raw_, NULL, &UlAckNackGprs_not__used_xer_, &BITSTRING_json_, &UlAckNackGprs_not__used_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UlAckNackGprs_not__used_default_coding("RAW");
const TTCN_RAWdescriptor_t UlAckNackGprs_rel99__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       UlAckNackGprs_rel99__present_xer_ = { {"rel99_present>\n", "rel99_present>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t UlAckNackGprs_rel99__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t UlAckNackGprs_rel99__present_descr_ = { "@RLCMAC_CSN1_Types.UlAckNackGprs.rel99_present", &BITSTRING_ber_, &UlAckNackGprs_rel99__present_raw_, NULL, &UlAckNackGprs_rel99__present_xer_, &BITSTRING_json_, &UlAckNackGprs_rel99__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UlAckNackGprs_rel99__present_default_coding("RAW");
const TTCN_RAWdescriptor_t UlAckNackGprs_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for UlAckNackGprs
const TTCN_Typedescriptor_t UlAckNackGprs_descr_ = { "@RLCMAC_CSN1_Types.UlAckNackGprs", NULL, &UlAckNackGprs_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t UlAckNackGprs_cont__res__tlli_raw_ = {32,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,4,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       UlAckNackGprs_cont__res__tlli_xer_ = { {"cont_res_tlli>\n", "cont_res_tlli>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int UlAckNackGprs_cont__res__tlli_oer_ext_arr_[0] = {};
const int UlAckNackGprs_cont__res__tlli_oer_p_[0] = {};
const TTCN_OERdescriptor_t UlAckNackGprs_cont__res__tlli_oer_ = { -1, TRUE, 4, FALSE, 0, 0, UlAckNackGprs_cont__res__tlli_oer_ext_arr_, 0, UlAckNackGprs_cont__res__tlli_oer_p_};
const TTCN_Typedescriptor_t UlAckNackGprs_cont__res__tlli_descr_ = { "@RLCMAC_CSN1_Types.UlAckNackGprs.cont_res_tlli", &OCTETSTRING_ber_, &UlAckNackGprs_cont__res__tlli_raw_, &OCTETSTRING_text_, &UlAckNackGprs_cont__res__tlli_xer_, &OCTETSTRING_json_, &UlAckNackGprs_cont__res__tlli_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UlAckNackGprs_cont__res__tlli_default_coding("RAW");
const TTCN_RAWdescriptor_t UlAckNackGprs_pkt__ta_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for UlAckNackGprs_pkt__ta
const TTCN_Typedescriptor_t UlAckNackGprs_pkt__ta_descr_ = { "@RLCMAC_CSN1_Types.UlAckNackGprs.pkt_ta", NULL, &UlAckNackGprs_pkt__ta_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UlAckNackGprs_pkt__ta_default_coding("RAW");
const TTCN_RAWdescriptor_t UlAckNackGprs_pwr__ctrl_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for UlAckNackGprs_pwr__ctrl
const TTCN_Typedescriptor_t UlAckNackGprs_pwr__ctrl_descr_ = { "@RLCMAC_CSN1_Types.UlAckNackGprs.pwr_ctrl", NULL, &UlAckNackGprs_pwr__ctrl_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UlAckNackGprs_pwr__ctrl_default_coding("RAW");
const TTCN_RAWdescriptor_t UlAckNackGprs_extension__bits_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for UlAckNackGprs_extension__bits
const TTCN_Typedescriptor_t UlAckNackGprs_extension__bits_descr_ = { "@RLCMAC_CSN1_Types.UlAckNackGprs.extension_bits", NULL, &UlAckNackGprs_extension__bits_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UlAckNackGprs_extension__bits_default_coding("RAW");
const TTCN_RAWdescriptor_t UlAckNackGprs_rel99_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for UlAckNackGprs_rel99
const TTCN_Typedescriptor_t UlAckNackGprs_rel99_descr_ = { "@RLCMAC_CSN1_Types.UlAckNackGprs.rel99", NULL, &UlAckNackGprs_rel99_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UlAckNackGprs_rel99_default_coding("RAW");
UNIVERSAL_CHARSTRING UlAckNackGprs_default_coding("RAW");
const TTCN_RAWdescriptor_t UlAckNackEgprs_msg__excape_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       UlAckNackEgprs_msg__excape_xer_ = { {"msg_excape>\n", "msg_excape>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t UlAckNackEgprs_msg__excape_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t UlAckNackEgprs_msg__excape_descr_ = { "@RLCMAC_CSN1_Types.UlAckNackEgprs.msg_excape", &BITSTRING_ber_, &UlAckNackEgprs_msg__excape_raw_, NULL, &UlAckNackEgprs_msg__excape_xer_, &BITSTRING_json_, &UlAckNackEgprs_msg__excape_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UlAckNackEgprs_msg__excape_default_coding("RAW");
const TTCN_RAWdescriptor_t UlAckNackEgprs_ch__coding__cmd_raw_ = {4,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for UlAckNackEgprs_ch__coding__cmd
const TTCN_Typedescriptor_t UlAckNackEgprs_ch__coding__cmd_descr_ = { "@RLCMAC_CSN1_Types.UlAckNackEgprs.ch_coding_cmd", NULL, &UlAckNackEgprs_ch__coding__cmd_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UlAckNackEgprs_ch__coding__cmd_default_coding("RAW");
const TTCN_RAWdescriptor_t UlAckNackEgprs_resegment_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       UlAckNackEgprs_resegment_xer_ = { {"resegment>\n", "resegment>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t UlAckNackEgprs_resegment_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t UlAckNackEgprs_resegment_descr_ = { "@RLCMAC_CSN1_Types.UlAckNackEgprs.resegment", &BITSTRING_ber_, &UlAckNackEgprs_resegment_raw_, NULL, &UlAckNackEgprs_resegment_xer_, &BITSTRING_json_, &UlAckNackEgprs_resegment_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UlAckNackEgprs_resegment_default_coding("RAW");
const TTCN_RAWdescriptor_t UlAckNackEgprs_preemptive__tx_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       UlAckNackEgprs_preemptive__tx_xer_ = { {"preemptive_tx>\n", "preemptive_tx>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t UlAckNackEgprs_preemptive__tx_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t UlAckNackEgprs_preemptive__tx_descr_ = { "@RLCMAC_CSN1_Types.UlAckNackEgprs.preemptive_tx", &BITSTRING_ber_, &UlAckNackEgprs_preemptive__tx_raw_, NULL, &UlAckNackEgprs_preemptive__tx_xer_, &BITSTRING_json_, &UlAckNackEgprs_preemptive__tx_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UlAckNackEgprs_preemptive__tx_default_coding("RAW");
const TTCN_RAWdescriptor_t UlAckNackEgprs_prr__retrans__req_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       UlAckNackEgprs_prr__retrans__req_xer_ = { {"prr_retrans_req>\n", "prr_retrans_req>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t UlAckNackEgprs_prr__retrans__req_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t UlAckNackEgprs_prr__retrans__req_descr_ = { "@RLCMAC_CSN1_Types.UlAckNackEgprs.prr_retrans_req", &BITSTRING_ber_, &UlAckNackEgprs_prr__retrans__req_raw_, NULL, &UlAckNackEgprs_prr__retrans__req_xer_, &BITSTRING_json_, &UlAckNackEgprs_prr__retrans__req_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UlAckNackEgprs_prr__retrans__req_default_coding("RAW");
const TTCN_RAWdescriptor_t UlAckNackEgprs_arac__retrans__req_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       UlAckNackEgprs_arac__retrans__req_xer_ = { {"arac_retrans_req>\n", "arac_retrans_req>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t UlAckNackEgprs_arac__retrans__req_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t UlAckNackEgprs_arac__retrans__req_descr_ = { "@RLCMAC_CSN1_Types.UlAckNackEgprs.arac_retrans_req", &BITSTRING_ber_, &UlAckNackEgprs_arac__retrans__req_raw_, NULL, &UlAckNackEgprs_arac__retrans__req_xer_, &BITSTRING_json_, &UlAckNackEgprs_arac__retrans__req_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UlAckNackEgprs_arac__retrans__req_default_coding("RAW");
const TTCN_RAWdescriptor_t UlAckNackEgprs_cont__res__tlli__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       UlAckNackEgprs_cont__res__tlli__present_xer_ = { {"cont_res_tlli_present>\n", "cont_res_tlli_present>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t UlAckNackEgprs_cont__res__tlli__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t UlAckNackEgprs_cont__res__tlli__present_descr_ = { "@RLCMAC_CSN1_Types.UlAckNackEgprs.cont_res_tlli_present", &BITSTRING_ber_, &UlAckNackEgprs_cont__res__tlli__present_raw_, NULL, &UlAckNackEgprs_cont__res__tlli__present_xer_, &BITSTRING_json_, &UlAckNackEgprs_cont__res__tlli__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UlAckNackEgprs_cont__res__tlli__present_default_coding("RAW");
const TTCN_RAWdescriptor_t UlAckNackEgprs_tbf__est_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       UlAckNackEgprs_tbf__est_xer_ = { {"tbf_est>\n", "tbf_est>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t UlAckNackEgprs_tbf__est_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t UlAckNackEgprs_tbf__est_descr_ = { "@RLCMAC_CSN1_Types.UlAckNackEgprs.tbf_est", &BITSTRING_ber_, &UlAckNackEgprs_tbf__est_raw_, NULL, &UlAckNackEgprs_tbf__est_xer_, &BITSTRING_json_, &UlAckNackEgprs_tbf__est_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UlAckNackEgprs_tbf__est_default_coding("RAW");
const TTCN_RAWdescriptor_t UlAckNackEgprs_pkt__ta__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       UlAckNackEgprs_pkt__ta__present_xer_ = { {"pkt_ta_present>\n", "pkt_ta_present>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t UlAckNackEgprs_pkt__ta__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t UlAckNackEgprs_pkt__ta__present_descr_ = { "@RLCMAC_CSN1_Types.UlAckNackEgprs.pkt_ta_present", &BITSTRING_ber_, &UlAckNackEgprs_pkt__ta__present_raw_, NULL, &UlAckNackEgprs_pkt__ta__present_xer_, &BITSTRING_json_, &UlAckNackEgprs_pkt__ta__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UlAckNackEgprs_pkt__ta__present_default_coding("RAW");
const TTCN_RAWdescriptor_t UlAckNackEgprs_pkt__ext__ta__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       UlAckNackEgprs_pkt__ext__ta__present_xer_ = { {"pkt_ext_ta_present>\n", "pkt_ext_ta_present>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t UlAckNackEgprs_pkt__ext__ta__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t UlAckNackEgprs_pkt__ext__ta__present_descr_ = { "@RLCMAC_CSN1_Types.UlAckNackEgprs.pkt_ext_ta_present", &BITSTRING_ber_, &UlAckNackEgprs_pkt__ext__ta__present_raw_, NULL, &UlAckNackEgprs_pkt__ext__ta__present_xer_, &BITSTRING_json_, &UlAckNackEgprs_pkt__ext__ta__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UlAckNackEgprs_pkt__ext__ta__present_default_coding("RAW");
const TTCN_RAWdescriptor_t UlAckNackEgprs_pwr__ctrl__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       UlAckNackEgprs_pwr__ctrl__present_xer_ = { {"pwr_ctrl_present>\n", "pwr_ctrl_present>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t UlAckNackEgprs_pwr__ctrl__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t UlAckNackEgprs_pwr__ctrl__present_descr_ = { "@RLCMAC_CSN1_Types.UlAckNackEgprs.pwr_ctrl_present", &BITSTRING_ber_, &UlAckNackEgprs_pwr__ctrl__present_raw_, NULL, &UlAckNackEgprs_pwr__ctrl__present_xer_, &BITSTRING_json_, &UlAckNackEgprs_pwr__ctrl__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UlAckNackEgprs_pwr__ctrl__present_default_coding("RAW");
const TTCN_RAWdescriptor_t UlAckNackEgprs_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for UlAckNackEgprs
const TTCN_Typedescriptor_t UlAckNackEgprs_descr_ = { "@RLCMAC_CSN1_Types.UlAckNackEgprs", NULL, &UlAckNackEgprs_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t UlAckNackEgprs_cont__res__tlli_raw_ = {32,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,4,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       UlAckNackEgprs_cont__res__tlli_xer_ = { {"cont_res_tlli>\n", "cont_res_tlli>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int UlAckNackEgprs_cont__res__tlli_oer_ext_arr_[0] = {};
const int UlAckNackEgprs_cont__res__tlli_oer_p_[0] = {};
const TTCN_OERdescriptor_t UlAckNackEgprs_cont__res__tlli_oer_ = { -1, TRUE, 4, FALSE, 0, 0, UlAckNackEgprs_cont__res__tlli_oer_ext_arr_, 0, UlAckNackEgprs_cont__res__tlli_oer_p_};
const TTCN_Typedescriptor_t UlAckNackEgprs_cont__res__tlli_descr_ = { "@RLCMAC_CSN1_Types.UlAckNackEgprs.cont_res_tlli", &OCTETSTRING_ber_, &UlAckNackEgprs_cont__res__tlli_raw_, &OCTETSTRING_text_, &UlAckNackEgprs_cont__res__tlli_xer_, &OCTETSTRING_json_, &UlAckNackEgprs_cont__res__tlli_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UlAckNackEgprs_cont__res__tlli_default_coding("RAW");
const TTCN_RAWdescriptor_t UlAckNackEgprs_pkt__ta_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for UlAckNackEgprs_pkt__ta
const TTCN_Typedescriptor_t UlAckNackEgprs_pkt__ta_descr_ = { "@RLCMAC_CSN1_Types.UlAckNackEgprs.pkt_ta", NULL, &UlAckNackEgprs_pkt__ta_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UlAckNackEgprs_pkt__ta_default_coding("RAW");
const TTCN_RAWdescriptor_t UlAckNackEgprs_pkt__ext__ta_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       UlAckNackEgprs_pkt__ext__ta_xer_ = { {"pkt_ext_ta>\n", "pkt_ext_ta>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t UlAckNackEgprs_pkt__ext__ta_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t UlAckNackEgprs_pkt__ext__ta_descr_ = { "@RLCMAC_CSN1_Types.UlAckNackEgprs.pkt_ext_ta", &BITSTRING_ber_, &UlAckNackEgprs_pkt__ext__ta_raw_, NULL, &UlAckNackEgprs_pkt__ext__ta_xer_, &BITSTRING_json_, &UlAckNackEgprs_pkt__ext__ta_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UlAckNackEgprs_pkt__ext__ta_default_coding("RAW");
const TTCN_RAWdescriptor_t UlAckNackEgprs_pwr__ctrl_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for UlAckNackEgprs_pwr__ctrl
const TTCN_Typedescriptor_t UlAckNackEgprs_pwr__ctrl_descr_ = { "@RLCMAC_CSN1_Types.UlAckNackEgprs.pwr_ctrl", NULL, &UlAckNackEgprs_pwr__ctrl_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UlAckNackEgprs_pwr__ctrl_default_coding("RAW");
UNIVERSAL_CHARSTRING UlAckNackEgprs_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketUlAckNack_page__mode_raw_ = {2,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketUlAckNack_page__mode
const TTCN_Typedescriptor_t PacketUlAckNack_page__mode_descr_ = { "@RLCMAC_CSN1_Types.PacketUlAckNack.page_mode", NULL, &PacketUlAckNack_page__mode_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketUlAckNack_page__mode_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketUlAckNack_msg__excape_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketUlAckNack_msg__excape_xer_ = { {"msg_excape>\n", "msg_excape>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketUlAckNack_msg__excape_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketUlAckNack_msg__excape_descr_ = { "@RLCMAC_CSN1_Types.PacketUlAckNack.msg_excape", &BITSTRING_ber_, &PacketUlAckNack_msg__excape_raw_, NULL, &PacketUlAckNack_msg__excape_xer_, &BITSTRING_json_, &PacketUlAckNack_msg__excape_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketUlAckNack_msg__excape_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketUlAckNack_uplink__tfi_raw_ = {5,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketUlAckNack_uplink__tfi_xer_ = { {"uplink_tfi>\n", "uplink_tfi>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketUlAckNack_uplink__tfi_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketUlAckNack_uplink__tfi_descr_ = { "@RLCMAC_CSN1_Types.PacketUlAckNack.uplink_tfi", &INTEGER_ber_, &PacketUlAckNack_uplink__tfi_raw_, &INTEGER_text_, &PacketUlAckNack_uplink__tfi_xer_, &INTEGER_json_, &PacketUlAckNack_uplink__tfi_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketUlAckNack_uplink__tfi_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketUlAckNack_is__egprs_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketUlAckNack_is__egprs_xer_ = { {"is_egprs>\n", "is_egprs>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketUlAckNack_is__egprs_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketUlAckNack_is__egprs_descr_ = { "@RLCMAC_CSN1_Types.PacketUlAckNack.is_egprs", &BITSTRING_ber_, &PacketUlAckNack_is__egprs_raw_, NULL, &PacketUlAckNack_is__egprs_xer_, &BITSTRING_json_, &PacketUlAckNack_is__egprs_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketUlAckNack_is__egprs_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketUlAckNack_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketUlAckNack
const TTCN_Typedescriptor_t PacketUlAckNack_descr_ = { "@RLCMAC_CSN1_Types.PacketUlAckNack", NULL, &PacketUlAckNack_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t PacketUlAckNack_gprs_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketUlAckNack_gprs
const TTCN_Typedescriptor_t PacketUlAckNack_gprs_descr_ = { "@RLCMAC_CSN1_Types.PacketUlAckNack.gprs", NULL, &PacketUlAckNack_gprs_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketUlAckNack_gprs_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketUlAckNack_egprs_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketUlAckNack_egprs
const TTCN_Typedescriptor_t PacketUlAckNack_egprs_descr_ = { "@RLCMAC_CSN1_Types.PacketUlAckNack.egprs", NULL, &PacketUlAckNack_egprs_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketUlAckNack_egprs_default_coding("RAW");
UNIVERSAL_CHARSTRING PacketUlAckNack_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketDlDummy_page__mode_raw_ = {2,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketDlDummy_page__mode
const TTCN_Typedescriptor_t PacketDlDummy_page__mode_descr_ = { "@RLCMAC_CSN1_Types.PacketDlDummy.page_mode", NULL, &PacketDlDummy_page__mode_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketDlDummy_page__mode_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketDlDummy_persistence__levels__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketDlDummy_persistence__levels__present_xer_ = { {"persistence_levels_present>\n", "persistence_levels_present>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketDlDummy_persistence__levels__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketDlDummy_persistence__levels__present_descr_ = { "@RLCMAC_CSN1_Types.PacketDlDummy.persistence_levels_present", &BITSTRING_ber_, &PacketDlDummy_persistence__levels__present_raw_, NULL, &PacketDlDummy_persistence__levels__present_xer_, &BITSTRING_json_, &PacketDlDummy_persistence__levels__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketDlDummy_persistence__levels__present_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketDlDummy_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketDlDummy
const TTCN_Typedescriptor_t PacketDlDummy_descr_ = { "@RLCMAC_CSN1_Types.PacketDlDummy", NULL, &PacketDlDummy_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t PacketDlDummy_persistence__levels_raw_ = {4,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketDlDummy_persistence__levels
const TTCN_Typedescriptor_t PacketDlDummy_persistence__levels_descr_ = { "@RLCMAC_CSN1_Types.PacketDlDummy.persistence_levels", NULL, &PacketDlDummy_persistence__levels_raw_, NULL, NULL, NULL, NULL, NULL, &PersistenceLevels_0_descr_, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketDlDummy_persistence__levels_default_coding("RAW");
UNIVERSAL_CHARSTRING PacketDlDummy_default_coding("RAW");
const TTCN_RAWdescriptor_t GlobalPwrCtrlParams_alpha_raw_ = {4,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       GlobalPwrCtrlParams_alpha_xer_ = { {"alpha>\n", "alpha>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GlobalPwrCtrlParams_alpha_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GlobalPwrCtrlParams_alpha_descr_ = { "@RLCMAC_CSN1_Types.GlobalPwrCtrlParams.alpha", &INTEGER_ber_, &GlobalPwrCtrlParams_alpha_raw_, &INTEGER_text_, &GlobalPwrCtrlParams_alpha_xer_, &INTEGER_json_, &GlobalPwrCtrlParams_alpha_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GlobalPwrCtrlParams_alpha_default_coding("RAW");
const TTCN_RAWdescriptor_t GlobalPwrCtrlParams_t__avg__v_raw_ = {5,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       GlobalPwrCtrlParams_t__avg__v_xer_ = { {"t_avg_v>\n", "t_avg_v>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GlobalPwrCtrlParams_t__avg__v_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GlobalPwrCtrlParams_t__avg__v_descr_ = { "@RLCMAC_CSN1_Types.GlobalPwrCtrlParams.t_avg_v", &INTEGER_ber_, &GlobalPwrCtrlParams_t__avg__v_raw_, &INTEGER_text_, &GlobalPwrCtrlParams_t__avg__v_xer_, &INTEGER_json_, &GlobalPwrCtrlParams_t__avg__v_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GlobalPwrCtrlParams_t__avg__v_default_coding("RAW");
const TTCN_RAWdescriptor_t GlobalPwrCtrlParams_t__avg__t_raw_ = {5,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       GlobalPwrCtrlParams_t__avg__t_xer_ = { {"t_avg_t>\n", "t_avg_t>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GlobalPwrCtrlParams_t__avg__t_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GlobalPwrCtrlParams_t__avg__t_descr_ = { "@RLCMAC_CSN1_Types.GlobalPwrCtrlParams.t_avg_t", &INTEGER_ber_, &GlobalPwrCtrlParams_t__avg__t_raw_, &INTEGER_text_, &GlobalPwrCtrlParams_t__avg__t_xer_, &INTEGER_json_, &GlobalPwrCtrlParams_t__avg__t_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GlobalPwrCtrlParams_t__avg__t_default_coding("RAW");
const TTCN_RAWdescriptor_t GlobalPwrCtrlParams_pb_raw_ = {4,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       GlobalPwrCtrlParams_pb_xer_ = { {"pb>\n", "pb>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GlobalPwrCtrlParams_pb_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GlobalPwrCtrlParams_pb_descr_ = { "@RLCMAC_CSN1_Types.GlobalPwrCtrlParams.pb", &INTEGER_ber_, &GlobalPwrCtrlParams_pb_raw_, &INTEGER_text_, &GlobalPwrCtrlParams_pb_xer_, &INTEGER_json_, &GlobalPwrCtrlParams_pb_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GlobalPwrCtrlParams_pb_default_coding("RAW");
const TTCN_RAWdescriptor_t GlobalPwrCtrlParams_pc__meas__chan_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       GlobalPwrCtrlParams_pc__meas__chan_xer_ = { {"pc_meas_chan>\n", "pc_meas_chan>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GlobalPwrCtrlParams_pc__meas__chan_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GlobalPwrCtrlParams_pc__meas__chan_descr_ = { "@RLCMAC_CSN1_Types.GlobalPwrCtrlParams.pc_meas_chan", &BITSTRING_ber_, &GlobalPwrCtrlParams_pc__meas__chan_raw_, NULL, &GlobalPwrCtrlParams_pc__meas__chan_xer_, &BITSTRING_json_, &GlobalPwrCtrlParams_pc__meas__chan_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GlobalPwrCtrlParams_pc__meas__chan_default_coding("RAW");
const TTCN_RAWdescriptor_t GlobalPwrCtrlParams_spare_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       GlobalPwrCtrlParams_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GlobalPwrCtrlParams_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GlobalPwrCtrlParams_spare_descr_ = { "@RLCMAC_CSN1_Types.GlobalPwrCtrlParams.spare", &BITSTRING_ber_, &GlobalPwrCtrlParams_spare_raw_, NULL, &GlobalPwrCtrlParams_spare_xer_, &BITSTRING_json_, &GlobalPwrCtrlParams_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GlobalPwrCtrlParams_spare_default_coding("RAW");
const TTCN_RAWdescriptor_t GlobalPwrCtrlParams_n__avg__i_raw_ = {4,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       GlobalPwrCtrlParams_n__avg__i_xer_ = { {"n_avg_i>\n", "n_avg_i>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GlobalPwrCtrlParams_n__avg__i_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GlobalPwrCtrlParams_n__avg__i_descr_ = { "@RLCMAC_CSN1_Types.GlobalPwrCtrlParams.n_avg_i", &INTEGER_ber_, &GlobalPwrCtrlParams_n__avg__i_raw_, &INTEGER_text_, &GlobalPwrCtrlParams_n__avg__i_xer_, &INTEGER_json_, &GlobalPwrCtrlParams_n__avg__i_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GlobalPwrCtrlParams_n__avg__i_default_coding("RAW");
const TTCN_RAWdescriptor_t GlobalPwrCtrlParams_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for GlobalPwrCtrlParams
const TTCN_Typedescriptor_t GlobalPwrCtrlParams_descr_ = { "@RLCMAC_CSN1_Types.GlobalPwrCtrlParams", NULL, &GlobalPwrCtrlParams_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GlobalPwrCtrlParams_default_coding("RAW");
const TTCN_RAWdescriptor_t TimingAdvanceIdxTN_ta__idx_raw_ = {4,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       TimingAdvanceIdxTN_ta__idx_xer_ = { {"ta_idx>\n", "ta_idx>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t TimingAdvanceIdxTN_ta__idx_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t TimingAdvanceIdxTN_ta__idx_descr_ = { "@RLCMAC_CSN1_Types.TimingAdvanceIdxTN.ta_idx", &INTEGER_ber_, &TimingAdvanceIdxTN_ta__idx_raw_, &INTEGER_text_, &TimingAdvanceIdxTN_ta__idx_xer_, &INTEGER_json_, &TimingAdvanceIdxTN_ta__idx_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TimingAdvanceIdxTN_ta__idx_default_coding("RAW");
const TTCN_RAWdescriptor_t TimingAdvanceIdxTN_ts__num_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       TimingAdvanceIdxTN_ts__num_xer_ = { {"ts_num>\n", "ts_num>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t TimingAdvanceIdxTN_ts__num_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t TimingAdvanceIdxTN_ts__num_descr_ = { "@RLCMAC_CSN1_Types.TimingAdvanceIdxTN.ts_num", &INTEGER_ber_, &TimingAdvanceIdxTN_ts__num_raw_, &INTEGER_text_, &TimingAdvanceIdxTN_ts__num_xer_, &INTEGER_json_, &TimingAdvanceIdxTN_ts__num_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TimingAdvanceIdxTN_ts__num_default_coding("RAW");
const TTCN_RAWdescriptor_t TimingAdvanceIdxTN_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for TimingAdvanceIdxTN
const TTCN_Typedescriptor_t TimingAdvanceIdxTN_descr_ = { "@RLCMAC_CSN1_Types.TimingAdvanceIdxTN", NULL, &TimingAdvanceIdxTN_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TimingAdvanceIdxTN_default_coding("RAW");
const TTCN_RAWdescriptor_t GlobalPacketTA_ta__val__presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       GlobalPacketTA_ta__val__presence_xer_ = { {"ta_val_presence>\n", "ta_val_presence>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GlobalPacketTA_ta__val__presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GlobalPacketTA_ta__val__presence_descr_ = { "@RLCMAC_CSN1_Types.GlobalPacketTA.ta_val_presence", &BITSTRING_ber_, &GlobalPacketTA_ta__val__presence_raw_, NULL, &GlobalPacketTA_ta__val__presence_xer_, &BITSTRING_json_, &GlobalPacketTA_ta__val__presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GlobalPacketTA_ta__val__presence_default_coding("RAW");
const TTCN_RAWdescriptor_t GlobalPacketTA_ul__presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       GlobalPacketTA_ul__presence_xer_ = { {"ul_presence>\n", "ul_presence>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GlobalPacketTA_ul__presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GlobalPacketTA_ul__presence_descr_ = { "@RLCMAC_CSN1_Types.GlobalPacketTA.ul_presence", &BITSTRING_ber_, &GlobalPacketTA_ul__presence_raw_, NULL, &GlobalPacketTA_ul__presence_xer_, &BITSTRING_json_, &GlobalPacketTA_ul__presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GlobalPacketTA_ul__presence_default_coding("RAW");
const TTCN_RAWdescriptor_t GlobalPacketTA_dl__presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       GlobalPacketTA_dl__presence_xer_ = { {"dl_presence>\n", "dl_presence>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GlobalPacketTA_dl__presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GlobalPacketTA_dl__presence_descr_ = { "@RLCMAC_CSN1_Types.GlobalPacketTA.dl_presence", &BITSTRING_ber_, &GlobalPacketTA_dl__presence_raw_, NULL, &GlobalPacketTA_dl__presence_xer_, &BITSTRING_json_, &GlobalPacketTA_dl__presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GlobalPacketTA_dl__presence_default_coding("RAW");
const TTCN_RAWdescriptor_t GlobalPacketTA_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for GlobalPacketTA
const TTCN_Typedescriptor_t GlobalPacketTA_descr_ = { "@RLCMAC_CSN1_Types.GlobalPacketTA", NULL, &GlobalPacketTA_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t GlobalPacketTA_ta__val_raw_ = {4,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       GlobalPacketTA_ta__val_xer_ = { {"ta_val>\n", "ta_val>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GlobalPacketTA_ta__val_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GlobalPacketTA_ta__val_descr_ = { "@RLCMAC_CSN1_Types.GlobalPacketTA.ta_val", &INTEGER_ber_, &GlobalPacketTA_ta__val_raw_, &INTEGER_text_, &GlobalPacketTA_ta__val_xer_, &INTEGER_json_, &GlobalPacketTA_ta__val_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GlobalPacketTA_ta__val_default_coding("RAW");
const TTCN_RAWdescriptor_t GlobalPacketTA_ul_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for GlobalPacketTA_ul
const TTCN_Typedescriptor_t GlobalPacketTA_ul_descr_ = { "@RLCMAC_CSN1_Types.GlobalPacketTA.ul", NULL, &GlobalPacketTA_ul_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GlobalPacketTA_ul_default_coding("RAW");
const TTCN_RAWdescriptor_t GlobalPacketTA_dl_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for GlobalPacketTA_dl
const TTCN_Typedescriptor_t GlobalPacketTA_dl_descr_ = { "@RLCMAC_CSN1_Types.GlobalPacketTA.dl", NULL, &GlobalPacketTA_dl_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GlobalPacketTA_dl_default_coding("RAW");
UNIVERSAL_CHARSTRING GlobalPacketTA_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketPwrControlTAMsg_g__pwr__ctrl__presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketPwrControlTAMsg_g__pwr__ctrl__presence_xer_ = { {"g_pwr_ctrl_presence>\n", "g_pwr_ctrl_presence>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketPwrControlTAMsg_g__pwr__ctrl__presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketPwrControlTAMsg_g__pwr__ctrl__presence_descr_ = { "@RLCMAC_CSN1_Types.PacketPwrControlTAMsg.g_pwr_ctrl_presence", &BITSTRING_ber_, &PacketPwrControlTAMsg_g__pwr__ctrl__presence_raw_, NULL, &PacketPwrControlTAMsg_g__pwr__ctrl__presence_xer_, &BITSTRING_json_, &PacketPwrControlTAMsg_g__pwr__ctrl__presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketPwrControlTAMsg_g__pwr__ctrl__presence_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketPwrControlTAMsg_split_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketPwrControlTAMsg_split_xer_ = { {"split>\n", "split>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketPwrControlTAMsg_split_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketPwrControlTAMsg_split_descr_ = { "@RLCMAC_CSN1_Types.PacketPwrControlTAMsg.split", &BITSTRING_ber_, &PacketPwrControlTAMsg_split_raw_, NULL, &PacketPwrControlTAMsg_split_xer_, &BITSTRING_json_, &PacketPwrControlTAMsg_split_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketPwrControlTAMsg_split_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketPwrControlTAMsg_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketPwrControlTAMsg
const TTCN_Typedescriptor_t PacketPwrControlTAMsg_descr_ = { "@RLCMAC_CSN1_Types.PacketPwrControlTAMsg", NULL, &PacketPwrControlTAMsg_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t PacketPwrControlTAMsg_g__pwr__ctrl_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketPwrControlTAMsg_g__pwr__ctrl
const TTCN_Typedescriptor_t PacketPwrControlTAMsg_g__pwr__ctrl_descr_ = { "@RLCMAC_CSN1_Types.PacketPwrControlTAMsg.g_pwr_ctrl", NULL, &PacketPwrControlTAMsg_g__pwr__ctrl_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketPwrControlTAMsg_g__pwr__ctrl_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketPwrControlTAMsg_split__desc_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketPwrControlTAMsg_split__desc_xer_ = { {"split_desc>\n", "split_desc>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketPwrControlTAMsg_split__desc_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketPwrControlTAMsg_split__desc_descr_ = { "@RLCMAC_CSN1_Types.PacketPwrControlTAMsg.split_desc", &BITSTRING_ber_, &PacketPwrControlTAMsg_split__desc_raw_, NULL, &PacketPwrControlTAMsg_split__desc_xer_, &BITSTRING_json_, &PacketPwrControlTAMsg_split__desc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketPwrControlTAMsg_split__desc_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketPwrControlTAMsg_g__pkt__ta_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketPwrControlTAMsg_g__pkt__ta
const TTCN_Typedescriptor_t PacketPwrControlTAMsg_g__pkt__ta_descr_ = { "@RLCMAC_CSN1_Types.PacketPwrControlTAMsg.g_pkt_ta", NULL, &PacketPwrControlTAMsg_g__pkt__ta_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketPwrControlTAMsg_g__pkt__ta_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketPwrControlTAMsg_pwr__ctrl_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketPwrControlTAMsg_pwr__ctrl
const TTCN_Typedescriptor_t PacketPwrControlTAMsg_pwr__ctrl_descr_ = { "@RLCMAC_CSN1_Types.PacketPwrControlTAMsg.pwr_ctrl", NULL, &PacketPwrControlTAMsg_pwr__ctrl_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketPwrControlTAMsg_pwr__ctrl_default_coding("RAW");
UNIVERSAL_CHARSTRING PacketPwrControlTAMsg_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketPwrControlTA_page__mode_raw_ = {2,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketPwrControlTA_page__mode
const TTCN_Typedescriptor_t PacketPwrControlTA_page__mode_descr_ = { "@RLCMAC_CSN1_Types.PacketPwrControlTA.page_mode", NULL, &PacketPwrControlTA_page__mode_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketPwrControlTA_page__mode_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketPwrControlTA_global__tfi_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketPwrControlTA_global__tfi
const TTCN_Typedescriptor_t PacketPwrControlTA_global__tfi_descr_ = { "@RLCMAC_CSN1_Types.PacketPwrControlTA.global_tfi", NULL, &PacketPwrControlTA_global__tfi_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketPwrControlTA_global__tfi_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketPwrControlTA_msg__escape_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketPwrControlTA_msg__escape_xer_ = { {"msg_escape>\n", "msg_escape>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketPwrControlTA_msg__escape_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketPwrControlTA_msg__escape_descr_ = { "@RLCMAC_CSN1_Types.PacketPwrControlTA.msg_escape", &BITSTRING_ber_, &PacketPwrControlTA_msg__escape_raw_, NULL, &PacketPwrControlTA_msg__escape_xer_, &BITSTRING_json_, &PacketPwrControlTA_msg__escape_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketPwrControlTA_msg__escape_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketPwrControlTA_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketPwrControlTA
const TTCN_Typedescriptor_t PacketPwrControlTA_descr_ = { "@RLCMAC_CSN1_Types.PacketPwrControlTA", NULL, &PacketPwrControlTA_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t PacketPwrControlTA_msg_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketPwrControlTA_msg
const TTCN_Typedescriptor_t PacketPwrControlTA_msg_descr_ = { "@RLCMAC_CSN1_Types.PacketPwrControlTA.msg", NULL, &PacketPwrControlTA_msg_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketPwrControlTA_msg_default_coding("RAW");
UNIVERSAL_CHARSTRING PacketPwrControlTA_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketCellChangeContinue_page__mode_raw_ = {2,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketCellChangeContinue_page__mode
const TTCN_Typedescriptor_t PacketCellChangeContinue_page__mode_descr_ = { "@RLCMAC_CSN1_Types.PacketCellChangeContinue.page_mode", NULL, &PacketCellChangeContinue_page__mode_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketCellChangeContinue_page__mode_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketCellChangeContinue_zero_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketCellChangeContinue_zero_xer_ = { {"zero>\n", "zero>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketCellChangeContinue_zero_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketCellChangeContinue_zero_descr_ = { "@RLCMAC_CSN1_Types.PacketCellChangeContinue.zero", &BITSTRING_ber_, &PacketCellChangeContinue_zero_raw_, NULL, &PacketCellChangeContinue_zero_xer_, &BITSTRING_json_, &PacketCellChangeContinue_zero_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketCellChangeContinue_zero_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketCellChangeContinue_gtfi_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketCellChangeContinue_gtfi
const TTCN_Typedescriptor_t PacketCellChangeContinue_gtfi_descr_ = { "@RLCMAC_CSN1_Types.PacketCellChangeContinue.gtfi", NULL, &PacketCellChangeContinue_gtfi_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketCellChangeContinue_gtfi_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketCellChangeContinue_arfcn__bsic__presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketCellChangeContinue_arfcn__bsic__presence_xer_ = { {"arfcn_bsic_presence>\n", "arfcn_bsic_presence>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketCellChangeContinue_arfcn__bsic__presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketCellChangeContinue_arfcn__bsic__presence_descr_ = { "@RLCMAC_CSN1_Types.PacketCellChangeContinue.arfcn_bsic_presence", &BITSTRING_ber_, &PacketCellChangeContinue_arfcn__bsic__presence_raw_, NULL, &PacketCellChangeContinue_arfcn__bsic__presence_xer_, &BITSTRING_json_, &PacketCellChangeContinue_arfcn__bsic__presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketCellChangeContinue_arfcn__bsic__presence_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketCellChangeContinue_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketCellChangeContinue
const TTCN_Typedescriptor_t PacketCellChangeContinue_descr_ = { "@RLCMAC_CSN1_Types.PacketCellChangeContinue", NULL, &PacketCellChangeContinue_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t PacketCellChangeContinue_arfcn_raw_ = {10,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketCellChangeContinue_arfcn_xer_ = { {"arfcn>\n", "arfcn>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketCellChangeContinue_arfcn_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketCellChangeContinue_arfcn_descr_ = { "@RLCMAC_CSN1_Types.PacketCellChangeContinue.arfcn", &INTEGER_ber_, &PacketCellChangeContinue_arfcn_raw_, &INTEGER_text_, &PacketCellChangeContinue_arfcn_xer_, &INTEGER_json_, &PacketCellChangeContinue_arfcn_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketCellChangeContinue_arfcn_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketCellChangeContinue_bsic_raw_ = {6,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketCellChangeContinue_bsic_xer_ = { {"bsic>\n", "bsic>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketCellChangeContinue_bsic_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketCellChangeContinue_bsic_descr_ = { "@RLCMAC_CSN1_Types.PacketCellChangeContinue.bsic", &INTEGER_ber_, &PacketCellChangeContinue_bsic_raw_, &INTEGER_text_, &PacketCellChangeContinue_bsic_xer_, &INTEGER_json_, &PacketCellChangeContinue_bsic_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketCellChangeContinue_bsic_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketCellChangeContinue_container__id_raw_ = {2,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketCellChangeContinue_container__id_xer_ = { {"container_id>\n", "container_id>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketCellChangeContinue_container__id_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketCellChangeContinue_container__id_descr_ = { "@RLCMAC_CSN1_Types.PacketCellChangeContinue.container_id", &INTEGER_ber_, &PacketCellChangeContinue_container__id_raw_, &INTEGER_text_, &PacketCellChangeContinue_container__id_xer_, &INTEGER_json_, &PacketCellChangeContinue_container__id_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketCellChangeContinue_container__id_default_coding("RAW");
UNIVERSAL_CHARSTRING PacketCellChangeContinue_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketNeighbourCellDataContainer_pd_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketNeighbourCellDataContainer_pd_xer_ = { {"pd>\n", "pd>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketNeighbourCellDataContainer_pd_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketNeighbourCellDataContainer_pd_descr_ = { "@RLCMAC_CSN1_Types.PacketNeighbourCellDataContainer.pd", &BITSTRING_ber_, &PacketNeighbourCellDataContainer_pd_raw_, NULL, &PacketNeighbourCellDataContainer_pd_xer_, &BITSTRING_json_, &PacketNeighbourCellDataContainer_pd_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketNeighbourCellDataContainer_pd_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketNeighbourCellDataContainer_cd__length_raw_ = {5,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketNeighbourCellDataContainer_cd__length_xer_ = { {"cd_length>\n", "cd_length>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketNeighbourCellDataContainer_cd__length_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketNeighbourCellDataContainer_cd__length_descr_ = { "@RLCMAC_CSN1_Types.PacketNeighbourCellDataContainer.cd_length", &INTEGER_ber_, &PacketNeighbourCellDataContainer_cd__length_raw_, &INTEGER_text_, &PacketNeighbourCellDataContainer_cd__length_xer_, &INTEGER_json_, &PacketNeighbourCellDataContainer_cd__length_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketNeighbourCellDataContainer_cd__length_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketNeighbourCellDataContainer_container__data_raw_ = {0,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketNeighbourCellDataContainer_container__data_xer_ = { {"container_data>\n", "container_data>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PacketNeighbourCellDataContainer_container__data_oer_ext_arr_[0] = {};
const int PacketNeighbourCellDataContainer_container__data_oer_p_[0] = {};
const TTCN_OERdescriptor_t PacketNeighbourCellDataContainer_container__data_oer_ = { -1, TRUE, -1, FALSE, 0, 0, PacketNeighbourCellDataContainer_container__data_oer_ext_arr_, 0, PacketNeighbourCellDataContainer_container__data_oer_p_};
const TTCN_Typedescriptor_t PacketNeighbourCellDataContainer_container__data_descr_ = { "@RLCMAC_CSN1_Types.PacketNeighbourCellDataContainer.container_data", &OCTETSTRING_ber_, &PacketNeighbourCellDataContainer_container__data_raw_, &OCTETSTRING_text_, &PacketNeighbourCellDataContainer_container__data_xer_, &OCTETSTRING_json_, &PacketNeighbourCellDataContainer_container__data_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketNeighbourCellDataContainer_container__data_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketNeighbourCellDataContainer_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketNeighbourCellDataContainer
const TTCN_Typedescriptor_t PacketNeighbourCellDataContainer_descr_ = { "@RLCMAC_CSN1_Types.PacketNeighbourCellDataContainer", NULL, &PacketNeighbourCellDataContainer_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketNeighbourCellDataContainer_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketNeighbourCellDataContainerList_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketNeighbourCellDataContainerList
const TTCN_Typedescriptor_t PacketNeighbourCellDataContainerList_descr_ = { "@RLCMAC_CSN1_Types.PacketNeighbourCellDataContainerList", NULL, &PacketNeighbourCellDataContainerList_raw_, NULL, NULL, NULL, NULL, NULL, &PacketNeighbourCellDataContainerList_0_descr_, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t PacketNeighbourCellDataContainerList_0_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketNeighbourCellDataContainerList_0
const TTCN_Typedescriptor_t PacketNeighbourCellDataContainerList_0_descr_ = { "@RLCMAC_CSN1_Types.PacketNeighbourCellDataContainerList.<oftype>", NULL, &PacketNeighbourCellDataContainerList_0_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketNeighbourCellDataContainerList_0_default_coding("RAW");
UNIVERSAL_CHARSTRING PacketNeighbourCellDataContainerList_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketNeighbourCellData_page__mode_raw_ = {2,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketNeighbourCellData_page__mode
const TTCN_Typedescriptor_t PacketNeighbourCellData_page__mode_descr_ = { "@RLCMAC_CSN1_Types.PacketNeighbourCellData.page_mode", NULL, &PacketNeighbourCellData_page__mode_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketNeighbourCellData_page__mode_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketNeighbourCellData_zero_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketNeighbourCellData_zero_xer_ = { {"zero>\n", "zero>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketNeighbourCellData_zero_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketNeighbourCellData_zero_descr_ = { "@RLCMAC_CSN1_Types.PacketNeighbourCellData.zero", &BITSTRING_ber_, &PacketNeighbourCellData_zero_raw_, NULL, &PacketNeighbourCellData_zero_xer_, &BITSTRING_json_, &PacketNeighbourCellData_zero_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketNeighbourCellData_zero_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketNeighbourCellData_gtfi_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketNeighbourCellData_gtfi
const TTCN_Typedescriptor_t PacketNeighbourCellData_gtfi_descr_ = { "@RLCMAC_CSN1_Types.PacketNeighbourCellData.gtfi", NULL, &PacketNeighbourCellData_gtfi_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketNeighbourCellData_gtfi_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketNeighbourCellData_container__id_raw_ = {2,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketNeighbourCellData_container__id_xer_ = { {"container_id>\n", "container_id>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketNeighbourCellData_container__id_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketNeighbourCellData_container__id_descr_ = { "@RLCMAC_CSN1_Types.PacketNeighbourCellData.container_id", &INTEGER_ber_, &PacketNeighbourCellData_container__id_raw_, &INTEGER_text_, &PacketNeighbourCellData_container__id_xer_, &INTEGER_json_, &PacketNeighbourCellData_container__id_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketNeighbourCellData_container__id_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketNeighbourCellData_spare_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketNeighbourCellData_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketNeighbourCellData_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketNeighbourCellData_spare_descr_ = { "@RLCMAC_CSN1_Types.PacketNeighbourCellData.spare", &BITSTRING_ber_, &PacketNeighbourCellData_spare_raw_, NULL, &PacketNeighbourCellData_spare_xer_, &BITSTRING_json_, &PacketNeighbourCellData_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketNeighbourCellData_spare_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketNeighbourCellData_container__index_raw_ = {5,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketNeighbourCellData_container__index_xer_ = { {"container_index>\n", "container_index>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketNeighbourCellData_container__index_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketNeighbourCellData_container__index_descr_ = { "@RLCMAC_CSN1_Types.PacketNeighbourCellData.container_index", &INTEGER_ber_, &PacketNeighbourCellData_container__index_raw_, &INTEGER_text_, &PacketNeighbourCellData_container__index_xer_, &INTEGER_json_, &PacketNeighbourCellData_container__index_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketNeighbourCellData_container__index_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketNeighbourCellData_arfcn__bsic__presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketNeighbourCellData_arfcn__bsic__presence_xer_ = { {"arfcn_bsic_presence>\n", "arfcn_bsic_presence>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketNeighbourCellData_arfcn__bsic__presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketNeighbourCellData_arfcn__bsic__presence_descr_ = { "@RLCMAC_CSN1_Types.PacketNeighbourCellData.arfcn_bsic_presence", &BITSTRING_ber_, &PacketNeighbourCellData_arfcn__bsic__presence_raw_, NULL, &PacketNeighbourCellData_arfcn__bsic__presence_xer_, &BITSTRING_json_, &PacketNeighbourCellData_arfcn__bsic__presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketNeighbourCellData_arfcn__bsic__presence_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketNeighbourCellData_container__list_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketNeighbourCellData_container__list
const TTCN_Typedescriptor_t PacketNeighbourCellData_container__list_descr_ = { "@RLCMAC_CSN1_Types.PacketNeighbourCellData.container_list", NULL, &PacketNeighbourCellData_container__list_raw_, NULL, NULL, NULL, NULL, NULL, &PacketNeighbourCellDataContainerList_0_descr_, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketNeighbourCellData_container__list_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketNeighbourCellData_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketNeighbourCellData
const TTCN_Typedescriptor_t PacketNeighbourCellData_descr_ = { "@RLCMAC_CSN1_Types.PacketNeighbourCellData", NULL, &PacketNeighbourCellData_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t PacketNeighbourCellData_arfcn_raw_ = {10,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketNeighbourCellData_arfcn_xer_ = { {"arfcn>\n", "arfcn>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketNeighbourCellData_arfcn_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketNeighbourCellData_arfcn_descr_ = { "@RLCMAC_CSN1_Types.PacketNeighbourCellData.arfcn", &INTEGER_ber_, &PacketNeighbourCellData_arfcn_raw_, &INTEGER_text_, &PacketNeighbourCellData_arfcn_xer_, &INTEGER_json_, &PacketNeighbourCellData_arfcn_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketNeighbourCellData_arfcn_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketNeighbourCellData_bsic_raw_ = {6,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketNeighbourCellData_bsic_xer_ = { {"bsic>\n", "bsic>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketNeighbourCellData_bsic_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketNeighbourCellData_bsic_descr_ = { "@RLCMAC_CSN1_Types.PacketNeighbourCellData.bsic", &INTEGER_ber_, &PacketNeighbourCellData_bsic_raw_, &INTEGER_text_, &PacketNeighbourCellData_bsic_xer_, &INTEGER_json_, &PacketNeighbourCellData_bsic_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketNeighbourCellData_bsic_default_coding("RAW");
UNIVERSAL_CHARSTRING PacketNeighbourCellData_default_coding("RAW");
const TTCN_RAWdescriptor_t RlcmacDlCtrlUnion_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RlcmacDlCtrlUnion
const TTCN_Typedescriptor_t RlcmacDlCtrlUnion_descr_ = { "@RLCMAC_CSN1_Types.RlcmacDlCtrlUnion", NULL, &RlcmacDlCtrlUnion_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t PacketAccessReject_page__mode_raw_ = {2,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketAccessReject_page__mode
const TTCN_Typedescriptor_t PacketAccessReject_page__mode_descr_ = { "@RLCMAC_CSN1_Types.PacketAccessReject.page_mode", NULL, &PacketAccessReject_page__mode_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketAccessReject_page__mode_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketAccessRejectStruct_id__type_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketAccessRejectStruct_id__type_xer_ = { {"id_type>\n", "id_type>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketAccessRejectStruct_id__type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketAccessRejectStruct_id__type_descr_ = { "@RLCMAC_CSN1_Types.PacketAccessRejectStruct.id_type", &BITSTRING_ber_, &PacketAccessRejectStruct_id__type_raw_, NULL, &PacketAccessRejectStruct_id__type_xer_, &BITSTRING_json_, &PacketAccessRejectStruct_id__type_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketAccessRejectStruct_id__type_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketAccessRejectID_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketAccessRejectID
const TTCN_Typedescriptor_t PacketAccessRejectID_descr_ = { "@RLCMAC_CSN1_Types.PacketAccessRejectID", NULL, &PacketAccessRejectID_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t PacketAccessRejectID_tlli_raw_ = {32,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,4,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketAccessRejectID_tlli_xer_ = { {"tlli>\n", "tlli>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PacketAccessRejectID_tlli_oer_ext_arr_[0] = {};
const int PacketAccessRejectID_tlli_oer_p_[0] = {};
const TTCN_OERdescriptor_t PacketAccessRejectID_tlli_oer_ = { -1, TRUE, 4, FALSE, 0, 0, PacketAccessRejectID_tlli_oer_ext_arr_, 0, PacketAccessRejectID_tlli_oer_p_};
const TTCN_Typedescriptor_t PacketAccessRejectID_tlli_descr_ = { "@RLCMAC_CSN1_Types.PacketAccessRejectID.tlli", &OCTETSTRING_ber_, &PacketAccessRejectID_tlli_raw_, &OCTETSTRING_text_, &PacketAccessRejectID_tlli_xer_, &OCTETSTRING_json_, &PacketAccessRejectID_tlli_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketAccessRejectID_tlli_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketAccessRejectIDSub_id__type_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketAccessRejectIDSub_id__type_xer_ = { {"id_type>\n", "id_type>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketAccessRejectIDSub_id__type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketAccessRejectIDSub_id__type_descr_ = { "@RLCMAC_CSN1_Types.PacketAccessRejectIDSub.id_type", &BITSTRING_ber_, &PacketAccessRejectIDSub_id__type_raw_, NULL, &PacketAccessRejectIDSub_id__type_xer_, &BITSTRING_json_, &PacketAccessRejectIDSub_id__type_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketAccessRejectIDSub_id__type_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketAccessRejectIDSub_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketAccessRejectIDSub
const TTCN_Typedescriptor_t PacketAccessRejectIDSub_descr_ = { "@RLCMAC_CSN1_Types.PacketAccessRejectIDSub", NULL, &PacketAccessRejectIDSub_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t PacketAccessRejectIDSub_req__ref_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketAccessRejectIDSub_req__ref
const TTCN_Typedescriptor_t PacketAccessRejectIDSub_req__ref_descr_ = { "@RLCMAC_CSN1_Types.PacketAccessRejectIDSub.req_ref", NULL, &PacketAccessRejectIDSub_req__ref_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketAccessRejectIDSub_req__ref_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketAccessRejectIDSub_gtfi_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketAccessRejectIDSub_gtfi
const TTCN_Typedescriptor_t PacketAccessRejectIDSub_gtfi_descr_ = { "@RLCMAC_CSN1_Types.PacketAccessRejectIDSub.gtfi", NULL, &PacketAccessRejectIDSub_gtfi_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketAccessRejectIDSub_gtfi_default_coding("RAW");
UNIVERSAL_CHARSTRING PacketAccessRejectIDSub_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketAccessRejectID_id__sub_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketAccessRejectID_id__sub
const TTCN_Typedescriptor_t PacketAccessRejectID_id__sub_descr_ = { "@RLCMAC_CSN1_Types.PacketAccessRejectID.id_sub", NULL, &PacketAccessRejectID_id__sub_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketAccessRejectID_id__sub_default_coding("RAW");
UNIVERSAL_CHARSTRING PacketAccessRejectID_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketAccessRejectStruct_id_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketAccessRejectStruct_id
const TTCN_Typedescriptor_t PacketAccessRejectStruct_id_descr_ = { "@RLCMAC_CSN1_Types.PacketAccessRejectStruct.id", NULL, &PacketAccessRejectStruct_id_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketAccessRejectStruct_id_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketAccessRejectStruct_wait__ind__presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketAccessRejectStruct_wait__ind__presence_xer_ = { {"wait_ind_presence>\n", "wait_ind_presence>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketAccessRejectStruct_wait__ind__presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketAccessRejectStruct_wait__ind__presence_descr_ = { "@RLCMAC_CSN1_Types.PacketAccessRejectStruct.wait_ind_presence", &BITSTRING_ber_, &PacketAccessRejectStruct_wait__ind__presence_raw_, NULL, &PacketAccessRejectStruct_wait__ind__presence_xer_, &BITSTRING_json_, &PacketAccessRejectStruct_wait__ind__presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketAccessRejectStruct_wait__ind__presence_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketAccessRejectStruct_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketAccessRejectStruct
const TTCN_Typedescriptor_t PacketAccessRejectStruct_descr_ = { "@RLCMAC_CSN1_Types.PacketAccessRejectStruct", NULL, &PacketAccessRejectStruct_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t PacketAccessRejectStruct_wait__ind_raw_ = {8,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketAccessRejectStruct_wait__ind_xer_ = { {"wait_ind>\n", "wait_ind>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketAccessRejectStruct_wait__ind_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketAccessRejectStruct_wait__ind_descr_ = { "@RLCMAC_CSN1_Types.PacketAccessRejectStruct.wait_ind", &INTEGER_ber_, &PacketAccessRejectStruct_wait__ind_raw_, &INTEGER_text_, &PacketAccessRejectStruct_wait__ind_xer_, &INTEGER_json_, &PacketAccessRejectStruct_wait__ind_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketAccessRejectStruct_wait__ind_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketAccessRejectStruct_wait__ind__size_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketAccessRejectStruct_wait__ind__size_xer_ = { {"wait_ind_size>\n", "wait_ind_size>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketAccessRejectStruct_wait__ind__size_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketAccessRejectStruct_wait__ind__size_descr_ = { "@RLCMAC_CSN1_Types.PacketAccessRejectStruct.wait_ind_size", &BITSTRING_ber_, &PacketAccessRejectStruct_wait__ind__size_raw_, NULL, &PacketAccessRejectStruct_wait__ind__size_xer_, &BITSTRING_json_, &PacketAccessRejectStruct_wait__ind__size_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketAccessRejectStruct_wait__ind__size_default_coding("RAW");
UNIVERSAL_CHARSTRING PacketAccessRejectStruct_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketAccessReject_reject__struct_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketAccessReject_reject__struct
const TTCN_Typedescriptor_t PacketAccessReject_reject__struct_descr_ = { "@RLCMAC_CSN1_Types.PacketAccessReject.reject_struct", NULL, &PacketAccessReject_reject__struct_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketAccessReject_reject__struct_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketAccessReject_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketAccessReject
const TTCN_Typedescriptor_t PacketAccessReject_descr_ = { "@RLCMAC_CSN1_Types.PacketAccessReject", NULL, &PacketAccessReject_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketAccessReject_default_coding("RAW");
const TTCN_RAWdescriptor_t RlcmacDlCtrlUnion_access__reject_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RlcmacDlCtrlUnion_access__reject
const TTCN_Typedescriptor_t RlcmacDlCtrlUnion_access__reject_descr_ = { "@RLCMAC_CSN1_Types.RlcmacDlCtrlUnion.access_reject", NULL, &RlcmacDlCtrlUnion_access__reject_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RlcmacDlCtrlUnion_access__reject_default_coding("RAW");
const TTCN_RAWdescriptor_t RlcmacDlCtrlUnion_dl__assignment_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RlcmacDlCtrlUnion_dl__assignment
const TTCN_Typedescriptor_t RlcmacDlCtrlUnion_dl__assignment_descr_ = { "@RLCMAC_CSN1_Types.RlcmacDlCtrlUnion.dl_assignment", NULL, &RlcmacDlCtrlUnion_dl__assignment_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RlcmacDlCtrlUnion_dl__assignment_default_coding("RAW");
const TTCN_RAWdescriptor_t RlcmacDlCtrlUnion_meas__order_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RlcmacDlCtrlUnion_meas__order
const TTCN_Typedescriptor_t RlcmacDlCtrlUnion_meas__order_descr_ = { "@RLCMAC_CSN1_Types.RlcmacDlCtrlUnion.meas_order", NULL, &RlcmacDlCtrlUnion_meas__order_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RlcmacDlCtrlUnion_meas__order_default_coding("RAW");
const TTCN_RAWdescriptor_t RlcmacDlCtrlUnion_ul__assignment_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RlcmacDlCtrlUnion_ul__assignment
const TTCN_Typedescriptor_t RlcmacDlCtrlUnion_ul__assignment_descr_ = { "@RLCMAC_CSN1_Types.RlcmacDlCtrlUnion.ul_assignment", NULL, &RlcmacDlCtrlUnion_ul__assignment_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RlcmacDlCtrlUnion_ul__assignment_default_coding("RAW");
const TTCN_RAWdescriptor_t RlcmacDlCtrlUnion_paging_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RlcmacDlCtrlUnion_paging
const TTCN_Typedescriptor_t RlcmacDlCtrlUnion_paging_descr_ = { "@RLCMAC_CSN1_Types.RlcmacDlCtrlUnion.paging", NULL, &RlcmacDlCtrlUnion_paging_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RlcmacDlCtrlUnion_paging_default_coding("RAW");
const TTCN_RAWdescriptor_t RlcmacDlCtrlUnion_ul__ack__nack_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RlcmacDlCtrlUnion_ul__ack__nack
const TTCN_Typedescriptor_t RlcmacDlCtrlUnion_ul__ack__nack_descr_ = { "@RLCMAC_CSN1_Types.RlcmacDlCtrlUnion.ul_ack_nack", NULL, &RlcmacDlCtrlUnion_ul__ack__nack_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RlcmacDlCtrlUnion_ul__ack__nack_default_coding("RAW");
const TTCN_RAWdescriptor_t RlcmacDlCtrlUnion_dl__dummy_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RlcmacDlCtrlUnion_dl__dummy
const TTCN_Typedescriptor_t RlcmacDlCtrlUnion_dl__dummy_descr_ = { "@RLCMAC_CSN1_Types.RlcmacDlCtrlUnion.dl_dummy", NULL, &RlcmacDlCtrlUnion_dl__dummy_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RlcmacDlCtrlUnion_dl__dummy_default_coding("RAW");
const TTCN_RAWdescriptor_t RlcmacDlCtrlUnion_pwr__ta_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RlcmacDlCtrlUnion_pwr__ta
const TTCN_Typedescriptor_t RlcmacDlCtrlUnion_pwr__ta_descr_ = { "@RLCMAC_CSN1_Types.RlcmacDlCtrlUnion.pwr_ta", NULL, &RlcmacDlCtrlUnion_pwr__ta_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RlcmacDlCtrlUnion_pwr__ta_default_coding("RAW");
const TTCN_RAWdescriptor_t RlcmacDlCtrlUnion_cell__chg__continue_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RlcmacDlCtrlUnion_cell__chg__continue
const TTCN_Typedescriptor_t RlcmacDlCtrlUnion_cell__chg__continue_descr_ = { "@RLCMAC_CSN1_Types.RlcmacDlCtrlUnion.cell_chg_continue", NULL, &RlcmacDlCtrlUnion_cell__chg__continue_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RlcmacDlCtrlUnion_cell__chg__continue_default_coding("RAW");
const TTCN_RAWdescriptor_t RlcmacDlCtrlUnion_neighbour__cell__data_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RlcmacDlCtrlUnion_neighbour__cell__data
const TTCN_Typedescriptor_t RlcmacDlCtrlUnion_neighbour__cell__data_descr_ = { "@RLCMAC_CSN1_Types.RlcmacDlCtrlUnion.neighbour_cell_data", NULL, &RlcmacDlCtrlUnion_neighbour__cell__data_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RlcmacDlCtrlUnion_neighbour__cell__data_default_coding("RAW");
const TTCN_RAWdescriptor_t RlcmacDlCtrlUnion_other_raw_ = {0,SG_NO,ORDER_MSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       RlcmacDlCtrlUnion_other_xer_ = { {"other>\n", "other>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RlcmacDlCtrlUnion_other_oer_ext_arr_[0] = {};
const int RlcmacDlCtrlUnion_other_oer_p_[0] = {};
const TTCN_OERdescriptor_t RlcmacDlCtrlUnion_other_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RlcmacDlCtrlUnion_other_oer_ext_arr_, 0, RlcmacDlCtrlUnion_other_oer_p_};
const TTCN_Typedescriptor_t RlcmacDlCtrlUnion_other_descr_ = { "@RLCMAC_CSN1_Types.RlcmacDlCtrlUnion.other", &OCTETSTRING_ber_, &RlcmacDlCtrlUnion_other_raw_, &OCTETSTRING_text_, &RlcmacDlCtrlUnion_other_xer_, &OCTETSTRING_json_, &RlcmacDlCtrlUnion_other_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RlcmacDlCtrlUnion_other_default_coding("RAW");
UNIVERSAL_CHARSTRING RlcmacDlCtrlUnion_default_coding("RAW");
const TTCN_RAWdescriptor_t RlcmacDlCtrlMsg_msg__type_raw_ = {6,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RlcmacDlCtrlMsg_msg__type
const TTCN_Typedescriptor_t RlcmacDlCtrlMsg_msg__type_descr_ = { "@RLCMAC_CSN1_Types.RlcmacDlCtrlMsg.msg_type", NULL, &RlcmacDlCtrlMsg_msg__type_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RlcmacDlCtrlMsg_msg__type_default_coding("RAW");
const TTCN_RAWdescriptor_t RlcmacDlCtrlMsg_u_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RlcmacDlCtrlMsg_u
const TTCN_Typedescriptor_t RlcmacDlCtrlMsg_u_descr_ = { "@RLCMAC_CSN1_Types.RlcmacDlCtrlMsg.u", NULL, &RlcmacDlCtrlMsg_u_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RlcmacDlCtrlMsg_u_default_coding("RAW");
const TTCN_RAWdescriptor_t RlcmacDlCtrlMsg_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RlcmacDlCtrlMsg
const TTCN_Typedescriptor_t RlcmacDlCtrlMsg_descr_ = { "@RLCMAC_CSN1_Types.RlcmacDlCtrlMsg", NULL, &RlcmacDlCtrlMsg_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RlcmacDlCtrlMsg_default_coding("RAW");
const TTCN_RAWdescriptor_t ILevel_presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       ILevel_presence_xer_ = { {"presence>\n", "presence>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ILevel_presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ILevel_presence_descr_ = { "@RLCMAC_CSN1_Types.ILevel.presence", &BITSTRING_ber_, &ILevel_presence_raw_, NULL, &ILevel_presence_xer_, &BITSTRING_json_, &ILevel_presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ILevel_presence_default_coding("RAW");
const TTCN_RAWdescriptor_t ILevel_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for ILevel
const TTCN_Typedescriptor_t ILevel_descr_ = { "@RLCMAC_CSN1_Types.ILevel", NULL, &ILevel_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t ILevel_i__level_raw_ = {4,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       ILevel_i__level_xer_ = { {"i_level>\n", "i_level>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ILevel_i__level_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ILevel_i__level_descr_ = { "@RLCMAC_CSN1_Types.ILevel.i_level", &INTEGER_ber_, &ILevel_i__level_raw_, &INTEGER_text_, &ILevel_i__level_xer_, &INTEGER_json_, &ILevel_i__level_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ILevel_i__level_default_coding("RAW");
UNIVERSAL_CHARSTRING ILevel_default_coding("RAW");
const TTCN_RAWdescriptor_t ILevels_raw_ = {8,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for ILevels
const TTCN_Typedescriptor_t ILevels_descr_ = { "@RLCMAC_CSN1_Types.ILevels", NULL, &ILevels_raw_, NULL, NULL, NULL, NULL, NULL, &ILevels_0_descr_, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t ILevels_0_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for ILevels_0
const TTCN_Typedescriptor_t ILevels_0_descr_ = { "@RLCMAC_CSN1_Types.ILevels.<oftype>", NULL, &ILevels_0_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ILevels_0_default_coding("RAW");
UNIVERSAL_CHARSTRING ILevels_default_coding("RAW");
const TTCN_RAWdescriptor_t ChannelQualityReport_c__value_raw_ = {6,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       ChannelQualityReport_c__value_xer_ = { {"c_value>\n", "c_value>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ChannelQualityReport_c__value_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ChannelQualityReport_c__value_descr_ = { "@RLCMAC_CSN1_Types.ChannelQualityReport.c_value", &INTEGER_ber_, &ChannelQualityReport_c__value_raw_, &INTEGER_text_, &ChannelQualityReport_c__value_xer_, &INTEGER_json_, &ChannelQualityReport_c__value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ChannelQualityReport_c__value_default_coding("RAW");
const TTCN_RAWdescriptor_t ChannelQualityReport_rxqual_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       ChannelQualityReport_rxqual_xer_ = { {"rxqual>\n", "rxqual>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ChannelQualityReport_rxqual_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ChannelQualityReport_rxqual_descr_ = { "@RLCMAC_CSN1_Types.ChannelQualityReport.rxqual", &INTEGER_ber_, &ChannelQualityReport_rxqual_raw_, &INTEGER_text_, &ChannelQualityReport_rxqual_xer_, &INTEGER_json_, &ChannelQualityReport_rxqual_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ChannelQualityReport_rxqual_default_coding("RAW");
const TTCN_RAWdescriptor_t ChannelQualityReport_sign__var_raw_ = {6,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       ChannelQualityReport_sign__var_xer_ = { {"sign_var>\n", "sign_var>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ChannelQualityReport_sign__var_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ChannelQualityReport_sign__var_descr_ = { "@RLCMAC_CSN1_Types.ChannelQualityReport.sign_var", &INTEGER_ber_, &ChannelQualityReport_sign__var_raw_, &INTEGER_text_, &ChannelQualityReport_sign__var_xer_, &INTEGER_json_, &ChannelQualityReport_sign__var_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ChannelQualityReport_sign__var_default_coding("RAW");
const TTCN_RAWdescriptor_t ChannelQualityReport_i__levels_raw_ = {8,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for ChannelQualityReport_i__levels
const TTCN_Typedescriptor_t ChannelQualityReport_i__levels_descr_ = { "@RLCMAC_CSN1_Types.ChannelQualityReport.i_levels", NULL, &ChannelQualityReport_i__levels_raw_, NULL, NULL, NULL, NULL, NULL, &ILevels_0_descr_, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ChannelQualityReport_i__levels_default_coding("RAW");
const TTCN_RAWdescriptor_t ChannelQualityReport_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for ChannelQualityReport
const TTCN_Typedescriptor_t ChannelQualityReport_descr_ = { "@RLCMAC_CSN1_Types.ChannelQualityReport", NULL, &ChannelQualityReport_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ChannelQualityReport_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketDlAckNack_dl__tfi_raw_ = {5,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketDlAckNack_dl__tfi_xer_ = { {"dl_tfi>\n", "dl_tfi>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketDlAckNack_dl__tfi_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketDlAckNack_dl__tfi_descr_ = { "@RLCMAC_CSN1_Types.PacketDlAckNack.dl_tfi", &INTEGER_ber_, &PacketDlAckNack_dl__tfi_raw_, &INTEGER_text_, &PacketDlAckNack_dl__tfi_xer_, &INTEGER_json_, &PacketDlAckNack_dl__tfi_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketDlAckNack_dl__tfi_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketDlAckNack_ack__nack__desc_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketDlAckNack_ack__nack__desc
const TTCN_Typedescriptor_t PacketDlAckNack_ack__nack__desc_descr_ = { "@RLCMAC_CSN1_Types.PacketDlAckNack.ack_nack_desc", NULL, &PacketDlAckNack_ack__nack__desc_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketDlAckNack_ack__nack__desc_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketDlAckNack_chreq__desc__presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketDlAckNack_chreq__desc__presence_xer_ = { {"chreq_desc_presence>\n", "chreq_desc_presence>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketDlAckNack_chreq__desc__presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketDlAckNack_chreq__desc__presence_descr_ = { "@RLCMAC_CSN1_Types.PacketDlAckNack.chreq_desc_presence", &BITSTRING_ber_, &PacketDlAckNack_chreq__desc__presence_raw_, NULL, &PacketDlAckNack_chreq__desc__presence_xer_, &BITSTRING_json_, &PacketDlAckNack_chreq__desc__presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketDlAckNack_chreq__desc__presence_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketDlAckNack_ch__qual__rep_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketDlAckNack_ch__qual__rep
const TTCN_Typedescriptor_t PacketDlAckNack_ch__qual__rep_descr_ = { "@RLCMAC_CSN1_Types.PacketDlAckNack.ch_qual_rep", NULL, &PacketDlAckNack_ch__qual__rep_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketDlAckNack_ch__qual__rep_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketDlAckNack_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketDlAckNack
const TTCN_Typedescriptor_t PacketDlAckNack_descr_ = { "@RLCMAC_CSN1_Types.PacketDlAckNack", NULL, &PacketDlAckNack_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t ChannelReqDescription_peak__tput__class_raw_ = {4,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       ChannelReqDescription_peak__tput__class_xer_ = { {"peak_tput_class>\n", "peak_tput_class>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ChannelReqDescription_peak__tput__class_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ChannelReqDescription_peak__tput__class_descr_ = { "@RLCMAC_CSN1_Types.ChannelReqDescription.peak_tput_class", &INTEGER_ber_, &ChannelReqDescription_peak__tput__class_raw_, &INTEGER_text_, &ChannelReqDescription_peak__tput__class_xer_, &INTEGER_json_, &ChannelReqDescription_peak__tput__class_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ChannelReqDescription_peak__tput__class_default_coding("RAW");
const TTCN_RAWdescriptor_t ChannelReqDescription_priority_raw_ = {2,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       ChannelReqDescription_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 ChannelReqDescription_priority_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ChannelReqDescription_priority_descr_ = { "@RLCMAC_CSN1_Types.ChannelReqDescription.priority", &INTEGER_ber_, &ChannelReqDescription_priority_raw_, &INTEGER_text_, &ChannelReqDescription_priority_xer_, &INTEGER_json_, &ChannelReqDescription_priority_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ChannelReqDescription_priority_default_coding("RAW");
const TTCN_RAWdescriptor_t RlcMode_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RlcMode
const TTCN_Typedescriptor_t RlcMode_descr_ = { "@RLCMAC_CSN1_Types.RlcMode", NULL, &RlcMode_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RlcMode_default_coding("RAW");
const TTCN_RAWdescriptor_t ChannelReqDescription_rlc__mode_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for ChannelReqDescription_rlc__mode
const TTCN_Typedescriptor_t ChannelReqDescription_rlc__mode_descr_ = { "@RLCMAC_CSN1_Types.ChannelReqDescription.rlc_mode", NULL, &ChannelReqDescription_rlc__mode_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ChannelReqDescription_rlc__mode_default_coding("RAW");
const TTCN_RAWdescriptor_t LlcPduType_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for LlcPduType
const TTCN_Typedescriptor_t LlcPduType_descr_ = { "@RLCMAC_CSN1_Types.LlcPduType", NULL, &LlcPduType_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LlcPduType_default_coding("RAW");
const TTCN_RAWdescriptor_t ChannelReqDescription_llc__pdu__type_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for ChannelReqDescription_llc__pdu__type
const TTCN_Typedescriptor_t ChannelReqDescription_llc__pdu__type_descr_ = { "@RLCMAC_CSN1_Types.ChannelReqDescription.llc_pdu_type", NULL, &ChannelReqDescription_llc__pdu__type_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ChannelReqDescription_llc__pdu__type_default_coding("RAW");
const TTCN_RAWdescriptor_t ChannelReqDescription_RlcOctetCount_raw_ = {16,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       ChannelReqDescription_RlcOctetCount_xer_ = { {"RlcOctetCount>\n", "RlcOctetCount>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ChannelReqDescription_RlcOctetCount_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ChannelReqDescription_RlcOctetCount_descr_ = { "@RLCMAC_CSN1_Types.ChannelReqDescription.RlcOctetCount", &INTEGER_ber_, &ChannelReqDescription_RlcOctetCount_raw_, &INTEGER_text_, &ChannelReqDescription_RlcOctetCount_xer_, &INTEGER_json_, &ChannelReqDescription_RlcOctetCount_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ChannelReqDescription_RlcOctetCount_default_coding("RAW");
const TTCN_RAWdescriptor_t ChannelReqDescription_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for ChannelReqDescription
const TTCN_Typedescriptor_t ChannelReqDescription_descr_ = { "@RLCMAC_CSN1_Types.ChannelReqDescription", NULL, &ChannelReqDescription_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ChannelReqDescription_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketDlAckNack_chreq__desc_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketDlAckNack_chreq__desc
const TTCN_Typedescriptor_t PacketDlAckNack_chreq__desc_descr_ = { "@RLCMAC_CSN1_Types.PacketDlAckNack.chreq_desc", NULL, &PacketDlAckNack_chreq__desc_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketDlAckNack_chreq__desc_default_coding("RAW");
UNIVERSAL_CHARSTRING PacketDlAckNack_default_coding("RAW");
const TTCN_RAWdescriptor_t EgprsBEPLinkQualityMeasurements_gmsk__presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EgprsBEPLinkQualityMeasurements_gmsk__presence_xer_ = { {"gmsk_presence>\n", "gmsk_presence>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EgprsBEPLinkQualityMeasurements_gmsk__presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EgprsBEPLinkQualityMeasurements_gmsk__presence_descr_ = { "@RLCMAC_CSN1_Types.EgprsBEPLinkQualityMeasurements.gmsk_presence", &BITSTRING_ber_, &EgprsBEPLinkQualityMeasurements_gmsk__presence_raw_, NULL, &EgprsBEPLinkQualityMeasurements_gmsk__presence_xer_, &BITSTRING_json_, &EgprsBEPLinkQualityMeasurements_gmsk__presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EgprsBEPLinkQualityMeasurements_gmsk__presence_default_coding("RAW");
const TTCN_RAWdescriptor_t EgprsBEPLinkQualityMeasurements_psk8__presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EgprsBEPLinkQualityMeasurements_psk8__presence_xer_ = { {"psk8_presence>\n", "psk8_presence>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EgprsBEPLinkQualityMeasurements_psk8__presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EgprsBEPLinkQualityMeasurements_psk8__presence_descr_ = { "@RLCMAC_CSN1_Types.EgprsBEPLinkQualityMeasurements.psk8_presence", &BITSTRING_ber_, &EgprsBEPLinkQualityMeasurements_psk8__presence_raw_, NULL, &EgprsBEPLinkQualityMeasurements_psk8__presence_xer_, &BITSTRING_json_, &EgprsBEPLinkQualityMeasurements_psk8__presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EgprsBEPLinkQualityMeasurements_psk8__presence_default_coding("RAW");
const TTCN_RAWdescriptor_t EgprsBEPLinkQualityMeasurements_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for EgprsBEPLinkQualityMeasurements
const TTCN_Typedescriptor_t EgprsBEPLinkQualityMeasurements_descr_ = { "@RLCMAC_CSN1_Types.EgprsBEPLinkQualityMeasurements", NULL, &EgprsBEPLinkQualityMeasurements_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t EgprsBEPLinkQualityMeasurements_gmsk__mean__bep_raw_ = {5,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EgprsBEPLinkQualityMeasurements_gmsk__mean__bep_xer_ = { {"gmsk_mean_bep>\n", "gmsk_mean_bep>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EgprsBEPLinkQualityMeasurements_gmsk__mean__bep_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EgprsBEPLinkQualityMeasurements_gmsk__mean__bep_descr_ = { "@RLCMAC_CSN1_Types.EgprsBEPLinkQualityMeasurements.gmsk_mean_bep", &BITSTRING_ber_, &EgprsBEPLinkQualityMeasurements_gmsk__mean__bep_raw_, NULL, &EgprsBEPLinkQualityMeasurements_gmsk__mean__bep_xer_, &BITSTRING_json_, &EgprsBEPLinkQualityMeasurements_gmsk__mean__bep_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EgprsBEPLinkQualityMeasurements_gmsk__mean__bep_default_coding("RAW");
const TTCN_RAWdescriptor_t EgprsBEPLinkQualityMeasurements_gmsk__cv__bep_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EgprsBEPLinkQualityMeasurements_gmsk__cv__bep_xer_ = { {"gmsk_cv_bep>\n", "gmsk_cv_bep>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EgprsBEPLinkQualityMeasurements_gmsk__cv__bep_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EgprsBEPLinkQualityMeasurements_gmsk__cv__bep_descr_ = { "@RLCMAC_CSN1_Types.EgprsBEPLinkQualityMeasurements.gmsk_cv_bep", &BITSTRING_ber_, &EgprsBEPLinkQualityMeasurements_gmsk__cv__bep_raw_, NULL, &EgprsBEPLinkQualityMeasurements_gmsk__cv__bep_xer_, &BITSTRING_json_, &EgprsBEPLinkQualityMeasurements_gmsk__cv__bep_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EgprsBEPLinkQualityMeasurements_gmsk__cv__bep_default_coding("RAW");
const TTCN_RAWdescriptor_t EgprsBEPLinkQualityMeasurements_psk8__mean__bep_raw_ = {5,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EgprsBEPLinkQualityMeasurements_psk8__mean__bep_xer_ = { {"psk8_mean_bep>\n", "psk8_mean_bep>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EgprsBEPLinkQualityMeasurements_psk8__mean__bep_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EgprsBEPLinkQualityMeasurements_psk8__mean__bep_descr_ = { "@RLCMAC_CSN1_Types.EgprsBEPLinkQualityMeasurements.psk8_mean_bep", &BITSTRING_ber_, &EgprsBEPLinkQualityMeasurements_psk8__mean__bep_raw_, NULL, &EgprsBEPLinkQualityMeasurements_psk8__mean__bep_xer_, &BITSTRING_json_, &EgprsBEPLinkQualityMeasurements_psk8__mean__bep_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EgprsBEPLinkQualityMeasurements_psk8__mean__bep_default_coding("RAW");
const TTCN_RAWdescriptor_t EgprsBEPLinkQualityMeasurements_psk8__cv__bep_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EgprsBEPLinkQualityMeasurements_psk8__cv__bep_xer_ = { {"psk8_cv_bep>\n", "psk8_cv_bep>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EgprsBEPLinkQualityMeasurements_psk8__cv__bep_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EgprsBEPLinkQualityMeasurements_psk8__cv__bep_descr_ = { "@RLCMAC_CSN1_Types.EgprsBEPLinkQualityMeasurements.psk8_cv_bep", &BITSTRING_ber_, &EgprsBEPLinkQualityMeasurements_psk8__cv__bep_raw_, NULL, &EgprsBEPLinkQualityMeasurements_psk8__cv__bep_xer_, &BITSTRING_json_, &EgprsBEPLinkQualityMeasurements_psk8__cv__bep_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EgprsBEPLinkQualityMeasurements_psk8__cv__bep_default_coding("RAW");
UNIVERSAL_CHARSTRING EgprsBEPLinkQualityMeasurements_default_coding("RAW");
const TTCN_RAWdescriptor_t BEPMeas_presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       BEPMeas_presence_xer_ = { {"presence>\n", "presence>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t BEPMeas_presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t BEPMeas_presence_descr_ = { "@RLCMAC_CSN1_Types.BEPMeas.presence", &BITSTRING_ber_, &BEPMeas_presence_raw_, NULL, &BEPMeas_presence_xer_, &BITSTRING_json_, &BEPMeas_presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING BEPMeas_presence_default_coding("RAW");
const TTCN_RAWdescriptor_t BEPMeas_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for BEPMeas
const TTCN_Typedescriptor_t BEPMeas_descr_ = { "@RLCMAC_CSN1_Types.BEPMeas", NULL, &BEPMeas_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t BEPMeas_is__8psk_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       BEPMeas_is__8psk_xer_ = { {"is_8psk>\n", "is_8psk>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t BEPMeas_is__8psk_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t BEPMeas_is__8psk_descr_ = { "@RLCMAC_CSN1_Types.BEPMeas.is_8psk", &BITSTRING_ber_, &BEPMeas_is__8psk_raw_, NULL, &BEPMeas_is__8psk_xer_, &BITSTRING_json_, &BEPMeas_is__8psk_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING BEPMeas_is__8psk_default_coding("RAW");
const TTCN_RAWdescriptor_t BEPMeas_bep__meas_raw_ = {4,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       BEPMeas_bep__meas_xer_ = { {"bep_meas>\n", "bep_meas>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t BEPMeas_bep__meas_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t BEPMeas_bep__meas_descr_ = { "@RLCMAC_CSN1_Types.BEPMeas.bep_meas", &INTEGER_ber_, &BEPMeas_bep__meas_raw_, &INTEGER_text_, &BEPMeas_bep__meas_xer_, &INTEGER_json_, &BEPMeas_bep__meas_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING BEPMeas_bep__meas_default_coding("RAW");
UNIVERSAL_CHARSTRING BEPMeas_default_coding("RAW");
const TTCN_RAWdescriptor_t BEPMeasLi_raw_ = {8,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for BEPMeasLi
const TTCN_Typedescriptor_t BEPMeasLi_descr_ = { "@RLCMAC_CSN1_Types.BEPMeasLi", NULL, &BEPMeasLi_raw_, NULL, NULL, NULL, NULL, NULL, &BEPMeasLi_0_descr_, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t BEPMeasLi_0_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for BEPMeasLi_0
const TTCN_Typedescriptor_t BEPMeasLi_0_descr_ = { "@RLCMAC_CSN1_Types.BEPMeasLi.<oftype>", NULL, &BEPMeasLi_0_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING BEPMeasLi_0_default_coding("RAW");
UNIVERSAL_CHARSTRING BEPMeasLi_default_coding("RAW");
const TTCN_RAWdescriptor_t EgprsTimeslotLinkQualityMeasurements_bep__measurements__presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EgprsTimeslotLinkQualityMeasurements_bep__measurements__presence_xer_ = { {"bep_measurements_presence>\n", "bep_measurements_presence>\n"}, {27, 27}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EgprsTimeslotLinkQualityMeasurements_bep__measurements__presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EgprsTimeslotLinkQualityMeasurements_bep__measurements__presence_descr_ = { "@RLCMAC_CSN1_Types.EgprsTimeslotLinkQualityMeasurements.bep_measurements_presence", &BITSTRING_ber_, &EgprsTimeslotLinkQualityMeasurements_bep__measurements__presence_raw_, NULL, &EgprsTimeslotLinkQualityMeasurements_bep__measurements__presence_xer_, &BITSTRING_json_, &EgprsTimeslotLinkQualityMeasurements_bep__measurements__presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EgprsTimeslotLinkQualityMeasurements_bep__measurements__presence_default_coding("RAW");
const TTCN_RAWdescriptor_t EgprsTimeslotLinkQualityMeasurements_i__measurements__presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EgprsTimeslotLinkQualityMeasurements_i__measurements__presence_xer_ = { {"i_measurements_presence>\n", "i_measurements_presence>\n"}, {25, 25}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EgprsTimeslotLinkQualityMeasurements_i__measurements__presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EgprsTimeslotLinkQualityMeasurements_i__measurements__presence_descr_ = { "@RLCMAC_CSN1_Types.EgprsTimeslotLinkQualityMeasurements.i_measurements_presence", &BITSTRING_ber_, &EgprsTimeslotLinkQualityMeasurements_i__measurements__presence_raw_, NULL, &EgprsTimeslotLinkQualityMeasurements_i__measurements__presence_xer_, &BITSTRING_json_, &EgprsTimeslotLinkQualityMeasurements_i__measurements__presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EgprsTimeslotLinkQualityMeasurements_i__measurements__presence_default_coding("RAW");
const TTCN_RAWdescriptor_t EgprsTimeslotLinkQualityMeasurements_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for EgprsTimeslotLinkQualityMeasurements
const TTCN_Typedescriptor_t EgprsTimeslotLinkQualityMeasurements_descr_ = { "@RLCMAC_CSN1_Types.EgprsTimeslotLinkQualityMeasurements", NULL, &EgprsTimeslotLinkQualityMeasurements_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t EgprsTimeslotLinkQualityMeasurements_bep__meas_raw_ = {8,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for EgprsTimeslotLinkQualityMeasurements_bep__meas
const TTCN_Typedescriptor_t EgprsTimeslotLinkQualityMeasurements_bep__meas_descr_ = { "@RLCMAC_CSN1_Types.EgprsTimeslotLinkQualityMeasurements.bep_meas", NULL, &EgprsTimeslotLinkQualityMeasurements_bep__meas_raw_, NULL, NULL, NULL, NULL, NULL, &BEPMeasLi_0_descr_, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EgprsTimeslotLinkQualityMeasurements_bep__meas_default_coding("RAW");
const TTCN_RAWdescriptor_t EgprsTimeslotLinkQualityMeasurements_i__meas_raw_ = {8,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for EgprsTimeslotLinkQualityMeasurements_i__meas
const TTCN_Typedescriptor_t EgprsTimeslotLinkQualityMeasurements_i__meas_descr_ = { "@RLCMAC_CSN1_Types.EgprsTimeslotLinkQualityMeasurements.i_meas", NULL, &EgprsTimeslotLinkQualityMeasurements_i__meas_raw_, NULL, NULL, NULL, NULL, NULL, &ILevels_0_descr_, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EgprsTimeslotLinkQualityMeasurements_i__meas_default_coding("RAW");
UNIVERSAL_CHARSTRING EgprsTimeslotLinkQualityMeasurements_default_coding("RAW");
const TTCN_RAWdescriptor_t EgprsChannelQualityReport_bep__link__qual__meas_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for EgprsChannelQualityReport_bep__link__qual__meas
const TTCN_Typedescriptor_t EgprsChannelQualityReport_bep__link__qual__meas_descr_ = { "@RLCMAC_CSN1_Types.EgprsChannelQualityReport.bep_link_qual_meas", NULL, &EgprsChannelQualityReport_bep__link__qual__meas_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EgprsChannelQualityReport_bep__link__qual__meas_default_coding("RAW");
const TTCN_RAWdescriptor_t EgprsChannelQualityReport_c__value_raw_ = {6,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EgprsChannelQualityReport_c__value_xer_ = { {"c_value>\n", "c_value>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EgprsChannelQualityReport_c__value_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EgprsChannelQualityReport_c__value_descr_ = { "@RLCMAC_CSN1_Types.EgprsChannelQualityReport.c_value", &INTEGER_ber_, &EgprsChannelQualityReport_c__value_raw_, &INTEGER_text_, &EgprsChannelQualityReport_c__value_xer_, &INTEGER_json_, &EgprsChannelQualityReport_c__value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EgprsChannelQualityReport_c__value_default_coding("RAW");
const TTCN_RAWdescriptor_t EgprsChannelQualityReport_ts__link__qual__meas_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for EgprsChannelQualityReport_ts__link__qual__meas
const TTCN_Typedescriptor_t EgprsChannelQualityReport_ts__link__qual__meas_descr_ = { "@RLCMAC_CSN1_Types.EgprsChannelQualityReport.ts_link_qual_meas", NULL, &EgprsChannelQualityReport_ts__link__qual__meas_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EgprsChannelQualityReport_ts__link__qual__meas_default_coding("RAW");
const TTCN_RAWdescriptor_t EgprsChannelQualityReport_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for EgprsChannelQualityReport
const TTCN_Typedescriptor_t EgprsChannelQualityReport_descr_ = { "@RLCMAC_CSN1_Types.EgprsChannelQualityReport", NULL, &EgprsChannelQualityReport_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EgprsChannelQualityReport_default_coding("RAW");
const TTCN_RAWdescriptor_t EgprsPacketDlAckNack_dl__tfi_raw_ = {5,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EgprsPacketDlAckNack_dl__tfi_xer_ = { {"dl_tfi>\n", "dl_tfi>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EgprsPacketDlAckNack_dl__tfi_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EgprsPacketDlAckNack_dl__tfi_descr_ = { "@RLCMAC_CSN1_Types.EgprsPacketDlAckNack.dl_tfi", &INTEGER_ber_, &EgprsPacketDlAckNack_dl__tfi_raw_, &INTEGER_text_, &EgprsPacketDlAckNack_dl__tfi_xer_, &INTEGER_json_, &EgprsPacketDlAckNack_dl__tfi_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EgprsPacketDlAckNack_dl__tfi_default_coding("RAW");
const TTCN_RAWdescriptor_t EgprsPacketDlAckNack_ms__oom_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EgprsPacketDlAckNack_ms__oom_xer_ = { {"ms_oom>\n", "ms_oom>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EgprsPacketDlAckNack_ms__oom_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EgprsPacketDlAckNack_ms__oom_descr_ = { "@RLCMAC_CSN1_Types.EgprsPacketDlAckNack.ms_oom", &BITSTRING_ber_, &EgprsPacketDlAckNack_ms__oom_raw_, NULL, &EgprsPacketDlAckNack_ms__oom_xer_, &BITSTRING_json_, &EgprsPacketDlAckNack_ms__oom_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EgprsPacketDlAckNack_ms__oom_default_coding("RAW");
const TTCN_RAWdescriptor_t EgprsPacketDlAckNack_egprs__ch__qual__rep__presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EgprsPacketDlAckNack_egprs__ch__qual__rep__presence_xer_ = { {"egprs_ch_qual_rep_presence>\n", "egprs_ch_qual_rep_presence>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EgprsPacketDlAckNack_egprs__ch__qual__rep__presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EgprsPacketDlAckNack_egprs__ch__qual__rep__presence_descr_ = { "@RLCMAC_CSN1_Types.EgprsPacketDlAckNack.egprs_ch_qual_rep_presence", &BITSTRING_ber_, &EgprsPacketDlAckNack_egprs__ch__qual__rep__presence_raw_, NULL, &EgprsPacketDlAckNack_egprs__ch__qual__rep__presence_xer_, &BITSTRING_json_, &EgprsPacketDlAckNack_egprs__ch__qual__rep__presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EgprsPacketDlAckNack_egprs__ch__qual__rep__presence_default_coding("RAW");
const TTCN_RAWdescriptor_t EgprsPacketDlAckNack_chreq__desc__presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EgprsPacketDlAckNack_chreq__desc__presence_xer_ = { {"chreq_desc_presence>\n", "chreq_desc_presence>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EgprsPacketDlAckNack_chreq__desc__presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EgprsPacketDlAckNack_chreq__desc__presence_descr_ = { "@RLCMAC_CSN1_Types.EgprsPacketDlAckNack.chreq_desc_presence", &BITSTRING_ber_, &EgprsPacketDlAckNack_chreq__desc__presence_raw_, NULL, &EgprsPacketDlAckNack_chreq__desc__presence_xer_, &BITSTRING_json_, &EgprsPacketDlAckNack_chreq__desc__presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EgprsPacketDlAckNack_chreq__desc__presence_default_coding("RAW");
const TTCN_RAWdescriptor_t EgprsPacketDlAckNack_pfi__presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EgprsPacketDlAckNack_pfi__presence_xer_ = { {"pfi_presence>\n", "pfi_presence>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EgprsPacketDlAckNack_pfi__presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EgprsPacketDlAckNack_pfi__presence_descr_ = { "@RLCMAC_CSN1_Types.EgprsPacketDlAckNack.pfi_presence", &BITSTRING_ber_, &EgprsPacketDlAckNack_pfi__presence_raw_, NULL, &EgprsPacketDlAckNack_pfi__presence_xer_, &BITSTRING_json_, &EgprsPacketDlAckNack_pfi__presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EgprsPacketDlAckNack_pfi__presence_default_coding("RAW");
const TTCN_RAWdescriptor_t EgprsPacketDlAckNack_epdan__presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EgprsPacketDlAckNack_epdan__presence_xer_ = { {"epdan_presence>\n", "epdan_presence>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EgprsPacketDlAckNack_epdan__presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EgprsPacketDlAckNack_epdan__presence_descr_ = { "@RLCMAC_CSN1_Types.EgprsPacketDlAckNack.epdan_presence", &BITSTRING_ber_, &EgprsPacketDlAckNack_epdan__presence_raw_, NULL, &EgprsPacketDlAckNack_epdan__presence_xer_, &BITSTRING_json_, &EgprsPacketDlAckNack_epdan__presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EgprsPacketDlAckNack_epdan__presence_default_coding("RAW");
const TTCN_RAWdescriptor_t EgprsAckNackDescriptionIE_len__present_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EgprsAckNackDescriptionIE_len__present_xer_ = { {"len_present>\n", "len_present>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EgprsAckNackDescriptionIE_len__present_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EgprsAckNackDescriptionIE_len__present_descr_ = { "@RLCMAC_CSN1_Types.EgprsAckNackDescriptionIE.len_present", &BITSTRING_ber_, &EgprsAckNackDescriptionIE_len__present_raw_, NULL, &EgprsAckNackDescriptionIE_len__present_xer_, &BITSTRING_json_, &EgprsAckNackDescriptionIE_len__present_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EgprsAckNackDescriptionIE_len__present_default_coding("RAW");
const TTCN_RAWdescriptor_t EgprsAckNackDescription_final__ack_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EgprsAckNackDescription_final__ack_xer_ = { {"final_ack>\n", "final_ack>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EgprsAckNackDescription_final__ack_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EgprsAckNackDescription_final__ack_descr_ = { "@RLCMAC_CSN1_Types.EgprsAckNackDescription.final_ack", &BITSTRING_ber_, &EgprsAckNackDescription_final__ack_raw_, NULL, &EgprsAckNackDescription_final__ack_xer_, &BITSTRING_json_, &EgprsAckNackDescription_final__ack_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EgprsAckNackDescription_final__ack_default_coding("RAW");
const TTCN_RAWdescriptor_t EgprsAckNackDescription_begin__window_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EgprsAckNackDescription_begin__window_xer_ = { {"begin_window>\n", "begin_window>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EgprsAckNackDescription_begin__window_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EgprsAckNackDescription_begin__window_descr_ = { "@RLCMAC_CSN1_Types.EgprsAckNackDescription.begin_window", &BITSTRING_ber_, &EgprsAckNackDescription_begin__window_raw_, NULL, &EgprsAckNackDescription_begin__window_xer_, &BITSTRING_json_, &EgprsAckNackDescription_begin__window_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EgprsAckNackDescription_begin__window_default_coding("RAW");
const TTCN_RAWdescriptor_t EgprsAckNackDescription_end__window_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EgprsAckNackDescription_end__window_xer_ = { {"end_window>\n", "end_window>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EgprsAckNackDescription_end__window_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EgprsAckNackDescription_end__window_descr_ = { "@RLCMAC_CSN1_Types.EgprsAckNackDescription.end_window", &BITSTRING_ber_, &EgprsAckNackDescription_end__window_raw_, NULL, &EgprsAckNackDescription_end__window_xer_, &BITSTRING_json_, &EgprsAckNackDescription_end__window_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EgprsAckNackDescription_end__window_default_coding("RAW");
const TTCN_RAWdescriptor_t EgprsAckNackDescription_starting__seq__nr_raw_ = {11,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EgprsAckNackDescription_starting__seq__nr_xer_ = { {"starting_seq_nr>\n", "starting_seq_nr>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EgprsAckNackDescription_starting__seq__nr_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EgprsAckNackDescription_starting__seq__nr_descr_ = { "@RLCMAC_CSN1_Types.EgprsAckNackDescription.starting_seq_nr", &INTEGER_ber_, &EgprsAckNackDescription_starting__seq__nr_raw_, &INTEGER_text_, &EgprsAckNackDescription_starting__seq__nr_xer_, &INTEGER_json_, &EgprsAckNackDescription_starting__seq__nr_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EgprsAckNackDescription_starting__seq__nr_default_coding("RAW");
const TTCN_RAWdescriptor_t EgprsAckNackDescription_compressed_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EgprsAckNackDescription_compressed_xer_ = { {"compressed>\n", "compressed>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EgprsAckNackDescription_compressed_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EgprsAckNackDescription_compressed_descr_ = { "@RLCMAC_CSN1_Types.EgprsAckNackDescription.compressed", &BITSTRING_ber_, &EgprsAckNackDescription_compressed_raw_, NULL, &EgprsAckNackDescription_compressed_xer_, &BITSTRING_json_, &EgprsAckNackDescription_compressed_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EgprsAckNackDescription_compressed_default_coding("RAW");
const TTCN_RAWdescriptor_t EgprsAckNackDescription_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for EgprsAckNackDescription
const TTCN_Typedescriptor_t EgprsAckNackDescription_descr_ = { "@RLCMAC_CSN1_Types.EgprsAckNackDescription", NULL, &EgprsAckNackDescription_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t UncompressedReceivedBlockBitmap_raw_ = {64,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       UncompressedReceivedBlockBitmap_xer_ = { {"UncompressedReceivedBlockBitmap>\n", "UncompressedReceivedBlockBitmap>\n"}, {33, 33}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t UncompressedReceivedBlockBitmap_descr_ = { "@RLCMAC_CSN1_Types.UncompressedReceivedBlockBitmap", &BITSTRING_ber_, &UncompressedReceivedBlockBitmap_raw_, NULL, &UncompressedReceivedBlockBitmap_xer_, &BITSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UncompressedReceivedBlockBitmap_default_coding("RAW");
const TTCN_RAWdescriptor_t EgprsAckNackDescription_urbb_raw_ = {64,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EgprsAckNackDescription_urbb_xer_ = { {"urbb>\n", "urbb>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EgprsAckNackDescription_urbb_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EgprsAckNackDescription_urbb_descr_ = { "@RLCMAC_CSN1_Types.EgprsAckNackDescription.urbb", &BITSTRING_ber_, &EgprsAckNackDescription_urbb_raw_, NULL, &EgprsAckNackDescription_urbb_xer_, &BITSTRING_json_, &EgprsAckNackDescription_urbb_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EgprsAckNackDescription_urbb_default_coding("RAW");
UNIVERSAL_CHARSTRING EgprsAckNackDescription_default_coding("RAW");
const TTCN_RAWdescriptor_t EgprsAckNackDescriptionIE_acknack__desc_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for EgprsAckNackDescriptionIE_acknack__desc
const TTCN_Typedescriptor_t EgprsAckNackDescriptionIE_acknack__desc_descr_ = { "@RLCMAC_CSN1_Types.EgprsAckNackDescriptionIE.acknack_desc", NULL, &EgprsAckNackDescriptionIE_acknack__desc_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EgprsAckNackDescriptionIE_acknack__desc_default_coding("RAW");
const TTCN_RAWdescriptor_t EgprsAckNackDescriptionIE_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for EgprsAckNackDescriptionIE
const TTCN_Typedescriptor_t EgprsAckNackDescriptionIE_descr_ = { "@RLCMAC_CSN1_Types.EgprsAckNackDescriptionIE", NULL, &EgprsAckNackDescriptionIE_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t EgprsAckNackDescriptionIE_len_raw_ = {8,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,1,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       EgprsAckNackDescriptionIE_len_xer_ = { {"len>\n", "len>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EgprsAckNackDescriptionIE_len_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EgprsAckNackDescriptionIE_len_descr_ = { "@RLCMAC_CSN1_Types.EgprsAckNackDescriptionIE.len", &INTEGER_ber_, &EgprsAckNackDescriptionIE_len_raw_, &INTEGER_text_, &EgprsAckNackDescriptionIE_len_xer_, &INTEGER_json_, &EgprsAckNackDescriptionIE_len_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EgprsAckNackDescriptionIE_len_default_coding("RAW");
UNIVERSAL_CHARSTRING EgprsAckNackDescriptionIE_default_coding("RAW");
const TTCN_RAWdescriptor_t EgprsPacketDlAckNack_ack__nack__desc__ie_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for EgprsPacketDlAckNack_ack__nack__desc__ie
const TTCN_Typedescriptor_t EgprsPacketDlAckNack_ack__nack__desc__ie_descr_ = { "@RLCMAC_CSN1_Types.EgprsPacketDlAckNack.ack_nack_desc_ie", NULL, &EgprsPacketDlAckNack_ack__nack__desc__ie_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EgprsPacketDlAckNack_ack__nack__desc__ie_default_coding("RAW");
const TTCN_RAWdescriptor_t EgprsPacketDlAckNack_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for EgprsPacketDlAckNack
const TTCN_Typedescriptor_t EgprsPacketDlAckNack_descr_ = { "@RLCMAC_CSN1_Types.EgprsPacketDlAckNack", NULL, &EgprsPacketDlAckNack_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t EgprsPacketDlAckNack_egprs__ch__qual__rep_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for EgprsPacketDlAckNack_egprs__ch__qual__rep
const TTCN_Typedescriptor_t EgprsPacketDlAckNack_egprs__ch__qual__rep_descr_ = { "@RLCMAC_CSN1_Types.EgprsPacketDlAckNack.egprs_ch_qual_rep", NULL, &EgprsPacketDlAckNack_egprs__ch__qual__rep_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EgprsPacketDlAckNack_egprs__ch__qual__rep_default_coding("RAW");
const TTCN_RAWdescriptor_t EgprsPacketDlAckNack_chreq__desc_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for EgprsPacketDlAckNack_chreq__desc
const TTCN_Typedescriptor_t EgprsPacketDlAckNack_chreq__desc_descr_ = { "@RLCMAC_CSN1_Types.EgprsPacketDlAckNack.chreq_desc", NULL, &EgprsPacketDlAckNack_chreq__desc_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EgprsPacketDlAckNack_chreq__desc_default_coding("RAW");
const TTCN_RAWdescriptor_t EgprsPacketDlAckNack_pfi_raw_ = {7,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EgprsPacketDlAckNack_pfi_xer_ = { {"pfi>\n", "pfi>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EgprsPacketDlAckNack_pfi_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EgprsPacketDlAckNack_pfi_descr_ = { "@RLCMAC_CSN1_Types.EgprsPacketDlAckNack.pfi", &BITSTRING_ber_, &EgprsPacketDlAckNack_pfi_raw_, NULL, &EgprsPacketDlAckNack_pfi_xer_, &BITSTRING_json_, &EgprsPacketDlAckNack_pfi_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EgprsPacketDlAckNack_pfi_default_coding("RAW");
UNIVERSAL_CHARSTRING EgprsPacketDlAckNack_default_coding("RAW");
const TTCN_RAWdescriptor_t CtrlAck_raw_ = {2,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for CtrlAck
const TTCN_Typedescriptor_t CtrlAck_descr_ = { "@RLCMAC_CSN1_Types.CtrlAck", NULL, &CtrlAck_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CtrlAck_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketCtrlAck_tlli_raw_ = {32,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,4,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketCtrlAck_tlli_xer_ = { {"tlli>\n", "tlli>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PacketCtrlAck_tlli_oer_ext_arr_[0] = {};
const int PacketCtrlAck_tlli_oer_p_[0] = {};
const TTCN_OERdescriptor_t PacketCtrlAck_tlli_oer_ = { -1, TRUE, 4, FALSE, 0, 0, PacketCtrlAck_tlli_oer_ext_arr_, 0, PacketCtrlAck_tlli_oer_p_};
const TTCN_Typedescriptor_t PacketCtrlAck_tlli_descr_ = { "@RLCMAC_CSN1_Types.PacketCtrlAck.tlli", &OCTETSTRING_ber_, &PacketCtrlAck_tlli_raw_, &OCTETSTRING_text_, &PacketCtrlAck_tlli_xer_, &OCTETSTRING_json_, &PacketCtrlAck_tlli_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketCtrlAck_tlli_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketCtrlAck_ctrl__ack_raw_ = {2,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketCtrlAck_ctrl__ack
const TTCN_Typedescriptor_t PacketCtrlAck_ctrl__ack_descr_ = { "@RLCMAC_CSN1_Types.PacketCtrlAck.ctrl_ack", NULL, &PacketCtrlAck_ctrl__ack_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketCtrlAck_ctrl__ack_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketCtrlAck_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketCtrlAck
const TTCN_Typedescriptor_t PacketCtrlAck_descr_ = { "@RLCMAC_CSN1_Types.PacketCtrlAck", NULL, &PacketCtrlAck_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketCtrlAck_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketUlDummy_tlli_raw_ = {32,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,4,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketUlDummy_tlli_xer_ = { {"tlli>\n", "tlli>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PacketUlDummy_tlli_oer_ext_arr_[0] = {};
const int PacketUlDummy_tlli_oer_p_[0] = {};
const TTCN_OERdescriptor_t PacketUlDummy_tlli_oer_ = { -1, TRUE, 4, FALSE, 0, 0, PacketUlDummy_tlli_oer_ext_arr_, 0, PacketUlDummy_tlli_oer_p_};
const TTCN_Typedescriptor_t PacketUlDummy_tlli_descr_ = { "@RLCMAC_CSN1_Types.PacketUlDummy.tlli", &OCTETSTRING_ber_, &PacketUlDummy_tlli_raw_, &OCTETSTRING_text_, &PacketUlDummy_tlli_xer_, &OCTETSTRING_json_, &PacketUlDummy_tlli_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketUlDummy_tlli_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketUlDummy_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketUlDummy
const TTCN_Typedescriptor_t PacketUlDummy_descr_ = { "@RLCMAC_CSN1_Types.PacketUlDummy", NULL, &PacketUlDummy_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketUlDummy_default_coding("RAW");
const TTCN_RAWdescriptor_t NCMeasurement_frequency__n_raw_ = {6,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       NCMeasurement_frequency__n_xer_ = { {"frequency_n>\n", "frequency_n>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t NCMeasurement_frequency__n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t NCMeasurement_frequency__n_descr_ = { "@RLCMAC_CSN1_Types.NCMeasurement.frequency_n", &INTEGER_ber_, &NCMeasurement_frequency__n_raw_, &INTEGER_text_, &NCMeasurement_frequency__n_xer_, &INTEGER_json_, &NCMeasurement_frequency__n_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NCMeasurement_frequency__n_default_coding("RAW");
const TTCN_RAWdescriptor_t NCMeasurement_bsic__n__presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       NCMeasurement_bsic__n__presence_xer_ = { {"bsic_n_presence>\n", "bsic_n_presence>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t NCMeasurement_bsic__n__presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t NCMeasurement_bsic__n__presence_descr_ = { "@RLCMAC_CSN1_Types.NCMeasurement.bsic_n_presence", &BITSTRING_ber_, &NCMeasurement_bsic__n__presence_raw_, NULL, &NCMeasurement_bsic__n__presence_xer_, &BITSTRING_json_, &NCMeasurement_bsic__n__presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NCMeasurement_bsic__n__presence_default_coding("RAW");
const TTCN_RAWdescriptor_t NCMeasurement_rxlev__n_raw_ = {6,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       NCMeasurement_rxlev__n_xer_ = { {"rxlev_n>\n", "rxlev_n>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t NCMeasurement_rxlev__n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t NCMeasurement_rxlev__n_descr_ = { "@RLCMAC_CSN1_Types.NCMeasurement.rxlev_n", &INTEGER_ber_, &NCMeasurement_rxlev__n_raw_, &INTEGER_text_, &NCMeasurement_rxlev__n_xer_, &INTEGER_json_, &NCMeasurement_rxlev__n_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NCMeasurement_rxlev__n_default_coding("RAW");
const TTCN_RAWdescriptor_t NCMeasurement_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for NCMeasurement
const TTCN_Typedescriptor_t NCMeasurement_descr_ = { "@RLCMAC_CSN1_Types.NCMeasurement", NULL, &NCMeasurement_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t NCMeasurement_bsic__n_raw_ = {6,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,6,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       NCMeasurement_bsic__n_xer_ = { {"bsic_n>\n", "bsic_n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t NCMeasurement_bsic__n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t NCMeasurement_bsic__n_descr_ = { "@RLCMAC_CSN1_Types.NCMeasurement.bsic_n", &BITSTRING_ber_, &NCMeasurement_bsic__n_raw_, NULL, &NCMeasurement_bsic__n_xer_, &BITSTRING_json_, &NCMeasurement_bsic__n_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NCMeasurement_bsic__n_default_coding("RAW");
UNIVERSAL_CHARSTRING NCMeasurement_default_coding("RAW");
const TTCN_RAWdescriptor_t NCMeasurementList_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for NCMeasurementList
const TTCN_Typedescriptor_t NCMeasurementList_descr_ = { "@RLCMAC_CSN1_Types.NCMeasurementList", NULL, &NCMeasurementList_raw_, NULL, NULL, NULL, NULL, NULL, &NCMeasurementList_0_descr_, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t NCMeasurementList_0_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for NCMeasurementList_0
const TTCN_Typedescriptor_t NCMeasurementList_0_descr_ = { "@RLCMAC_CSN1_Types.NCMeasurementList.<oftype>", NULL, &NCMeasurementList_0_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NCMeasurementList_0_default_coding("RAW");
UNIVERSAL_CHARSTRING NCMeasurementList_default_coding("RAW");
const TTCN_RAWdescriptor_t NCMeasurementReport_nc__mode_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       NCMeasurementReport_nc__mode_xer_ = { {"nc_mode>\n", "nc_mode>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t NCMeasurementReport_nc__mode_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t NCMeasurementReport_nc__mode_descr_ = { "@RLCMAC_CSN1_Types.NCMeasurementReport.nc_mode", &BITSTRING_ber_, &NCMeasurementReport_nc__mode_raw_, NULL, &NCMeasurementReport_nc__mode_xer_, &BITSTRING_json_, &NCMeasurementReport_nc__mode_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NCMeasurementReport_nc__mode_default_coding("RAW");
const TTCN_RAWdescriptor_t NCMeasurementReport_rxlev__serving__cell_raw_ = {6,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       NCMeasurementReport_rxlev__serving__cell_xer_ = { {"rxlev_serving_cell>\n", "rxlev_serving_cell>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t NCMeasurementReport_rxlev__serving__cell_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t NCMeasurementReport_rxlev__serving__cell_descr_ = { "@RLCMAC_CSN1_Types.NCMeasurementReport.rxlev_serving_cell", &INTEGER_ber_, &NCMeasurementReport_rxlev__serving__cell_raw_, &INTEGER_text_, &NCMeasurementReport_rxlev__serving__cell_xer_, &INTEGER_json_, &NCMeasurementReport_rxlev__serving__cell_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NCMeasurementReport_rxlev__serving__cell_default_coding("RAW");
const TTCN_RAWdescriptor_t NCMeasurementReport_zero_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       NCMeasurementReport_zero_xer_ = { {"zero>\n", "zero>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t NCMeasurementReport_zero_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t NCMeasurementReport_zero_descr_ = { "@RLCMAC_CSN1_Types.NCMeasurementReport.zero", &BITSTRING_ber_, &NCMeasurementReport_zero_raw_, NULL, &NCMeasurementReport_zero_xer_, &BITSTRING_json_, &NCMeasurementReport_zero_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NCMeasurementReport_zero_default_coding("RAW");
const TTCN_RAWdescriptor_t NCMeasurementReport_num__nc__measurements_raw_ = {3,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,-1,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       NCMeasurementReport_num__nc__measurements_xer_ = { {"num_nc_measurements>\n", "num_nc_measurements>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t NCMeasurementReport_num__nc__measurements_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t NCMeasurementReport_num__nc__measurements_descr_ = { "@RLCMAC_CSN1_Types.NCMeasurementReport.num_nc_measurements", &INTEGER_ber_, &NCMeasurementReport_num__nc__measurements_raw_, &INTEGER_text_, &NCMeasurementReport_num__nc__measurements_xer_, &INTEGER_json_, &NCMeasurementReport_num__nc__measurements_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NCMeasurementReport_num__nc__measurements_default_coding("RAW");
const TTCN_RAWdescriptor_t NCMeasurementReport_nm__measurements_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for NCMeasurementReport_nm__measurements
const TTCN_Typedescriptor_t NCMeasurementReport_nm__measurements_descr_ = { "@RLCMAC_CSN1_Types.NCMeasurementReport.nm_measurements", NULL, &NCMeasurementReport_nm__measurements_raw_, NULL, NULL, NULL, NULL, NULL, &NCMeasurementList_0_descr_, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NCMeasurementReport_nm__measurements_default_coding("RAW");
const TTCN_RAWdescriptor_t NCMeasurementReport_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for NCMeasurementReport
const TTCN_Typedescriptor_t NCMeasurementReport_descr_ = { "@RLCMAC_CSN1_Types.NCMeasurementReport", NULL, &NCMeasurementReport_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NCMeasurementReport_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketMeasReport_tlli_raw_ = {32,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,4,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketMeasReport_tlli_xer_ = { {"tlli>\n", "tlli>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PacketMeasReport_tlli_oer_ext_arr_[0] = {};
const int PacketMeasReport_tlli_oer_p_[0] = {};
const TTCN_OERdescriptor_t PacketMeasReport_tlli_oer_ = { -1, TRUE, 4, FALSE, 0, 0, PacketMeasReport_tlli_oer_ext_arr_, 0, PacketMeasReport_tlli_oer_p_};
const TTCN_Typedescriptor_t PacketMeasReport_tlli_descr_ = { "@RLCMAC_CSN1_Types.PacketMeasReport.tlli", &OCTETSTRING_ber_, &PacketMeasReport_tlli_raw_, &OCTETSTRING_text_, &PacketMeasReport_tlli_xer_, &OCTETSTRING_json_, &PacketMeasReport_tlli_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketMeasReport_tlli_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketMeasReport_psi5__change__mark__presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketMeasReport_psi5__change__mark__presence_xer_ = { {"psi5_change_mark_presence>\n", "psi5_change_mark_presence>\n"}, {27, 27}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketMeasReport_psi5__change__mark__presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketMeasReport_psi5__change__mark__presence_descr_ = { "@RLCMAC_CSN1_Types.PacketMeasReport.psi5_change_mark_presence", &BITSTRING_ber_, &PacketMeasReport_psi5__change__mark__presence_raw_, NULL, &PacketMeasReport_psi5__change__mark__presence_xer_, &BITSTRING_json_, &PacketMeasReport_psi5__change__mark__presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketMeasReport_psi5__change__mark__presence_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketMeasReport_additions__99_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketMeasReport_additions__99_xer_ = { {"additions_99>\n", "additions_99>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketMeasReport_additions__99_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketMeasReport_additions__99_descr_ = { "@RLCMAC_CSN1_Types.PacketMeasReport.additions_99", &BITSTRING_ber_, &PacketMeasReport_additions__99_raw_, NULL, &PacketMeasReport_additions__99_xer_, &BITSTRING_json_, &PacketMeasReport_additions__99_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketMeasReport_additions__99_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketMeasReport_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketMeasReport
const TTCN_Typedescriptor_t PacketMeasReport_descr_ = { "@RLCMAC_CSN1_Types.PacketMeasReport", NULL, &PacketMeasReport_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t PacketMeasReport_psi5__change__mark_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketMeasReport_psi5__change__mark_xer_ = { {"psi5_change_mark>\n", "psi5_change_mark>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketMeasReport_psi5__change__mark_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketMeasReport_psi5__change__mark_descr_ = { "@RLCMAC_CSN1_Types.PacketMeasReport.psi5_change_mark", &BITSTRING_ber_, &PacketMeasReport_psi5__change__mark_raw_, NULL, &PacketMeasReport_psi5__change__mark_xer_, &BITSTRING_json_, &PacketMeasReport_psi5__change__mark_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketMeasReport_psi5__change__mark_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketMeasReport_nc__meas__report_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketMeasReport_nc__meas__report
const TTCN_Typedescriptor_t PacketMeasReport_nc__meas__report_descr_ = { "@RLCMAC_CSN1_Types.PacketMeasReport.nc_meas_report", NULL, &PacketMeasReport_nc__meas__report_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketMeasReport_nc__meas__report_default_coding("RAW");
UNIVERSAL_CHARSTRING PacketMeasReport_default_coding("RAW");
const TTCN_RAWdescriptor_t MSRadioAccCap2_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for MSRadioAccCap2
const TTCN_Typedescriptor_t MSRadioAccCap2_descr_ = { "@RLCMAC_CSN1_Types.MSRadioAccCap2", NULL, &MSRadioAccCap2_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t MSRadioAccCap2_msRadioAccessCapabilityV_raw_ = {0,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_REVERSE,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MSRadioAccCap2_msRadioAccessCapabilityV
const TTCN_Typedescriptor_t MSRadioAccCap2_msRadioAccessCapabilityV_descr_ = { "@RLCMAC_CSN1_Types.MSRadioAccCap2.msRadioAccessCapabilityV", NULL, &MSRadioAccCap2_msRadioAccessCapabilityV_raw_, NULL, NULL, NULL, NULL, NULL, &MobileL3__GMM__SM__Types::MSRACapabilityValuesRecord_descr_, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MSRadioAccCap2_msRadioAccessCapabilityV_default_coding("RAW");
UNIVERSAL_CHARSTRING MSRadioAccCap2_default_coding("RAW");
const TTCN_RAWdescriptor_t RlcAccessType_raw_ = {2,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RlcAccessType
const TTCN_Typedescriptor_t RlcAccessType_descr_ = { "@RLCMAC_CSN1_Types.RlcAccessType", NULL, &RlcAccessType_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RlcAccessType_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketResourceReqID_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketResourceReqID
const TTCN_Typedescriptor_t PacketResourceReqID_descr_ = { "@RLCMAC_CSN1_Types.PacketResourceReqID", NULL, &PacketResourceReqID_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t PacketResourceReqID_gtfi_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketResourceReqID_gtfi
const TTCN_Typedescriptor_t PacketResourceReqID_gtfi_descr_ = { "@RLCMAC_CSN1_Types.PacketResourceReqID.gtfi", NULL, &PacketResourceReqID_gtfi_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketResourceReqID_gtfi_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketResourceReqID_tlli_raw_ = {32,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,4,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketResourceReqID_tlli_xer_ = { {"tlli>\n", "tlli>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PacketResourceReqID_tlli_oer_ext_arr_[0] = {};
const int PacketResourceReqID_tlli_oer_p_[0] = {};
const TTCN_OERdescriptor_t PacketResourceReqID_tlli_oer_ = { -1, TRUE, 4, FALSE, 0, 0, PacketResourceReqID_tlli_oer_ext_arr_, 0, PacketResourceReqID_tlli_oer_p_};
const TTCN_Typedescriptor_t PacketResourceReqID_tlli_descr_ = { "@RLCMAC_CSN1_Types.PacketResourceReqID.tlli", &OCTETSTRING_ber_, &PacketResourceReqID_tlli_raw_, &OCTETSTRING_text_, &PacketResourceReqID_tlli_xer_, &OCTETSTRING_json_, &PacketResourceReqID_tlli_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketResourceReqID_tlli_default_coding("RAW");
UNIVERSAL_CHARSTRING PacketResourceReqID_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketResourceReq_acc__type__presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketResourceReq_acc__type__presence_xer_ = { {"acc_type_presence>\n", "acc_type_presence>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketResourceReq_acc__type__presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketResourceReq_acc__type__presence_descr_ = { "@RLCMAC_CSN1_Types.PacketResourceReq.acc_type_presence", &BITSTRING_ber_, &PacketResourceReq_acc__type__presence_raw_, NULL, &PacketResourceReq_acc__type__presence_xer_, &BITSTRING_json_, &PacketResourceReq_acc__type__presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketResourceReq_acc__type__presence_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketResourceReq_id__type_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketResourceReq_id__type_xer_ = { {"id_type>\n", "id_type>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketResourceReq_id__type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketResourceReq_id__type_descr_ = { "@RLCMAC_CSN1_Types.PacketResourceReq.id_type", &BITSTRING_ber_, &PacketResourceReq_id__type_raw_, NULL, &PacketResourceReq_id__type_xer_, &BITSTRING_json_, &PacketResourceReq_id__type_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketResourceReq_id__type_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketResourceReq_id_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketResourceReq_id
const TTCN_Typedescriptor_t PacketResourceReq_id_descr_ = { "@RLCMAC_CSN1_Types.PacketResourceReq.id", NULL, &PacketResourceReq_id_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketResourceReq_id_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketResourceReq_ms__rac2__presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketResourceReq_ms__rac2__presence_xer_ = { {"ms_rac2_presence>\n", "ms_rac2_presence>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketResourceReq_ms__rac2__presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketResourceReq_ms__rac2__presence_descr_ = { "@RLCMAC_CSN1_Types.PacketResourceReq.ms_rac2_presence", &BITSTRING_ber_, &PacketResourceReq_ms__rac2__presence_raw_, NULL, &PacketResourceReq_ms__rac2__presence_xer_, &BITSTRING_json_, &PacketResourceReq_ms__rac2__presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketResourceReq_ms__rac2__presence_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketResourceReq_ch__req__desc_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketResourceReq_ch__req__desc
const TTCN_Typedescriptor_t PacketResourceReq_ch__req__desc_descr_ = { "@RLCMAC_CSN1_Types.PacketResourceReq.ch_req_desc", NULL, &PacketResourceReq_ch__req__desc_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketResourceReq_ch__req__desc_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketResourceReq_change__mark__presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketResourceReq_change__mark__presence_xer_ = { {"change_mark_presence>\n", "change_mark_presence>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketResourceReq_change__mark__presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketResourceReq_change__mark__presence_descr_ = { "@RLCMAC_CSN1_Types.PacketResourceReq.change_mark_presence", &BITSTRING_ber_, &PacketResourceReq_change__mark__presence_raw_, NULL, &PacketResourceReq_change__mark__presence_xer_, &BITSTRING_json_, &PacketResourceReq_change__mark__presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketResourceReq_change__mark__presence_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketResourceReq_C__val_raw_ = {6,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,6,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketResourceReq_C__val_xer_ = { {"C_val>\n", "C_val>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketResourceReq_C__val_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketResourceReq_C__val_descr_ = { "@RLCMAC_CSN1_Types.PacketResourceReq.C_val", &BITSTRING_ber_, &PacketResourceReq_C__val_raw_, NULL, &PacketResourceReq_C__val_xer_, &BITSTRING_json_, &PacketResourceReq_C__val_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketResourceReq_C__val_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketResourceReq_sign__var__presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketResourceReq_sign__var__presence_xer_ = { {"sign_var_presence>\n", "sign_var_presence>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketResourceReq_sign__var__presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketResourceReq_sign__var__presence_descr_ = { "@RLCMAC_CSN1_Types.PacketResourceReq.sign_var_presence", &BITSTRING_ber_, &PacketResourceReq_sign__var__presence_raw_, NULL, &PacketResourceReq_sign__var__presence_xer_, &BITSTRING_json_, &PacketResourceReq_sign__var__presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketResourceReq_sign__var__presence_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketResourceReq_I__levels_raw_ = {8,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketResourceReq_I__levels
const TTCN_Typedescriptor_t PacketResourceReq_I__levels_descr_ = { "@RLCMAC_CSN1_Types.PacketResourceReq.I_levels", NULL, &PacketResourceReq_I__levels_raw_, NULL, NULL, NULL, NULL, NULL, &ILevels_0_descr_, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketResourceReq_I__levels_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketResourceReq_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketResourceReq
const TTCN_Typedescriptor_t PacketResourceReq_descr_ = { "@RLCMAC_CSN1_Types.PacketResourceReq", NULL, &PacketResourceReq_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t PacketResourceReq_acc__type_raw_ = {2,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketResourceReq_acc__type
const TTCN_Typedescriptor_t PacketResourceReq_acc__type_descr_ = { "@RLCMAC_CSN1_Types.PacketResourceReq.acc_type", NULL, &PacketResourceReq_acc__type_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketResourceReq_acc__type_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketResourceReq_ms__rac2_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketResourceReq_ms__rac2
const TTCN_Typedescriptor_t PacketResourceReq_ms__rac2_descr_ = { "@RLCMAC_CSN1_Types.PacketResourceReq.ms_rac2", NULL, &PacketResourceReq_ms__rac2_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketResourceReq_ms__rac2_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketResourceReq_change__mark_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketResourceReq_change__mark_xer_ = { {"change_mark>\n", "change_mark>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketResourceReq_change__mark_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketResourceReq_change__mark_descr_ = { "@RLCMAC_CSN1_Types.PacketResourceReq.change_mark", &BITSTRING_ber_, &PacketResourceReq_change__mark_raw_, NULL, &PacketResourceReq_change__mark_xer_, &BITSTRING_json_, &PacketResourceReq_change__mark_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketResourceReq_change__mark_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketResourceReq_sign__var_raw_ = {6,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,6,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketResourceReq_sign__var_xer_ = { {"sign_var>\n", "sign_var>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketResourceReq_sign__var_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketResourceReq_sign__var_descr_ = { "@RLCMAC_CSN1_Types.PacketResourceReq.sign_var", &BITSTRING_ber_, &PacketResourceReq_sign__var_raw_, NULL, &PacketResourceReq_sign__var_xer_, &BITSTRING_json_, &PacketResourceReq_sign__var_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketResourceReq_sign__var_default_coding("RAW");
UNIVERSAL_CHARSTRING PacketResourceReq_default_coding("RAW");
const TTCN_RAWdescriptor_t UtranTargetCellFdd_arfcn_raw_ = {14,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       UtranTargetCellFdd_arfcn_xer_ = { {"arfcn>\n", "arfcn>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t UtranTargetCellFdd_arfcn_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t UtranTargetCellFdd_arfcn_descr_ = { "@RLCMAC_CSN1_Types.UtranTargetCellFdd.arfcn", &INTEGER_ber_, &UtranTargetCellFdd_arfcn_raw_, &INTEGER_text_, &UtranTargetCellFdd_arfcn_xer_, &INTEGER_json_, &UtranTargetCellFdd_arfcn_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UtranTargetCellFdd_arfcn_default_coding("RAW");
const TTCN_RAWdescriptor_t UtranTargetCellFdd_bandwidth__presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       UtranTargetCellFdd_bandwidth__presence_xer_ = { {"bandwidth_presence>\n", "bandwidth_presence>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t UtranTargetCellFdd_bandwidth__presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t UtranTargetCellFdd_bandwidth__presence_descr_ = { "@RLCMAC_CSN1_Types.UtranTargetCellFdd.bandwidth_presence", &BITSTRING_ber_, &UtranTargetCellFdd_bandwidth__presence_raw_, NULL, &UtranTargetCellFdd_bandwidth__presence_xer_, &BITSTRING_json_, &UtranTargetCellFdd_bandwidth__presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UtranTargetCellFdd_bandwidth__presence_default_coding("RAW");
const TTCN_RAWdescriptor_t UtranTargetCellFdd_scrambling__code_raw_ = {10,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       UtranTargetCellFdd_scrambling__code_xer_ = { {"scrambling_code>\n", "scrambling_code>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t UtranTargetCellFdd_scrambling__code_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t UtranTargetCellFdd_scrambling__code_descr_ = { "@RLCMAC_CSN1_Types.UtranTargetCellFdd.scrambling_code", &INTEGER_ber_, &UtranTargetCellFdd_scrambling__code_raw_, &INTEGER_text_, &UtranTargetCellFdd_scrambling__code_xer_, &INTEGER_json_, &UtranTargetCellFdd_scrambling__code_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UtranTargetCellFdd_scrambling__code_default_coding("RAW");
const TTCN_RAWdescriptor_t UtranTargetCellFdd_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for UtranTargetCellFdd
const TTCN_Typedescriptor_t UtranTargetCellFdd_descr_ = { "@RLCMAC_CSN1_Types.UtranTargetCellFdd", NULL, &UtranTargetCellFdd_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t UtranTargetCellFdd_bandwidth_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       UtranTargetCellFdd_bandwidth_xer_ = { {"bandwidth>\n", "bandwidth>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t UtranTargetCellFdd_bandwidth_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t UtranTargetCellFdd_bandwidth_descr_ = { "@RLCMAC_CSN1_Types.UtranTargetCellFdd.bandwidth", &INTEGER_ber_, &UtranTargetCellFdd_bandwidth_raw_, &INTEGER_text_, &UtranTargetCellFdd_bandwidth_xer_, &INTEGER_json_, &UtranTargetCellFdd_bandwidth_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UtranTargetCellFdd_bandwidth_default_coding("RAW");
UNIVERSAL_CHARSTRING UtranTargetCellFdd_default_coding("RAW");
const TTCN_RAWdescriptor_t UtranTargetCellTdd_arfcn_raw_ = {14,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       UtranTargetCellTdd_arfcn_xer_ = { {"arfcn>\n", "arfcn>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t UtranTargetCellTdd_arfcn_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t UtranTargetCellTdd_arfcn_descr_ = { "@RLCMAC_CSN1_Types.UtranTargetCellTdd.arfcn", &INTEGER_ber_, &UtranTargetCellTdd_arfcn_raw_, &INTEGER_text_, &UtranTargetCellTdd_arfcn_xer_, &INTEGER_json_, &UtranTargetCellTdd_arfcn_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UtranTargetCellTdd_arfcn_default_coding("RAW");
const TTCN_RAWdescriptor_t UtranTargetCellTdd_bandwidth__presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       UtranTargetCellTdd_bandwidth__presence_xer_ = { {"bandwidth_presence>\n", "bandwidth_presence>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t UtranTargetCellTdd_bandwidth__presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t UtranTargetCellTdd_bandwidth__presence_descr_ = { "@RLCMAC_CSN1_Types.UtranTargetCellTdd.bandwidth_presence", &BITSTRING_ber_, &UtranTargetCellTdd_bandwidth__presence_raw_, NULL, &UtranTargetCellTdd_bandwidth__presence_xer_, &BITSTRING_json_, &UtranTargetCellTdd_bandwidth__presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UtranTargetCellTdd_bandwidth__presence_default_coding("RAW");
const TTCN_RAWdescriptor_t UtranTargetCellTdd_cell__parameter_raw_ = {7,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       UtranTargetCellTdd_cell__parameter_xer_ = { {"cell_parameter>\n", "cell_parameter>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t UtranTargetCellTdd_cell__parameter_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t UtranTargetCellTdd_cell__parameter_descr_ = { "@RLCMAC_CSN1_Types.UtranTargetCellTdd.cell_parameter", &INTEGER_ber_, &UtranTargetCellTdd_cell__parameter_raw_, &INTEGER_text_, &UtranTargetCellTdd_cell__parameter_xer_, &INTEGER_json_, &UtranTargetCellTdd_cell__parameter_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UtranTargetCellTdd_cell__parameter_default_coding("RAW");
const TTCN_RAWdescriptor_t UtranTargetCellTdd_sync__case_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       UtranTargetCellTdd_sync__case_xer_ = { {"sync_case>\n", "sync_case>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t UtranTargetCellTdd_sync__case_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t UtranTargetCellTdd_sync__case_descr_ = { "@RLCMAC_CSN1_Types.UtranTargetCellTdd.sync_case", &BITSTRING_ber_, &UtranTargetCellTdd_sync__case_raw_, NULL, &UtranTargetCellTdd_sync__case_xer_, &BITSTRING_json_, &UtranTargetCellTdd_sync__case_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UtranTargetCellTdd_sync__case_default_coding("RAW");
const TTCN_RAWdescriptor_t UtranTargetCellTdd_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for UtranTargetCellTdd
const TTCN_Typedescriptor_t UtranTargetCellTdd_descr_ = { "@RLCMAC_CSN1_Types.UtranTargetCellTdd", NULL, &UtranTargetCellTdd_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t UtranTargetCellTdd_bandwidth_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       UtranTargetCellTdd_bandwidth_xer_ = { {"bandwidth>\n", "bandwidth>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t UtranTargetCellTdd_bandwidth_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t UtranTargetCellTdd_bandwidth_descr_ = { "@RLCMAC_CSN1_Types.UtranTargetCellTdd.bandwidth", &INTEGER_ber_, &UtranTargetCellTdd_bandwidth_raw_, &INTEGER_text_, &UtranTargetCellTdd_bandwidth_xer_, &INTEGER_json_, &UtranTargetCellTdd_bandwidth_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UtranTargetCellTdd_bandwidth_default_coding("RAW");
UNIVERSAL_CHARSTRING UtranTargetCellTdd_default_coding("RAW");
const TTCN_RAWdescriptor_t UtranTargetCell_fdd__presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       UtranTargetCell_fdd__presence_xer_ = { {"fdd_presence>\n", "fdd_presence>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t UtranTargetCell_fdd__presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t UtranTargetCell_fdd__presence_descr_ = { "@RLCMAC_CSN1_Types.UtranTargetCell.fdd_presence", &BITSTRING_ber_, &UtranTargetCell_fdd__presence_raw_, NULL, &UtranTargetCell_fdd__presence_xer_, &BITSTRING_json_, &UtranTargetCell_fdd__presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UtranTargetCell_fdd__presence_default_coding("RAW");
const TTCN_RAWdescriptor_t UtranTargetCell_tdd__presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       UtranTargetCell_tdd__presence_xer_ = { {"tdd_presence>\n", "tdd_presence>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t UtranTargetCell_tdd__presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t UtranTargetCell_tdd__presence_descr_ = { "@RLCMAC_CSN1_Types.UtranTargetCell.tdd_presence", &BITSTRING_ber_, &UtranTargetCell_tdd__presence_raw_, NULL, &UtranTargetCell_tdd__presence_xer_, &BITSTRING_json_, &UtranTargetCell_tdd__presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UtranTargetCell_tdd__presence_default_coding("RAW");
const TTCN_RAWdescriptor_t UtranTargetCell_reporting__quantity_raw_ = {6,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       UtranTargetCell_reporting__quantity_xer_ = { {"reporting_quantity>\n", "reporting_quantity>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t UtranTargetCell_reporting__quantity_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t UtranTargetCell_reporting__quantity_descr_ = { "@RLCMAC_CSN1_Types.UtranTargetCell.reporting_quantity", &INTEGER_ber_, &UtranTargetCell_reporting__quantity_raw_, &INTEGER_text_, &UtranTargetCell_reporting__quantity_xer_, &INTEGER_json_, &UtranTargetCell_reporting__quantity_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UtranTargetCell_reporting__quantity_default_coding("RAW");
const TTCN_RAWdescriptor_t UtranTargetCell_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for UtranTargetCell
const TTCN_Typedescriptor_t UtranTargetCell_descr_ = { "@RLCMAC_CSN1_Types.UtranTargetCell", NULL, &UtranTargetCell_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t UtranTargetCell_fdd_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for UtranTargetCell_fdd
const TTCN_Typedescriptor_t UtranTargetCell_fdd_descr_ = { "@RLCMAC_CSN1_Types.UtranTargetCell.fdd", NULL, &UtranTargetCell_fdd_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UtranTargetCell_fdd_default_coding("RAW");
const TTCN_RAWdescriptor_t UtranTargetCell_tdd_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for UtranTargetCell_tdd
const TTCN_Typedescriptor_t UtranTargetCell_tdd_descr_ = { "@RLCMAC_CSN1_Types.UtranTargetCell.tdd", NULL, &UtranTargetCell_tdd_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UtranTargetCell_tdd_default_coding("RAW");
UNIVERSAL_CHARSTRING UtranTargetCell_default_coding("RAW");
const TTCN_RAWdescriptor_t EutranTargetCell_earfcn_raw_ = {16,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EutranTargetCell_earfcn_xer_ = { {"earfcn>\n", "earfcn>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EutranTargetCell_earfcn_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EutranTargetCell_earfcn_descr_ = { "@RLCMAC_CSN1_Types.EutranTargetCell.earfcn", &INTEGER_ber_, &EutranTargetCell_earfcn_raw_, &INTEGER_text_, &EutranTargetCell_earfcn_xer_, &INTEGER_json_, &EutranTargetCell_earfcn_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EutranTargetCell_earfcn_default_coding("RAW");
const TTCN_RAWdescriptor_t EutranTargetCell_meas__bandwidth__presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EutranTargetCell_meas__bandwidth__presence_xer_ = { {"meas_bandwidth_presence>\n", "meas_bandwidth_presence>\n"}, {25, 25}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EutranTargetCell_meas__bandwidth__presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EutranTargetCell_meas__bandwidth__presence_descr_ = { "@RLCMAC_CSN1_Types.EutranTargetCell.meas_bandwidth_presence", &BITSTRING_ber_, &EutranTargetCell_meas__bandwidth__presence_raw_, NULL, &EutranTargetCell_meas__bandwidth__presence_xer_, &BITSTRING_json_, &EutranTargetCell_meas__bandwidth__presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EutranTargetCell_meas__bandwidth__presence_default_coding("RAW");
const TTCN_RAWdescriptor_t EutranTargetCell_phys__layer__cell__id_raw_ = {9,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EutranTargetCell_phys__layer__cell__id_xer_ = { {"phys_layer_cell_id>\n", "phys_layer_cell_id>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EutranTargetCell_phys__layer__cell__id_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EutranTargetCell_phys__layer__cell__id_descr_ = { "@RLCMAC_CSN1_Types.EutranTargetCell.phys_layer_cell_id", &INTEGER_ber_, &EutranTargetCell_phys__layer__cell__id_raw_, &INTEGER_text_, &EutranTargetCell_phys__layer__cell__id_xer_, &INTEGER_json_, &EutranTargetCell_phys__layer__cell__id_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EutranTargetCell_phys__layer__cell__id_default_coding("RAW");
const TTCN_RAWdescriptor_t EutranTargetCell_reporting__quantity_raw_ = {6,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EutranTargetCell_reporting__quantity_xer_ = { {"reporting_quantity>\n", "reporting_quantity>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EutranTargetCell_reporting__quantity_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EutranTargetCell_reporting__quantity_descr_ = { "@RLCMAC_CSN1_Types.EutranTargetCell.reporting_quantity", &INTEGER_ber_, &EutranTargetCell_reporting__quantity_raw_, &INTEGER_text_, &EutranTargetCell_reporting__quantity_xer_, &INTEGER_json_, &EutranTargetCell_reporting__quantity_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EutranTargetCell_reporting__quantity_default_coding("RAW");
const TTCN_RAWdescriptor_t EutranTargetCell_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for EutranTargetCell
const TTCN_Typedescriptor_t EutranTargetCell_descr_ = { "@RLCMAC_CSN1_Types.EutranTargetCell", NULL, &EutranTargetCell_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t EutranTargetCell_meas__bandwidth_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EutranTargetCell_meas__bandwidth_xer_ = { {"meas_bandwidth>\n", "meas_bandwidth>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EutranTargetCell_meas__bandwidth_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EutranTargetCell_meas__bandwidth_descr_ = { "@RLCMAC_CSN1_Types.EutranTargetCell.meas_bandwidth", &INTEGER_ber_, &EutranTargetCell_meas__bandwidth_raw_, &INTEGER_text_, &EutranTargetCell_meas__bandwidth_xer_, &INTEGER_json_, &EutranTargetCell_meas__bandwidth_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EutranTargetCell_meas__bandwidth_default_coding("RAW");
UNIVERSAL_CHARSTRING EutranTargetCell_default_coding("RAW");
const TTCN_RAWdescriptor_t UtranReportingQuantityList_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for UtranReportingQuantityList
const TTCN_Typedescriptor_t UtranReportingQuantityList_descr_ = { "@RLCMAC_CSN1_Types.UtranReportingQuantityList", NULL, &UtranReportingQuantityList_raw_, NULL, NULL, NULL, NULL, NULL, &UtranReportingQuantityList_0_descr_, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t UtranCCNMeasReportItem_cell__list__index_raw_ = {7,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       UtranCCNMeasReportItem_cell__list__index_xer_ = { {"cell_list_index>\n", "cell_list_index>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t UtranCCNMeasReportItem_cell__list__index_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t UtranCCNMeasReportItem_cell__list__index_descr_ = { "@RLCMAC_CSN1_Types.UtranCCNMeasReportItem.cell_list_index", &INTEGER_ber_, &UtranCCNMeasReportItem_cell__list__index_raw_, &INTEGER_text_, &UtranCCNMeasReportItem_cell__list__index_xer_, &INTEGER_json_, &UtranCCNMeasReportItem_cell__list__index_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UtranCCNMeasReportItem_cell__list__index_default_coding("RAW");
const TTCN_RAWdescriptor_t UtranCCNMeasReportItem_reporting__quantity_raw_ = {6,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       UtranCCNMeasReportItem_reporting__quantity_xer_ = { {"reporting_quantity>\n", "reporting_quantity>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t UtranCCNMeasReportItem_reporting__quantity_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t UtranCCNMeasReportItem_reporting__quantity_descr_ = { "@RLCMAC_CSN1_Types.UtranCCNMeasReportItem.reporting_quantity", &INTEGER_ber_, &UtranCCNMeasReportItem_reporting__quantity_raw_, &INTEGER_text_, &UtranCCNMeasReportItem_reporting__quantity_xer_, &INTEGER_json_, &UtranCCNMeasReportItem_reporting__quantity_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UtranCCNMeasReportItem_reporting__quantity_default_coding("RAW");
const TTCN_RAWdescriptor_t UtranCCNMeasReportItem_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for UtranCCNMeasReportItem
const TTCN_Typedescriptor_t UtranCCNMeasReportItem_descr_ = { "@RLCMAC_CSN1_Types.UtranCCNMeasReportItem", NULL, &UtranCCNMeasReportItem_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UtranCCNMeasReportItem_default_coding("RAW");
const TTCN_RAWdescriptor_t UtranReportingQuantityList_0_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for UtranReportingQuantityList_0
const TTCN_Typedescriptor_t UtranReportingQuantityList_0_descr_ = { "@RLCMAC_CSN1_Types.UtranReportingQuantityList.<oftype>", NULL, &UtranReportingQuantityList_0_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UtranReportingQuantityList_0_default_coding("RAW");
UNIVERSAL_CHARSTRING UtranReportingQuantityList_default_coding("RAW");
const TTCN_RAWdescriptor_t UtranCCNMeasReport_n__3g_raw_ = {3,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,-1,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       UtranCCNMeasReport_n__3g_xer_ = { {"n_3g>\n", "n_3g>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t UtranCCNMeasReport_n__3g_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t UtranCCNMeasReport_n__3g_descr_ = { "@RLCMAC_CSN1_Types.UtranCCNMeasReport.n_3g", &INTEGER_ber_, &UtranCCNMeasReport_n__3g_raw_, &INTEGER_text_, &UtranCCNMeasReport_n__3g_xer_, &INTEGER_json_, &UtranCCNMeasReport_n__3g_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UtranCCNMeasReport_n__3g_default_coding("RAW");
const TTCN_RAWdescriptor_t UtranCCNMeasReport_cells_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for UtranCCNMeasReport_cells
const TTCN_Typedescriptor_t UtranCCNMeasReport_cells_descr_ = { "@RLCMAC_CSN1_Types.UtranCCNMeasReport.cells", NULL, &UtranCCNMeasReport_cells_raw_, NULL, NULL, NULL, NULL, NULL, &UtranReportingQuantityList_0_descr_, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UtranCCNMeasReport_cells_default_coding("RAW");
const TTCN_RAWdescriptor_t UtranCCNMeasReport_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for UtranCCNMeasReport
const TTCN_Typedescriptor_t UtranCCNMeasReport_descr_ = { "@RLCMAC_CSN1_Types.UtranCCNMeasReport", NULL, &UtranCCNMeasReport_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING UtranCCNMeasReport_default_coding("RAW");
const TTCN_RAWdescriptor_t EutranReportingQuantityList_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for EutranReportingQuantityList
const TTCN_Typedescriptor_t EutranReportingQuantityList_descr_ = { "@RLCMAC_CSN1_Types.EutranReportingQuantityList", NULL, &EutranReportingQuantityList_raw_, NULL, NULL, NULL, NULL, NULL, &EutranReportingQuantityList_0_descr_, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t EutranCCNMeasReportItem_frequency__list__index_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EutranCCNMeasReportItem_frequency__list__index_xer_ = { {"frequency_list_index>\n", "frequency_list_index>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EutranCCNMeasReportItem_frequency__list__index_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EutranCCNMeasReportItem_frequency__list__index_descr_ = { "@RLCMAC_CSN1_Types.EutranCCNMeasReportItem.frequency_list_index", &INTEGER_ber_, &EutranCCNMeasReportItem_frequency__list__index_raw_, &INTEGER_text_, &EutranCCNMeasReportItem_frequency__list__index_xer_, &INTEGER_json_, &EutranCCNMeasReportItem_frequency__list__index_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EutranCCNMeasReportItem_frequency__list__index_default_coding("RAW");
const TTCN_RAWdescriptor_t EutranCCNMeasReportItem_cell__identity_raw_ = {9,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EutranCCNMeasReportItem_cell__identity_xer_ = { {"cell_identity>\n", "cell_identity>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EutranCCNMeasReportItem_cell__identity_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EutranCCNMeasReportItem_cell__identity_descr_ = { "@RLCMAC_CSN1_Types.EutranCCNMeasReportItem.cell_identity", &INTEGER_ber_, &EutranCCNMeasReportItem_cell__identity_raw_, &INTEGER_text_, &EutranCCNMeasReportItem_cell__identity_xer_, &INTEGER_json_, &EutranCCNMeasReportItem_cell__identity_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EutranCCNMeasReportItem_cell__identity_default_coding("RAW");
const TTCN_RAWdescriptor_t EutranCCNMeasReportItem_reporting__quantity_raw_ = {6,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EutranCCNMeasReportItem_reporting__quantity_xer_ = { {"reporting_quantity>\n", "reporting_quantity>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EutranCCNMeasReportItem_reporting__quantity_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EutranCCNMeasReportItem_reporting__quantity_descr_ = { "@RLCMAC_CSN1_Types.EutranCCNMeasReportItem.reporting_quantity", &INTEGER_ber_, &EutranCCNMeasReportItem_reporting__quantity_raw_, &INTEGER_text_, &EutranCCNMeasReportItem_reporting__quantity_xer_, &INTEGER_json_, &EutranCCNMeasReportItem_reporting__quantity_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EutranCCNMeasReportItem_reporting__quantity_default_coding("RAW");
const TTCN_RAWdescriptor_t EutranCCNMeasReportItem_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for EutranCCNMeasReportItem
const TTCN_Typedescriptor_t EutranCCNMeasReportItem_descr_ = { "@RLCMAC_CSN1_Types.EutranCCNMeasReportItem", NULL, &EutranCCNMeasReportItem_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EutranCCNMeasReportItem_default_coding("RAW");
const TTCN_RAWdescriptor_t EutranReportingQuantityList_0_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for EutranReportingQuantityList_0
const TTCN_Typedescriptor_t EutranReportingQuantityList_0_descr_ = { "@RLCMAC_CSN1_Types.EutranReportingQuantityList.<oftype>", NULL, &EutranReportingQuantityList_0_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EutranReportingQuantityList_0_default_coding("RAW");
UNIVERSAL_CHARSTRING EutranReportingQuantityList_default_coding("RAW");
const TTCN_RAWdescriptor_t EutranCCNMeasReport_utran__ba__used_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EutranCCNMeasReport_utran__ba__used_xer_ = { {"utran_ba_used>\n", "utran_ba_used>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EutranCCNMeasReport_utran__ba__used_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EutranCCNMeasReport_utran__ba__used_descr_ = { "@RLCMAC_CSN1_Types.EutranCCNMeasReport.utran_ba_used", &INTEGER_ber_, &EutranCCNMeasReport_utran__ba__used_raw_, &INTEGER_text_, &EutranCCNMeasReport_utran__ba__used_xer_, &INTEGER_json_, &EutranCCNMeasReport_utran__ba__used_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EutranCCNMeasReport_utran__ba__used_default_coding("RAW");
const TTCN_RAWdescriptor_t EutranCCNMeasReport_n__eutran_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,-1,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       EutranCCNMeasReport_n__eutran_xer_ = { {"n_eutran>\n", "n_eutran>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EutranCCNMeasReport_n__eutran_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EutranCCNMeasReport_n__eutran_descr_ = { "@RLCMAC_CSN1_Types.EutranCCNMeasReport.n_eutran", &INTEGER_ber_, &EutranCCNMeasReport_n__eutran_raw_, &INTEGER_text_, &EutranCCNMeasReport_n__eutran_xer_, &INTEGER_json_, &EutranCCNMeasReport_n__eutran_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EutranCCNMeasReport_n__eutran_default_coding("RAW");
const TTCN_RAWdescriptor_t EutranCCNMeasReport_cells_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for EutranCCNMeasReport_cells
const TTCN_Typedescriptor_t EutranCCNMeasReport_cells_descr_ = { "@RLCMAC_CSN1_Types.EutranCCNMeasReport.cells", NULL, &EutranCCNMeasReport_cells_raw_, NULL, NULL, NULL, NULL, NULL, &EutranReportingQuantityList_0_descr_, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EutranCCNMeasReport_cells_default_coding("RAW");
const TTCN_RAWdescriptor_t EutranCCNMeasReport_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for EutranCCNMeasReport
const TTCN_Typedescriptor_t EutranCCNMeasReport_descr_ = { "@RLCMAC_CSN1_Types.EutranCCNMeasReport", NULL, &EutranCCNMeasReport_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EutranCCNMeasReport_default_coding("RAW");
const TTCN_RAWdescriptor_t NCMeasurementItem_freq_raw_ = {6,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       NCMeasurementItem_freq_xer_ = { {"freq>\n", "freq>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t NCMeasurementItem_freq_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t NCMeasurementItem_freq_descr_ = { "@RLCMAC_CSN1_Types.NCMeasurementItem.freq", &INTEGER_ber_, &NCMeasurementItem_freq_raw_, &INTEGER_text_, &NCMeasurementItem_freq_xer_, &INTEGER_json_, &NCMeasurementItem_freq_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NCMeasurementItem_freq_default_coding("RAW");
const TTCN_RAWdescriptor_t NCMeasurementItem_bsic__presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       NCMeasurementItem_bsic__presence_xer_ = { {"bsic_presence>\n", "bsic_presence>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t NCMeasurementItem_bsic__presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t NCMeasurementItem_bsic__presence_descr_ = { "@RLCMAC_CSN1_Types.NCMeasurementItem.bsic_presence", &BITSTRING_ber_, &NCMeasurementItem_bsic__presence_raw_, NULL, &NCMeasurementItem_bsic__presence_xer_, &BITSTRING_json_, &NCMeasurementItem_bsic__presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NCMeasurementItem_bsic__presence_default_coding("RAW");
const TTCN_RAWdescriptor_t NCMeasurementItem_rxlev_raw_ = {6,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       NCMeasurementItem_rxlev_xer_ = { {"rxlev>\n", "rxlev>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t NCMeasurementItem_rxlev_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t NCMeasurementItem_rxlev_descr_ = { "@RLCMAC_CSN1_Types.NCMeasurementItem.rxlev", &INTEGER_ber_, &NCMeasurementItem_rxlev_raw_, &INTEGER_text_, &NCMeasurementItem_rxlev_xer_, &INTEGER_json_, &NCMeasurementItem_rxlev_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NCMeasurementItem_rxlev_default_coding("RAW");
const TTCN_RAWdescriptor_t NCMeasurementItem_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for NCMeasurementItem
const TTCN_Typedescriptor_t NCMeasurementItem_descr_ = { "@RLCMAC_CSN1_Types.NCMeasurementItem", NULL, &NCMeasurementItem_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t NCMeasurementItem_bsic_raw_ = {6,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       NCMeasurementItem_bsic_xer_ = { {"bsic>\n", "bsic>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t NCMeasurementItem_bsic_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t NCMeasurementItem_bsic_descr_ = { "@RLCMAC_CSN1_Types.NCMeasurementItem.bsic", &INTEGER_ber_, &NCMeasurementItem_bsic_raw_, &INTEGER_text_, &NCMeasurementItem_bsic_xer_, &INTEGER_json_, &NCMeasurementItem_bsic_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NCMeasurementItem_bsic_default_coding("RAW");
UNIVERSAL_CHARSTRING NCMeasurementItem_default_coding("RAW");
const TTCN_RAWdescriptor_t NCMeasurements_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for NCMeasurements
const TTCN_Typedescriptor_t NCMeasurements_descr_ = { "@RLCMAC_CSN1_Types.NCMeasurements", NULL, &NCMeasurements_raw_, NULL, NULL, NULL, NULL, NULL, &NCMeasurements_0_descr_, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t NCMeasurements_0_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for NCMeasurements_0
const TTCN_Typedescriptor_t NCMeasurements_0_descr_ = { "@RLCMAC_CSN1_Types.NCMeasurements.<oftype>", NULL, &NCMeasurements_0_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NCMeasurements_0_default_coding("RAW");
UNIVERSAL_CHARSTRING NCMeasurements_default_coding("RAW");
const TTCN_RAWdescriptor_t CCNMeasReport_rxlev__servig__cell_raw_ = {6,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       CCNMeasReport_rxlev__servig__cell_xer_ = { {"rxlev_servig_cell>\n", "rxlev_servig_cell>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t CCNMeasReport_rxlev__servig__cell_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t CCNMeasReport_rxlev__servig__cell_descr_ = { "@RLCMAC_CSN1_Types.CCNMeasReport.rxlev_servig_cell", &INTEGER_ber_, &CCNMeasReport_rxlev__servig__cell_raw_, &INTEGER_text_, &CCNMeasReport_rxlev__servig__cell_xer_, &INTEGER_json_, &CCNMeasReport_rxlev__servig__cell_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CCNMeasReport_rxlev__servig__cell_default_coding("RAW");
const TTCN_RAWdescriptor_t CCNMeasReport_zero_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       CCNMeasReport_zero_xer_ = { {"zero>\n", "zero>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t CCNMeasReport_zero_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t CCNMeasReport_zero_descr_ = { "@RLCMAC_CSN1_Types.CCNMeasReport.zero", &BITSTRING_ber_, &CCNMeasReport_zero_raw_, NULL, &CCNMeasReport_zero_xer_, &BITSTRING_json_, &CCNMeasReport_zero_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CCNMeasReport_zero_default_coding("RAW");
const TTCN_RAWdescriptor_t CCNMeasReport_num__meas_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       CCNMeasReport_num__meas_xer_ = { {"num_meas>\n", "num_meas>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t CCNMeasReport_num__meas_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t CCNMeasReport_num__meas_descr_ = { "@RLCMAC_CSN1_Types.CCNMeasReport.num_meas", &INTEGER_ber_, &CCNMeasReport_num__meas_raw_, &INTEGER_text_, &CCNMeasReport_num__meas_xer_, &INTEGER_json_, &CCNMeasReport_num__meas_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CCNMeasReport_num__meas_default_coding("RAW");
const TTCN_RAWdescriptor_t CCNMeasReport_meas_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for CCNMeasReport_meas
const TTCN_Typedescriptor_t CCNMeasReport_meas_descr_ = { "@RLCMAC_CSN1_Types.CCNMeasReport.meas", NULL, &CCNMeasReport_meas_raw_, NULL, NULL, NULL, NULL, NULL, &NCMeasurements_0_descr_, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CCNMeasReport_meas_default_coding("RAW");
const TTCN_RAWdescriptor_t CCNMeasReport_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for CCNMeasReport
const TTCN_Typedescriptor_t CCNMeasReport_descr_ = { "@RLCMAC_CSN1_Types.CCNMeasReport", NULL, &CCNMeasReport_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CCNMeasReport_default_coding("RAW");
const TTCN_RAWdescriptor_t PktCellChgNotifAdditions_rel6__presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktCellChgNotifAdditions_rel6__presence_xer_ = { {"rel6_presence>\n", "rel6_presence>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PktCellChgNotifAdditions_rel6__presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PktCellChgNotifAdditions_rel6__presence_descr_ = { "@RLCMAC_CSN1_Types.PktCellChgNotifAdditions.rel6_presence", &BITSTRING_ber_, &PktCellChgNotifAdditions_rel6__presence_raw_, NULL, &PktCellChgNotifAdditions_rel6__presence_xer_, &BITSTRING_json_, &PktCellChgNotifAdditions_rel6__presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktCellChgNotifAdditions_rel6__presence_default_coding("RAW");
const TTCN_RAWdescriptor_t PktCellChgNotifAdditions_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktCellChgNotifAdditions
const TTCN_Typedescriptor_t PktCellChgNotifAdditions_descr_ = { "@RLCMAC_CSN1_Types.PktCellChgNotifAdditions", NULL, &PktCellChgNotifAdditions_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t PktCellChgNotifR6Additions_utran__ba__used__presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktCellChgNotifR6Additions_utran__ba__used__presence_xer_ = { {"utran_ba_used_presence>\n", "utran_ba_used_presence>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PktCellChgNotifR6Additions_utran__ba__used__presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PktCellChgNotifR6Additions_utran__ba__used__presence_descr_ = { "@RLCMAC_CSN1_Types.PktCellChgNotifR6Additions.utran_ba_used_presence", &BITSTRING_ber_, &PktCellChgNotifR6Additions_utran__ba__used__presence_raw_, NULL, &PktCellChgNotifR6Additions_utran__ba__used__presence_xer_, &BITSTRING_json_, &PktCellChgNotifR6Additions_utran__ba__used__presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktCellChgNotifR6Additions_utran__ba__used__presence_default_coding("RAW");
const TTCN_RAWdescriptor_t PktCellChgNotifR6Additions_utran__ccn__meas__rep_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktCellChgNotifR6Additions_utran__ccn__meas__rep
const TTCN_Typedescriptor_t PktCellChgNotifR6Additions_utran__ccn__meas__rep_descr_ = { "@RLCMAC_CSN1_Types.PktCellChgNotifR6Additions.utran_ccn_meas_rep", NULL, &PktCellChgNotifR6Additions_utran__ccn__meas__rep_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktCellChgNotifR6Additions_utran__ccn__meas__rep_default_coding("RAW");
const TTCN_RAWdescriptor_t PktCellChgNotifR6Additions_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktCellChgNotifR6Additions
const TTCN_Typedescriptor_t PktCellChgNotifR6Additions_descr_ = { "@RLCMAC_CSN1_Types.PktCellChgNotifR6Additions", NULL, &PktCellChgNotifR6Additions_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t PktCellChgNotifR6Additions_utran__ba__used_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktCellChgNotifR6Additions_utran__ba__used_xer_ = { {"utran_ba_used>\n", "utran_ba_used>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PktCellChgNotifR6Additions_utran__ba__used_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PktCellChgNotifR6Additions_utran__ba__used_descr_ = { "@RLCMAC_CSN1_Types.PktCellChgNotifR6Additions.utran_ba_used", &INTEGER_ber_, &PktCellChgNotifR6Additions_utran__ba__used_raw_, &INTEGER_text_, &PktCellChgNotifR6Additions_utran__ba__used_xer_, &INTEGER_json_, &PktCellChgNotifR6Additions_utran__ba__used_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktCellChgNotifR6Additions_utran__ba__used_default_coding("RAW");
UNIVERSAL_CHARSTRING PktCellChgNotifR6Additions_default_coding("RAW");
const TTCN_RAWdescriptor_t PktCellChgNotifAdditions_rel6_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktCellChgNotifAdditions_rel6
const TTCN_Typedescriptor_t PktCellChgNotifAdditions_rel6_descr_ = { "@RLCMAC_CSN1_Types.PktCellChgNotifAdditions.rel6", NULL, &PktCellChgNotifAdditions_rel6_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktCellChgNotifAdditions_rel6_default_coding("RAW");
UNIVERSAL_CHARSTRING PktCellChgNotifAdditions_default_coding("RAW");
const TTCN_RAWdescriptor_t PktCellChgNotifyU0_tag_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktCellChgNotifyU0_tag_xer_ = { {"tag>\n", "tag>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PktCellChgNotifyU0_tag_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PktCellChgNotifyU0_tag_descr_ = { "@RLCMAC_CSN1_Types.PktCellChgNotifyU0.tag", &BITSTRING_ber_, &PktCellChgNotifyU0_tag_raw_, NULL, &PktCellChgNotifyU0_tag_xer_, &BITSTRING_json_, &PktCellChgNotifyU0_tag_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktCellChgNotifyU0_tag_default_coding("RAW");
const TTCN_RAWdescriptor_t PktCellChgNotifyU0_arfcn_raw_ = {10,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktCellChgNotifyU0_arfcn_xer_ = { {"arfcn>\n", "arfcn>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PktCellChgNotifyU0_arfcn_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PktCellChgNotifyU0_arfcn_descr_ = { "@RLCMAC_CSN1_Types.PktCellChgNotifyU0.arfcn", &INTEGER_ber_, &PktCellChgNotifyU0_arfcn_raw_, &INTEGER_text_, &PktCellChgNotifyU0_arfcn_xer_, &INTEGER_json_, &PktCellChgNotifyU0_arfcn_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktCellChgNotifyU0_arfcn_default_coding("RAW");
const TTCN_RAWdescriptor_t PktCellChgNotifyU0_bsic_raw_ = {6,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktCellChgNotifyU0_bsic_xer_ = { {"bsic>\n", "bsic>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PktCellChgNotifyU0_bsic_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PktCellChgNotifyU0_bsic_descr_ = { "@RLCMAC_CSN1_Types.PktCellChgNotifyU0.bsic", &INTEGER_ber_, &PktCellChgNotifyU0_bsic_raw_, &INTEGER_text_, &PktCellChgNotifyU0_bsic_xer_, &INTEGER_json_, &PktCellChgNotifyU0_bsic_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktCellChgNotifyU0_bsic_default_coding("RAW");
const TTCN_RAWdescriptor_t PktCellChgNotifyU0_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktCellChgNotifyU0
const TTCN_Typedescriptor_t PktCellChgNotifyU0_descr_ = { "@RLCMAC_CSN1_Types.PktCellChgNotifyU0", NULL, &PktCellChgNotifyU0_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktCellChgNotifyU0_default_coding("RAW");
const TTCN_RAWdescriptor_t PktCellChgNotifyU10_tag_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktCellChgNotifyU10_tag_xer_ = { {"tag>\n", "tag>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PktCellChgNotifyU10_tag_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PktCellChgNotifyU10_tag_descr_ = { "@RLCMAC_CSN1_Types.PktCellChgNotifyU10.tag", &BITSTRING_ber_, &PktCellChgNotifyU10_tag_raw_, NULL, &PktCellChgNotifyU10_tag_xer_, &BITSTRING_json_, &PktCellChgNotifyU10_tag_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktCellChgNotifyU10_tag_default_coding("RAW");
const TTCN_RAWdescriptor_t PktCellChgNotifyU10_utran__target__cell_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktCellChgNotifyU10_utran__target__cell
const TTCN_Typedescriptor_t PktCellChgNotifyU10_utran__target__cell_descr_ = { "@RLCMAC_CSN1_Types.PktCellChgNotifyU10.utran_target_cell", NULL, &PktCellChgNotifyU10_utran__target__cell_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktCellChgNotifyU10_utran__target__cell_default_coding("RAW");
const TTCN_RAWdescriptor_t PktCellChgNotifyU10_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktCellChgNotifyU10
const TTCN_Typedescriptor_t PktCellChgNotifyU10_descr_ = { "@RLCMAC_CSN1_Types.PktCellChgNotifyU10", NULL, &PktCellChgNotifyU10_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktCellChgNotifyU10_default_coding("RAW");
const TTCN_RAWdescriptor_t PktCellChgNotifyU110_tag_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktCellChgNotifyU110_tag_xer_ = { {"tag>\n", "tag>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PktCellChgNotifyU110_tag_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PktCellChgNotifyU110_tag_descr_ = { "@RLCMAC_CSN1_Types.PktCellChgNotifyU110.tag", &BITSTRING_ber_, &PktCellChgNotifyU110_tag_raw_, NULL, &PktCellChgNotifyU110_tag_xer_, &BITSTRING_json_, &PktCellChgNotifyU110_tag_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktCellChgNotifyU110_tag_default_coding("RAW");
const TTCN_RAWdescriptor_t PktCellChgNotifyU110_arfcn__bsic__presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktCellChgNotifyU110_arfcn__bsic__presence_xer_ = { {"arfcn_bsic_presence>\n", "arfcn_bsic_presence>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PktCellChgNotifyU110_arfcn__bsic__presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PktCellChgNotifyU110_arfcn__bsic__presence_descr_ = { "@RLCMAC_CSN1_Types.PktCellChgNotifyU110.arfcn_bsic_presence", &BITSTRING_ber_, &PktCellChgNotifyU110_arfcn__bsic__presence_raw_, NULL, &PktCellChgNotifyU110_arfcn__bsic__presence_xer_, &BITSTRING_json_, &PktCellChgNotifyU110_arfcn__bsic__presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktCellChgNotifyU110_arfcn__bsic__presence_default_coding("RAW");
const TTCN_RAWdescriptor_t PktCellChgNotifyU110_utran__target__cell__presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktCellChgNotifyU110_utran__target__cell__presence_xer_ = { {"utran_target_cell_presence>\n", "utran_target_cell_presence>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PktCellChgNotifyU110_utran__target__cell__presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PktCellChgNotifyU110_utran__target__cell__presence_descr_ = { "@RLCMAC_CSN1_Types.PktCellChgNotifyU110.utran_target_cell_presence", &BITSTRING_ber_, &PktCellChgNotifyU110_utran__target__cell__presence_raw_, NULL, &PktCellChgNotifyU110_utran__target__cell__presence_xer_, &BITSTRING_json_, &PktCellChgNotifyU110_utran__target__cell__presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktCellChgNotifyU110_utran__target__cell__presence_default_coding("RAW");
const TTCN_RAWdescriptor_t PktCellChgNotifyU110_eutran__target__cell__presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktCellChgNotifyU110_eutran__target__cell__presence_xer_ = { {"eutran_target_cell_presence>\n", "eutran_target_cell_presence>\n"}, {29, 29}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PktCellChgNotifyU110_eutran__target__cell__presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PktCellChgNotifyU110_eutran__target__cell__presence_descr_ = { "@RLCMAC_CSN1_Types.PktCellChgNotifyU110.eutran_target_cell_presence", &BITSTRING_ber_, &PktCellChgNotifyU110_eutran__target__cell__presence_raw_, NULL, &PktCellChgNotifyU110_eutran__target__cell__presence_xer_, &BITSTRING_json_, &PktCellChgNotifyU110_eutran__target__cell__presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktCellChgNotifyU110_eutran__target__cell__presence_default_coding("RAW");
const TTCN_RAWdescriptor_t PktCellChgNotifyU110_eutran__ccn__meas__rep__presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktCellChgNotifyU110_eutran__ccn__meas__rep__presence_xer_ = { {"eutran_ccn_meas_rep_presence>\n", "eutran_ccn_meas_rep_presence>\n"}, {30, 30}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PktCellChgNotifyU110_eutran__ccn__meas__rep__presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PktCellChgNotifyU110_eutran__ccn__meas__rep__presence_descr_ = { "@RLCMAC_CSN1_Types.PktCellChgNotifyU110.eutran_ccn_meas_rep_presence", &BITSTRING_ber_, &PktCellChgNotifyU110_eutran__ccn__meas__rep__presence_raw_, NULL, &PktCellChgNotifyU110_eutran__ccn__meas__rep__presence_xer_, &BITSTRING_json_, &PktCellChgNotifyU110_eutran__ccn__meas__rep__presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktCellChgNotifyU110_eutran__ccn__meas__rep__presence_default_coding("RAW");
const TTCN_RAWdescriptor_t PktCellChgNotifyU110_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktCellChgNotifyU110
const TTCN_Typedescriptor_t PktCellChgNotifyU110_descr_ = { "@RLCMAC_CSN1_Types.PktCellChgNotifyU110", NULL, &PktCellChgNotifyU110_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t PktCellChgNotifyU110_arfcn_raw_ = {10,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktCellChgNotifyU110_arfcn_xer_ = { {"arfcn>\n", "arfcn>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PktCellChgNotifyU110_arfcn_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PktCellChgNotifyU110_arfcn_descr_ = { "@RLCMAC_CSN1_Types.PktCellChgNotifyU110.arfcn", &INTEGER_ber_, &PktCellChgNotifyU110_arfcn_raw_, &INTEGER_text_, &PktCellChgNotifyU110_arfcn_xer_, &INTEGER_json_, &PktCellChgNotifyU110_arfcn_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktCellChgNotifyU110_arfcn_default_coding("RAW");
const TTCN_RAWdescriptor_t PktCellChgNotifyU110_bsic_raw_ = {6,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PktCellChgNotifyU110_bsic_xer_ = { {"bsic>\n", "bsic>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PktCellChgNotifyU110_bsic_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PktCellChgNotifyU110_bsic_descr_ = { "@RLCMAC_CSN1_Types.PktCellChgNotifyU110.bsic", &INTEGER_ber_, &PktCellChgNotifyU110_bsic_raw_, &INTEGER_text_, &PktCellChgNotifyU110_bsic_xer_, &INTEGER_json_, &PktCellChgNotifyU110_bsic_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktCellChgNotifyU110_bsic_default_coding("RAW");
const TTCN_RAWdescriptor_t PktCellChgNotifyU110_utran__target__cell_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktCellChgNotifyU110_utran__target__cell
const TTCN_Typedescriptor_t PktCellChgNotifyU110_utran__target__cell_descr_ = { "@RLCMAC_CSN1_Types.PktCellChgNotifyU110.utran_target_cell", NULL, &PktCellChgNotifyU110_utran__target__cell_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktCellChgNotifyU110_utran__target__cell_default_coding("RAW");
const TTCN_RAWdescriptor_t PktCellChgNotifyU110_eutran__target__cell_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktCellChgNotifyU110_eutran__target__cell
const TTCN_Typedescriptor_t PktCellChgNotifyU110_eutran__target__cell_descr_ = { "@RLCMAC_CSN1_Types.PktCellChgNotifyU110.eutran_target_cell", NULL, &PktCellChgNotifyU110_eutran__target__cell_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktCellChgNotifyU110_eutran__target__cell_default_coding("RAW");
const TTCN_RAWdescriptor_t PktCellChgNotifyU110_eutran__ccn__meas__rep_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktCellChgNotifyU110_eutran__ccn__meas__rep
const TTCN_Typedescriptor_t PktCellChgNotifyU110_eutran__ccn__meas__rep_descr_ = { "@RLCMAC_CSN1_Types.PktCellChgNotifyU110.eutran_ccn_meas_rep", NULL, &PktCellChgNotifyU110_eutran__ccn__meas__rep_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktCellChgNotifyU110_eutran__ccn__meas__rep_default_coding("RAW");
UNIVERSAL_CHARSTRING PktCellChgNotifyU110_default_coding("RAW");
const TTCN_RAWdescriptor_t PktCellChgNotifyUnion_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktCellChgNotifyUnion
const TTCN_Typedescriptor_t PktCellChgNotifyUnion_descr_ = { "@RLCMAC_CSN1_Types.PktCellChgNotifyUnion", NULL, &PktCellChgNotifyUnion_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t PktCellChgNotifyUnion_u0_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktCellChgNotifyUnion_u0
const TTCN_Typedescriptor_t PktCellChgNotifyUnion_u0_descr_ = { "@RLCMAC_CSN1_Types.PktCellChgNotifyUnion.u0", NULL, &PktCellChgNotifyUnion_u0_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktCellChgNotifyUnion_u0_default_coding("RAW");
const TTCN_RAWdescriptor_t PktCellChgNotifyUnion_u10_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktCellChgNotifyUnion_u10
const TTCN_Typedescriptor_t PktCellChgNotifyUnion_u10_descr_ = { "@RLCMAC_CSN1_Types.PktCellChgNotifyUnion.u10", NULL, &PktCellChgNotifyUnion_u10_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktCellChgNotifyUnion_u10_default_coding("RAW");
const TTCN_RAWdescriptor_t PktCellChgNotifyUnion_u110_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PktCellChgNotifyUnion_u110
const TTCN_Typedescriptor_t PktCellChgNotifyUnion_u110_descr_ = { "@RLCMAC_CSN1_Types.PktCellChgNotifyUnion.u110", NULL, &PktCellChgNotifyUnion_u110_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PktCellChgNotifyUnion_u110_default_coding("RAW");
UNIVERSAL_CHARSTRING PktCellChgNotifyUnion_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketCellChangeNotification_gtfi_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketCellChangeNotification_gtfi
const TTCN_Typedescriptor_t PacketCellChangeNotification_gtfi_descr_ = { "@RLCMAC_CSN1_Types.PacketCellChangeNotification.gtfi", NULL, &PacketCellChangeNotification_gtfi_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketCellChangeNotification_gtfi_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketCellChangeNotification_u_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketCellChangeNotification_u
const TTCN_Typedescriptor_t PacketCellChangeNotification_u_descr_ = { "@RLCMAC_CSN1_Types.PacketCellChangeNotification.u", NULL, &PacketCellChangeNotification_u_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketCellChangeNotification_u_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketCellChangeNotification_ba__psi3__presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketCellChangeNotification_ba__psi3__presence_xer_ = { {"ba_psi3_presence>\n", "ba_psi3_presence>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketCellChangeNotification_ba__psi3__presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketCellChangeNotification_ba__psi3__presence_descr_ = { "@RLCMAC_CSN1_Types.PacketCellChangeNotification.ba_psi3_presence", &BITSTRING_ber_, &PacketCellChangeNotification_ba__psi3__presence_raw_, NULL, &PacketCellChangeNotification_ba__psi3__presence_xer_, &BITSTRING_json_, &PacketCellChangeNotification_ba__psi3__presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketCellChangeNotification_ba__psi3__presence_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketCellChangeNotification_pmo__used_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketCellChangeNotification_pmo__used_xer_ = { {"pmo_used>\n", "pmo_used>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketCellChangeNotification_pmo__used_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketCellChangeNotification_pmo__used_descr_ = { "@RLCMAC_CSN1_Types.PacketCellChangeNotification.pmo_used", &BITSTRING_ber_, &PacketCellChangeNotification_pmo__used_raw_, NULL, &PacketCellChangeNotification_pmo__used_xer_, &BITSTRING_json_, &PacketCellChangeNotification_pmo__used_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketCellChangeNotification_pmo__used_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketCellChangeNotification_pccn__sending_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketCellChangeNotification_pccn__sending_xer_ = { {"pccn_sending>\n", "pccn_sending>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketCellChangeNotification_pccn__sending_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketCellChangeNotification_pccn__sending_descr_ = { "@RLCMAC_CSN1_Types.PacketCellChangeNotification.pccn_sending", &BITSTRING_ber_, &PacketCellChangeNotification_pccn__sending_raw_, NULL, &PacketCellChangeNotification_pccn__sending_xer_, &BITSTRING_json_, &PacketCellChangeNotification_pccn__sending_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketCellChangeNotification_pccn__sending_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketCellChangeNotification_ccn__meas__rep_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketCellChangeNotification_ccn__meas__rep
const TTCN_Typedescriptor_t PacketCellChangeNotification_ccn__meas__rep_descr_ = { "@RLCMAC_CSN1_Types.PacketCellChangeNotification.ccn_meas_rep", NULL, &PacketCellChangeNotification_ccn__meas__rep_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketCellChangeNotification_ccn__meas__rep_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketCellChangeNotification_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketCellChangeNotification
const TTCN_Typedescriptor_t PacketCellChangeNotification_descr_ = { "@RLCMAC_CSN1_Types.PacketCellChangeNotification", NULL, &PacketCellChangeNotification_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t PacketCellChangeNotification_ba__used_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketCellChangeNotification_ba__used_xer_ = { {"ba_used>\n", "ba_used>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketCellChangeNotification_ba__used_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketCellChangeNotification_ba__used_descr_ = { "@RLCMAC_CSN1_Types.PacketCellChangeNotification.ba_used", &BITSTRING_ber_, &PacketCellChangeNotification_ba__used_raw_, NULL, &PacketCellChangeNotification_ba__used_xer_, &BITSTRING_json_, &PacketCellChangeNotification_ba__used_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketCellChangeNotification_ba__used_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketCellChangeNotification_psi3__change__mark_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       PacketCellChangeNotification_psi3__change__mark_xer_ = { {"psi3_change_mark>\n", "psi3_change_mark>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PacketCellChangeNotification_psi3__change__mark_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PacketCellChangeNotification_psi3__change__mark_descr_ = { "@RLCMAC_CSN1_Types.PacketCellChangeNotification.psi3_change_mark", &BITSTRING_ber_, &PacketCellChangeNotification_psi3__change__mark_raw_, NULL, &PacketCellChangeNotification_psi3__change__mark_xer_, &BITSTRING_json_, &PacketCellChangeNotification_psi3__change__mark_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketCellChangeNotification_psi3__change__mark_default_coding("RAW");
const TTCN_RAWdescriptor_t PacketCellChangeNotification_rel__additions_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for PacketCellChangeNotification_rel__additions
const TTCN_Typedescriptor_t PacketCellChangeNotification_rel__additions_descr_ = { "@RLCMAC_CSN1_Types.PacketCellChangeNotification.rel_additions", NULL, &PacketCellChangeNotification_rel__additions_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PacketCellChangeNotification_rel__additions_default_coding("RAW");
UNIVERSAL_CHARSTRING PacketCellChangeNotification_default_coding("RAW");
const TTCN_RAWdescriptor_t RlcmacUlCtrlUnion_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RlcmacUlCtrlUnion
const TTCN_Typedescriptor_t RlcmacUlCtrlUnion_descr_ = { "@RLCMAC_CSN1_Types.RlcmacUlCtrlUnion", NULL, &RlcmacUlCtrlUnion_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t RlcmacUlCtrlUnion_ctrl__ack_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RlcmacUlCtrlUnion_ctrl__ack
const TTCN_Typedescriptor_t RlcmacUlCtrlUnion_ctrl__ack_descr_ = { "@RLCMAC_CSN1_Types.RlcmacUlCtrlUnion.ctrl_ack", NULL, &RlcmacUlCtrlUnion_ctrl__ack_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RlcmacUlCtrlUnion_ctrl__ack_default_coding("RAW");
const TTCN_RAWdescriptor_t RlcmacUlCtrlUnion_dl__ack__nack_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RlcmacUlCtrlUnion_dl__ack__nack
const TTCN_Typedescriptor_t RlcmacUlCtrlUnion_dl__ack__nack_descr_ = { "@RLCMAC_CSN1_Types.RlcmacUlCtrlUnion.dl_ack_nack", NULL, &RlcmacUlCtrlUnion_dl__ack__nack_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RlcmacUlCtrlUnion_dl__ack__nack_default_coding("RAW");
const TTCN_RAWdescriptor_t RlcmacUlCtrlUnion_dl__ack__nack__egprs_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RlcmacUlCtrlUnion_dl__ack__nack__egprs
const TTCN_Typedescriptor_t RlcmacUlCtrlUnion_dl__ack__nack__egprs_descr_ = { "@RLCMAC_CSN1_Types.RlcmacUlCtrlUnion.dl_ack_nack_egprs", NULL, &RlcmacUlCtrlUnion_dl__ack__nack__egprs_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RlcmacUlCtrlUnion_dl__ack__nack__egprs_default_coding("RAW");
const TTCN_RAWdescriptor_t RlcmacUlCtrlUnion_ul__dummy_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RlcmacUlCtrlUnion_ul__dummy
const TTCN_Typedescriptor_t RlcmacUlCtrlUnion_ul__dummy_descr_ = { "@RLCMAC_CSN1_Types.RlcmacUlCtrlUnion.ul_dummy", NULL, &RlcmacUlCtrlUnion_ul__dummy_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RlcmacUlCtrlUnion_ul__dummy_default_coding("RAW");
const TTCN_RAWdescriptor_t RlcmacUlCtrlUnion_meas__report_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RlcmacUlCtrlUnion_meas__report
const TTCN_Typedescriptor_t RlcmacUlCtrlUnion_meas__report_descr_ = { "@RLCMAC_CSN1_Types.RlcmacUlCtrlUnion.meas_report", NULL, &RlcmacUlCtrlUnion_meas__report_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RlcmacUlCtrlUnion_meas__report_default_coding("RAW");
const TTCN_RAWdescriptor_t RlcmacUlCtrlUnion_resource__req_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RlcmacUlCtrlUnion_resource__req
const TTCN_Typedescriptor_t RlcmacUlCtrlUnion_resource__req_descr_ = { "@RLCMAC_CSN1_Types.RlcmacUlCtrlUnion.resource_req", NULL, &RlcmacUlCtrlUnion_resource__req_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RlcmacUlCtrlUnion_resource__req_default_coding("RAW");
const TTCN_RAWdescriptor_t RlcmacUlCtrlUnion_cell__chg__notif_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RlcmacUlCtrlUnion_cell__chg__notif
const TTCN_Typedescriptor_t RlcmacUlCtrlUnion_cell__chg__notif_descr_ = { "@RLCMAC_CSN1_Types.RlcmacUlCtrlUnion.cell_chg_notif", NULL, &RlcmacUlCtrlUnion_cell__chg__notif_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RlcmacUlCtrlUnion_cell__chg__notif_default_coding("RAW");
const TTCN_RAWdescriptor_t RlcmacUlCtrlUnion_other_raw_ = {0,SG_NO,ORDER_MSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       RlcmacUlCtrlUnion_other_xer_ = { {"other>\n", "other>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RlcmacUlCtrlUnion_other_oer_ext_arr_[0] = {};
const int RlcmacUlCtrlUnion_other_oer_p_[0] = {};
const TTCN_OERdescriptor_t RlcmacUlCtrlUnion_other_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RlcmacUlCtrlUnion_other_oer_ext_arr_, 0, RlcmacUlCtrlUnion_other_oer_p_};
const TTCN_Typedescriptor_t RlcmacUlCtrlUnion_other_descr_ = { "@RLCMAC_CSN1_Types.RlcmacUlCtrlUnion.other", &OCTETSTRING_ber_, &RlcmacUlCtrlUnion_other_raw_, &OCTETSTRING_text_, &RlcmacUlCtrlUnion_other_xer_, &OCTETSTRING_json_, &RlcmacUlCtrlUnion_other_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RlcmacUlCtrlUnion_other_default_coding("RAW");
UNIVERSAL_CHARSTRING RlcmacUlCtrlUnion_default_coding("RAW");
const TTCN_RAWdescriptor_t RlcmacUlCtrlMsg_msg__type_raw_ = {6,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RlcmacUlCtrlMsg_msg__type
const TTCN_Typedescriptor_t RlcmacUlCtrlMsg_msg__type_descr_ = { "@RLCMAC_CSN1_Types.RlcmacUlCtrlMsg.msg_type", NULL, &RlcmacUlCtrlMsg_msg__type_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RlcmacUlCtrlMsg_msg__type_default_coding("RAW");
const TTCN_RAWdescriptor_t RlcmacUlCtrlMsg_u_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RlcmacUlCtrlMsg_u
const TTCN_Typedescriptor_t RlcmacUlCtrlMsg_u_descr_ = { "@RLCMAC_CSN1_Types.RlcmacUlCtrlMsg.u", NULL, &RlcmacUlCtrlMsg_u_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RlcmacUlCtrlMsg_u_default_coding("RAW");
const TTCN_RAWdescriptor_t RlcmacUlCtrlMsg_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for RlcmacUlCtrlMsg
const TTCN_Typedescriptor_t RlcmacUlCtrlMsg_descr_ = { "@RLCMAC_CSN1_Types.RlcmacUlCtrlMsg", NULL, &RlcmacUlCtrlMsg_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RlcmacUlCtrlMsg_default_coding("RAW");
const TTCN_RAWdescriptor_t GprsPowerControlParameters_alpha_raw_ = {4,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       GprsPowerControlParameters_alpha_xer_ = { {"alpha>\n", "alpha>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GprsPowerControlParameters_alpha_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GprsPowerControlParameters_alpha_descr_ = { "@RLCMAC_CSN1_Types.GprsPowerControlParameters.alpha", &INTEGER_ber_, &GprsPowerControlParameters_alpha_raw_, &INTEGER_text_, &GprsPowerControlParameters_alpha_xer_, &INTEGER_json_, &GprsPowerControlParameters_alpha_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GprsPowerControlParameters_alpha_default_coding("RAW");
const TTCN_RAWdescriptor_t GprsPowerControlParameters_t__avg__w_raw_ = {5,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       GprsPowerControlParameters_t__avg__w_xer_ = { {"t_avg_w>\n", "t_avg_w>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GprsPowerControlParameters_t__avg__w_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GprsPowerControlParameters_t__avg__w_descr_ = { "@RLCMAC_CSN1_Types.GprsPowerControlParameters.t_avg_w", &BITSTRING_ber_, &GprsPowerControlParameters_t__avg__w_raw_, NULL, &GprsPowerControlParameters_t__avg__w_xer_, &BITSTRING_json_, &GprsPowerControlParameters_t__avg__w_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GprsPowerControlParameters_t__avg__w_default_coding("RAW");
const TTCN_RAWdescriptor_t GprsPowerControlParameters_t__avg__t_raw_ = {5,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       GprsPowerControlParameters_t__avg__t_xer_ = { {"t_avg_t>\n", "t_avg_t>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GprsPowerControlParameters_t__avg__t_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GprsPowerControlParameters_t__avg__t_descr_ = { "@RLCMAC_CSN1_Types.GprsPowerControlParameters.t_avg_t", &BITSTRING_ber_, &GprsPowerControlParameters_t__avg__t_raw_, NULL, &GprsPowerControlParameters_t__avg__t_xer_, &BITSTRING_json_, &GprsPowerControlParameters_t__avg__t_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GprsPowerControlParameters_t__avg__t_default_coding("RAW");
const TTCN_RAWdescriptor_t GprsPowerControlParameters_pc__meas__chan_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       GprsPowerControlParameters_pc__meas__chan_xer_ = { {"pc_meas_chan>\n", "pc_meas_chan>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GprsPowerControlParameters_pc__meas__chan_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GprsPowerControlParameters_pc__meas__chan_descr_ = { "@RLCMAC_CSN1_Types.GprsPowerControlParameters.pc_meas_chan", &BITSTRING_ber_, &GprsPowerControlParameters_pc__meas__chan_raw_, NULL, &GprsPowerControlParameters_pc__meas__chan_xer_, &BITSTRING_json_, &GprsPowerControlParameters_pc__meas__chan_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GprsPowerControlParameters_pc__meas__chan_default_coding("RAW");
const TTCN_RAWdescriptor_t GprsPowerControlParameters_n__avg__i_raw_ = {4,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       GprsPowerControlParameters_n__avg__i_xer_ = { {"n_avg_i>\n", "n_avg_i>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GprsPowerControlParameters_n__avg__i_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GprsPowerControlParameters_n__avg__i_descr_ = { "@RLCMAC_CSN1_Types.GprsPowerControlParameters.n_avg_i", &BITSTRING_ber_, &GprsPowerControlParameters_n__avg__i_raw_, NULL, &GprsPowerControlParameters_n__avg__i_xer_, &BITSTRING_json_, &GprsPowerControlParameters_n__avg__i_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GprsPowerControlParameters_n__avg__i_default_coding("RAW");
const TTCN_RAWdescriptor_t GprsPowerControlParameters_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for GprsPowerControlParameters
const TTCN_Typedescriptor_t GprsPowerControlParameters_descr_ = { "@RLCMAC_CSN1_Types.GprsPowerControlParameters", NULL, &GprsPowerControlParameters_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GprsPowerControlParameters_default_coding("RAW");
const TTCN_RAWdescriptor_t ExtensionInformation_egprs__supported_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       ExtensionInformation_egprs__supported_xer_ = { {"egprs_supported>\n", "egprs_supported>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ExtensionInformation_egprs__supported_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ExtensionInformation_egprs__supported_descr_ = { "@RLCMAC_CSN1_Types.ExtensionInformation.egprs_supported", &BITSTRING_ber_, &ExtensionInformation_egprs__supported_raw_, NULL, &ExtensionInformation_egprs__supported_xer_, &BITSTRING_json_, &ExtensionInformation_egprs__supported_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ExtensionInformation_egprs__supported_default_coding("RAW");
const TTCN_RAWdescriptor_t ExtensionInformation_pfc__feature__mode_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       ExtensionInformation_pfc__feature__mode_xer_ = { {"pfc_feature_mode>\n", "pfc_feature_mode>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ExtensionInformation_pfc__feature__mode_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ExtensionInformation_pfc__feature__mode_descr_ = { "@RLCMAC_CSN1_Types.ExtensionInformation.pfc_feature_mode", &BITSTRING_ber_, &ExtensionInformation_pfc__feature__mode_raw_, NULL, &ExtensionInformation_pfc__feature__mode_xer_, &BITSTRING_json_, &ExtensionInformation_pfc__feature__mode_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ExtensionInformation_pfc__feature__mode_default_coding("RAW");
const TTCN_RAWdescriptor_t ExtensionInformation_dtm__support_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       ExtensionInformation_dtm__support_xer_ = { {"dtm_support>\n", "dtm_support>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ExtensionInformation_dtm__support_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ExtensionInformation_dtm__support_descr_ = { "@RLCMAC_CSN1_Types.ExtensionInformation.dtm_support", &BITSTRING_ber_, &ExtensionInformation_dtm__support_raw_, NULL, &ExtensionInformation_dtm__support_xer_, &BITSTRING_json_, &ExtensionInformation_dtm__support_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ExtensionInformation_dtm__support_default_coding("RAW");
const TTCN_RAWdescriptor_t ExtensionInformation_bss__paging__coordination_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       ExtensionInformation_bss__paging__coordination_xer_ = { {"bss_paging_coordination>\n", "bss_paging_coordination>\n"}, {25, 25}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ExtensionInformation_bss__paging__coordination_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ExtensionInformation_bss__paging__coordination_descr_ = { "@RLCMAC_CSN1_Types.ExtensionInformation.bss_paging_coordination", &BITSTRING_ber_, &ExtensionInformation_bss__paging__coordination_raw_, NULL, &ExtensionInformation_bss__paging__coordination_xer_, &BITSTRING_json_, &ExtensionInformation_bss__paging__coordination_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ExtensionInformation_bss__paging__coordination_default_coding("RAW");
const TTCN_RAWdescriptor_t ExtensionInformation_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for ExtensionInformation
const TTCN_Typedescriptor_t ExtensionInformation_descr_ = { "@RLCMAC_CSN1_Types.ExtensionInformation", NULL, &ExtensionInformation_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t ExtensionInformation_egprs__pkt__channel__req_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       ExtensionInformation_egprs__pkt__channel__req_xer_ = { {"egprs_pkt_channel_req>\n", "egprs_pkt_channel_req>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ExtensionInformation_egprs__pkt__channel__req_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ExtensionInformation_egprs__pkt__channel__req_descr_ = { "@RLCMAC_CSN1_Types.ExtensionInformation.egprs_pkt_channel_req", &BITSTRING_ber_, &ExtensionInformation_egprs__pkt__channel__req_raw_, NULL, &ExtensionInformation_egprs__pkt__channel__req_xer_, &BITSTRING_json_, &ExtensionInformation_egprs__pkt__channel__req_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ExtensionInformation_egprs__pkt__channel__req_default_coding("RAW");
const TTCN_RAWdescriptor_t ExtensionInformation_bep__period_raw_ = {4,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       ExtensionInformation_bep__period_xer_ = { {"bep_period>\n", "bep_period>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ExtensionInformation_bep__period_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ExtensionInformation_bep__period_descr_ = { "@RLCMAC_CSN1_Types.ExtensionInformation.bep_period", &BITSTRING_ber_, &ExtensionInformation_bep__period_raw_, NULL, &ExtensionInformation_bep__period_xer_, &BITSTRING_json_, &ExtensionInformation_bep__period_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ExtensionInformation_bep__period_default_coding("RAW");
const TTCN_RAWdescriptor_t ExtensionInformation_ccn__active_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       ExtensionInformation_ccn__active_xer_ = { {"ccn_active>\n", "ccn_active>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ExtensionInformation_ccn__active_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ExtensionInformation_ccn__active_descr_ = { "@RLCMAC_CSN1_Types.ExtensionInformation.ccn_active", &BITSTRING_ber_, &ExtensionInformation_ccn__active_raw_, NULL, &ExtensionInformation_ccn__active_xer_, &BITSTRING_json_, &ExtensionInformation_ccn__active_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ExtensionInformation_ccn__active_default_coding("RAW");
const TTCN_RAWdescriptor_t ExtensionInformation_nw__ext__utbf_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       ExtensionInformation_nw__ext__utbf_xer_ = { {"nw_ext_utbf>\n", "nw_ext_utbf>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ExtensionInformation_nw__ext__utbf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ExtensionInformation_nw__ext__utbf_descr_ = { "@RLCMAC_CSN1_Types.ExtensionInformation.nw_ext_utbf", &BITSTRING_ber_, &ExtensionInformation_nw__ext__utbf_raw_, NULL, &ExtensionInformation_nw__ext__utbf_xer_, &BITSTRING_json_, &ExtensionInformation_nw__ext__utbf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ExtensionInformation_nw__ext__utbf_default_coding("RAW");
UNIVERSAL_CHARSTRING ExtensionInformation_default_coding("RAW");
const TTCN_RAWdescriptor_t GprsCellOptions_nmo_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       GprsCellOptions_nmo_xer_ = { {"nmo>\n", "nmo>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GprsCellOptions_nmo_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GprsCellOptions_nmo_descr_ = { "@RLCMAC_CSN1_Types.GprsCellOptions.nmo", &BITSTRING_ber_, &GprsCellOptions_nmo_raw_, NULL, &GprsCellOptions_nmo_xer_, &BITSTRING_json_, &GprsCellOptions_nmo_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GprsCellOptions_nmo_default_coding("RAW");
const TTCN_RAWdescriptor_t GprsCellOptions_t3168_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       GprsCellOptions_t3168_xer_ = { {"t3168>\n", "t3168>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GprsCellOptions_t3168_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GprsCellOptions_t3168_descr_ = { "@RLCMAC_CSN1_Types.GprsCellOptions.t3168", &BITSTRING_ber_, &GprsCellOptions_t3168_raw_, NULL, &GprsCellOptions_t3168_xer_, &BITSTRING_json_, &GprsCellOptions_t3168_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GprsCellOptions_t3168_default_coding("RAW");
const TTCN_RAWdescriptor_t GprsCellOptions_t3192_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       GprsCellOptions_t3192_xer_ = { {"t3192>\n", "t3192>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GprsCellOptions_t3192_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GprsCellOptions_t3192_descr_ = { "@RLCMAC_CSN1_Types.GprsCellOptions.t3192", &BITSTRING_ber_, &GprsCellOptions_t3192_raw_, NULL, &GprsCellOptions_t3192_xer_, &BITSTRING_json_, &GprsCellOptions_t3192_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GprsCellOptions_t3192_default_coding("RAW");
const TTCN_RAWdescriptor_t GprsCellOptions_drx__timer__max_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       GprsCellOptions_drx__timer__max_xer_ = { {"drx_timer_max>\n", "drx_timer_max>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GprsCellOptions_drx__timer__max_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GprsCellOptions_drx__timer__max_descr_ = { "@RLCMAC_CSN1_Types.GprsCellOptions.drx_timer_max", &BITSTRING_ber_, &GprsCellOptions_drx__timer__max_raw_, NULL, &GprsCellOptions_drx__timer__max_xer_, &BITSTRING_json_, &GprsCellOptions_drx__timer__max_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GprsCellOptions_drx__timer__max_default_coding("RAW");
const TTCN_RAWdescriptor_t GprsCellOptions_access__burst__type_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       GprsCellOptions_access__burst__type_xer_ = { {"access_burst_type>\n", "access_burst_type>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GprsCellOptions_access__burst__type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GprsCellOptions_access__burst__type_descr_ = { "@RLCMAC_CSN1_Types.GprsCellOptions.access_burst_type", &BITSTRING_ber_, &GprsCellOptions_access__burst__type_raw_, NULL, &GprsCellOptions_access__burst__type_xer_, &BITSTRING_json_, &GprsCellOptions_access__burst__type_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GprsCellOptions_access__burst__type_default_coding("RAW");
const TTCN_RAWdescriptor_t GprsCellOptions_control__ack__type_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       GprsCellOptions_control__ack__type_xer_ = { {"control_ack_type>\n", "control_ack_type>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GprsCellOptions_control__ack__type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GprsCellOptions_control__ack__type_descr_ = { "@RLCMAC_CSN1_Types.GprsCellOptions.control_ack_type", &BITSTRING_ber_, &GprsCellOptions_control__ack__type_raw_, NULL, &GprsCellOptions_control__ack__type_xer_, &BITSTRING_json_, &GprsCellOptions_control__ack__type_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GprsCellOptions_control__ack__type_default_coding("RAW");
const TTCN_RAWdescriptor_t GprsCellOptions_bs__cv__max_raw_ = {4,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       GprsCellOptions_bs__cv__max_xer_ = { {"bs_cv_max>\n", "bs_cv_max>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GprsCellOptions_bs__cv__max_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GprsCellOptions_bs__cv__max_descr_ = { "@RLCMAC_CSN1_Types.GprsCellOptions.bs_cv_max", &INTEGER_ber_, &GprsCellOptions_bs__cv__max_raw_, &INTEGER_text_, &GprsCellOptions_bs__cv__max_xer_, &INTEGER_json_, &GprsCellOptions_bs__cv__max_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GprsCellOptions_bs__cv__max_default_coding("RAW");
const TTCN_RAWdescriptor_t GprsCellOptions_pan__presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       GprsCellOptions_pan__presence_xer_ = { {"pan_presence>\n", "pan_presence>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GprsCellOptions_pan__presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GprsCellOptions_pan__presence_descr_ = { "@RLCMAC_CSN1_Types.GprsCellOptions.pan_presence", &BITSTRING_ber_, &GprsCellOptions_pan__presence_raw_, NULL, &GprsCellOptions_pan__presence_xer_, &BITSTRING_json_, &GprsCellOptions_pan__presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GprsCellOptions_pan__presence_default_coding("RAW");
const TTCN_RAWdescriptor_t GprsCellOptions_ext__info__presence_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       GprsCellOptions_ext__info__presence_xer_ = { {"ext_info_presence>\n", "ext_info_presence>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GprsCellOptions_ext__info__presence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GprsCellOptions_ext__info__presence_descr_ = { "@RLCMAC_CSN1_Types.GprsCellOptions.ext_info_presence", &BITSTRING_ber_, &GprsCellOptions_ext__info__presence_raw_, NULL, &GprsCellOptions_ext__info__presence_xer_, &BITSTRING_json_, &GprsCellOptions_ext__info__presence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GprsCellOptions_ext__info__presence_default_coding("RAW");
const TTCN_RAWdescriptor_t GprsCellOptions_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for GprsCellOptions
const TTCN_Typedescriptor_t GprsCellOptions_descr_ = { "@RLCMAC_CSN1_Types.GprsCellOptions", NULL, &GprsCellOptions_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t GprsCellOptions_pan__dec_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       GprsCellOptions_pan__dec_xer_ = { {"pan_dec>\n", "pan_dec>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GprsCellOptions_pan__dec_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GprsCellOptions_pan__dec_descr_ = { "@RLCMAC_CSN1_Types.GprsCellOptions.pan_dec", &INTEGER_ber_, &GprsCellOptions_pan__dec_raw_, &INTEGER_text_, &GprsCellOptions_pan__dec_xer_, &INTEGER_json_, &GprsCellOptions_pan__dec_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GprsCellOptions_pan__dec_default_coding("RAW");
const TTCN_RAWdescriptor_t GprsCellOptions_pan__inc_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       GprsCellOptions_pan__inc_xer_ = { {"pan_inc>\n", "pan_inc>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GprsCellOptions_pan__inc_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GprsCellOptions_pan__inc_descr_ = { "@RLCMAC_CSN1_Types.GprsCellOptions.pan_inc", &INTEGER_ber_, &GprsCellOptions_pan__inc_raw_, &INTEGER_text_, &GprsCellOptions_pan__inc_xer_, &INTEGER_json_, &GprsCellOptions_pan__inc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GprsCellOptions_pan__inc_default_coding("RAW");
const TTCN_RAWdescriptor_t GprsCellOptions_pan__max_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       GprsCellOptions_pan__max_xer_ = { {"pan_max>\n", "pan_max>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GprsCellOptions_pan__max_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GprsCellOptions_pan__max_descr_ = { "@RLCMAC_CSN1_Types.GprsCellOptions.pan_max", &BITSTRING_ber_, &GprsCellOptions_pan__max_raw_, NULL, &GprsCellOptions_pan__max_xer_, &BITSTRING_json_, &GprsCellOptions_pan__max_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GprsCellOptions_pan__max_default_coding("RAW");
const TTCN_RAWdescriptor_t GprsCellOptions_ext__info__length_raw_ = {6,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,6,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       GprsCellOptions_ext__info__length_xer_ = { {"ext_info_length>\n", "ext_info_length>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GprsCellOptions_ext__info__length_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GprsCellOptions_ext__info__length_descr_ = { "@RLCMAC_CSN1_Types.GprsCellOptions.ext_info_length", &BITSTRING_ber_, &GprsCellOptions_ext__info__length_raw_, NULL, &GprsCellOptions_ext__info__length_xer_, &BITSTRING_json_, &GprsCellOptions_ext__info__length_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GprsCellOptions_ext__info__length_default_coding("RAW");
const TTCN_RAWdescriptor_t GprsCellOptions_ext__info_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for GprsCellOptions_ext__info
const TTCN_Typedescriptor_t GprsCellOptions_ext__info_descr_ = { "@RLCMAC_CSN1_Types.GprsCellOptions.ext_info", NULL, &GprsCellOptions_ext__info_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GprsCellOptions_ext__info_default_coding("RAW");
UNIVERSAL_CHARSTRING GprsCellOptions_default_coding("RAW");
const TTCN_RAWdescriptor_t EGPRSPktChRequest_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for EGPRSPktChRequest
const TTCN_Typedescriptor_t EGPRSPktChRequest_descr_ = { "@RLCMAC_CSN1_Types.EGPRSPktChRequest", NULL, &EGPRSPktChRequest_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t EGPRSPktChRequest__MC5P2RB3_tag_raw_ = {1,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EGPRSPktChRequest__MC5P2RB3_tag_xer_ = { {"tag>\n", "tag>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EGPRSPktChRequest__MC5P2RB3_tag_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EGPRSPktChRequest__MC5P2RB3_tag_descr_ = { "@RLCMAC_CSN1_Types.EGPRSPktChRequest_MC5P2RB3.tag", &BITSTRING_ber_, &EGPRSPktChRequest__MC5P2RB3_tag_raw_, NULL, &EGPRSPktChRequest__MC5P2RB3_tag_xer_, &BITSTRING_json_, &EGPRSPktChRequest__MC5P2RB3_tag_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EGPRSPktChRequest__MC5P2RB3_tag_default_coding("RAW");
const TTCN_RAWdescriptor_t EGPRSPktChRequest__MC5P2RB3_multislot__class_raw_ = {5,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EGPRSPktChRequest__MC5P2RB3_multislot__class_xer_ = { {"multislot_class>\n", "multislot_class>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EGPRSPktChRequest__MC5P2RB3_multislot__class_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EGPRSPktChRequest__MC5P2RB3_multislot__class_descr_ = { "@RLCMAC_CSN1_Types.EGPRSPktChRequest_MC5P2RB3.multislot_class", &BITSTRING_ber_, &EGPRSPktChRequest__MC5P2RB3_multislot__class_raw_, NULL, &EGPRSPktChRequest__MC5P2RB3_multislot__class_xer_, &BITSTRING_json_, &EGPRSPktChRequest__MC5P2RB3_multislot__class_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EGPRSPktChRequest__MC5P2RB3_multislot__class_default_coding("RAW");
const TTCN_RAWdescriptor_t EGPRSPktChRequest__MC5P2RB3_priority_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       EGPRSPktChRequest__MC5P2RB3_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 EGPRSPktChRequest__MC5P2RB3_priority_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EGPRSPktChRequest__MC5P2RB3_priority_descr_ = { "@RLCMAC_CSN1_Types.EGPRSPktChRequest_MC5P2RB3.priority", &BITSTRING_ber_, &EGPRSPktChRequest__MC5P2RB3_priority_raw_, NULL, &EGPRSPktChRequest__MC5P2RB3_priority_xer_, &BITSTRING_json_, &EGPRSPktChRequest__MC5P2RB3_priority_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EGPRSPktChRequest__MC5P2RB3_priority_default_coding("RAW");
const TTCN_RAWdescriptor_t EGPRSPktChRequest__MC5P2RB3_random__bits_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EGPRSPktChRequest__MC5P2RB3_random__bits_xer_ = { {"random_bits>\n", "random_bits>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EGPRSPktChRequest__MC5P2RB3_random__bits_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EGPRSPktChRequest__MC5P2RB3_random__bits_descr_ = { "@RLCMAC_CSN1_Types.EGPRSPktChRequest_MC5P2RB3.random_bits", &BITSTRING_ber_, &EGPRSPktChRequest__MC5P2RB3_random__bits_raw_, NULL, &EGPRSPktChRequest__MC5P2RB3_random__bits_xer_, &BITSTRING_json_, &EGPRSPktChRequest__MC5P2RB3_random__bits_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EGPRSPktChRequest__MC5P2RB3_random__bits_default_coding("RAW");
const TTCN_RAWdescriptor_t EGPRSPktChRequest__MC5P2RB3_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for EGPRSPktChRequest__MC5P2RB3
const TTCN_Typedescriptor_t EGPRSPktChRequest__MC5P2RB3_descr_ = { "@RLCMAC_CSN1_Types.EGPRSPktChRequest_MC5P2RB3", NULL, &EGPRSPktChRequest__MC5P2RB3_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EGPRSPktChRequest__MC5P2RB3_default_coding("RAW");
const TTCN_RAWdescriptor_t EGPRSPktChRequest_one__phase_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for EGPRSPktChRequest_one__phase
const TTCN_Typedescriptor_t EGPRSPktChRequest_one__phase_descr_ = { "@RLCMAC_CSN1_Types.EGPRSPktChRequest.one_phase", NULL, &EGPRSPktChRequest_one__phase_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EGPRSPktChRequest_one__phase_default_coding("RAW");
const TTCN_RAWdescriptor_t EGPRSPktChRequest__NOB3P2RB3_tag_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EGPRSPktChRequest__NOB3P2RB3_tag_xer_ = { {"tag>\n", "tag>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EGPRSPktChRequest__NOB3P2RB3_tag_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EGPRSPktChRequest__NOB3P2RB3_tag_descr_ = { "@RLCMAC_CSN1_Types.EGPRSPktChRequest_NOB3P2RB3.tag", &BITSTRING_ber_, &EGPRSPktChRequest__NOB3P2RB3_tag_raw_, NULL, &EGPRSPktChRequest__NOB3P2RB3_tag_xer_, &BITSTRING_json_, &EGPRSPktChRequest__NOB3P2RB3_tag_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EGPRSPktChRequest__NOB3P2RB3_tag_default_coding("RAW");
const TTCN_RAWdescriptor_t EGPRSPktChRequest__NOB3P2RB3_nr__of__blocks_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EGPRSPktChRequest__NOB3P2RB3_nr__of__blocks_xer_ = { {"nr_of_blocks>\n", "nr_of_blocks>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EGPRSPktChRequest__NOB3P2RB3_nr__of__blocks_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EGPRSPktChRequest__NOB3P2RB3_nr__of__blocks_descr_ = { "@RLCMAC_CSN1_Types.EGPRSPktChRequest_NOB3P2RB3.nr_of_blocks", &BITSTRING_ber_, &EGPRSPktChRequest__NOB3P2RB3_nr__of__blocks_raw_, NULL, &EGPRSPktChRequest__NOB3P2RB3_nr__of__blocks_xer_, &BITSTRING_json_, &EGPRSPktChRequest__NOB3P2RB3_nr__of__blocks_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EGPRSPktChRequest__NOB3P2RB3_nr__of__blocks_default_coding("RAW");
const TTCN_RAWdescriptor_t EGPRSPktChRequest__NOB3P2RB3_priority_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       EGPRSPktChRequest__NOB3P2RB3_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 EGPRSPktChRequest__NOB3P2RB3_priority_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EGPRSPktChRequest__NOB3P2RB3_priority_descr_ = { "@RLCMAC_CSN1_Types.EGPRSPktChRequest_NOB3P2RB3.priority", &BITSTRING_ber_, &EGPRSPktChRequest__NOB3P2RB3_priority_raw_, NULL, &EGPRSPktChRequest__NOB3P2RB3_priority_xer_, &BITSTRING_json_, &EGPRSPktChRequest__NOB3P2RB3_priority_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EGPRSPktChRequest__NOB3P2RB3_priority_default_coding("RAW");
const TTCN_RAWdescriptor_t EGPRSPktChRequest__NOB3P2RB3_random__bits_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EGPRSPktChRequest__NOB3P2RB3_random__bits_xer_ = { {"random_bits>\n", "random_bits>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EGPRSPktChRequest__NOB3P2RB3_random__bits_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EGPRSPktChRequest__NOB3P2RB3_random__bits_descr_ = { "@RLCMAC_CSN1_Types.EGPRSPktChRequest_NOB3P2RB3.random_bits", &BITSTRING_ber_, &EGPRSPktChRequest__NOB3P2RB3_random__bits_raw_, NULL, &EGPRSPktChRequest__NOB3P2RB3_random__bits_xer_, &BITSTRING_json_, &EGPRSPktChRequest__NOB3P2RB3_random__bits_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EGPRSPktChRequest__NOB3P2RB3_random__bits_default_coding("RAW");
const TTCN_RAWdescriptor_t EGPRSPktChRequest__NOB3P2RB3_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for EGPRSPktChRequest__NOB3P2RB3
const TTCN_Typedescriptor_t EGPRSPktChRequest__NOB3P2RB3_descr_ = { "@RLCMAC_CSN1_Types.EGPRSPktChRequest_NOB3P2RB3", NULL, &EGPRSPktChRequest__NOB3P2RB3_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EGPRSPktChRequest__NOB3P2RB3_default_coding("RAW");
const TTCN_RAWdescriptor_t EGPRSPktChRequest_short__raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for EGPRSPktChRequest_short_
const TTCN_Typedescriptor_t EGPRSPktChRequest_short__descr_ = { "@RLCMAC_CSN1_Types.EGPRSPktChRequest.short", NULL, &EGPRSPktChRequest_short__raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EGPRSPktChRequest_short__default_coding("RAW");
const TTCN_RAWdescriptor_t EGPRSPktChRequest__MCG3P2RB3_tag_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EGPRSPktChRequest__MCG3P2RB3_tag_xer_ = { {"tag>\n", "tag>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EGPRSPktChRequest__MCG3P2RB3_tag_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EGPRSPktChRequest__MCG3P2RB3_tag_descr_ = { "@RLCMAC_CSN1_Types.EGPRSPktChRequest_MCG3P2RB3.tag", &BITSTRING_ber_, &EGPRSPktChRequest__MCG3P2RB3_tag_raw_, NULL, &EGPRSPktChRequest__MCG3P2RB3_tag_xer_, &BITSTRING_json_, &EGPRSPktChRequest__MCG3P2RB3_tag_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EGPRSPktChRequest__MCG3P2RB3_tag_default_coding("RAW");
const TTCN_RAWdescriptor_t EGPRSPktChRequest__MCG3P2RB3_multislot__class__group_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EGPRSPktChRequest__MCG3P2RB3_multislot__class__group_xer_ = { {"multislot_class_group>\n", "multislot_class_group>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EGPRSPktChRequest__MCG3P2RB3_multislot__class__group_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EGPRSPktChRequest__MCG3P2RB3_multislot__class__group_descr_ = { "@RLCMAC_CSN1_Types.EGPRSPktChRequest_MCG3P2RB3.multislot_class_group", &BITSTRING_ber_, &EGPRSPktChRequest__MCG3P2RB3_multislot__class__group_raw_, NULL, &EGPRSPktChRequest__MCG3P2RB3_multislot__class__group_xer_, &BITSTRING_json_, &EGPRSPktChRequest__MCG3P2RB3_multislot__class__group_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EGPRSPktChRequest__MCG3P2RB3_multislot__class__group_default_coding("RAW");
const TTCN_RAWdescriptor_t EGPRSPktChRequest__MCG3P2RB3_priority_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       EGPRSPktChRequest__MCG3P2RB3_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 EGPRSPktChRequest__MCG3P2RB3_priority_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EGPRSPktChRequest__MCG3P2RB3_priority_descr_ = { "@RLCMAC_CSN1_Types.EGPRSPktChRequest_MCG3P2RB3.priority", &BITSTRING_ber_, &EGPRSPktChRequest__MCG3P2RB3_priority_raw_, NULL, &EGPRSPktChRequest__MCG3P2RB3_priority_xer_, &BITSTRING_json_, &EGPRSPktChRequest__MCG3P2RB3_priority_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EGPRSPktChRequest__MCG3P2RB3_priority_default_coding("RAW");
const TTCN_RAWdescriptor_t EGPRSPktChRequest__MCG3P2RB3_random__bits_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EGPRSPktChRequest__MCG3P2RB3_random__bits_xer_ = { {"random_bits>\n", "random_bits>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EGPRSPktChRequest__MCG3P2RB3_random__bits_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EGPRSPktChRequest__MCG3P2RB3_random__bits_descr_ = { "@RLCMAC_CSN1_Types.EGPRSPktChRequest_MCG3P2RB3.random_bits", &BITSTRING_ber_, &EGPRSPktChRequest__MCG3P2RB3_random__bits_raw_, NULL, &EGPRSPktChRequest__MCG3P2RB3_random__bits_xer_, &BITSTRING_json_, &EGPRSPktChRequest__MCG3P2RB3_random__bits_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EGPRSPktChRequest__MCG3P2RB3_random__bits_default_coding("RAW");
const TTCN_RAWdescriptor_t EGPRSPktChRequest__MCG3P2RB3_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for EGPRSPktChRequest__MCG3P2RB3
const TTCN_Typedescriptor_t EGPRSPktChRequest__MCG3P2RB3_descr_ = { "@RLCMAC_CSN1_Types.EGPRSPktChRequest_MCG3P2RB3", NULL, &EGPRSPktChRequest__MCG3P2RB3_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EGPRSPktChRequest__MCG3P2RB3_default_coding("RAW");
const TTCN_RAWdescriptor_t EGPRSPktChRequest_one__phase__red_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for EGPRSPktChRequest_one__phase__red
const TTCN_Typedescriptor_t EGPRSPktChRequest_one__phase__red_descr_ = { "@RLCMAC_CSN1_Types.EGPRSPktChRequest.one_phase_red", NULL, &EGPRSPktChRequest_one__phase__red_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EGPRSPktChRequest_one__phase__red_default_coding("RAW");
const TTCN_RAWdescriptor_t EGPRSPktChRequest__P2RB3_tag_raw_ = {6,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,6,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       EGPRSPktChRequest__P2RB3_tag_xer_ = { {"tag>\n", "tag>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EGPRSPktChRequest__P2RB3_tag_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EGPRSPktChRequest__P2RB3_tag_descr_ = { "@RLCMAC_CSN1_Types.EGPRSPktChRequest_P2RB3.tag", &BITSTRING_ber_, &EGPRSPktChRequest__P2RB3_tag_raw_, NULL, &EGPRSPktChRequest__P2RB3_tag_xer_, &BITSTRING_json_, &EGPRSPktChRequest__P2RB3_tag_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EGPRSPktChRequest__P2RB3_tag_default_coding("RAW");
const TTCN_RAWdescriptor_t EGPRSPktChRequest__P2RB3_priority_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       EGPRSPktChRequest__P2RB3_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 EGPRSPktChRequest__P2RB3_priority_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EGPRSPktChRequest__P2RB3_priority_descr_ = { "@RLCMAC_CSN1_Types.EGPRSPktChRequest_P2RB3.priority", &BITSTRING_ber_, &EGPRSPktChRequest__P2RB3_priority_raw_, NULL, &EGPRSPktChRequest__P2RB3_priority_xer_, &BITSTRING_json_, &EGPRSPktChRequest__P2RB3_priority_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EGPRSPktChRequest__P2RB3_priority_default_coding("RAW");
const TTCN_RAWdescriptor_t EGPRSPktChRequest__P2RB3_random__bits_raw_ = {3,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EGPRSPktChRequest__P2RB3_random__bits_xer_ = { {"random_bits>\n", "random_bits>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EGPRSPktChRequest__P2RB3_random__bits_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EGPRSPktChRequest__P2RB3_random__bits_descr_ = { "@RLCMAC_CSN1_Types.EGPRSPktChRequest_P2RB3.random_bits", &BITSTRING_ber_, &EGPRSPktChRequest__P2RB3_random__bits_raw_, NULL, &EGPRSPktChRequest__P2RB3_random__bits_xer_, &BITSTRING_json_, &EGPRSPktChRequest__P2RB3_random__bits_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EGPRSPktChRequest__P2RB3_random__bits_default_coding("RAW");
const TTCN_RAWdescriptor_t EGPRSPktChRequest__P2RB3_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for EGPRSPktChRequest__P2RB3
const TTCN_Typedescriptor_t EGPRSPktChRequest__P2RB3_descr_ = { "@RLCMAC_CSN1_Types.EGPRSPktChRequest_P2RB3", NULL, &EGPRSPktChRequest__P2RB3_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EGPRSPktChRequest__P2RB3_default_coding("RAW");
const TTCN_RAWdescriptor_t EGPRSPktChRequest_two__phase_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for EGPRSPktChRequest_two__phase
const TTCN_Typedescriptor_t EGPRSPktChRequest_two__phase_descr_ = { "@RLCMAC_CSN1_Types.EGPRSPktChRequest.two_phase", NULL, &EGPRSPktChRequest_two__phase_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EGPRSPktChRequest_two__phase_default_coding("RAW");
const TTCN_RAWdescriptor_t EGPRSPktChRequest__RB5_tag_raw_ = {6,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,6,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       EGPRSPktChRequest__RB5_tag_xer_ = { {"tag>\n", "tag>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EGPRSPktChRequest__RB5_tag_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EGPRSPktChRequest__RB5_tag_descr_ = { "@RLCMAC_CSN1_Types.EGPRSPktChRequest_RB5.tag", &BITSTRING_ber_, &EGPRSPktChRequest__RB5_tag_raw_, NULL, &EGPRSPktChRequest__RB5_tag_xer_, &BITSTRING_json_, &EGPRSPktChRequest__RB5_tag_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EGPRSPktChRequest__RB5_tag_default_coding("RAW");
const TTCN_RAWdescriptor_t EGPRSPktChRequest__RB5_random__bits_raw_ = {5,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
const XERdescriptor_t       EGPRSPktChRequest__RB5_random__bits_xer_ = { {"random_bits>\n", "random_bits>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EGPRSPktChRequest__RB5_random__bits_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EGPRSPktChRequest__RB5_random__bits_descr_ = { "@RLCMAC_CSN1_Types.EGPRSPktChRequest_RB5.random_bits", &BITSTRING_ber_, &EGPRSPktChRequest__RB5_random__bits_raw_, NULL, &EGPRSPktChRequest__RB5_random__bits_xer_, &BITSTRING_json_, &EGPRSPktChRequest__RB5_random__bits_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EGPRSPktChRequest__RB5_random__bits_default_coding("RAW");
const TTCN_RAWdescriptor_t EGPRSPktChRequest__RB5_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for EGPRSPktChRequest__RB5
const TTCN_Typedescriptor_t EGPRSPktChRequest__RB5_descr_ = { "@RLCMAC_CSN1_Types.EGPRSPktChRequest_RB5", NULL, &EGPRSPktChRequest__RB5_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EGPRSPktChRequest__RB5_default_coding("RAW");
const TTCN_RAWdescriptor_t EGPRSPktChRequest_signalling_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for EGPRSPktChRequest_signalling
const TTCN_Typedescriptor_t EGPRSPktChRequest_signalling_descr_ = { "@RLCMAC_CSN1_Types.EGPRSPktChRequest.signalling", NULL, &EGPRSPktChRequest_signalling_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EGPRSPktChRequest_signalling_default_coding("RAW");
const TTCN_RAWdescriptor_t EGPRSPktChRequest_one__phase__unack_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for EGPRSPktChRequest_one__phase__unack
const TTCN_Typedescriptor_t EGPRSPktChRequest_one__phase__unack_descr_ = { "@RLCMAC_CSN1_Types.EGPRSPktChRequest.one_phase_unack", NULL, &EGPRSPktChRequest_one__phase__unack_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EGPRSPktChRequest_one__phase__unack_default_coding("RAW");
const TTCN_RAWdescriptor_t EGPRSPktChRequest_dedicated_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for EGPRSPktChRequest_dedicated
const TTCN_Typedescriptor_t EGPRSPktChRequest_dedicated_descr_ = { "@RLCMAC_CSN1_Types.EGPRSPktChRequest.dedicated", NULL, &EGPRSPktChRequest_dedicated_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EGPRSPktChRequest_dedicated_default_coding("RAW");
const TTCN_RAWdescriptor_t EGPRSPktChRequest_emergency_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for EGPRSPktChRequest_emergency
const TTCN_Typedescriptor_t EGPRSPktChRequest_emergency_descr_ = { "@RLCMAC_CSN1_Types.EGPRSPktChRequest.emergency", NULL, &EGPRSPktChRequest_emergency_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EGPRSPktChRequest_emergency_default_coding("RAW");
const TTCN_RAWdescriptor_t EGPRSPktChRequest_two__phase__ipa_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for EGPRSPktChRequest_two__phase__ipa
const TTCN_Typedescriptor_t EGPRSPktChRequest_two__phase__ipa_descr_ = { "@RLCMAC_CSN1_Types.EGPRSPktChRequest.two_phase_ipa", NULL, &EGPRSPktChRequest_two__phase__ipa_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EGPRSPktChRequest_two__phase__ipa_default_coding("RAW");
const TTCN_RAWdescriptor_t EGPRSPktChRequest_signalling__ipa_raw_ = {0,SG_NO,ORDER_MSB,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_CHAR_CODING,NULL,false};
// No XER for EGPRSPktChRequest_signalling__ipa
const TTCN_Typedescriptor_t EGPRSPktChRequest_signalling__ipa_descr_ = { "@RLCMAC_CSN1_Types.EGPRSPktChRequest.signalling_ipa", NULL, &EGPRSPktChRequest_signalling__ipa_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EGPRSPktChRequest_signalling__ipa_default_coding("RAW");
UNIVERSAL_CHARSTRING EGPRSPktChRequest_default_coding("RAW");
TTCN_Module module_object("RLCMAC_CSN1_Types", __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);

const RuntimeVersionChecker ver_checker(  current_runtime_version.requires_major_version_11,
  current_runtime_version.requires_minor_version_1,
  current_runtime_version.requires_patch_level_0,  current_runtime_version.requires_runtime_1);

/* Member functions of C++ classes */

RlcmacDlCtrlMsgType::RlcmacDlCtrlMsgType()
{
enum_value = UNBOUND_VALUE;
}

RlcmacDlCtrlMsgType::RlcmacDlCtrlMsgType(int other_value)
{
if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType with invalid numeric value %d.", other_value);
enum_value = (enum_type)other_value;
}

RlcmacDlCtrlMsgType::RlcmacDlCtrlMsgType(enum_type other_value)
{
enum_value = other_value;
}

RlcmacDlCtrlMsgType::RlcmacDlCtrlMsgType(const RlcmacDlCtrlMsgType& other_value)
: Base_Type()
{
if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType.");
enum_value = other_value.enum_value;
}

RlcmacDlCtrlMsgType& RlcmacDlCtrlMsgType::operator=(int other_value)
{
if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType.", other_value);
enum_value = (enum_type)other_value;
return *this;
}

RlcmacDlCtrlMsgType& RlcmacDlCtrlMsgType::operator=(enum_type other_value)
{
enum_value = other_value;
return *this;
}

RlcmacDlCtrlMsgType& RlcmacDlCtrlMsgType::operator=(const RlcmacDlCtrlMsgType& other_value)
{
if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType.");
enum_value = other_value.enum_value;
return *this;
}

boolean RlcmacDlCtrlMsgType::operator==(int other_value) const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType.");
if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType comparison is an unknown numeric value %d", other_value);
return enum_value == other_value;
}

boolean RlcmacDlCtrlMsgType::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 @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType.");
return enum_value == other_value;
}

boolean RlcmacDlCtrlMsgType::operator==(const RlcmacDlCtrlMsgType& other_value) const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType.");
if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType.");
return enum_value == other_value.enum_value;
}

boolean RlcmacDlCtrlMsgType::operator<(int other_value) const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType.");
if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType comparison is an unknown numeric value %d", other_value);
return enum_value < other_value;
}

boolean RlcmacDlCtrlMsgType::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 @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType.");
return enum_value < other_value;
}

boolean RlcmacDlCtrlMsgType::operator<(const RlcmacDlCtrlMsgType& other_value) const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType.");
if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType.");
return enum_value < other_value.enum_value;
}

boolean RlcmacDlCtrlMsgType::operator>(int other_value) const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType.");
if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType comparison is an unknown numeric value %d", other_value);
return enum_value > other_value;
}

boolean RlcmacDlCtrlMsgType::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 @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType.");
return enum_value > other_value;
}

boolean RlcmacDlCtrlMsgType::operator>(const RlcmacDlCtrlMsgType& other_value) const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType.");
if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType.");
return enum_value > other_value.enum_value;
}

const char *RlcmacDlCtrlMsgType::enum_to_str(enum_type enum_par)
{
switch (enum_par) {
case PACKET__ACCESS__REJECT: return "PACKET_ACCESS_REJECT";
case PACKET__CELL__CHANGE__ORDER: return "PACKET_CELL_CHANGE_ORDER";
case PACKET__DL__ASSIGNMENT: return "PACKET_DL_ASSIGNMENT";
case PACKET__MEASUREMENT__ORDER: return "PACKET_MEASUREMENT_ORDER";
case PACKET__PAGING__REQUEST: return "PACKET_PAGING_REQUEST";
case PACKET__PDCH__RELEASE: return "PACKET_PDCH_RELEASE";
case PACKET__POLLING__REQUEST: return "PACKET_POLLING_REQUEST";
case PACKET__PWR__CONTROL__TA: return "PACKET_PWR_CONTROL_TA";
case PACKET__TBF__RELEASE: return "PACKET_TBF_RELEASE";
case PACKET__UL__ACK__NACK: return "PACKET_UL_ACK_NACK";
case PACKET__UL__ASSIGNMENT: return "PACKET_UL_ASSIGNMENT";
case PACKET__CELL__CHANGE__CONTINUE: return "PACKET_CELL_CHANGE_CONTINUE";
case PACKET__NEIGHBOUR__CELL__DATA: return "PACKET_NEIGHBOUR_CELL_DATA";
case PACKET__DL__DUMMY__CTRL: return "PACKET_DL_DUMMY_CTRL";
default:
return "<unknown>";
}
}

RlcmacDlCtrlMsgType::enum_type RlcmacDlCtrlMsgType::str_to_enum(const char *str_par, const int* int_par, const int* int_par2)
{
if (int_par == NULL && int_par2 == NULL) {
if (!strcmp(str_par, "PACKET_ACCESS_REJECT")) return PACKET__ACCESS__REJECT;
if (!strcmp(str_par, "PACKET_CELL_CHANGE_ORDER")) return PACKET__CELL__CHANGE__ORDER;
if (!strcmp(str_par, "PACKET_DL_ASSIGNMENT")) return PACKET__DL__ASSIGNMENT;
if (!strcmp(str_par, "PACKET_MEASUREMENT_ORDER")) return PACKET__MEASUREMENT__ORDER;
if (!strcmp(str_par, "PACKET_PAGING_REQUEST")) return PACKET__PAGING__REQUEST;
if (!strcmp(str_par, "PACKET_PDCH_RELEASE")) return PACKET__PDCH__RELEASE;
if (!strcmp(str_par, "PACKET_POLLING_REQUEST")) return PACKET__POLLING__REQUEST;
if (!strcmp(str_par, "PACKET_PWR_CONTROL_TA")) return PACKET__PWR__CONTROL__TA;
if (!strcmp(str_par, "PACKET_TBF_RELEASE")) return PACKET__TBF__RELEASE;
if (!strcmp(str_par, "PACKET_UL_ACK_NACK")) return PACKET__UL__ACK__NACK;
if (!strcmp(str_par, "PACKET_UL_ASSIGNMENT")) return PACKET__UL__ASSIGNMENT;
if (!strcmp(str_par, "PACKET_CELL_CHANGE_CONTINUE")) return PACKET__CELL__CHANGE__CONTINUE;
if (!strcmp(str_par, "PACKET_NEIGHBOUR_CELL_DATA")) return PACKET__NEIGHBOUR__CELL__DATA;
if (!strcmp(str_par, "PACKET_DL_DUMMY_CTRL")) return PACKET__DL__DUMMY__CTRL;
}
return UNKNOWN_VALUE;
}

boolean RlcmacDlCtrlMsgType::is_valid_enum(int int_par)
{
switch (int_par) {
case 33:
case 1:
case 2:
case 3:
case 34:
case 35:
case 4:
case 5:
case 8:
case 9:
case 10:
case 11:
case 12:
case 37:
return TRUE;
default:
return FALSE;
}
}

int RlcmacDlCtrlMsgType::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 @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
return enum_par;
}

int RlcmacDlCtrlMsgType::enum2int(const RlcmacDlCtrlMsgType& 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 @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
return enum_par.enum_value;
}

void RlcmacDlCtrlMsgType::int2enum(int int_val)
{
if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType.", int_val);
enum_value = (enum_type)int_val;
}

RlcmacDlCtrlMsgType::operator RlcmacDlCtrlMsgType::enum_type() const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType.");
return enum_value;
}

void RlcmacDlCtrlMsgType::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 RlcmacDlCtrlMsgType::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", "@RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType");
  enum_value = str_to_enum(param.get_enumerated(), param.get_enumerated_value());
  if (!is_valid_enum(enum_value)) {
    param.error("Invalid enumerated value for type @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType.");
  }
}

void RlcmacDlCtrlMsgType::encode_text(Text_Buf& text_buf) const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType.");
text_buf.push_int(enum_value);
}

void RlcmacDlCtrlMsgType::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 @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType.", enum_value);
}

void RlcmacDlCtrlMsgType::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void RlcmacDlCtrlMsgType::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int RlcmacDlCtrlMsgType::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, 6, 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 RlcmacDlCtrlMsgType::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
{
  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 6);
}

void RlcmacDlCtrlMsgType_template::copy_template(const RlcmacDlCtrlMsgType_template& other_value)
{
set_selection(other_value);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value = other_value.single_value;
break;
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new RlcmacDlCtrlMsgType_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new RlcmacDlCtrlMsgType_template(*other_value.implication_.precondition);
implication_.implied_template = new RlcmacDlCtrlMsgType_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of enumerated type @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType.");
}
}

RlcmacDlCtrlMsgType_template::RlcmacDlCtrlMsgType_template()
{
}

RlcmacDlCtrlMsgType_template::RlcmacDlCtrlMsgType_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

RlcmacDlCtrlMsgType_template::RlcmacDlCtrlMsgType_template(int other_value)
 : Base_Template(SPECIFIC_VALUE)
{
if (!RlcmacDlCtrlMsgType::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType with unknown numeric value %d.", other_value);
single_value = (RlcmacDlCtrlMsgType::enum_type)other_value;
}

RlcmacDlCtrlMsgType_template::RlcmacDlCtrlMsgType_template(RlcmacDlCtrlMsgType::enum_type other_value)
 : Base_Template(SPECIFIC_VALUE)
{
single_value = other_value;
}

RlcmacDlCtrlMsgType_template::RlcmacDlCtrlMsgType_template(const RlcmacDlCtrlMsgType& other_value)
 : Base_Template(SPECIFIC_VALUE)
{
if (other_value.enum_value == RlcmacDlCtrlMsgType::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType.");
single_value = other_value.enum_value;
}

RlcmacDlCtrlMsgType_template::RlcmacDlCtrlMsgType_template(const OPTIONAL<RlcmacDlCtrlMsgType>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
set_selection(SPECIFIC_VALUE);
single_value = (RlcmacDlCtrlMsgType::enum_type)(const RlcmacDlCtrlMsgType&)other_value;
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of enumerated type @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType from an unbound optional field.");
}
}

RlcmacDlCtrlMsgType_template::RlcmacDlCtrlMsgType_template(RlcmacDlCtrlMsgType_template* p_precondition, RlcmacDlCtrlMsgType_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

RlcmacDlCtrlMsgType_template::RlcmacDlCtrlMsgType_template(Dynamic_Match_Interface<RlcmacDlCtrlMsgType>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<RlcmacDlCtrlMsgType>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

RlcmacDlCtrlMsgType_template::RlcmacDlCtrlMsgType_template(const RlcmacDlCtrlMsgType_template& other_value)
 : Base_Template()
{
copy_template(other_value);
}

RlcmacDlCtrlMsgType_template::~RlcmacDlCtrlMsgType_template()
{
clean_up();
}

boolean RlcmacDlCtrlMsgType_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
return TRUE;
}

boolean RlcmacDlCtrlMsgType_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value != RlcmacDlCtrlMsgType::UNBOUND_VALUE;
}

void RlcmacDlCtrlMsgType_template::clean_up()
{
switch (template_selection) {
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

RlcmacDlCtrlMsgType_template& RlcmacDlCtrlMsgType_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

RlcmacDlCtrlMsgType_template& RlcmacDlCtrlMsgType_template::operator=(int other_value)
{
if (!RlcmacDlCtrlMsgType::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType.", other_value);
clean_up();
set_selection(SPECIFIC_VALUE);
single_value = (RlcmacDlCtrlMsgType::enum_type)other_value;
return *this;
}

RlcmacDlCtrlMsgType_template& RlcmacDlCtrlMsgType_template::operator=(RlcmacDlCtrlMsgType::enum_type other_value)
{
clean_up();
set_selection(SPECIFIC_VALUE);
single_value = other_value;
return *this;
}

RlcmacDlCtrlMsgType_template& RlcmacDlCtrlMsgType_template::operator=(const RlcmacDlCtrlMsgType& other_value)
{
if (other_value.enum_value == RlcmacDlCtrlMsgType::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType to a template.");
clean_up();
set_selection(SPECIFIC_VALUE);
single_value = other_value.enum_value;
return *this;
}

RlcmacDlCtrlMsgType_template& RlcmacDlCtrlMsgType_template::operator=(const OPTIONAL<RlcmacDlCtrlMsgType>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
set_selection(SPECIFIC_VALUE);
single_value = (RlcmacDlCtrlMsgType::enum_type)(const RlcmacDlCtrlMsgType&)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 @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType.");
}
return *this;
}

RlcmacDlCtrlMsgType_template& RlcmacDlCtrlMsgType_template::operator=(const RlcmacDlCtrlMsgType_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean RlcmacDlCtrlMsgType_template::match(RlcmacDlCtrlMsgType::enum_type other_value, boolean) const
{
switch (template_selection) {
case SPECIFIC_VALUE:
return single_value == other_value;
case OMIT_VALUE:
return FALSE;
case ANY_VALUE:
case ANY_OR_OMIT:
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of enumerated type @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType.");
}
return FALSE;
}

boolean RlcmacDlCtrlMsgType_template::match(const RlcmacDlCtrlMsgType& other_value, boolean) const
{
if (other_value.enum_value == RlcmacDlCtrlMsgType::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType with an unbound value.");
return match(other_value.enum_value);
}

RlcmacDlCtrlMsgType::enum_type RlcmacDlCtrlMsgType_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 @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType.");
return single_value;
}

void RlcmacDlCtrlMsgType_template::set_type(template_sel template_type, unsigned int list_length)
{
clean_up();
switch (template_type) {
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new RlcmacDlCtrlMsgType_template[list_length];
break;
default:
TTCN_error("Setting an invalid type for a template of enumerated type @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType.");
}
}

RlcmacDlCtrlMsgType_template& RlcmacDlCtrlMsgType_template::list_item(unsigned int list_index)
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element in a non-list template of enumerated type @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType.");
if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType.");
return value_list.list_value[list_index];
}

void RlcmacDlCtrlMsgType_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_enum(RlcmacDlCtrlMsgType::enum_to_str(single_value), single_value);
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
if (elem_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[elem_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void RlcmacDlCtrlMsgType_template::log_match(const RlcmacDlCtrlMsgType& 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 RlcmacDlCtrlMsgType_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 @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType.");
}
}

void RlcmacDlCtrlMsgType_template::decode_text(Text_Buf& text_buf)
{
clean_up();
decode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value = (RlcmacDlCtrlMsgType::enum_type)text_buf.pull_int().get_val();
if (!RlcmacDlCtrlMsgType::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType.", 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 RlcmacDlCtrlMsgType_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 @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType.");
}
}

boolean RlcmacDlCtrlMsgType_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean RlcmacDlCtrlMsgType_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int i=0; 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 RlcmacDlCtrlMsgType_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:
  case Module_Param::MP_ConjunctList_Template: {
    RlcmacDlCtrlMsgType_template new_temp;
    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size());
    for (size_t p_i=0; p_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: {
    RlcmacDlCtrlMsgType::enum_type enum_val = RlcmacDlCtrlMsgType::str_to_enum(m_p->get_enumerated(), m_p->get_enumerated_value());
    if (!RlcmacDlCtrlMsgType::is_valid_enum(enum_val)) {
      param.error("Invalid enumerated value for type @RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType.");
    }
    *this = enum_val;
  } break;
  case Module_Param::MP_Implication_Template: {
    RlcmacDlCtrlMsgType_template* precondition = new RlcmacDlCtrlMsgType_template;
    precondition->set_param(*m_p->get_elem(0));
    RlcmacDlCtrlMsgType_template* implied_template = new RlcmacDlCtrlMsgType_template;
    implied_template->set_param(*m_p->get_elem(1));
    *this = RlcmacDlCtrlMsgType_template(precondition, implied_template);
  } break;
  default:
    param.type_error("enumerated template", "@RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType");
  }
  is_ifpresent = param.get_ifpresent();
}

void RlcmacDlCtrlMsgType_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 : "@RLCMAC_CSN1_Types.RlcmacDlCtrlMsgType");
}

RlcmacUlCtrlMsgType::RlcmacUlCtrlMsgType()
{
enum_value = UNBOUND_VALUE;
}

RlcmacUlCtrlMsgType::RlcmacUlCtrlMsgType(int other_value)
{
if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType with invalid numeric value %d.", other_value);
enum_value = (enum_type)other_value;
}

RlcmacUlCtrlMsgType::RlcmacUlCtrlMsgType(enum_type other_value)
{
enum_value = other_value;
}

RlcmacUlCtrlMsgType::RlcmacUlCtrlMsgType(const RlcmacUlCtrlMsgType& other_value)
: Base_Type()
{
if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType.");
enum_value = other_value.enum_value;
}

RlcmacUlCtrlMsgType& RlcmacUlCtrlMsgType::operator=(int other_value)
{
if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType.", other_value);
enum_value = (enum_type)other_value;
return *this;
}

RlcmacUlCtrlMsgType& RlcmacUlCtrlMsgType::operator=(enum_type other_value)
{
enum_value = other_value;
return *this;
}

RlcmacUlCtrlMsgType& RlcmacUlCtrlMsgType::operator=(const RlcmacUlCtrlMsgType& other_value)
{
if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType.");
enum_value = other_value.enum_value;
return *this;
}

boolean RlcmacUlCtrlMsgType::operator==(int other_value) const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType.");
if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType comparison is an unknown numeric value %d", other_value);
return enum_value == other_value;
}

boolean RlcmacUlCtrlMsgType::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 @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType.");
return enum_value == other_value;
}

boolean RlcmacUlCtrlMsgType::operator==(const RlcmacUlCtrlMsgType& other_value) const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType.");
if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType.");
return enum_value == other_value.enum_value;
}

boolean RlcmacUlCtrlMsgType::operator<(int other_value) const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType.");
if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType comparison is an unknown numeric value %d", other_value);
return enum_value < other_value;
}

boolean RlcmacUlCtrlMsgType::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 @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType.");
return enum_value < other_value;
}

boolean RlcmacUlCtrlMsgType::operator<(const RlcmacUlCtrlMsgType& other_value) const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType.");
if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType.");
return enum_value < other_value.enum_value;
}

boolean RlcmacUlCtrlMsgType::operator>(int other_value) const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType.");
if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType comparison is an unknown numeric value %d", other_value);
return enum_value > other_value;
}

boolean RlcmacUlCtrlMsgType::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 @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType.");
return enum_value > other_value;
}

boolean RlcmacUlCtrlMsgType::operator>(const RlcmacUlCtrlMsgType& other_value) const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType.");
if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType.");
return enum_value > other_value.enum_value;
}

const char *RlcmacUlCtrlMsgType::enum_to_str(enum_type enum_par)
{
switch (enum_par) {
case PACKET__CELL__CHANGE__FEATURE: return "PACKET_CELL_CHANGE_FEATURE";
case PACKET__CONTROL__ACK: return "PACKET_CONTROL_ACK";
case PACKET__DL__ACK__NACK: return "PACKET_DL_ACK_NACK";
case PACKET__UL__DUMMY__CTRL: return "PACKET_UL_DUMMY_CTRL";
case PACKET__MEASUREMENT__REPORT: return "PACKET_MEASUREMENT_REPORT";
case PACKET__ENH__MEASUREMENT__REPORT: return "PACKET_ENH_MEASUREMENT_REPORT";
case PACKET__RESOURCE__REQUEST: return "PACKET_RESOURCE_REQUEST";
case PACKET__MOBILE__TBF__STATUS: return "PACKET_MOBILE_TBF_STATUS";
case PACKET__PSI__STATUS: return "PACKET_PSI_STATUS";
case PACKET__EGPRS__DL__ACK__NACK: return "PACKET_EGPRS_DL_ACK_NACK";
case PACKET__PAUSE: return "PACKET_PAUSE";
case ADDITIONAL__MS__RA__CAPABILITIES: return "ADDITIONAL_MS_RA_CAPABILITIES";
case PACKET__CELL__CHANGE__NOTIFICATION: return "PACKET_CELL_CHANGE_NOTIFICATION";
case PACKET__SI__STATUS: return "PACKET_SI_STATUS";
case PACKET__CS__REQUEST: return "PACKET_CS_REQUEST";
case MBMS__SERVICE__REQUEST: return "MBMS_SERVICE_REQUEST";
case MBMS__DL__ACK__NACK: return "MBMS_DL_ACK_NACK";
default:
return "<unknown>";
}
}

RlcmacUlCtrlMsgType::enum_type RlcmacUlCtrlMsgType::str_to_enum(const char *str_par, const int* int_par, const int* int_par2)
{
if (int_par == NULL && int_par2 == NULL) {
if (!strcmp(str_par, "PACKET_CELL_CHANGE_FEATURE")) return PACKET__CELL__CHANGE__FEATURE;
if (!strcmp(str_par, "PACKET_CONTROL_ACK")) return PACKET__CONTROL__ACK;
if (!strcmp(str_par, "PACKET_DL_ACK_NACK")) return PACKET__DL__ACK__NACK;
if (!strcmp(str_par, "PACKET_UL_DUMMY_CTRL")) return PACKET__UL__DUMMY__CTRL;
if (!strcmp(str_par, "PACKET_MEASUREMENT_REPORT")) return PACKET__MEASUREMENT__REPORT;
if (!strcmp(str_par, "PACKET_ENH_MEASUREMENT_REPORT")) return PACKET__ENH__MEASUREMENT__REPORT;
if (!strcmp(str_par, "PACKET_RESOURCE_REQUEST")) return PACKET__RESOURCE__REQUEST;
if (!strcmp(str_par, "PACKET_MOBILE_TBF_STATUS")) return PACKET__MOBILE__TBF__STATUS;
if (!strcmp(str_par, "PACKET_PSI_STATUS")) return PACKET__PSI__STATUS;
if (!strcmp(str_par, "PACKET_EGPRS_DL_ACK_NACK")) return PACKET__EGPRS__DL__ACK__NACK;
if (!strcmp(str_par, "PACKET_PAUSE")) return PACKET__PAUSE;
if (!strcmp(str_par, "ADDITIONAL_MS_RA_CAPABILITIES")) return ADDITIONAL__MS__RA__CAPABILITIES;
if (!strcmp(str_par, "PACKET_CELL_CHANGE_NOTIFICATION")) return PACKET__CELL__CHANGE__NOTIFICATION;
if (!strcmp(str_par, "PACKET_SI_STATUS")) return PACKET__SI__STATUS;
if (!strcmp(str_par, "PACKET_CS_REQUEST")) return PACKET__CS__REQUEST;
if (!strcmp(str_par, "MBMS_SERVICE_REQUEST")) return MBMS__SERVICE__REQUEST;
if (!strcmp(str_par, "MBMS_DL_ACK_NACK")) return MBMS__DL__ACK__NACK;
}
return UNKNOWN_VALUE;
}

boolean RlcmacUlCtrlMsgType::is_valid_enum(int int_par)
{
switch (int_par) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 10:
case 5:
case 6:
case 7:
case 8:
case 9:
case 11:
case 12:
case 13:
case 14:
case 15:
case 16:
return TRUE;
default:
return FALSE;
}
}

int RlcmacUlCtrlMsgType::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 @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
return enum_par;
}

int RlcmacUlCtrlMsgType::enum2int(const RlcmacUlCtrlMsgType& 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 @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
return enum_par.enum_value;
}

void RlcmacUlCtrlMsgType::int2enum(int int_val)
{
if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType.", int_val);
enum_value = (enum_type)int_val;
}

RlcmacUlCtrlMsgType::operator RlcmacUlCtrlMsgType::enum_type() const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType.");
return enum_value;
}

void RlcmacUlCtrlMsgType::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 RlcmacUlCtrlMsgType::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", "@RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType");
  enum_value = str_to_enum(param.get_enumerated(), param.get_enumerated_value());
  if (!is_valid_enum(enum_value)) {
    param.error("Invalid enumerated value for type @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType.");
  }
}

void RlcmacUlCtrlMsgType::encode_text(Text_Buf& text_buf) const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType.");
text_buf.push_int(enum_value);
}

void RlcmacUlCtrlMsgType::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 @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType.", enum_value);
}

void RlcmacUlCtrlMsgType::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void RlcmacUlCtrlMsgType::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int RlcmacUlCtrlMsgType::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 RlcmacUlCtrlMsgType::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 RlcmacUlCtrlMsgType_template::copy_template(const RlcmacUlCtrlMsgType_template& other_value)
{
set_selection(other_value);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value = other_value.single_value;
break;
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new RlcmacUlCtrlMsgType_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new RlcmacUlCtrlMsgType_template(*other_value.implication_.precondition);
implication_.implied_template = new RlcmacUlCtrlMsgType_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of enumerated type @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType.");
}
}

RlcmacUlCtrlMsgType_template::RlcmacUlCtrlMsgType_template()
{
}

RlcmacUlCtrlMsgType_template::RlcmacUlCtrlMsgType_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

RlcmacUlCtrlMsgType_template::RlcmacUlCtrlMsgType_template(int other_value)
 : Base_Template(SPECIFIC_VALUE)
{
if (!RlcmacUlCtrlMsgType::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType with unknown numeric value %d.", other_value);
single_value = (RlcmacUlCtrlMsgType::enum_type)other_value;
}

RlcmacUlCtrlMsgType_template::RlcmacUlCtrlMsgType_template(RlcmacUlCtrlMsgType::enum_type other_value)
 : Base_Template(SPECIFIC_VALUE)
{
single_value = other_value;
}

RlcmacUlCtrlMsgType_template::RlcmacUlCtrlMsgType_template(const RlcmacUlCtrlMsgType& other_value)
 : Base_Template(SPECIFIC_VALUE)
{
if (other_value.enum_value == RlcmacUlCtrlMsgType::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType.");
single_value = other_value.enum_value;
}

RlcmacUlCtrlMsgType_template::RlcmacUlCtrlMsgType_template(const OPTIONAL<RlcmacUlCtrlMsgType>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
set_selection(SPECIFIC_VALUE);
single_value = (RlcmacUlCtrlMsgType::enum_type)(const RlcmacUlCtrlMsgType&)other_value;
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of enumerated type @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType from an unbound optional field.");
}
}

RlcmacUlCtrlMsgType_template::RlcmacUlCtrlMsgType_template(RlcmacUlCtrlMsgType_template* p_precondition, RlcmacUlCtrlMsgType_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

RlcmacUlCtrlMsgType_template::RlcmacUlCtrlMsgType_template(Dynamic_Match_Interface<RlcmacUlCtrlMsgType>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<RlcmacUlCtrlMsgType>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

RlcmacUlCtrlMsgType_template::RlcmacUlCtrlMsgType_template(const RlcmacUlCtrlMsgType_template& other_value)
 : Base_Template()
{
copy_template(other_value);
}

RlcmacUlCtrlMsgType_template::~RlcmacUlCtrlMsgType_template()
{
clean_up();
}

boolean RlcmacUlCtrlMsgType_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
return TRUE;
}

boolean RlcmacUlCtrlMsgType_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value != RlcmacUlCtrlMsgType::UNBOUND_VALUE;
}

void RlcmacUlCtrlMsgType_template::clean_up()
{
switch (template_selection) {
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

RlcmacUlCtrlMsgType_template& RlcmacUlCtrlMsgType_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

RlcmacUlCtrlMsgType_template& RlcmacUlCtrlMsgType_template::operator=(int other_value)
{
if (!RlcmacUlCtrlMsgType::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType.", other_value);
clean_up();
set_selection(SPECIFIC_VALUE);
single_value = (RlcmacUlCtrlMsgType::enum_type)other_value;
return *this;
}

RlcmacUlCtrlMsgType_template& RlcmacUlCtrlMsgType_template::operator=(RlcmacUlCtrlMsgType::enum_type other_value)
{
clean_up();
set_selection(SPECIFIC_VALUE);
single_value = other_value;
return *this;
}

RlcmacUlCtrlMsgType_template& RlcmacUlCtrlMsgType_template::operator=(const RlcmacUlCtrlMsgType& other_value)
{
if (other_value.enum_value == RlcmacUlCtrlMsgType::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType to a template.");
clean_up();
set_selection(SPECIFIC_VALUE);
single_value = other_value.enum_value;
return *this;
}

RlcmacUlCtrlMsgType_template& RlcmacUlCtrlMsgType_template::operator=(const OPTIONAL<RlcmacUlCtrlMsgType>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
set_selection(SPECIFIC_VALUE);
single_value = (RlcmacUlCtrlMsgType::enum_type)(const RlcmacUlCtrlMsgType&)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 @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType.");
}
return *this;
}

RlcmacUlCtrlMsgType_template& RlcmacUlCtrlMsgType_template::operator=(const RlcmacUlCtrlMsgType_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean RlcmacUlCtrlMsgType_template::match(RlcmacUlCtrlMsgType::enum_type other_value, boolean) const
{
switch (template_selection) {
case SPECIFIC_VALUE:
return single_value == other_value;
case OMIT_VALUE:
return FALSE;
case ANY_VALUE:
case ANY_OR_OMIT:
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of enumerated type @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType.");
}
return FALSE;
}

boolean RlcmacUlCtrlMsgType_template::match(const RlcmacUlCtrlMsgType& other_value, boolean) const
{
if (other_value.enum_value == RlcmacUlCtrlMsgType::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType with an unbound value.");
return match(other_value.enum_value);
}

RlcmacUlCtrlMsgType::enum_type RlcmacUlCtrlMsgType_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 @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType.");
return single_value;
}

void RlcmacUlCtrlMsgType_template::set_type(template_sel template_type, unsigned int list_length)
{
clean_up();
switch (template_type) {
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new RlcmacUlCtrlMsgType_template[list_length];
break;
default:
TTCN_error("Setting an invalid type for a template of enumerated type @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType.");
}
}

RlcmacUlCtrlMsgType_template& RlcmacUlCtrlMsgType_template::list_item(unsigned int list_index)
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element in a non-list template of enumerated type @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType.");
if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType.");
return value_list.list_value[list_index];
}

void RlcmacUlCtrlMsgType_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_enum(RlcmacUlCtrlMsgType::enum_to_str(single_value), single_value);
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
if (elem_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[elem_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void RlcmacUlCtrlMsgType_template::log_match(const RlcmacUlCtrlMsgType& 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 RlcmacUlCtrlMsgType_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 @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType.");
}
}

void RlcmacUlCtrlMsgType_template::decode_text(Text_Buf& text_buf)
{
clean_up();
decode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value = (RlcmacUlCtrlMsgType::enum_type)text_buf.pull_int().get_val();
if (!RlcmacUlCtrlMsgType::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType.", 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 RlcmacUlCtrlMsgType_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 @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType.");
}
}

boolean RlcmacUlCtrlMsgType_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean RlcmacUlCtrlMsgType_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int i=0; 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 RlcmacUlCtrlMsgType_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:
  case Module_Param::MP_ConjunctList_Template: {
    RlcmacUlCtrlMsgType_template new_temp;
    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size());
    for (size_t p_i=0; p_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: {
    RlcmacUlCtrlMsgType::enum_type enum_val = RlcmacUlCtrlMsgType::str_to_enum(m_p->get_enumerated(), m_p->get_enumerated_value());
    if (!RlcmacUlCtrlMsgType::is_valid_enum(enum_val)) {
      param.error("Invalid enumerated value for type @RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType.");
    }
    *this = enum_val;
  } break;
  case Module_Param::MP_Implication_Template: {
    RlcmacUlCtrlMsgType_template* precondition = new RlcmacUlCtrlMsgType_template;
    precondition->set_param(*m_p->get_elem(0));
    RlcmacUlCtrlMsgType_template* implied_template = new RlcmacUlCtrlMsgType_template;
    implied_template->set_param(*m_p->get_elem(1));
    *this = RlcmacUlCtrlMsgType_template(precondition, implied_template);
  } break;
  default:
    param.type_error("enumerated template", "@RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType");
  }
  is_ifpresent = param.get_ifpresent();
}

void RlcmacUlCtrlMsgType_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 : "@RLCMAC_CSN1_Types.RlcmacUlCtrlMsgType");
}

EgprsChCodingCommand::EgprsChCodingCommand()
{
enum_value = UNBOUND_VALUE;
}

EgprsChCodingCommand::EgprsChCodingCommand(int other_value)
{
if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @RLCMAC_CSN1_Types.EgprsChCodingCommand with invalid numeric value %d.", other_value);
enum_value = (enum_type)other_value;
}

EgprsChCodingCommand::EgprsChCodingCommand(enum_type other_value)
{
enum_value = other_value;
}

EgprsChCodingCommand::EgprsChCodingCommand(const EgprsChCodingCommand& other_value)
: Base_Type()
{
if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @RLCMAC_CSN1_Types.EgprsChCodingCommand.");
enum_value = other_value.enum_value;
}

EgprsChCodingCommand& EgprsChCodingCommand::operator=(int other_value)
{
if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @RLCMAC_CSN1_Types.EgprsChCodingCommand.", other_value);
enum_value = (enum_type)other_value;
return *this;
}

EgprsChCodingCommand& EgprsChCodingCommand::operator=(enum_type other_value)
{
enum_value = other_value;
return *this;
}

EgprsChCodingCommand& EgprsChCodingCommand::operator=(const EgprsChCodingCommand& other_value)
{
if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @RLCMAC_CSN1_Types.EgprsChCodingCommand.");
enum_value = other_value.enum_value;
return *this;
}

boolean EgprsChCodingCommand::operator==(int other_value) const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.EgprsChCodingCommand.");
if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RLCMAC_CSN1_Types.EgprsChCodingCommand comparison is an unknown numeric value %d", other_value);
return enum_value == other_value;
}

boolean EgprsChCodingCommand::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 @RLCMAC_CSN1_Types.EgprsChCodingCommand.");
return enum_value == other_value;
}

boolean EgprsChCodingCommand::operator==(const EgprsChCodingCommand& other_value) const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.EgprsChCodingCommand.");
if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.EgprsChCodingCommand.");
return enum_value == other_value.enum_value;
}

boolean EgprsChCodingCommand::operator<(int other_value) const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.EgprsChCodingCommand.");
if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RLCMAC_CSN1_Types.EgprsChCodingCommand comparison is an unknown numeric value %d", other_value);
return enum_value < other_value;
}

boolean EgprsChCodingCommand::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 @RLCMAC_CSN1_Types.EgprsChCodingCommand.");
return enum_value < other_value;
}

boolean EgprsChCodingCommand::operator<(const EgprsChCodingCommand& other_value) const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.EgprsChCodingCommand.");
if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.EgprsChCodingCommand.");
return enum_value < other_value.enum_value;
}

boolean EgprsChCodingCommand::operator>(int other_value) const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.EgprsChCodingCommand.");
if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RLCMAC_CSN1_Types.EgprsChCodingCommand comparison is an unknown numeric value %d", other_value);
return enum_value > other_value;
}

boolean EgprsChCodingCommand::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 @RLCMAC_CSN1_Types.EgprsChCodingCommand.");
return enum_value > other_value;
}

boolean EgprsChCodingCommand::operator>(const EgprsChCodingCommand& other_value) const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.EgprsChCodingCommand.");
if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.EgprsChCodingCommand.");
return enum_value > other_value.enum_value;
}

const char *EgprsChCodingCommand::enum_to_str(enum_type enum_par)
{
switch (enum_par) {
case CH__CODING__MCS1: return "CH_CODING_MCS1";
case CH__CODING__MCS2: return "CH_CODING_MCS2";
case CH__CODING__MCS3: return "CH_CODING_MCS3";
case CH__CODING__MCS4: return "CH_CODING_MCS4";
case CH__CODING__MCS5: return "CH_CODING_MCS5";
case CH__CODING__MCS6: return "CH_CODING_MCS6";
case CH__CODING__MCS7: return "CH_CODING_MCS7";
case CH__CODING__MCS8: return "CH_CODING_MCS8";
case CH__CODING__MCS9: return "CH_CODING_MCS9";
case CH__CODING__MCS5__7: return "CH_CODING_MCS5_7";
case CH__CODING__MCS6__9: return "CH_CODING_MCS6_9";
default:
return "<unknown>";
}
}

EgprsChCodingCommand::enum_type EgprsChCodingCommand::str_to_enum(const char *str_par, const int* int_par, const int* int_par2)
{
if (int_par == NULL && int_par2 == NULL) {
if (!strcmp(str_par, "CH_CODING_MCS1")) return CH__CODING__MCS1;
if (!strcmp(str_par, "CH_CODING_MCS2")) return CH__CODING__MCS2;
if (!strcmp(str_par, "CH_CODING_MCS3")) return CH__CODING__MCS3;
if (!strcmp(str_par, "CH_CODING_MCS4")) return CH__CODING__MCS4;
if (!strcmp(str_par, "CH_CODING_MCS5")) return CH__CODING__MCS5;
if (!strcmp(str_par, "CH_CODING_MCS6")) return CH__CODING__MCS6;
if (!strcmp(str_par, "CH_CODING_MCS7")) return CH__CODING__MCS7;
if (!strcmp(str_par, "CH_CODING_MCS8")) return CH__CODING__MCS8;
if (!strcmp(str_par, "CH_CODING_MCS9")) return CH__CODING__MCS9;
if (!strcmp(str_par, "CH_CODING_MCS5_7")) return CH__CODING__MCS5__7;
if (!strcmp(str_par, "CH_CODING_MCS6_9")) return CH__CODING__MCS6__9;
}
return UNKNOWN_VALUE;
}

boolean EgprsChCodingCommand::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:
return TRUE;
default:
return FALSE;
}
}

int EgprsChCodingCommand::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 @RLCMAC_CSN1_Types.EgprsChCodingCommand.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
return enum_par;
}

int EgprsChCodingCommand::enum2int(const EgprsChCodingCommand& 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 @RLCMAC_CSN1_Types.EgprsChCodingCommand.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
return enum_par.enum_value;
}

void EgprsChCodingCommand::int2enum(int int_val)
{
if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @RLCMAC_CSN1_Types.EgprsChCodingCommand.", int_val);
enum_value = (enum_type)int_val;
}

EgprsChCodingCommand::operator EgprsChCodingCommand::enum_type() const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @RLCMAC_CSN1_Types.EgprsChCodingCommand.");
return enum_value;
}

void EgprsChCodingCommand::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 EgprsChCodingCommand::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", "@RLCMAC_CSN1_Types.EgprsChCodingCommand");
  enum_value = str_to_enum(param.get_enumerated(), param.get_enumerated_value());
  if (!is_valid_enum(enum_value)) {
    param.error("Invalid enumerated value for type @RLCMAC_CSN1_Types.EgprsChCodingCommand.");
  }
}

void EgprsChCodingCommand::encode_text(Text_Buf& text_buf) const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @RLCMAC_CSN1_Types.EgprsChCodingCommand.");
text_buf.push_int(enum_value);
}

void EgprsChCodingCommand::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 @RLCMAC_CSN1_Types.EgprsChCodingCommand.", enum_value);
}

void EgprsChCodingCommand::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void EgprsChCodingCommand::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int EgprsChCodingCommand::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, 4, 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 EgprsChCodingCommand::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
{
  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 4);
}

void EgprsChCodingCommand_template::copy_template(const EgprsChCodingCommand_template& other_value)
{
set_selection(other_value);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value = other_value.single_value;
break;
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new EgprsChCodingCommand_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new EgprsChCodingCommand_template(*other_value.implication_.precondition);
implication_.implied_template = new EgprsChCodingCommand_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of enumerated type @RLCMAC_CSN1_Types.EgprsChCodingCommand.");
}
}

EgprsChCodingCommand_template::EgprsChCodingCommand_template()
{
}

EgprsChCodingCommand_template::EgprsChCodingCommand_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

EgprsChCodingCommand_template::EgprsChCodingCommand_template(int other_value)
 : Base_Template(SPECIFIC_VALUE)
{
if (!EgprsChCodingCommand::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @RLCMAC_CSN1_Types.EgprsChCodingCommand with unknown numeric value %d.", other_value);
single_value = (EgprsChCodingCommand::enum_type)other_value;
}

EgprsChCodingCommand_template::EgprsChCodingCommand_template(EgprsChCodingCommand::enum_type other_value)
 : Base_Template(SPECIFIC_VALUE)
{
single_value = other_value;
}

EgprsChCodingCommand_template::EgprsChCodingCommand_template(const EgprsChCodingCommand& other_value)
 : Base_Template(SPECIFIC_VALUE)
{
if (other_value.enum_value == EgprsChCodingCommand::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @RLCMAC_CSN1_Types.EgprsChCodingCommand.");
single_value = other_value.enum_value;
}

EgprsChCodingCommand_template::EgprsChCodingCommand_template(const OPTIONAL<EgprsChCodingCommand>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
set_selection(SPECIFIC_VALUE);
single_value = (EgprsChCodingCommand::enum_type)(const EgprsChCodingCommand&)other_value;
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of enumerated type @RLCMAC_CSN1_Types.EgprsChCodingCommand from an unbound optional field.");
}
}

EgprsChCodingCommand_template::EgprsChCodingCommand_template(EgprsChCodingCommand_template* p_precondition, EgprsChCodingCommand_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

EgprsChCodingCommand_template::EgprsChCodingCommand_template(Dynamic_Match_Interface<EgprsChCodingCommand>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<EgprsChCodingCommand>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

EgprsChCodingCommand_template::EgprsChCodingCommand_template(const EgprsChCodingCommand_template& other_value)
 : Base_Template()
{
copy_template(other_value);
}

EgprsChCodingCommand_template::~EgprsChCodingCommand_template()
{
clean_up();
}

boolean EgprsChCodingCommand_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
return TRUE;
}

boolean EgprsChCodingCommand_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value != EgprsChCodingCommand::UNBOUND_VALUE;
}

void EgprsChCodingCommand_template::clean_up()
{
switch (template_selection) {
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

EgprsChCodingCommand_template& EgprsChCodingCommand_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

EgprsChCodingCommand_template& EgprsChCodingCommand_template::operator=(int other_value)
{
if (!EgprsChCodingCommand::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @RLCMAC_CSN1_Types.EgprsChCodingCommand.", other_value);
clean_up();
set_selection(SPECIFIC_VALUE);
single_value = (EgprsChCodingCommand::enum_type)other_value;
return *this;
}

EgprsChCodingCommand_template& EgprsChCodingCommand_template::operator=(EgprsChCodingCommand::enum_type other_value)
{
clean_up();
set_selection(SPECIFIC_VALUE);
single_value = other_value;
return *this;
}

EgprsChCodingCommand_template& EgprsChCodingCommand_template::operator=(const EgprsChCodingCommand& other_value)
{
if (other_value.enum_value == EgprsChCodingCommand::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @RLCMAC_CSN1_Types.EgprsChCodingCommand to a template.");
clean_up();
set_selection(SPECIFIC_VALUE);
single_value = other_value.enum_value;
return *this;
}

EgprsChCodingCommand_template& EgprsChCodingCommand_template::operator=(const OPTIONAL<EgprsChCodingCommand>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
set_selection(SPECIFIC_VALUE);
single_value = (EgprsChCodingCommand::enum_type)(const EgprsChCodingCommand&)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 @RLCMAC_CSN1_Types.EgprsChCodingCommand.");
}
return *this;
}

EgprsChCodingCommand_template& EgprsChCodingCommand_template::operator=(const EgprsChCodingCommand_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean EgprsChCodingCommand_template::match(EgprsChCodingCommand::enum_type other_value, boolean) const
{
switch (template_selection) {
case SPECIFIC_VALUE:
return single_value == other_value;
case OMIT_VALUE:
return FALSE;
case ANY_VALUE:
case ANY_OR_OMIT:
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of enumerated type @RLCMAC_CSN1_Types.EgprsChCodingCommand.");
}
return FALSE;
}

boolean EgprsChCodingCommand_template::match(const EgprsChCodingCommand& other_value, boolean) const
{
if (other_value.enum_value == EgprsChCodingCommand::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @RLCMAC_CSN1_Types.EgprsChCodingCommand with an unbound value.");
return match(other_value.enum_value);
}

EgprsChCodingCommand::enum_type EgprsChCodingCommand_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 @RLCMAC_CSN1_Types.EgprsChCodingCommand.");
return single_value;
}

void EgprsChCodingCommand_template::set_type(template_sel template_type, unsigned int list_length)
{
clean_up();
switch (template_type) {
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new EgprsChCodingCommand_template[list_length];
break;
default:
TTCN_error("Setting an invalid type for a template of enumerated type @RLCMAC_CSN1_Types.EgprsChCodingCommand.");
}
}

EgprsChCodingCommand_template& EgprsChCodingCommand_template::list_item(unsigned int list_index)
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element in a non-list template of enumerated type @RLCMAC_CSN1_Types.EgprsChCodingCommand.");
if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @RLCMAC_CSN1_Types.EgprsChCodingCommand.");
return value_list.list_value[list_index];
}

void EgprsChCodingCommand_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_enum(EgprsChCodingCommand::enum_to_str(single_value), single_value);
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
if (elem_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[elem_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void EgprsChCodingCommand_template::log_match(const EgprsChCodingCommand& 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 EgprsChCodingCommand_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 @RLCMAC_CSN1_Types.EgprsChCodingCommand.");
}
}

void EgprsChCodingCommand_template::decode_text(Text_Buf& text_buf)
{
clean_up();
decode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value = (EgprsChCodingCommand::enum_type)text_buf.pull_int().get_val();
if (!EgprsChCodingCommand::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @RLCMAC_CSN1_Types.EgprsChCodingCommand.", 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 EgprsChCodingCommand_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 @RLCMAC_CSN1_Types.EgprsChCodingCommand.");
}
}

boolean EgprsChCodingCommand_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean EgprsChCodingCommand_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int i=0; 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 EgprsChCodingCommand_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:
  case Module_Param::MP_ConjunctList_Template: {
    EgprsChCodingCommand_template new_temp;
    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size());
    for (size_t p_i=0; p_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: {
    EgprsChCodingCommand::enum_type enum_val = EgprsChCodingCommand::str_to_enum(m_p->get_enumerated(), m_p->get_enumerated_value());
    if (!EgprsChCodingCommand::is_valid_enum(enum_val)) {
      param.error("Invalid enumerated value for type @RLCMAC_CSN1_Types.EgprsChCodingCommand.");
    }
    *this = enum_val;
  } break;
  case Module_Param::MP_Implication_Template: {
    EgprsChCodingCommand_template* precondition = new EgprsChCodingCommand_template;
    precondition->set_param(*m_p->get_elem(0));
    EgprsChCodingCommand_template* implied_template = new EgprsChCodingCommand_template;
    implied_template->set_param(*m_p->get_elem(1));
    *this = EgprsChCodingCommand_template(precondition, implied_template);
  } break;
  default:
    param.type_error("enumerated template", "@RLCMAC_CSN1_Types.EgprsChCodingCommand");
  }
  is_ifpresent = param.get_ifpresent();
}

void EgprsChCodingCommand_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 : "@RLCMAC_CSN1_Types.EgprsChCodingCommand");
}

EgprsWindowSize::EgprsWindowSize()
{
enum_value = UNBOUND_VALUE;
}

EgprsWindowSize::EgprsWindowSize(int other_value)
{
if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @RLCMAC_CSN1_Types.EgprsWindowSize with invalid numeric value %d.", other_value);
enum_value = (enum_type)other_value;
}

EgprsWindowSize::EgprsWindowSize(enum_type other_value)
{
enum_value = other_value;
}

EgprsWindowSize::EgprsWindowSize(const EgprsWindowSize& other_value)
: Base_Type()
{
if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @RLCMAC_CSN1_Types.EgprsWindowSize.");
enum_value = other_value.enum_value;
}

EgprsWindowSize& EgprsWindowSize::operator=(int other_value)
{
if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @RLCMAC_CSN1_Types.EgprsWindowSize.", other_value);
enum_value = (enum_type)other_value;
return *this;
}

EgprsWindowSize& EgprsWindowSize::operator=(enum_type other_value)
{
enum_value = other_value;
return *this;
}

EgprsWindowSize& EgprsWindowSize::operator=(const EgprsWindowSize& other_value)
{
if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @RLCMAC_CSN1_Types.EgprsWindowSize.");
enum_value = other_value.enum_value;
return *this;
}

boolean EgprsWindowSize::operator==(int other_value) const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.EgprsWindowSize.");
if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RLCMAC_CSN1_Types.EgprsWindowSize comparison is an unknown numeric value %d", other_value);
return enum_value == other_value;
}

boolean EgprsWindowSize::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 @RLCMAC_CSN1_Types.EgprsWindowSize.");
return enum_value == other_value;
}

boolean EgprsWindowSize::operator==(const EgprsWindowSize& other_value) const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.EgprsWindowSize.");
if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.EgprsWindowSize.");
return enum_value == other_value.enum_value;
}

boolean EgprsWindowSize::operator<(int other_value) const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.EgprsWindowSize.");
if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RLCMAC_CSN1_Types.EgprsWindowSize comparison is an unknown numeric value %d", other_value);
return enum_value < other_value;
}

boolean EgprsWindowSize::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 @RLCMAC_CSN1_Types.EgprsWindowSize.");
return enum_value < other_value;
}

boolean EgprsWindowSize::operator<(const EgprsWindowSize& other_value) const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.EgprsWindowSize.");
if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.EgprsWindowSize.");
return enum_value < other_value.enum_value;
}

boolean EgprsWindowSize::operator>(int other_value) const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.EgprsWindowSize.");
if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RLCMAC_CSN1_Types.EgprsWindowSize comparison is an unknown numeric value %d", other_value);
return enum_value > other_value;
}

boolean EgprsWindowSize::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 @RLCMAC_CSN1_Types.EgprsWindowSize.");
return enum_value > other_value;
}

boolean EgprsWindowSize::operator>(const EgprsWindowSize& other_value) const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.EgprsWindowSize.");
if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.EgprsWindowSize.");
return enum_value > other_value.enum_value;
}

const char *EgprsWindowSize::enum_to_str(enum_type enum_par)
{
switch (enum_par) {
case EGPRS__WS__64: return "EGPRS_WS_64";
case EGPRS__WS__96: return "EGPRS_WS_96";
case EGPRS__WS__128: return "EGPRS_WS_128";
case EGPRS__WS__160: return "EGPRS_WS_160";
case EGPRS__WS__192: return "EGPRS_WS_192";
case EGPRS__WS__224: return "EGPRS_WS_224";
case EGPRS__WS__256: return "EGPRS_WS_256";
case EGPRS__WS__288: return "EGPRS_WS_288";
case EGPRS__WS__320: return "EGPRS_WS_320";
case EGPRS__WS__352: return "EGPRS_WS_352";
case EGPRS__WS__384: return "EGPRS_WS_384";
case EGPRS__WS__416: return "EGPRS_WS_416";
case EGPRS__WS__448: return "EGPRS_WS_448";
case EGPRS__WS__480: return "EGPRS_WS_480";
case EGPRS__WS__512: return "EGPRS_WS_512";
case EGPRS__WS__544: return "EGPRS_WS_544";
case EGPRS__WS__576: return "EGPRS_WS_576";
case EGPRS__WS__608: return "EGPRS_WS_608";
case EGPRS__WS__640: return "EGPRS_WS_640";
case EGPRS__WS__672: return "EGPRS_WS_672";
case EGPRS__WS__704: return "EGPRS_WS_704";
case EGPRS__WS__736: return "EGPRS_WS_736";
case EGPRS__WS__768: return "EGPRS_WS_768";
case EGPRS__WS__800: return "EGPRS_WS_800";
case EGPRS__WS__832: return "EGPRS_WS_832";
case EGPRS__WS__864: return "EGPRS_WS_864";
case EGPRS__WS__896: return "EGPRS_WS_896";
case EGPRS__WS__928: return "EGPRS_WS_928";
case EGPRS__WS__960: return "EGPRS_WS_960";
case EGPRS__WS__992: return "EGPRS_WS_992";
case EGPRS__WS__1024: return "EGPRS_WS_1024";
default:
return "<unknown>";
}
}

EgprsWindowSize::enum_type EgprsWindowSize::str_to_enum(const char *str_par, const int* int_par, const int* int_par2)
{
if (int_par == NULL && int_par2 == NULL) {
if (!strcmp(str_par, "EGPRS_WS_64")) return EGPRS__WS__64;
if (!strcmp(str_par, "EGPRS_WS_96")) return EGPRS__WS__96;
if (!strcmp(str_par, "EGPRS_WS_128")) return EGPRS__WS__128;
if (!strcmp(str_par, "EGPRS_WS_160")) return EGPRS__WS__160;
if (!strcmp(str_par, "EGPRS_WS_192")) return EGPRS__WS__192;
if (!strcmp(str_par, "EGPRS_WS_224")) return EGPRS__WS__224;
if (!strcmp(str_par, "EGPRS_WS_256")) return EGPRS__WS__256;
if (!strcmp(str_par, "EGPRS_WS_288")) return EGPRS__WS__288;
if (!strcmp(str_par, "EGPRS_WS_320")) return EGPRS__WS__320;
if (!strcmp(str_par, "EGPRS_WS_352")) return EGPRS__WS__352;
if (!strcmp(str_par, "EGPRS_WS_384")) return EGPRS__WS__384;
if (!strcmp(str_par, "EGPRS_WS_416")) return EGPRS__WS__416;
if (!strcmp(str_par, "EGPRS_WS_448")) return EGPRS__WS__448;
if (!strcmp(str_par, "EGPRS_WS_480")) return EGPRS__WS__480;
if (!strcmp(str_par, "EGPRS_WS_512")) return EGPRS__WS__512;
if (!strcmp(str_par, "EGPRS_WS_544")) return EGPRS__WS__544;
if (!strcmp(str_par, "EGPRS_WS_576")) return EGPRS__WS__576;
if (!strcmp(str_par, "EGPRS_WS_608")) return EGPRS__WS__608;
if (!strcmp(str_par, "EGPRS_WS_640")) return EGPRS__WS__640;
if (!strcmp(str_par, "EGPRS_WS_672")) return EGPRS__WS__672;
if (!strcmp(str_par, "EGPRS_WS_704")) return EGPRS__WS__704;
if (!strcmp(str_par, "EGPRS_WS_736")) return EGPRS__WS__736;
if (!strcmp(str_par, "EGPRS_WS_768")) return EGPRS__WS__768;
if (!strcmp(str_par, "EGPRS_WS_800")) return EGPRS__WS__800;
if (!strcmp(str_par, "EGPRS_WS_832")) return EGPRS__WS__832;
if (!strcmp(str_par, "EGPRS_WS_864")) return EGPRS__WS__864;
if (!strcmp(str_par, "EGPRS_WS_896")) return EGPRS__WS__896;
if (!strcmp(str_par, "EGPRS_WS_928")) return EGPRS__WS__928;
if (!strcmp(str_par, "EGPRS_WS_960")) return EGPRS__WS__960;
if (!strcmp(str_par, "EGPRS_WS_992")) return EGPRS__WS__992;
if (!strcmp(str_par, "EGPRS_WS_1024")) return EGPRS__WS__1024;
}
return UNKNOWN_VALUE;
}

boolean EgprsWindowSize::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 17:
case 18:
case 19:
case 20:
case 21:
case 22:
case 23:
case 24:
case 25:
case 26:
case 27:
case 28:
case 29:
case 30:
return TRUE;
default:
return FALSE;
}
}

int EgprsWindowSize::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 @RLCMAC_CSN1_Types.EgprsWindowSize.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
return enum_par;
}

int EgprsWindowSize::enum2int(const EgprsWindowSize& 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 @RLCMAC_CSN1_Types.EgprsWindowSize.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
return enum_par.enum_value;
}

void EgprsWindowSize::int2enum(int int_val)
{
if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @RLCMAC_CSN1_Types.EgprsWindowSize.", int_val);
enum_value = (enum_type)int_val;
}

EgprsWindowSize::operator EgprsWindowSize::enum_type() const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @RLCMAC_CSN1_Types.EgprsWindowSize.");
return enum_value;
}

void EgprsWindowSize::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 EgprsWindowSize::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", "@RLCMAC_CSN1_Types.EgprsWindowSize");
  enum_value = str_to_enum(param.get_enumerated(), param.get_enumerated_value());
  if (!is_valid_enum(enum_value)) {
    param.error("Invalid enumerated value for type @RLCMAC_CSN1_Types.EgprsWindowSize.");
  }
}

void EgprsWindowSize::encode_text(Text_Buf& text_buf) const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @RLCMAC_CSN1_Types.EgprsWindowSize.");
text_buf.push_int(enum_value);
}

void EgprsWindowSize::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 @RLCMAC_CSN1_Types.EgprsWindowSize.", enum_value);
}

void EgprsWindowSize::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void EgprsWindowSize::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int EgprsWindowSize::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 EgprsWindowSize::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 EgprsWindowSize_template::copy_template(const EgprsWindowSize_template& other_value)
{
set_selection(other_value);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value = other_value.single_value;
break;
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new EgprsWindowSize_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new EgprsWindowSize_template(*other_value.implication_.precondition);
implication_.implied_template = new EgprsWindowSize_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of enumerated type @RLCMAC_CSN1_Types.EgprsWindowSize.");
}
}

EgprsWindowSize_template::EgprsWindowSize_template()
{
}

EgprsWindowSize_template::EgprsWindowSize_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

EgprsWindowSize_template::EgprsWindowSize_template(int other_value)
 : Base_Template(SPECIFIC_VALUE)
{
if (!EgprsWindowSize::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @RLCMAC_CSN1_Types.EgprsWindowSize with unknown numeric value %d.", other_value);
single_value = (EgprsWindowSize::enum_type)other_value;
}

EgprsWindowSize_template::EgprsWindowSize_template(EgprsWindowSize::enum_type other_value)
 : Base_Template(SPECIFIC_VALUE)
{
single_value = other_value;
}

EgprsWindowSize_template::EgprsWindowSize_template(const EgprsWindowSize& other_value)
 : Base_Template(SPECIFIC_VALUE)
{
if (other_value.enum_value == EgprsWindowSize::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @RLCMAC_CSN1_Types.EgprsWindowSize.");
single_value = other_value.enum_value;
}

EgprsWindowSize_template::EgprsWindowSize_template(const OPTIONAL<EgprsWindowSize>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
set_selection(SPECIFIC_VALUE);
single_value = (EgprsWindowSize::enum_type)(const EgprsWindowSize&)other_value;
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of enumerated type @RLCMAC_CSN1_Types.EgprsWindowSize from an unbound optional field.");
}
}

EgprsWindowSize_template::EgprsWindowSize_template(EgprsWindowSize_template* p_precondition, EgprsWindowSize_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

EgprsWindowSize_template::EgprsWindowSize_template(Dynamic_Match_Interface<EgprsWindowSize>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<EgprsWindowSize>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

EgprsWindowSize_template::EgprsWindowSize_template(const EgprsWindowSize_template& other_value)
 : Base_Template()
{
copy_template(other_value);
}

EgprsWindowSize_template::~EgprsWindowSize_template()
{
clean_up();
}

boolean EgprsWindowSize_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
return TRUE;
}

boolean EgprsWindowSize_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value != EgprsWindowSize::UNBOUND_VALUE;
}

void EgprsWindowSize_template::clean_up()
{
switch (template_selection) {
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

EgprsWindowSize_template& EgprsWindowSize_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

EgprsWindowSize_template& EgprsWindowSize_template::operator=(int other_value)
{
if (!EgprsWindowSize::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @RLCMAC_CSN1_Types.EgprsWindowSize.", other_value);
clean_up();
set_selection(SPECIFIC_VALUE);
single_value = (EgprsWindowSize::enum_type)other_value;
return *this;
}

EgprsWindowSize_template& EgprsWindowSize_template::operator=(EgprsWindowSize::enum_type other_value)
{
clean_up();
set_selection(SPECIFIC_VALUE);
single_value = other_value;
return *this;
}

EgprsWindowSize_template& EgprsWindowSize_template::operator=(const EgprsWindowSize& other_value)
{
if (other_value.enum_value == EgprsWindowSize::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @RLCMAC_CSN1_Types.EgprsWindowSize to a template.");
clean_up();
set_selection(SPECIFIC_VALUE);
single_value = other_value.enum_value;
return *this;
}

EgprsWindowSize_template& EgprsWindowSize_template::operator=(const OPTIONAL<EgprsWindowSize>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
set_selection(SPECIFIC_VALUE);
single_value = (EgprsWindowSize::enum_type)(const EgprsWindowSize&)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 @RLCMAC_CSN1_Types.EgprsWindowSize.");
}
return *this;
}

EgprsWindowSize_template& EgprsWindowSize_template::operator=(const EgprsWindowSize_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean EgprsWindowSize_template::match(EgprsWindowSize::enum_type other_value, boolean) const
{
switch (template_selection) {
case SPECIFIC_VALUE:
return single_value == other_value;
case OMIT_VALUE:
return FALSE;
case ANY_VALUE:
case ANY_OR_OMIT:
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of enumerated type @RLCMAC_CSN1_Types.EgprsWindowSize.");
}
return FALSE;
}

boolean EgprsWindowSize_template::match(const EgprsWindowSize& other_value, boolean) const
{
if (other_value.enum_value == EgprsWindowSize::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @RLCMAC_CSN1_Types.EgprsWindowSize with an unbound value.");
return match(other_value.enum_value);
}

EgprsWindowSize::enum_type EgprsWindowSize_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 @RLCMAC_CSN1_Types.EgprsWindowSize.");
return single_value;
}

void EgprsWindowSize_template::set_type(template_sel template_type, unsigned int list_length)
{
clean_up();
switch (template_type) {
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new EgprsWindowSize_template[list_length];
break;
default:
TTCN_error("Setting an invalid type for a template of enumerated type @RLCMAC_CSN1_Types.EgprsWindowSize.");
}
}

EgprsWindowSize_template& EgprsWindowSize_template::list_item(unsigned int list_index)
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element in a non-list template of enumerated type @RLCMAC_CSN1_Types.EgprsWindowSize.");
if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @RLCMAC_CSN1_Types.EgprsWindowSize.");
return value_list.list_value[list_index];
}

void EgprsWindowSize_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_enum(EgprsWindowSize::enum_to_str(single_value), single_value);
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
if (elem_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[elem_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void EgprsWindowSize_template::log_match(const EgprsWindowSize& 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 EgprsWindowSize_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 @RLCMAC_CSN1_Types.EgprsWindowSize.");
}
}

void EgprsWindowSize_template::decode_text(Text_Buf& text_buf)
{
clean_up();
decode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value = (EgprsWindowSize::enum_type)text_buf.pull_int().get_val();
if (!EgprsWindowSize::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @RLCMAC_CSN1_Types.EgprsWindowSize.", 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 EgprsWindowSize_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 @RLCMAC_CSN1_Types.EgprsWindowSize.");
}
}

boolean EgprsWindowSize_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean EgprsWindowSize_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int i=0; 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 EgprsWindowSize_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:
  case Module_Param::MP_ConjunctList_Template: {
    EgprsWindowSize_template new_temp;
    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size());
    for (size_t p_i=0; p_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: {
    EgprsWindowSize::enum_type enum_val = EgprsWindowSize::str_to_enum(m_p->get_enumerated(), m_p->get_enumerated_value());
    if (!EgprsWindowSize::is_valid_enum(enum_val)) {
      param.error("Invalid enumerated value for type @RLCMAC_CSN1_Types.EgprsWindowSize.");
    }
    *this = enum_val;
  } break;
  case Module_Param::MP_Implication_Template: {
    EgprsWindowSize_template* precondition = new EgprsWindowSize_template;
    precondition->set_param(*m_p->get_elem(0));
    EgprsWindowSize_template* implied_template = new EgprsWindowSize_template;
    implied_template->set_param(*m_p->get_elem(1));
    *this = EgprsWindowSize_template(precondition, implied_template);
  } break;
  default:
    param.type_error("enumerated template", "@RLCMAC_CSN1_Types.EgprsWindowSize");
  }
  is_ifpresent = param.get_ifpresent();
}

void EgprsWindowSize_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 : "@RLCMAC_CSN1_Types.EgprsWindowSize");
}

GlobalTfi::GlobalTfi()
{
}

GlobalTfi::GlobalTfi(const BOOLEAN& par_is__dl__tfi,
    const INTEGER& par_tfi)
  :   field_is__dl__tfi(par_is__dl__tfi),
  field_tfi(par_tfi)
{
}

GlobalTfi::GlobalTfi(const GlobalTfi& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RLCMAC_CSN1_Types.GlobalTfi.");
if (other_value.is__dl__tfi().is_bound()) field_is__dl__tfi = other_value.is__dl__tfi();
else field_is__dl__tfi.clean_up();
if (other_value.tfi().is_bound()) field_tfi = other_value.tfi();
else field_tfi.clean_up();
}

void GlobalTfi::clean_up()
{
field_is__dl__tfi.clean_up();
field_tfi.clean_up();
}

const TTCN_Typedescriptor_t* GlobalTfi::get_descriptor() const { return &GlobalTfi_descr_; }
GlobalTfi& GlobalTfi::operator=(const GlobalTfi& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RLCMAC_CSN1_Types.GlobalTfi.");
  if (other_value.is__dl__tfi().is_bound()) field_is__dl__tfi = other_value.is__dl__tfi();
  else field_is__dl__tfi.clean_up();
  if (other_value.tfi().is_bound()) field_tfi = other_value.tfi();
  else field_tfi.clean_up();
}
return *this;
}

boolean GlobalTfi::operator==(const GlobalTfi& other_value) const
{
return field_is__dl__tfi==other_value.field_is__dl__tfi
  && field_tfi==other_value.field_tfi;
}

boolean GlobalTfi::is_bound() const
{
return (field_is__dl__tfi.is_bound())
  || (field_tfi.is_bound());
}
boolean GlobalTfi::is_value() const
{
return field_is__dl__tfi.is_value()
  && field_tfi.is_value();
}
void GlobalTfi::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ is_dl_tfi := ");
field_is__dl__tfi.log();
TTCN_Logger::log_event_str(", tfi := ");
field_tfi.log();
TTCN_Logger::log_event_str(" }");
}

void GlobalTfi::set_implicit_omit()
{
if (is__dl__tfi().is_bound()) is__dl__tfi().set_implicit_omit();
if (tfi().is_bound()) tfi().set_implicit_omit();
}

void GlobalTfi::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 @RLCMAC_CSN1_Types.GlobalTfi 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) is__dl__tfi().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) tfi().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(), "is_dl_tfi")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          is__dl__tfi().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "tfi")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          tfi().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 @RLCMAC_CSN1_Types.GlobalTfi: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@RLCMAC_CSN1_Types.GlobalTfi");
  }
}

void GlobalTfi::encode_text(Text_Buf& text_buf) const
{
field_is__dl__tfi.encode_text(text_buf);
field_tfi.encode_text(text_buf);
}

void GlobalTfi::decode_text(Text_Buf& text_buf)
{
field_is__dl__tfi.decode_text(text_buf);
field_tfi.decode_text(text_buf);
}

void GlobalTfi::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void GlobalTfi::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int GlobalTfi::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, GlobalTfi_is__dl__tfi_descr_.raw->forceomit);
  decoded_field_length = field_is__dl__tfi.RAW_decode(GlobalTfi_is__dl__tfi_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, GlobalTfi_tfi_descr_.raw->forceomit);
  decoded_field_length = field_tfi.RAW_decode(GlobalTfi_tfi_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 GlobalTfi::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, GlobalTfi_is__dl__tfi_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, GlobalTfi_tfi_descr_.raw);
  encoded_length += field_is__dl__tfi.RAW_encode(GlobalTfi_is__dl__tfi_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_tfi.RAW_encode(GlobalTfi_tfi_descr_, *myleaf.body.node.nodes[1]);
  return myleaf.length = encoded_length;
}

struct GlobalTfi_template::single_value_struct {
BOOLEAN_template field_is__dl__tfi;
INTEGER_template field_tfi;
};

void GlobalTfi_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_is__dl__tfi = ANY_VALUE;
single_value->field_tfi = ANY_VALUE;
}
}
}

void GlobalTfi_template::copy_value(const GlobalTfi& other_value)
{
single_value = new single_value_struct;
if (other_value.is__dl__tfi().is_bound()) {
  single_value->field_is__dl__tfi = other_value.is__dl__tfi();
} else {
  single_value->field_is__dl__tfi.clean_up();
}
if (other_value.tfi().is_bound()) {
  single_value->field_tfi = other_value.tfi();
} else {
  single_value->field_tfi.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void GlobalTfi_template::copy_template(const GlobalTfi_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.is__dl__tfi().get_selection()) {
single_value->field_is__dl__tfi = other_value.is__dl__tfi();
} else {
single_value->field_is__dl__tfi.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.tfi().get_selection()) {
single_value->field_tfi = other_value.tfi();
} else {
single_value->field_tfi.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new GlobalTfi_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new GlobalTfi_template(*other_value.implication_.precondition);
implication_.implied_template = new GlobalTfi_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.GlobalTfi.");
break;
}
set_selection(other_value);
}

GlobalTfi_template::GlobalTfi_template()
{
}

GlobalTfi_template::GlobalTfi_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

GlobalTfi_template::GlobalTfi_template(const GlobalTfi& other_value)
{
copy_value(other_value);
}

GlobalTfi_template::GlobalTfi_template(const OPTIONAL<GlobalTfi>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const GlobalTfi&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @RLCMAC_CSN1_Types.GlobalTfi from an unbound optional field.");
}
}

GlobalTfi_template::GlobalTfi_template(GlobalTfi_template* p_precondition, GlobalTfi_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

GlobalTfi_template::GlobalTfi_template(Dynamic_Match_Interface<GlobalTfi>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<GlobalTfi>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

GlobalTfi_template::GlobalTfi_template(const GlobalTfi_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

GlobalTfi_template::~GlobalTfi_template()
{
clean_up();
}

GlobalTfi_template& GlobalTfi_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

GlobalTfi_template& GlobalTfi_template::operator=(const GlobalTfi& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

GlobalTfi_template& GlobalTfi_template::operator=(const OPTIONAL<GlobalTfi>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const GlobalTfi&)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 @RLCMAC_CSN1_Types.GlobalTfi.");
}
return *this;
}

GlobalTfi_template& GlobalTfi_template::operator=(const GlobalTfi_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean GlobalTfi_template::match(const GlobalTfi& 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.is__dl__tfi().is_bound()) return FALSE;
if(!single_value->field_is__dl__tfi.match(other_value.is__dl__tfi(), legacy))return FALSE;
if(!other_value.tfi().is_bound()) return FALSE;
if(!single_value->field_tfi.match(other_value.tfi(), legacy))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.GlobalTfi.");
}
return FALSE;
}

boolean GlobalTfi_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_is__dl__tfi.is_bound()
 || single_value->field_tfi.is_bound();
}

boolean GlobalTfi_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_is__dl__tfi.is_value()
 && single_value->field_tfi.is_value();
}

void GlobalTfi_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

GlobalTfi GlobalTfi_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 @RLCMAC_CSN1_Types.GlobalTfi.");
GlobalTfi ret_val;
if (single_value->field_is__dl__tfi.is_bound()) {
ret_val.is__dl__tfi() = single_value->field_is__dl__tfi.valueof();
}
if (single_value->field_tfi.is_bound()) {
ret_val.tfi() = single_value->field_tfi.valueof();
}
return ret_val;
}

void GlobalTfi_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @RLCMAC_CSN1_Types.GlobalTfi.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new GlobalTfi_template[list_length];
}

GlobalTfi_template& GlobalTfi_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @RLCMAC_CSN1_Types.GlobalTfi.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @RLCMAC_CSN1_Types.GlobalTfi.");
return value_list.list_value[list_index];
}

BOOLEAN_template& GlobalTfi_template::is__dl__tfi()
{
set_specific();
return single_value->field_is__dl__tfi;
}

const BOOLEAN_template& GlobalTfi_template::is__dl__tfi() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field is_dl_tfi of a non-specific template of type @RLCMAC_CSN1_Types.GlobalTfi.");
return single_value->field_is__dl__tfi;
}

INTEGER_template& GlobalTfi_template::tfi()
{
set_specific();
return single_value->field_tfi;
}

const INTEGER_template& GlobalTfi_template::tfi() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field tfi of a non-specific template of type @RLCMAC_CSN1_Types.GlobalTfi.");
return single_value->field_tfi;
}

int GlobalTfi_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.GlobalTfi 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 @RLCMAC_CSN1_Types.GlobalTfi 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 @RLCMAC_CSN1_Types.GlobalTfi containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.GlobalTfi containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.GlobalTfi containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.GlobalTfi containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.GlobalTfi containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.GlobalTfi containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.GlobalTfi containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.GlobalTfi.");
  }
  return 0;
}

void GlobalTfi_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ is_dl_tfi := ");
single_value->field_is__dl__tfi.log();
TTCN_Logger::log_event_str(", tfi := ");
single_value->field_tfi.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void GlobalTfi_template::log_match(const GlobalTfi& 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_is__dl__tfi.match(match_value.is__dl__tfi(), legacy)){
TTCN_Logger::log_logmatch_info(".is_dl_tfi");
single_value->field_is__dl__tfi.log_match(match_value.is__dl__tfi(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_tfi.match(match_value.tfi(), legacy)){
TTCN_Logger::log_logmatch_info(".tfi");
single_value->field_tfi.log_match(match_value.tfi(), 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("{ is_dl_tfi := ");
single_value->field_is__dl__tfi.log_match(match_value.is__dl__tfi(), legacy);
TTCN_Logger::log_event_str(", tfi := ");
single_value->field_tfi.log_match(match_value.tfi(), 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 GlobalTfi_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (is__dl__tfi().is_bound()) is__dl__tfi().set_implicit_omit();
if (tfi().is_bound()) tfi().set_implicit_omit();
}

void GlobalTfi_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_is__dl__tfi.encode_text(text_buf);
single_value->field_tfi.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 @RLCMAC_CSN1_Types.GlobalTfi.");
}
}

void GlobalTfi_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_is__dl__tfi.decode_text(text_buf);
single_value->field_tfi.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 GlobalTfi_template[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 @RLCMAC_CSN1_Types.GlobalTfi.");
}
}

void GlobalTfi_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    GlobalTfi_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_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 @RLCMAC_CSN1_Types.GlobalTfi 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) is__dl__tfi().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) tfi().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(), "is_dl_tfi")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          is__dl__tfi().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "tfi")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          tfi().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 @RLCMAC_CSN1_Types.GlobalTfi: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    GlobalTfi_template* precondition = new GlobalTfi_template;
    precondition->set_param(*param.get_elem(0));
    GlobalTfi_template* implied_template = new GlobalTfi_template;
    implied_template->set_param(*param.get_elem(1));
    *this = GlobalTfi_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@RLCMAC_CSN1_Types.GlobalTfi");
  }
  is_ifpresent = param.get_ifpresent();
}

void GlobalTfi_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_is__dl__tfi.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.GlobalTfi");
single_value->field_tfi.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.GlobalTfi");
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 : "@RLCMAC_CSN1_Types.GlobalTfi");
}

boolean GlobalTfi_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean GlobalTfi_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<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;
}

NullGlobalTfi::NullGlobalTfi()
{
}

NullGlobalTfi::NullGlobalTfi(const BITSTRING& par_presence,
    const GlobalTfi& par_global__tfi)
  :   field_presence(par_presence),
  field_global__tfi(par_global__tfi)
{
}

NullGlobalTfi::NullGlobalTfi(const NullGlobalTfi& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RLCMAC_CSN1_Types.NullGlobalTfi.");
if (other_value.presence().is_bound()) field_presence = other_value.presence();
else field_presence.clean_up();
if (other_value.global__tfi().is_bound()) field_global__tfi = other_value.global__tfi();
else field_global__tfi.clean_up();
}

void NullGlobalTfi::clean_up()
{
field_presence.clean_up();
field_global__tfi.clean_up();
}

const TTCN_Typedescriptor_t* NullGlobalTfi::get_descriptor() const { return &NullGlobalTfi_descr_; }
NullGlobalTfi& NullGlobalTfi::operator=(const NullGlobalTfi& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RLCMAC_CSN1_Types.NullGlobalTfi.");
  if (other_value.presence().is_bound()) field_presence = other_value.presence();
  else field_presence.clean_up();
  if (other_value.global__tfi().is_bound()) field_global__tfi = other_value.global__tfi();
  else field_global__tfi.clean_up();
}
return *this;
}

boolean NullGlobalTfi::operator==(const NullGlobalTfi& other_value) const
{
return field_presence==other_value.field_presence
  && field_global__tfi==other_value.field_global__tfi;
}

boolean NullGlobalTfi::is_bound() const
{
return (field_presence.is_bound())
  || (field_global__tfi.is_bound());
}
boolean NullGlobalTfi::is_value() const
{
return field_presence.is_value()
  && field_global__tfi.is_value();
}
void NullGlobalTfi::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ presence := ");
field_presence.log();
TTCN_Logger::log_event_str(", global_tfi := ");
field_global__tfi.log();
TTCN_Logger::log_event_str(" }");
}

void NullGlobalTfi::set_implicit_omit()
{
if (presence().is_bound()) presence().set_implicit_omit();
if (global__tfi().is_bound()) global__tfi().set_implicit_omit();
}

void NullGlobalTfi::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 @RLCMAC_CSN1_Types.NullGlobalTfi 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) presence().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) global__tfi().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(), "presence")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          presence().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "global_tfi")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          global__tfi().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 @RLCMAC_CSN1_Types.NullGlobalTfi: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@RLCMAC_CSN1_Types.NullGlobalTfi");
  }
}

void NullGlobalTfi::encode_text(Text_Buf& text_buf) const
{
field_presence.encode_text(text_buf);
field_global__tfi.encode_text(text_buf);
}

void NullGlobalTfi::decode_text(Text_Buf& text_buf)
{
field_presence.decode_text(text_buf);
field_global__tfi.decode_text(text_buf);
}

void NullGlobalTfi::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void NullGlobalTfi::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int NullGlobalTfi::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, NullGlobalTfi_presence_descr_.raw->forceomit);
  decoded_field_length = field_presence.RAW_decode(NullGlobalTfi_presence_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, NullGlobalTfi_global__tfi_descr_.raw->forceomit);
  decoded_field_length = field_global__tfi.RAW_decode(NullGlobalTfi_global__tfi_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 NullGlobalTfi::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, NullGlobalTfi_presence_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, NullGlobalTfi_global__tfi_descr_.raw);
  encoded_length += field_presence.RAW_encode(NullGlobalTfi_presence_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_global__tfi.RAW_encode(NullGlobalTfi_global__tfi_descr_, *myleaf.body.node.nodes[1]);
  return myleaf.length = encoded_length;
}

struct NullGlobalTfi_template::single_value_struct {
BITSTRING_template field_presence;
GlobalTfi_template field_global__tfi;
};

void NullGlobalTfi_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_presence = ANY_VALUE;
single_value->field_global__tfi = ANY_VALUE;
}
}
}

void NullGlobalTfi_template::copy_value(const NullGlobalTfi& other_value)
{
single_value = new single_value_struct;
if (other_value.presence().is_bound()) {
  single_value->field_presence = other_value.presence();
} else {
  single_value->field_presence.clean_up();
}
if (other_value.global__tfi().is_bound()) {
  single_value->field_global__tfi = other_value.global__tfi();
} else {
  single_value->field_global__tfi.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void NullGlobalTfi_template::copy_template(const NullGlobalTfi_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.presence().get_selection()) {
single_value->field_presence = other_value.presence();
} else {
single_value->field_presence.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.global__tfi().get_selection()) {
single_value->field_global__tfi = other_value.global__tfi();
} else {
single_value->field_global__tfi.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new NullGlobalTfi_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new NullGlobalTfi_template(*other_value.implication_.precondition);
implication_.implied_template = new NullGlobalTfi_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.NullGlobalTfi.");
break;
}
set_selection(other_value);
}

NullGlobalTfi_template::NullGlobalTfi_template()
{
}

NullGlobalTfi_template::NullGlobalTfi_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

NullGlobalTfi_template::NullGlobalTfi_template(const NullGlobalTfi& other_value)
{
copy_value(other_value);
}

NullGlobalTfi_template::NullGlobalTfi_template(const OPTIONAL<NullGlobalTfi>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const NullGlobalTfi&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @RLCMAC_CSN1_Types.NullGlobalTfi from an unbound optional field.");
}
}

NullGlobalTfi_template::NullGlobalTfi_template(NullGlobalTfi_template* p_precondition, NullGlobalTfi_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

NullGlobalTfi_template::NullGlobalTfi_template(Dynamic_Match_Interface<NullGlobalTfi>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<NullGlobalTfi>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

NullGlobalTfi_template::NullGlobalTfi_template(const NullGlobalTfi_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

NullGlobalTfi_template::~NullGlobalTfi_template()
{
clean_up();
}

NullGlobalTfi_template& NullGlobalTfi_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

NullGlobalTfi_template& NullGlobalTfi_template::operator=(const NullGlobalTfi& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

NullGlobalTfi_template& NullGlobalTfi_template::operator=(const OPTIONAL<NullGlobalTfi>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const NullGlobalTfi&)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 @RLCMAC_CSN1_Types.NullGlobalTfi.");
}
return *this;
}

NullGlobalTfi_template& NullGlobalTfi_template::operator=(const NullGlobalTfi_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean NullGlobalTfi_template::match(const NullGlobalTfi& 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.presence().is_bound()) return FALSE;
if(!single_value->field_presence.match(other_value.presence(), legacy))return FALSE;
if(!other_value.global__tfi().is_bound()) return FALSE;
if(!single_value->field_global__tfi.match(other_value.global__tfi(), legacy))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.NullGlobalTfi.");
}
return FALSE;
}

boolean NullGlobalTfi_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_presence.is_bound()
 || single_value->field_global__tfi.is_bound();
}

boolean NullGlobalTfi_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_presence.is_value()
 && single_value->field_global__tfi.is_value();
}

void NullGlobalTfi_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

NullGlobalTfi NullGlobalTfi_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 @RLCMAC_CSN1_Types.NullGlobalTfi.");
NullGlobalTfi ret_val;
if (single_value->field_presence.is_bound()) {
ret_val.presence() = single_value->field_presence.valueof();
}
if (single_value->field_global__tfi.is_bound()) {
ret_val.global__tfi() = single_value->field_global__tfi.valueof();
}
return ret_val;
}

void NullGlobalTfi_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @RLCMAC_CSN1_Types.NullGlobalTfi.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new NullGlobalTfi_template[list_length];
}

NullGlobalTfi_template& NullGlobalTfi_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @RLCMAC_CSN1_Types.NullGlobalTfi.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @RLCMAC_CSN1_Types.NullGlobalTfi.");
return value_list.list_value[list_index];
}

BITSTRING_template& NullGlobalTfi_template::presence()
{
set_specific();
return single_value->field_presence;
}

const BITSTRING_template& NullGlobalTfi_template::presence() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field presence of a non-specific template of type @RLCMAC_CSN1_Types.NullGlobalTfi.");
return single_value->field_presence;
}

GlobalTfi_template& NullGlobalTfi_template::global__tfi()
{
set_specific();
return single_value->field_global__tfi;
}

const GlobalTfi_template& NullGlobalTfi_template::global__tfi() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field global_tfi of a non-specific template of type @RLCMAC_CSN1_Types.NullGlobalTfi.");
return single_value->field_global__tfi;
}

int NullGlobalTfi_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.NullGlobalTfi 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 @RLCMAC_CSN1_Types.NullGlobalTfi 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 @RLCMAC_CSN1_Types.NullGlobalTfi containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.NullGlobalTfi containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.NullGlobalTfi containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.NullGlobalTfi containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.NullGlobalTfi containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.NullGlobalTfi containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.NullGlobalTfi containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.NullGlobalTfi.");
  }
  return 0;
}

void NullGlobalTfi_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ presence := ");
single_value->field_presence.log();
TTCN_Logger::log_event_str(", global_tfi := ");
single_value->field_global__tfi.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void NullGlobalTfi_template::log_match(const NullGlobalTfi& 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_presence.match(match_value.presence(), legacy)){
TTCN_Logger::log_logmatch_info(".presence");
single_value->field_presence.log_match(match_value.presence(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_global__tfi.match(match_value.global__tfi(), legacy)){
TTCN_Logger::log_logmatch_info(".global_tfi");
single_value->field_global__tfi.log_match(match_value.global__tfi(), 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("{ presence := ");
single_value->field_presence.log_match(match_value.presence(), legacy);
TTCN_Logger::log_event_str(", global_tfi := ");
single_value->field_global__tfi.log_match(match_value.global__tfi(), 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 NullGlobalTfi_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (presence().is_bound()) presence().set_implicit_omit();
if (global__tfi().is_bound()) global__tfi().set_implicit_omit();
}

void NullGlobalTfi_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_presence.encode_text(text_buf);
single_value->field_global__tfi.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 @RLCMAC_CSN1_Types.NullGlobalTfi.");
}
}

void NullGlobalTfi_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_presence.decode_text(text_buf);
single_value->field_global__tfi.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 NullGlobalTfi_template[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 @RLCMAC_CSN1_Types.NullGlobalTfi.");
}
}

void NullGlobalTfi_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    NullGlobalTfi_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_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 @RLCMAC_CSN1_Types.NullGlobalTfi 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) presence().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) global__tfi().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(), "presence")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          presence().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "global_tfi")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          global__tfi().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 @RLCMAC_CSN1_Types.NullGlobalTfi: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    NullGlobalTfi_template* precondition = new NullGlobalTfi_template;
    precondition->set_param(*param.get_elem(0));
    NullGlobalTfi_template* implied_template = new NullGlobalTfi_template;
    implied_template->set_param(*param.get_elem(1));
    *this = NullGlobalTfi_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@RLCMAC_CSN1_Types.NullGlobalTfi");
  }
  is_ifpresent = param.get_ifpresent();
}

void NullGlobalTfi_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_presence.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.NullGlobalTfi");
single_value->field_global__tfi.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.NullGlobalTfi");
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 : "@RLCMAC_CSN1_Types.NullGlobalTfi");
}

boolean NullGlobalTfi_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean NullGlobalTfi_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<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;
}

TenTlli::TenTlli()
{
}

TenTlli::TenTlli(const BITSTRING& par_presence,
    const OCTETSTRING& par_tlli)
  :   field_presence(par_presence),
  field_tlli(par_tlli)
{
}

TenTlli::TenTlli(const TenTlli& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RLCMAC_CSN1_Types.TenTlli.");
if (other_value.presence().is_bound()) field_presence = other_value.presence();
else field_presence.clean_up();
if (other_value.tlli().is_bound()) field_tlli = other_value.tlli();
else field_tlli.clean_up();
}

void TenTlli::clean_up()
{
field_presence.clean_up();
field_tlli.clean_up();
}

const TTCN_Typedescriptor_t* TenTlli::get_descriptor() const { return &TenTlli_descr_; }
TenTlli& TenTlli::operator=(const TenTlli& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RLCMAC_CSN1_Types.TenTlli.");
  if (other_value.presence().is_bound()) field_presence = other_value.presence();
  else field_presence.clean_up();
  if (other_value.tlli().is_bound()) field_tlli = other_value.tlli();
  else field_tlli.clean_up();
}
return *this;
}

boolean TenTlli::operator==(const TenTlli& other_value) const
{
return field_presence==other_value.field_presence
  && field_tlli==other_value.field_tlli;
}

boolean TenTlli::is_bound() const
{
return (field_presence.is_bound())
  || (field_tlli.is_bound());
}
boolean TenTlli::is_value() const
{
return field_presence.is_value()
  && field_tlli.is_value();
}
void TenTlli::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ presence := ");
field_presence.log();
TTCN_Logger::log_event_str(", tlli := ");
field_tlli.log();
TTCN_Logger::log_event_str(" }");
}

void TenTlli::set_implicit_omit()
{
if (presence().is_bound()) presence().set_implicit_omit();
if (tlli().is_bound()) tlli().set_implicit_omit();
}

void TenTlli::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 @RLCMAC_CSN1_Types.TenTlli 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) presence().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) tlli().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(), "presence")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          presence().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "tlli")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          tlli().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 @RLCMAC_CSN1_Types.TenTlli: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@RLCMAC_CSN1_Types.TenTlli");
  }
}

void TenTlli::encode_text(Text_Buf& text_buf) const
{
field_presence.encode_text(text_buf);
field_tlli.encode_text(text_buf);
}

void TenTlli::decode_text(Text_Buf& text_buf)
{
field_presence.decode_text(text_buf);
field_tlli.decode_text(text_buf);
}

void TenTlli::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void TenTlli::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int TenTlli::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, TenTlli_presence_descr_.raw->forceomit);
  decoded_field_length = field_presence.RAW_decode(TenTlli_presence_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, TenTlli_tlli_descr_.raw->forceomit);
  decoded_field_length = field_tlli.RAW_decode(TenTlli_tlli_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 TenTlli::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, TenTlli_presence_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, TenTlli_tlli_descr_.raw);
  encoded_length += field_presence.RAW_encode(TenTlli_presence_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_tlli.RAW_encode(TenTlli_tlli_descr_, *myleaf.body.node.nodes[1]);
  return myleaf.length = encoded_length;
}

struct TenTlli_template::single_value_struct {
BITSTRING_template field_presence;
OCTETSTRING_template field_tlli;
};

void TenTlli_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_presence = ANY_VALUE;
single_value->field_tlli = ANY_VALUE;
}
}
}

void TenTlli_template::copy_value(const TenTlli& other_value)
{
single_value = new single_value_struct;
if (other_value.presence().is_bound()) {
  single_value->field_presence = other_value.presence();
} else {
  single_value->field_presence.clean_up();
}
if (other_value.tlli().is_bound()) {
  single_value->field_tlli = other_value.tlli();
} else {
  single_value->field_tlli.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void TenTlli_template::copy_template(const TenTlli_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.presence().get_selection()) {
single_value->field_presence = other_value.presence();
} else {
single_value->field_presence.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.tlli().get_selection()) {
single_value->field_tlli = other_value.tlli();
} else {
single_value->field_tlli.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new TenTlli_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new TenTlli_template(*other_value.implication_.precondition);
implication_.implied_template = new TenTlli_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.TenTlli.");
break;
}
set_selection(other_value);
}

TenTlli_template::TenTlli_template()
{
}

TenTlli_template::TenTlli_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

TenTlli_template::TenTlli_template(const TenTlli& other_value)
{
copy_value(other_value);
}

TenTlli_template::TenTlli_template(const OPTIONAL<TenTlli>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const TenTlli&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @RLCMAC_CSN1_Types.TenTlli from an unbound optional field.");
}
}

TenTlli_template::TenTlli_template(TenTlli_template* p_precondition, TenTlli_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

TenTlli_template::TenTlli_template(Dynamic_Match_Interface<TenTlli>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<TenTlli>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

TenTlli_template::TenTlli_template(const TenTlli_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

TenTlli_template::~TenTlli_template()
{
clean_up();
}

TenTlli_template& TenTlli_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

TenTlli_template& TenTlli_template::operator=(const TenTlli& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

TenTlli_template& TenTlli_template::operator=(const OPTIONAL<TenTlli>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const TenTlli&)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 @RLCMAC_CSN1_Types.TenTlli.");
}
return *this;
}

TenTlli_template& TenTlli_template::operator=(const TenTlli_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean TenTlli_template::match(const TenTlli& 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.presence().is_bound()) return FALSE;
if(!single_value->field_presence.match(other_value.presence(), legacy))return FALSE;
if(!other_value.tlli().is_bound()) return FALSE;
if(!single_value->field_tlli.match(other_value.tlli(), legacy))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.TenTlli.");
}
return FALSE;
}

boolean TenTlli_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_presence.is_bound()
 || single_value->field_tlli.is_bound();
}

boolean TenTlli_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_presence.is_value()
 && single_value->field_tlli.is_value();
}

void TenTlli_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

TenTlli TenTlli_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 @RLCMAC_CSN1_Types.TenTlli.");
TenTlli ret_val;
if (single_value->field_presence.is_bound()) {
ret_val.presence() = single_value->field_presence.valueof();
}
if (single_value->field_tlli.is_bound()) {
ret_val.tlli() = single_value->field_tlli.valueof();
}
return ret_val;
}

void TenTlli_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @RLCMAC_CSN1_Types.TenTlli.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new TenTlli_template[list_length];
}

TenTlli_template& TenTlli_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @RLCMAC_CSN1_Types.TenTlli.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @RLCMAC_CSN1_Types.TenTlli.");
return value_list.list_value[list_index];
}

BITSTRING_template& TenTlli_template::presence()
{
set_specific();
return single_value->field_presence;
}

const BITSTRING_template& TenTlli_template::presence() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field presence of a non-specific template of type @RLCMAC_CSN1_Types.TenTlli.");
return single_value->field_presence;
}

OCTETSTRING_template& TenTlli_template::tlli()
{
set_specific();
return single_value->field_tlli;
}

const OCTETSTRING_template& TenTlli_template::tlli() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field tlli of a non-specific template of type @RLCMAC_CSN1_Types.TenTlli.");
return single_value->field_tlli;
}

int TenTlli_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.TenTlli 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 @RLCMAC_CSN1_Types.TenTlli 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 @RLCMAC_CSN1_Types.TenTlli containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.TenTlli containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.TenTlli containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.TenTlli containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.TenTlli containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.TenTlli containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.TenTlli containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.TenTlli.");
  }
  return 0;
}

void TenTlli_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ presence := ");
single_value->field_presence.log();
TTCN_Logger::log_event_str(", tlli := ");
single_value->field_tlli.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void TenTlli_template::log_match(const TenTlli& 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_presence.match(match_value.presence(), legacy)){
TTCN_Logger::log_logmatch_info(".presence");
single_value->field_presence.log_match(match_value.presence(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_tlli.match(match_value.tlli(), legacy)){
TTCN_Logger::log_logmatch_info(".tlli");
single_value->field_tlli.log_match(match_value.tlli(), 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("{ presence := ");
single_value->field_presence.log_match(match_value.presence(), legacy);
TTCN_Logger::log_event_str(", tlli := ");
single_value->field_tlli.log_match(match_value.tlli(), 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 TenTlli_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (presence().is_bound()) presence().set_implicit_omit();
if (tlli().is_bound()) tlli().set_implicit_omit();
}

void TenTlli_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_presence.encode_text(text_buf);
single_value->field_tlli.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 @RLCMAC_CSN1_Types.TenTlli.");
}
}

void TenTlli_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_presence.decode_text(text_buf);
single_value->field_tlli.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 TenTlli_template[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 @RLCMAC_CSN1_Types.TenTlli.");
}
}

void TenTlli_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    TenTlli_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_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 @RLCMAC_CSN1_Types.TenTlli 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) presence().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) tlli().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(), "presence")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          presence().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "tlli")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          tlli().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 @RLCMAC_CSN1_Types.TenTlli: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    TenTlli_template* precondition = new TenTlli_template;
    precondition->set_param(*param.get_elem(0));
    TenTlli_template* implied_template = new TenTlli_template;
    implied_template->set_param(*param.get_elem(1));
    *this = TenTlli_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@RLCMAC_CSN1_Types.TenTlli");
  }
  is_ifpresent = param.get_ifpresent();
}

void TenTlli_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_presence.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.TenTlli");
single_value->field_tlli.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.TenTlli");
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 : "@RLCMAC_CSN1_Types.TenTlli");
}

boolean TenTlli_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean TenTlli_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<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 GlobalTfiOrTlli::copy_value(const GlobalTfiOrTlli& other_value)
{
switch (other_value.union_selection) {
case ALT_global__tfi:
field_global__tfi = new NullGlobalTfi(*other_value.field_global__tfi);
break;
case ALT_tlli:
field_tlli = new TenTlli(*other_value.field_tlli);
break;
default:
TTCN_error("Assignment of an unbound union value of type @RLCMAC_CSN1_Types.GlobalTfiOrTlli.");
}
union_selection = other_value.union_selection;
}

GlobalTfiOrTlli::GlobalTfiOrTlli()
{
union_selection = UNBOUND_VALUE;
}

GlobalTfiOrTlli::GlobalTfiOrTlli(const GlobalTfiOrTlli& other_value)
: Base_Type(){
copy_value(other_value);
}

GlobalTfiOrTlli::~GlobalTfiOrTlli()
{
clean_up();
}

GlobalTfiOrTlli& GlobalTfiOrTlli::operator=(const GlobalTfiOrTlli& other_value)
{
if (this != &other_value) {
clean_up();
copy_value(other_value);
}
return *this;
}

boolean GlobalTfiOrTlli::operator==(const GlobalTfiOrTlli& other_value) const
{
if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @RLCMAC_CSN1_Types.GlobalTfiOrTlli.");
if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @RLCMAC_CSN1_Types.GlobalTfiOrTlli.");
if (union_selection != other_value.union_selection) return FALSE;
switch (union_selection) {
case ALT_global__tfi:
return *field_global__tfi == *other_value.field_global__tfi;
case ALT_tlli:
return *field_tlli == *other_value.field_tlli;
default:
return FALSE;
}
}

NullGlobalTfi& GlobalTfiOrTlli::global__tfi()
{
if (union_selection != ALT_global__tfi) {
clean_up();
field_global__tfi = new NullGlobalTfi;
union_selection = ALT_global__tfi;
}
return *field_global__tfi;
}

const NullGlobalTfi& GlobalTfiOrTlli::global__tfi() const
{
if (union_selection != ALT_global__tfi) TTCN_error("Using non-selected field global_tfi in a value of union type @RLCMAC_CSN1_Types.GlobalTfiOrTlli.");
return *field_global__tfi;
}

TenTlli& GlobalTfiOrTlli::tlli()
{
if (union_selection != ALT_tlli) {
clean_up();
field_tlli = new TenTlli;
union_selection = ALT_tlli;
}
return *field_tlli;
}

const TenTlli& GlobalTfiOrTlli::tlli() const
{
if (union_selection != ALT_tlli) TTCN_error("Using non-selected field tlli in a value of union type @RLCMAC_CSN1_Types.GlobalTfiOrTlli.");
return *field_tlli;
}

boolean GlobalTfiOrTlli::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 @RLCMAC_CSN1_Types.GlobalTfiOrTlli.");
return union_selection == checked_selection;
}

boolean GlobalTfiOrTlli::is_bound() const
{
  return union_selection != UNBOUND_VALUE;
}

boolean GlobalTfiOrTlli::is_value() const
{
switch (union_selection) {
case UNBOUND_VALUE: return FALSE;
case ALT_global__tfi: return field_global__tfi->is_value();
case ALT_tlli: return field_tlli->is_value();
default: TTCN_error("Invalid selection in union is_bound");}
}

void GlobalTfiOrTlli::clean_up()
{
switch (union_selection) {
case ALT_global__tfi:
  delete field_global__tfi;
  break;
case ALT_tlli:
  delete field_tlli;
  break;
default:
  break;
}
union_selection = UNBOUND_VALUE;
}

void GlobalTfiOrTlli::log() const
{
switch (union_selection) {
case ALT_global__tfi:
TTCN_Logger::log_event_str("{ global_tfi := ");
field_global__tfi->log();
TTCN_Logger::log_event_str(" }");
break;
case ALT_tlli:
TTCN_Logger::log_event_str("{ tlli := ");
field_tlli->log();
TTCN_Logger::log_event_str(" }");
break;
default:
TTCN_Logger::log_event_unbound();
}
}

void GlobalTfiOrTlli::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, "global_tfi")) {
    global__tfi().set_param(*mp_last);
    if (!global__tfi().is_bound()) clean_up();
    return;
  }
  if (!strcmp(last_name, "tlli")) {
    tlli().set_param(*mp_last);
    if (!tlli().is_bound()) clean_up();
    return;
  }
  mp_last->error("Field %s does not exist in type @RLCMAC_CSN1_Types.GlobalTfiOrTlli.", last_name);
}

void GlobalTfiOrTlli::set_implicit_omit()
{
switch (union_selection) {
case ALT_global__tfi:
field_global__tfi->set_implicit_omit(); break;
case ALT_tlli:
field_tlli->set_implicit_omit(); break;
default: break;
}
}

void GlobalTfiOrTlli::encode_text(Text_Buf& text_buf) const
{
text_buf.push_int(union_selection);
switch (union_selection) {
case ALT_global__tfi:
field_global__tfi->encode_text(text_buf);
break;
case ALT_tlli:
field_tlli->encode_text(text_buf);
break;
default:
TTCN_error("Text encoder: Encoding an unbound value of union type @RLCMAC_CSN1_Types.GlobalTfiOrTlli.");
}
}

void GlobalTfiOrTlli::decode_text(Text_Buf& text_buf)
{
switch ((union_selection_type)text_buf.pull_int().get_val()) {
case ALT_global__tfi:
global__tfi().decode_text(text_buf);
break;
case ALT_tlli:
tlli().decode_text(text_buf);
break;
default:
TTCN_error("Text decoder: Unrecognized union selector was received for type @RLCMAC_CSN1_Types.GlobalTfiOrTlli.");
}
}

void GlobalTfiOrTlli::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void GlobalTfiOrTlli::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int GlobalTfiOrTlli::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, GlobalTfiOrTlli_global__tfi_descr_.raw->forceomit);
      decoded_length = global__tfi().RAW_decode(GlobalTfiOrTlli_global__tfi_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, GlobalTfiOrTlli_tlli_descr_.raw->forceomit);
      decoded_length = tlli().RAW_decode(GlobalTfiOrTlli_tlli_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, GlobalTfiOrTlli_global__tfi_descr_.raw->forceomit);
      decoded_length = global__tfi().RAW_decode(GlobalTfiOrTlli_global__tfi_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, GlobalTfiOrTlli_tlli_descr_.raw->forceomit);
      decoded_length = tlli().RAW_decode(GlobalTfiOrTlli_tlli_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;
       }
 }
 clean_up();
 return -1;
}

int GlobalTfiOrTlli::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const
{
  int encoded_length = 0;
  myleaf.isleaf = FALSE;
  myleaf.body.node.num_of_nodes = 2;  myleaf.body.node.nodes = init_nodes_of_enc_tree(2);
  memset(myleaf.body.node.nodes, 0, 2 * sizeof(RAW_enc_tree *));
  switch (union_selection) {
  case ALT_global__tfi:
    myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 0, GlobalTfiOrTlli_global__tfi_descr_.raw);
    encoded_length = field_global__tfi->RAW_encode(GlobalTfiOrTlli_global__tfi_descr_, *myleaf.body.node.nodes[0]);
    myleaf.body.node.nodes[0]->coding_descr = &GlobalTfiOrTlli_global__tfi_descr_;
    break;
  case ALT_tlli:
    myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 1, GlobalTfiOrTlli_tlli_descr_.raw);
    encoded_length = field_tlli->RAW_encode(GlobalTfiOrTlli_tlli_descr_, *myleaf.body.node.nodes[1]);
    myleaf.body.node.nodes[1]->coding_descr = &GlobalTfiOrTlli_tlli_descr_;
    break;
  default:
    TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
  }
  return encoded_length;
}

void GlobalTfiOrTlli_template::copy_value(const GlobalTfiOrTlli& other_value)
{
single_value.union_selection = other_value.get_selection();
switch (single_value.union_selection) {
case GlobalTfiOrTlli::ALT_global__tfi:
single_value.field_global__tfi = new NullGlobalTfi_template(other_value.global__tfi());
break;
case GlobalTfiOrTlli::ALT_tlli:
single_value.field_tlli = new TenTlli_template(other_value.tlli());
break;
default:
TTCN_error("Initializing a template with an unbound value of type @RLCMAC_CSN1_Types.GlobalTfiOrTlli.");
}
set_selection(SPECIFIC_VALUE);
}

void GlobalTfiOrTlli_template::copy_template(const GlobalTfiOrTlli_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 GlobalTfiOrTlli::ALT_global__tfi:
single_value.field_global__tfi = new NullGlobalTfi_template(*other_value.single_value.field_global__tfi);
break;
case GlobalTfiOrTlli::ALT_tlli:
single_value.field_tlli = new TenTlli_template(*other_value.single_value.field_tlli);
break;
default:
TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @RLCMAC_CSN1_Types.GlobalTfiOrTlli.");
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new GlobalTfiOrTlli_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new GlobalTfiOrTlli_template(*other_value.implication_.precondition);
implication_.implied_template = new GlobalTfiOrTlli_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized template of union type @RLCMAC_CSN1_Types.GlobalTfiOrTlli.");
}
set_selection(other_value);
}

GlobalTfiOrTlli_template::GlobalTfiOrTlli_template()
{
}

GlobalTfiOrTlli_template::GlobalTfiOrTlli_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

GlobalTfiOrTlli_template::GlobalTfiOrTlli_template(const GlobalTfiOrTlli& other_value)
{
copy_value(other_value);
}

GlobalTfiOrTlli_template::GlobalTfiOrTlli_template(const OPTIONAL<GlobalTfiOrTlli>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const GlobalTfiOrTlli&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of union type @RLCMAC_CSN1_Types.GlobalTfiOrTlli from an unbound optional field.");
}
}

GlobalTfiOrTlli_template::GlobalTfiOrTlli_template(GlobalTfiOrTlli_template* p_precondition, GlobalTfiOrTlli_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

GlobalTfiOrTlli_template::GlobalTfiOrTlli_template(Dynamic_Match_Interface<GlobalTfiOrTlli>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<GlobalTfiOrTlli>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

GlobalTfiOrTlli_template::GlobalTfiOrTlli_template(const GlobalTfiOrTlli_template& other_value)
: Base_Template(){
copy_template(other_value);
}

GlobalTfiOrTlli_template::~GlobalTfiOrTlli_template()
{
clean_up();
}

void GlobalTfiOrTlli_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
switch (single_value.union_selection) {
case GlobalTfiOrTlli::ALT_global__tfi:
delete single_value.field_global__tfi;
break;
case GlobalTfiOrTlli::ALT_tlli:
delete single_value.field_tlli;
default:
break;
}
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

GlobalTfiOrTlli_template& GlobalTfiOrTlli_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

GlobalTfiOrTlli_template& GlobalTfiOrTlli_template::operator=(const GlobalTfiOrTlli& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

GlobalTfiOrTlli_template& GlobalTfiOrTlli_template::operator=(const OPTIONAL<GlobalTfiOrTlli>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const GlobalTfiOrTlli&)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 @RLCMAC_CSN1_Types.GlobalTfiOrTlli.");
}
return *this;
}

GlobalTfiOrTlli_template& GlobalTfiOrTlli_template::operator=(const GlobalTfiOrTlli_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean GlobalTfiOrTlli_template::match(const GlobalTfiOrTlli& 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:
{
GlobalTfiOrTlli::union_selection_type value_selection = other_value.get_selection();
if (value_selection == GlobalTfiOrTlli::UNBOUND_VALUE) return FALSE;
if (value_selection != single_value.union_selection) return FALSE;
switch (value_selection) {
case GlobalTfiOrTlli::ALT_global__tfi:
return single_value.field_global__tfi->match(other_value.global__tfi(), legacy);
case GlobalTfiOrTlli::ALT_tlli:
return single_value.field_tlli->match(other_value.tlli(), legacy);
default:
TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @RLCMAC_CSN1_Types.GlobalTfiOrTlli.");
}
}
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error ("Matching an uninitialized template of union type @RLCMAC_CSN1_Types.GlobalTfiOrTlli.");
}
return FALSE;
}

boolean GlobalTfiOrTlli_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
switch (single_value.union_selection) {
case GlobalTfiOrTlli::ALT_global__tfi:
return single_value.field_global__tfi->is_value();
case GlobalTfiOrTlli::ALT_tlli:
return single_value.field_tlli->is_value();
default:
TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @RLCMAC_CSN1_Types.GlobalTfiOrTlli.");
}
}

GlobalTfiOrTlli GlobalTfiOrTlli_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 @RLCMAC_CSN1_Types.GlobalTfiOrTlli.");
GlobalTfiOrTlli ret_val;
switch (single_value.union_selection) {
case GlobalTfiOrTlli::ALT_global__tfi:
ret_val.global__tfi() = single_value.field_global__tfi->valueof();
break;
case GlobalTfiOrTlli::ALT_tlli:
ret_val.tlli() = single_value.field_tlli->valueof();
break;
default:
TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @RLCMAC_CSN1_Types.GlobalTfiOrTlli.");
}
return ret_val;
}

GlobalTfiOrTlli_template& GlobalTfiOrTlli_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @RLCMAC_CSN1_Types.GlobalTfiOrTlli.");
if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @RLCMAC_CSN1_Types.GlobalTfiOrTlli.");
return value_list.list_value[list_index];
}
void GlobalTfiOrTlli_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST && template_type != CONJUNCTION_MATCH) TTCN_error ("Internal error: Setting an invalid list for a template of union type @RLCMAC_CSN1_Types.GlobalTfiOrTlli.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new GlobalTfiOrTlli_template[list_length];
}

NullGlobalTfi_template& GlobalTfiOrTlli_template::global__tfi()
{
if (template_selection != SPECIFIC_VALUE || single_value.union_selection != GlobalTfiOrTlli::ALT_global__tfi) {
template_sel old_selection = template_selection;
clean_up();
if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_global__tfi = new NullGlobalTfi_template(ANY_VALUE);
else single_value.field_global__tfi = new NullGlobalTfi_template;
single_value.union_selection = GlobalTfiOrTlli::ALT_global__tfi;
set_selection(SPECIFIC_VALUE);
}
return *single_value.field_global__tfi;
}

const NullGlobalTfi_template& GlobalTfiOrTlli_template::global__tfi() const
{
if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field global_tfi in a non-specific template of union type @RLCMAC_CSN1_Types.GlobalTfiOrTlli.");
if (single_value.union_selection != GlobalTfiOrTlli::ALT_global__tfi) TTCN_error("Accessing non-selected field global_tfi in a template of union type @RLCMAC_CSN1_Types.GlobalTfiOrTlli.");
return *single_value.field_global__tfi;
}

TenTlli_template& GlobalTfiOrTlli_template::tlli()
{
if (template_selection != SPECIFIC_VALUE || single_value.union_selection != GlobalTfiOrTlli::ALT_tlli) {
template_sel old_selection = template_selection;
clean_up();
if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_tlli = new TenTlli_template(ANY_VALUE);
else single_value.field_tlli = new TenTlli_template;
single_value.union_selection = GlobalTfiOrTlli::ALT_tlli;
set_selection(SPECIFIC_VALUE);
}
return *single_value.field_tlli;
}

const TenTlli_template& GlobalTfiOrTlli_template::tlli() const
{
if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field tlli in a non-specific template of union type @RLCMAC_CSN1_Types.GlobalTfiOrTlli.");
if (single_value.union_selection != GlobalTfiOrTlli::ALT_tlli) TTCN_error("Accessing non-selected field tlli in a template of union type @RLCMAC_CSN1_Types.GlobalTfiOrTlli.");
return *single_value.field_tlli;
}

boolean GlobalTfiOrTlli_template::ischosen(GlobalTfiOrTlli::union_selection_type checked_selection) const
{
if (checked_selection == GlobalTfiOrTlli::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RLCMAC_CSN1_Types.GlobalTfiOrTlli.");
switch (template_selection) {
case SPECIFIC_VALUE:
if (single_value.union_selection == GlobalTfiOrTlli::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @RLCMAC_CSN1_Types.GlobalTfiOrTlli.");
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 @RLCMAC_CSN1_Types.GlobalTfiOrTlli 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 GlobalTfiOrTlli_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
switch (single_value.union_selection) {
case GlobalTfiOrTlli::ALT_global__tfi:
TTCN_Logger::log_event_str("{ global_tfi := ");
single_value.field_global__tfi->log();
TTCN_Logger::log_event_str(" }");
break;
case GlobalTfiOrTlli::ALT_tlli:
TTCN_Logger::log_event_str("{ tlli := ");
single_value.field_tlli->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 CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void GlobalTfiOrTlli_template::log_match(const GlobalTfiOrTlli& match_value, boolean legacy) const
{
if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity() && match(match_value, legacy)){
TTCN_Logger::print_logmatch_buffer();
TTCN_Logger::log_event_str(" matched");
return;
}
if (template_selection == SPECIFIC_VALUE && single_value.union_selection == match_value.get_selection()) {
size_t previous_size = TTCN_Logger::get_logmatch_buffer_len();
switch (single_value.union_selection) {
case GlobalTfiOrTlli::ALT_global__tfi:
if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
TTCN_Logger::log_logmatch_info(".global_tfi");
single_value.field_global__tfi->log_match(match_value.global__tfi(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
} else {
TTCN_Logger::log_event_str("{ global_tfi := ");
single_value.field_global__tfi->log_match(match_value.global__tfi(), legacy);
TTCN_Logger::log_event_str(" }");
}
break;
case GlobalTfiOrTlli::ALT_tlli:
if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
TTCN_Logger::log_logmatch_info(".tlli");
single_value.field_tlli->log_match(match_value.tlli(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
} else {
TTCN_Logger::log_event_str("{ tlli := ");
single_value.field_tlli->log_match(match_value.tlli(), 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 GlobalTfiOrTlli_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
switch (single_value.union_selection) {
case GlobalTfiOrTlli::ALT_global__tfi:
single_value.field_global__tfi->set_implicit_omit(); break;
case GlobalTfiOrTlli::ALT_tlli:
single_value.field_tlli->set_implicit_omit(); break;
default: break;
}
}

void GlobalTfiOrTlli_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 GlobalTfiOrTlli::ALT_global__tfi:
single_value.field_global__tfi->encode_text(text_buf);
break;
case GlobalTfiOrTlli::ALT_tlli:
single_value.field_tlli->encode_text(text_buf);
break;
default:
TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @RLCMAC_CSN1_Types.GlobalTfiOrTlli.");
}
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 @RLCMAC_CSN1_Types.GlobalTfiOrTlli.");
}
}

void GlobalTfiOrTlli_template::decode_text(Text_Buf& text_buf)
{
clean_up();
decode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
{
single_value.union_selection = GlobalTfiOrTlli::UNBOUND_VALUE;
GlobalTfiOrTlli::union_selection_type new_selection = (GlobalTfiOrTlli::union_selection_type)text_buf.pull_int().get_val();
switch (new_selection) {
case GlobalTfiOrTlli::ALT_global__tfi:
single_value.field_global__tfi = new NullGlobalTfi_template;
single_value.field_global__tfi->decode_text(text_buf);
break;
case GlobalTfiOrTlli::ALT_tlli:
single_value.field_tlli = new TenTlli_template;
single_value.field_tlli->decode_text(text_buf);
break;
default:
TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @RLCMAC_CSN1_Types.GlobalTfiOrTlli.");
}
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 GlobalTfiOrTlli_template[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 @RLCMAC_CSN1_Types.GlobalTfiOrTlli.");
}
}

boolean GlobalTfiOrTlli_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean GlobalTfiOrTlli_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int v_idx=0; v_idx<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 GlobalTfiOrTlli_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 `@RLCMAC_CSN1_Types.GlobalTfiOrTlli'");
    }
    if (strcmp("global_tfi", param_field) == 0) {
      global__tfi().set_param(param);
      return;
    } else if (strcmp("tlli", param_field) == 0) {
      tlli().set_param(param);
      return;
    } else param.error("Field `%s' not found in union template type `@RLCMAC_CSN1_Types.GlobalTfiOrTlli'", 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:
  case Module_Param::MP_ConjunctList_Template: {
    GlobalTfiOrTlli_template new_temp;
    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size());
    for (size_t p_i=0; p_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", "@RLCMAC_CSN1_Types.GlobalTfiOrTlli");
    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, "global_tfi")) {
      global__tfi().set_param(*mp_last);
      break;
    }
    if (!strcmp(last_name, "tlli")) {
      tlli().set_param(*mp_last);
      break;
    }
    mp_last->error("Field %s does not exist in type @RLCMAC_CSN1_Types.GlobalTfiOrTlli.", last_name);
  } break;
  case Module_Param::MP_Implication_Template: {
    GlobalTfiOrTlli_template* precondition = new GlobalTfiOrTlli_template;
    precondition->set_param(*m_p->get_elem(0));
    GlobalTfiOrTlli_template* implied_template = new GlobalTfiOrTlli_template;
    implied_template->set_param(*m_p->get_elem(1));
    *this = GlobalTfiOrTlli_template(precondition, implied_template);
  } break;
  default:
    param.type_error("union template", "@RLCMAC_CSN1_Types.GlobalTfiOrTlli");
  }
  is_ifpresent = param.get_ifpresent();
}

void GlobalTfiOrTlli_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 GlobalTfiOrTlli::ALT_global__tfi:
single_value.field_global__tfi->check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.GlobalTfiOrTlli");
return;
case GlobalTfiOrTlli::ALT_tlli:
single_value.field_tlli->check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.GlobalTfiOrTlli");
return;
default:
TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @RLCMAC_CSN1_Types.GlobalTfiOrTlli.");
}
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 : "@RLCMAC_CSN1_Types.GlobalTfiOrTlli");
}

PageMode::PageMode()
{
enum_value = UNBOUND_VALUE;
}

PageMode::PageMode(int other_value)
{
if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @RLCMAC_CSN1_Types.PageMode with invalid numeric value %d.", other_value);
enum_value = (enum_type)other_value;
}

PageMode::PageMode(enum_type other_value)
{
enum_value = other_value;
}

PageMode::PageMode(const PageMode& other_value)
: Base_Type()
{
if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @RLCMAC_CSN1_Types.PageMode.");
enum_value = other_value.enum_value;
}

PageMode& PageMode::operator=(int other_value)
{
if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @RLCMAC_CSN1_Types.PageMode.", other_value);
enum_value = (enum_type)other_value;
return *this;
}

PageMode& PageMode::operator=(enum_type other_value)
{
enum_value = other_value;
return *this;
}

PageMode& PageMode::operator=(const PageMode& other_value)
{
if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @RLCMAC_CSN1_Types.PageMode.");
enum_value = other_value.enum_value;
return *this;
}

boolean PageMode::operator==(int other_value) const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.PageMode.");
if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RLCMAC_CSN1_Types.PageMode comparison is an unknown numeric value %d", other_value);
return enum_value == other_value;
}

boolean PageMode::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 @RLCMAC_CSN1_Types.PageMode.");
return enum_value == other_value;
}

boolean PageMode::operator==(const PageMode& other_value) const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.PageMode.");
if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.PageMode.");
return enum_value == other_value.enum_value;
}

boolean PageMode::operator<(int other_value) const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.PageMode.");
if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RLCMAC_CSN1_Types.PageMode comparison is an unknown numeric value %d", other_value);
return enum_value < other_value;
}

boolean PageMode::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 @RLCMAC_CSN1_Types.PageMode.");
return enum_value < other_value;
}

boolean PageMode::operator<(const PageMode& other_value) const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.PageMode.");
if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.PageMode.");
return enum_value < other_value.enum_value;
}

boolean PageMode::operator>(int other_value) const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.PageMode.");
if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RLCMAC_CSN1_Types.PageMode comparison is an unknown numeric value %d", other_value);
return enum_value > other_value;
}

boolean PageMode::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 @RLCMAC_CSN1_Types.PageMode.");
return enum_value > other_value;
}

boolean PageMode::operator>(const PageMode& other_value) const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.PageMode.");
if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RLCMAC_CSN1_Types.PageMode.");
return enum_value > other_value.enum_value;
}

const char *PageMode::enum_to_str(enum_type enum_par)
{
switch (enum_par) {
case PAGE__MODE__NORMAL: return "PAGE_MODE_NORMAL";
case PAGE__MODE__EXTENDED: return "PAGE_MODE_EXTENDED";
case PAGE__MODE__REORG: return "PAGE_MODE_REORG";
case PAGE__MODE__SAME: return "PAGE_MODE_SAME";
default:
return "<unknown>";
}
}

PageMode::enum_type PageMode::str_to_enum(const char *str_par, const int* int_par, const int* int_par2)
{
if (int_par == NULL && int_par2 == NULL) {
if (!strcmp(str_par, "PAGE_MODE_NORMAL")) return PAGE__MODE__NORMAL;
if (!strcmp(str_par, "PAGE_MODE_EXTENDED")) return PAGE__MODE__EXTENDED;
if (!strcmp(str_par, "PAGE_MODE_REORG")) return PAGE__MODE__REORG;
if (!strcmp(str_par, "PAGE_MODE_SAME")) return PAGE__MODE__SAME;
}
return UNKNOWN_VALUE;
}

boolean PageMode::is_valid_enum(int int_par)
{
switch (int_par) {
case 0:
case 1:
case 2:
case 3:
return TRUE;
default:
return FALSE;
}
}

int PageMode::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 @RLCMAC_CSN1_Types.PageMode.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
return enum_par;
}

int PageMode::enum2int(const PageMode& 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 @RLCMAC_CSN1_Types.PageMode.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
return enum_par.enum_value;
}

void PageMode::int2enum(int int_val)
{
if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @RLCMAC_CSN1_Types.PageMode.", int_val);
enum_value = (enum_type)int_val;
}

PageMode::operator PageMode::enum_type() const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @RLCMAC_CSN1_Types.PageMode.");
return enum_value;
}

void PageMode::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 PageMode::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", "@RLCMAC_CSN1_Types.PageMode");
  enum_value = str_to_enum(param.get_enumerated(), param.get_enumerated_value());
  if (!is_valid_enum(enum_value)) {
    param.error("Invalid enumerated value for type @RLCMAC_CSN1_Types.PageMode.");
  }
}

void PageMode::encode_text(Text_Buf& text_buf) const
{
if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @RLCMAC_CSN1_Types.PageMode.");
text_buf.push_int(enum_value);
}

void PageMode::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 @RLCMAC_CSN1_Types.PageMode.", enum_value);
}

void PageMode::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void PageMode::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int PageMode::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, 3, 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 PageMode::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
{
  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 3);
}

void PageMode_template::copy_template(const PageMode_template& other_value)
{
set_selection(other_value);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value = other_value.single_value;
break;
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new PageMode_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new PageMode_template(*other_value.implication_.precondition);
implication_.implied_template = new PageMode_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of enumerated type @RLCMAC_CSN1_Types.PageMode.");
}
}

PageMode_template::PageMode_template()
{
}

PageMode_template::PageMode_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

PageMode_template::PageMode_template(int other_value)
 : Base_Template(SPECIFIC_VALUE)
{
if (!PageMode::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @RLCMAC_CSN1_Types.PageMode with unknown numeric value %d.", other_value);
single_value = (PageMode::enum_type)other_value;
}

PageMode_template::PageMode_template(PageMode::enum_type other_value)
 : Base_Template(SPECIFIC_VALUE)
{
single_value = other_value;
}

PageMode_template::PageMode_template(const PageMode& other_value)
 : Base_Template(SPECIFIC_VALUE)
{
if (other_value.enum_value == PageMode::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @RLCMAC_CSN1_Types.PageMode.");
single_value = other_value.enum_value;
}

PageMode_template::PageMode_template(const OPTIONAL<PageMode>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
set_selection(SPECIFIC_VALUE);
single_value = (PageMode::enum_type)(const PageMode&)other_value;
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of enumerated type @RLCMAC_CSN1_Types.PageMode from an unbound optional field.");
}
}

PageMode_template::PageMode_template(PageMode_template* p_precondition, PageMode_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

PageMode_template::PageMode_template(Dynamic_Match_Interface<PageMode>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<PageMode>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

PageMode_template::PageMode_template(const PageMode_template& other_value)
 : Base_Template()
{
copy_template(other_value);
}

PageMode_template::~PageMode_template()
{
clean_up();
}

boolean PageMode_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
return TRUE;
}

boolean PageMode_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value != PageMode::UNBOUND_VALUE;
}

void PageMode_template::clean_up()
{
switch (template_selection) {
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

PageMode_template& PageMode_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

PageMode_template& PageMode_template::operator=(int other_value)
{
if (!PageMode::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @RLCMAC_CSN1_Types.PageMode.", other_value);
clean_up();
set_selection(SPECIFIC_VALUE);
single_value = (PageMode::enum_type)other_value;
return *this;
}

PageMode_template& PageMode_template::operator=(PageMode::enum_type other_value)
{
clean_up();
set_selection(SPECIFIC_VALUE);
single_value = other_value;
return *this;
}

PageMode_template& PageMode_template::operator=(const PageMode& other_value)
{
if (other_value.enum_value == PageMode::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @RLCMAC_CSN1_Types.PageMode to a template.");
clean_up();
set_selection(SPECIFIC_VALUE);
single_value = other_value.enum_value;
return *this;
}

PageMode_template& PageMode_template::operator=(const OPTIONAL<PageMode>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
set_selection(SPECIFIC_VALUE);
single_value = (PageMode::enum_type)(const PageMode&)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 @RLCMAC_CSN1_Types.PageMode.");
}
return *this;
}

PageMode_template& PageMode_template::operator=(const PageMode_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean PageMode_template::match(PageMode::enum_type other_value, boolean) const
{
switch (template_selection) {
case SPECIFIC_VALUE:
return single_value == other_value;
case OMIT_VALUE:
return FALSE;
case ANY_VALUE:
case ANY_OR_OMIT:
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of enumerated type @RLCMAC_CSN1_Types.PageMode.");
}
return FALSE;
}

boolean PageMode_template::match(const PageMode& other_value, boolean) const
{
if (other_value.enum_value == PageMode::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @RLCMAC_CSN1_Types.PageMode with an unbound value.");
return match(other_value.enum_value);
}

PageMode::enum_type PageMode_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 @RLCMAC_CSN1_Types.PageMode.");
return single_value;
}

void PageMode_template::set_type(template_sel template_type, unsigned int list_length)
{
clean_up();
switch (template_type) {
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new PageMode_template[list_length];
break;
default:
TTCN_error("Setting an invalid type for a template of enumerated type @RLCMAC_CSN1_Types.PageMode.");
}
}

PageMode_template& PageMode_template::list_item(unsigned int list_index)
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element in a non-list template of enumerated type @RLCMAC_CSN1_Types.PageMode.");
if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @RLCMAC_CSN1_Types.PageMode.");
return value_list.list_value[list_index];
}

void PageMode_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_enum(PageMode::enum_to_str(single_value), single_value);
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
if (elem_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[elem_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void PageMode_template::log_match(const PageMode& 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 PageMode_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 @RLCMAC_CSN1_Types.PageMode.");
}
}

void PageMode_template::decode_text(Text_Buf& text_buf)
{
clean_up();
decode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value = (PageMode::enum_type)text_buf.pull_int().get_val();
if (!PageMode::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @RLCMAC_CSN1_Types.PageMode.", 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 PageMode_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 @RLCMAC_CSN1_Types.PageMode.");
}
}

boolean PageMode_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean PageMode_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int i=0; 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 PageMode_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:
  case Module_Param::MP_ConjunctList_Template: {
    PageMode_template new_temp;
    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size());
    for (size_t p_i=0; p_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: {
    PageMode::enum_type enum_val = PageMode::str_to_enum(m_p->get_enumerated(), m_p->get_enumerated_value());
    if (!PageMode::is_valid_enum(enum_val)) {
      param.error("Invalid enumerated value for type @RLCMAC_CSN1_Types.PageMode.");
    }
    *this = enum_val;
  } break;
  case Module_Param::MP_Implication_Template: {
    PageMode_template* precondition = new PageMode_template;
    precondition->set_param(*m_p->get_elem(0));
    PageMode_template* implied_template = new PageMode_template;
    implied_template->set_param(*m_p->get_elem(1));
    *this = PageMode_template(precondition, implied_template);
  } break;
  default:
    param.type_error("enumerated template", "@RLCMAC_CSN1_Types.PageMode");
  }
  is_ifpresent = param.get_ifpresent();
}

void PageMode_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 : "@RLCMAC_CSN1_Types.PageMode");
}

PacketTimingAdvance::PacketTimingAdvance()
{
}

PacketTimingAdvance::PacketTimingAdvance(const BITSTRING& par_val__present,
    const OPTIONAL< INTEGER >& par_val,
    const BITSTRING& par_idx__present,
    const OPTIONAL< INTEGER >& par_idx,
    const OPTIONAL< INTEGER >& par_timeslot__nr)
  :   field_val__present(par_val__present),
  field_val(par_val),
  field_idx__present(par_idx__present),
  field_idx(par_idx),
  field_timeslot__nr(par_timeslot__nr)
{
}

PacketTimingAdvance::PacketTimingAdvance(const PacketTimingAdvance& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RLCMAC_CSN1_Types.PacketTimingAdvance.");
if (other_value.val__present().is_bound()) field_val__present = other_value.val__present();
else field_val__present.clean_up();
if (other_value.val().is_bound()) field_val = other_value.val();
else field_val.clean_up();
if (other_value.idx__present().is_bound()) field_idx__present = other_value.idx__present();
else field_idx__present.clean_up();
if (other_value.idx().is_bound()) field_idx = other_value.idx();
else field_idx.clean_up();
if (other_value.timeslot__nr().is_bound()) field_timeslot__nr = other_value.timeslot__nr();
else field_timeslot__nr.clean_up();
}

void PacketTimingAdvance::clean_up()
{
field_val__present.clean_up();
field_val.clean_up();
field_idx__present.clean_up();
field_idx.clean_up();
field_timeslot__nr.clean_up();
}

const TTCN_Typedescriptor_t* PacketTimingAdvance::get_descriptor() const { return &PacketTimingAdvance_descr_; }
PacketTimingAdvance& PacketTimingAdvance::operator=(const PacketTimingAdvance& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RLCMAC_CSN1_Types.PacketTimingAdvance.");
  if (other_value.val__present().is_bound()) field_val__present = other_value.val__present();
  else field_val__present.clean_up();
  if (other_value.val().is_bound()) field_val = other_value.val();
  else field_val.clean_up();
  if (other_value.idx__present().is_bound()) field_idx__present = other_value.idx__present();
  else field_idx__present.clean_up();
  if (other_value.idx().is_bound()) field_idx = other_value.idx();
  else field_idx.clean_up();
  if (other_value.timeslot__nr().is_bound()) field_timeslot__nr = other_value.timeslot__nr();
  else field_timeslot__nr.clean_up();
}
return *this;
}

boolean PacketTimingAdvance::operator==(const PacketTimingAdvance& other_value) const
{
return field_val__present==other_value.field_val__present
  && field_val==other_value.field_val
  && field_idx__present==other_value.field_idx__present
  && field_idx==other_value.field_idx
  && field_timeslot__nr==other_value.field_timeslot__nr;
}

boolean PacketTimingAdvance::is_bound() const
{
return (field_val__present.is_bound())
  || (OPTIONAL_OMIT == field_val.get_selection() || field_val.is_bound())
  || (field_idx__present.is_bound())
  || (OPTIONAL_OMIT == field_idx.get_selection() || field_idx.is_bound())
  || (OPTIONAL_OMIT == field_timeslot__nr.get_selection() || field_timeslot__nr.is_bound());
}
boolean PacketTimingAdvance::is_value() const
{
return field_val__present.is_value()
  && (OPTIONAL_OMIT == field_val.get_selection() || field_val.is_value())
  && field_idx__present.is_value()
  && (OPTIONAL_OMIT == field_idx.get_selection() || field_idx.is_value())
  && (OPTIONAL_OMIT == field_timeslot__nr.get_selection() || field_timeslot__nr.is_value());
}
int PacketTimingAdvance::size_of() const
{
  int ret_val = 2;
  if (field_val.ispresent()) ret_val++;
  if (field_idx.ispresent()) ret_val++;
  if (field_timeslot__nr.ispresent()) ret_val++;
  return ret_val;
}

void PacketTimingAdvance::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ val_present := ");
field_val__present.log();
TTCN_Logger::log_event_str(", val := ");
field_val.log();
TTCN_Logger::log_event_str(", idx_present := ");
field_idx__present.log();
TTCN_Logger::log_event_str(", idx := ");
field_idx.log();
TTCN_Logger::log_event_str(", timeslot_nr := ");
field_timeslot__nr.log();
TTCN_Logger::log_event_str(" }");
}

void PacketTimingAdvance::set_implicit_omit()
{
if (val__present().is_bound()) val__present().set_implicit_omit();
if (!val().is_bound()) val() = OMIT_VALUE;
else val().set_implicit_omit();
if (idx__present().is_bound()) idx__present().set_implicit_omit();
if (!idx().is_bound()) idx() = OMIT_VALUE;
else idx().set_implicit_omit();
if (!timeslot__nr().is_bound()) timeslot__nr() = OMIT_VALUE;
else timeslot__nr().set_implicit_omit();
}

void PacketTimingAdvance::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 @RLCMAC_CSN1_Types.PacketTimingAdvance 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) val__present().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) val().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) idx__present().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) idx().set_param(*param.get_elem(3));
    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) timeslot__nr().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(), "val_present")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          val__present().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "val")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          val().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "idx_present")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          idx__present().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "idx")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          idx().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "timeslot_nr")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          timeslot__nr().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 @RLCMAC_CSN1_Types.PacketTimingAdvance: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@RLCMAC_CSN1_Types.PacketTimingAdvance");
  }
}

void PacketTimingAdvance::encode_text(Text_Buf& text_buf) const
{
field_val__present.encode_text(text_buf);
field_val.encode_text(text_buf);
field_idx__present.encode_text(text_buf);
field_idx.encode_text(text_buf);
field_timeslot__nr.encode_text(text_buf);
}

void PacketTimingAdvance::decode_text(Text_Buf& text_buf)
{
field_val__present.decode_text(text_buf);
field_val.decode_text(text_buf);
field_idx__present.decode_text(text_buf);
field_idx.decode_text(text_buf);
field_timeslot__nr.decode_text(text_buf);
}

void PacketTimingAdvance::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void PacketTimingAdvance::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int PacketTimingAdvance::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, PacketTimingAdvance_val__present_descr_.raw->forceomit);
  decoded_field_length = field_val__present.RAW_decode(PacketTimingAdvance_val__present_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());
  if (limit > 0 && field_val__present ==  bs_0){
  if (force_omit != NULL && (*force_omit)(1)) {
    field_val = OMIT_VALUE;
  }
  else {
  size_t fl_start_pos = p_buf.get_pos_bit();
  RAW_Force_Omit field_1_force_omit(1, force_omit, PacketTimingAdvance_val_descr_.raw->forceomit);
  decoded_field_length = field_val().RAW_decode(PacketTimingAdvance_val_descr_, p_buf, limit, local_top_order, TRUE, -1, TRUE, &field_1_force_omit);
  if (decoded_field_length < 1) {
  field_val = OMIT_VALUE;
  p_buf.set_pos_bit(fl_start_pos);
  } else {
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  }
  }
  }
  else field_val=OMIT_VALUE;
  RAW_Force_Omit field_2_force_omit(2, force_omit, PacketTimingAdvance_idx__present_descr_.raw->forceomit);
  decoded_field_length = field_idx__present.RAW_decode(PacketTimingAdvance_idx__present_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());
  if (limit > 0 && field_idx__present ==  bs_0){
  if (force_omit != NULL && (*force_omit)(3)) {
    field_idx = OMIT_VALUE;
  }
  else {
  size_t fl_start_pos = p_buf.get_pos_bit();
  RAW_Force_Omit field_3_force_omit(3, force_omit, PacketTimingAdvance_idx_descr_.raw->forceomit);
  decoded_field_length = field_idx().RAW_decode(PacketTimingAdvance_idx_descr_, p_buf, limit, local_top_order, TRUE, -1, TRUE, &field_3_force_omit);
  if (decoded_field_length < 1) {
  field_idx = OMIT_VALUE;
  p_buf.set_pos_bit(fl_start_pos);
  } else {
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  }
  }
  }
  else field_idx=OMIT_VALUE;
  if (limit > 0 && field_idx__present ==  bs_0){
  if (force_omit != NULL && (*force_omit)(4)) {
    field_timeslot__nr = OMIT_VALUE;
  }
  else {
  size_t fl_start_pos = p_buf.get_pos_bit();
  RAW_Force_Omit field_4_force_omit(4, force_omit, PacketTimingAdvance_timeslot__nr_descr_.raw->forceomit);
  decoded_field_length = field_timeslot__nr().RAW_decode(PacketTimingAdvance_timeslot__nr_descr_, p_buf, limit, local_top_order, TRUE, -1, TRUE, &field_4_force_omit);
  if (decoded_field_length < 1) {
  field_timeslot__nr = OMIT_VALUE;
  p_buf.set_pos_bit(fl_start_pos);
  } else {
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  }
  }
  }
  else field_timeslot__nr=OMIT_VALUE;
  p_buf.set_pos_bit(last_decoded_pos);
  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
}

int PacketTimingAdvance::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, PacketTimingAdvance_val__present_descr_.raw);
  if (field_val.ispresent()) {
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PacketTimingAdvance_val_descr_.raw);
  }
  else myleaf.body.node.nodes[1] = NULL;
  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, PacketTimingAdvance_idx__present_descr_.raw);
  if (field_idx.ispresent()) {
  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, PacketTimingAdvance_idx_descr_.raw);
  }
  else myleaf.body.node.nodes[3] = NULL;
  if (field_timeslot__nr.ispresent()) {
  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, PacketTimingAdvance_timeslot__nr_descr_.raw);
  }
  else myleaf.body.node.nodes[4] = NULL;
  encoded_length += field_val__present.RAW_encode(PacketTimingAdvance_val__present_descr_, *myleaf.body.node.nodes[0]);
  if (field_val.ispresent()) {
  encoded_length += field_val().RAW_encode(PacketTimingAdvance_val_descr_, *myleaf.body.node.nodes[1]);
  }
  encoded_length += field_idx__present.RAW_encode(PacketTimingAdvance_idx__present_descr_, *myleaf.body.node.nodes[2]);
  if (field_idx.ispresent()) {
  encoded_length += field_idx().RAW_encode(PacketTimingAdvance_idx_descr_, *myleaf.body.node.nodes[3]);
  }
  if (field_timeslot__nr.ispresent()) {
  encoded_length += field_timeslot__nr().RAW_encode(PacketTimingAdvance_timeslot__nr_descr_, *myleaf.body.node.nodes[4]);
  }
  if (field_val.ispresent() && (field_val__present !=  bs_0)) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={0};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   bs_0.RAW_encode(PacketTimingAdvance_val__present_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);
  }
  }
  if (field_idx.ispresent() && (field_idx__present !=  bs_0)) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={2};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   bs_0.RAW_encode(PacketTimingAdvance_idx__present_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);
  }
  }
  if (field_timeslot__nr.ispresent() && (field_idx__present !=  bs_0)) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={2};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   bs_0.RAW_encode(PacketTimingAdvance_idx__present_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);
  }
  }
  return myleaf.length = encoded_length;
}

struct PacketTimingAdvance_template::single_value_struct {
BITSTRING_template field_val__present;
INTEGER_template field_val;
BITSTRING_template field_idx__present;
INTEGER_template field_idx;
INTEGER_template field_timeslot__nr;
};

void PacketTimingAdvance_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_val__present = ANY_VALUE;
single_value->field_val = ANY_OR_OMIT;
single_value->field_idx__present = ANY_VALUE;
single_value->field_idx = ANY_OR_OMIT;
single_value->field_timeslot__nr = ANY_OR_OMIT;
}
}
}

void PacketTimingAdvance_template::copy_value(const PacketTimingAdvance& other_value)
{
single_value = new single_value_struct;
if (other_value.val__present().is_bound()) {
  single_value->field_val__present = other_value.val__present();
} else {
  single_value->field_val__present.clean_up();
}
if (other_value.val().is_bound()) {
  if (other_value.val().ispresent()) single_value->field_val = other_value.val()();
  else single_value->field_val = OMIT_VALUE;
} else {
  single_value->field_val.clean_up();
}
if (other_value.idx__present().is_bound()) {
  single_value->field_idx__present = other_value.idx__present();
} else {
  single_value->field_idx__present.clean_up();
}
if (other_value.idx().is_bound()) {
  if (other_value.idx().ispresent()) single_value->field_idx = other_value.idx()();
  else single_value->field_idx = OMIT_VALUE;
} else {
  single_value->field_idx.clean_up();
}
if (other_value.timeslot__nr().is_bound()) {
  if (other_value.timeslot__nr().ispresent()) single_value->field_timeslot__nr = other_value.timeslot__nr()();
  else single_value->field_timeslot__nr = OMIT_VALUE;
} else {
  single_value->field_timeslot__nr.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void PacketTimingAdvance_template::copy_template(const PacketTimingAdvance_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.val__present().get_selection()) {
single_value->field_val__present = other_value.val__present();
} else {
single_value->field_val__present.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.val().get_selection()) {
single_value->field_val = other_value.val();
} else {
single_value->field_val.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.idx__present().get_selection()) {
single_value->field_idx__present = other_value.idx__present();
} else {
single_value->field_idx__present.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.idx().get_selection()) {
single_value->field_idx = other_value.idx();
} else {
single_value->field_idx.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.timeslot__nr().get_selection()) {
single_value->field_timeslot__nr = other_value.timeslot__nr();
} else {
single_value->field_timeslot__nr.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new PacketTimingAdvance_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new PacketTimingAdvance_template(*other_value.implication_.precondition);
implication_.implied_template = new PacketTimingAdvance_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.PacketTimingAdvance.");
break;
}
set_selection(other_value);
}

PacketTimingAdvance_template::PacketTimingAdvance_template()
{
}

PacketTimingAdvance_template::PacketTimingAdvance_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

PacketTimingAdvance_template::PacketTimingAdvance_template(const PacketTimingAdvance& other_value)
{
copy_value(other_value);
}

PacketTimingAdvance_template::PacketTimingAdvance_template(const OPTIONAL<PacketTimingAdvance>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const PacketTimingAdvance&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @RLCMAC_CSN1_Types.PacketTimingAdvance from an unbound optional field.");
}
}

PacketTimingAdvance_template::PacketTimingAdvance_template(PacketTimingAdvance_template* p_precondition, PacketTimingAdvance_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

PacketTimingAdvance_template::PacketTimingAdvance_template(Dynamic_Match_Interface<PacketTimingAdvance>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<PacketTimingAdvance>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

PacketTimingAdvance_template::PacketTimingAdvance_template(const PacketTimingAdvance_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

PacketTimingAdvance_template::~PacketTimingAdvance_template()
{
clean_up();
}

PacketTimingAdvance_template& PacketTimingAdvance_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

PacketTimingAdvance_template& PacketTimingAdvance_template::operator=(const PacketTimingAdvance& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

PacketTimingAdvance_template& PacketTimingAdvance_template::operator=(const OPTIONAL<PacketTimingAdvance>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const PacketTimingAdvance&)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 @RLCMAC_CSN1_Types.PacketTimingAdvance.");
}
return *this;
}

PacketTimingAdvance_template& PacketTimingAdvance_template::operator=(const PacketTimingAdvance_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean PacketTimingAdvance_template::match(const PacketTimingAdvance& 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.val__present().is_bound()) return FALSE;
if(!single_value->field_val__present.match(other_value.val__present(), legacy))return FALSE;
if(!other_value.val().is_bound()) return FALSE;
if((other_value.val().ispresent() ? !single_value->field_val.match((const INTEGER&)other_value.val(), legacy) : !single_value->field_val.match_omit(legacy)))return FALSE;
if(!other_value.idx__present().is_bound()) return FALSE;
if(!single_value->field_idx__present.match(other_value.idx__present(), legacy))return FALSE;
if(!other_value.idx().is_bound()) return FALSE;
if((other_value.idx().ispresent() ? !single_value->field_idx.match((const INTEGER&)other_value.idx(), legacy) : !single_value->field_idx.match_omit(legacy)))return FALSE;
if(!other_value.timeslot__nr().is_bound()) return FALSE;
if((other_value.timeslot__nr().ispresent() ? !single_value->field_timeslot__nr.match((const INTEGER&)other_value.timeslot__nr(), legacy) : !single_value->field_timeslot__nr.match_omit(legacy)))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.PacketTimingAdvance.");
}
return FALSE;
}

boolean PacketTimingAdvance_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_val__present.is_bound()
 || (single_value->field_val.is_omit() || single_value->field_val.is_bound())
 || single_value->field_idx__present.is_bound()
 || (single_value->field_idx.is_omit() || single_value->field_idx.is_bound())
 || (single_value->field_timeslot__nr.is_omit() || single_value->field_timeslot__nr.is_bound());
}

boolean PacketTimingAdvance_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_val__present.is_value()
 && (single_value->field_val.is_omit() || single_value->field_val.is_value())
 && single_value->field_idx__present.is_value()
 && (single_value->field_idx.is_omit() || single_value->field_idx.is_value())
 && (single_value->field_timeslot__nr.is_omit() || single_value->field_timeslot__nr.is_value());
}

void PacketTimingAdvance_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

PacketTimingAdvance PacketTimingAdvance_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 @RLCMAC_CSN1_Types.PacketTimingAdvance.");
PacketTimingAdvance ret_val;
if (single_value->field_val__present.is_bound()) {
ret_val.val__present() = single_value->field_val__present.valueof();
}
if (single_value->field_val.is_omit()) ret_val.val() = OMIT_VALUE;
else if (single_value->field_val.is_bound()) {
ret_val.val() = single_value->field_val.valueof();
}
if (single_value->field_idx__present.is_bound()) {
ret_val.idx__present() = single_value->field_idx__present.valueof();
}
if (single_value->field_idx.is_omit()) ret_val.idx() = OMIT_VALUE;
else if (single_value->field_idx.is_bound()) {
ret_val.idx() = single_value->field_idx.valueof();
}
if (single_value->field_timeslot__nr.is_omit()) ret_val.timeslot__nr() = OMIT_VALUE;
else if (single_value->field_timeslot__nr.is_bound()) {
ret_val.timeslot__nr() = single_value->field_timeslot__nr.valueof();
}
return ret_val;
}

void PacketTimingAdvance_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @RLCMAC_CSN1_Types.PacketTimingAdvance.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new PacketTimingAdvance_template[list_length];
}

PacketTimingAdvance_template& PacketTimingAdvance_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @RLCMAC_CSN1_Types.PacketTimingAdvance.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @RLCMAC_CSN1_Types.PacketTimingAdvance.");
return value_list.list_value[list_index];
}

BITSTRING_template& PacketTimingAdvance_template::val__present()
{
set_specific();
return single_value->field_val__present;
}

const BITSTRING_template& PacketTimingAdvance_template::val__present() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field val_present of a non-specific template of type @RLCMAC_CSN1_Types.PacketTimingAdvance.");
return single_value->field_val__present;
}

INTEGER_template& PacketTimingAdvance_template::val()
{
set_specific();
return single_value->field_val;
}

const INTEGER_template& PacketTimingAdvance_template::val() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field val of a non-specific template of type @RLCMAC_CSN1_Types.PacketTimingAdvance.");
return single_value->field_val;
}

BITSTRING_template& PacketTimingAdvance_template::idx__present()
{
set_specific();
return single_value->field_idx__present;
}

const BITSTRING_template& PacketTimingAdvance_template::idx__present() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field idx_present of a non-specific template of type @RLCMAC_CSN1_Types.PacketTimingAdvance.");
return single_value->field_idx__present;
}

INTEGER_template& PacketTimingAdvance_template::idx()
{
set_specific();
return single_value->field_idx;
}

const INTEGER_template& PacketTimingAdvance_template::idx() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field idx of a non-specific template of type @RLCMAC_CSN1_Types.PacketTimingAdvance.");
return single_value->field_idx;
}

INTEGER_template& PacketTimingAdvance_template::timeslot__nr()
{
set_specific();
return single_value->field_timeslot__nr;
}

const INTEGER_template& PacketTimingAdvance_template::timeslot__nr() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field timeslot_nr of a non-specific template of type @RLCMAC_CSN1_Types.PacketTimingAdvance.");
return single_value->field_timeslot__nr;
}

int PacketTimingAdvance_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PacketTimingAdvance which has an ifpresent attribute.");
  switch (template_selection)
  {
  case SPECIFIC_VALUE:
  {    int ret_val = 2;
      if (single_value->field_val.is_present()) ret_val++;
      if (single_value->field_idx.is_present()) ret_val++;
      if (single_value->field_timeslot__nr.is_present()) ret_val++;
      return ret_val;
    }
  case VALUE_LIST:
   {
     if (value_list.n_values<1)
       TTCN_error("Internal error: Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PacketTimingAdvance 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 @RLCMAC_CSN1_Types.PacketTimingAdvance containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PacketTimingAdvance containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PacketTimingAdvance containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PacketTimingAdvance containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PacketTimingAdvance containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PacketTimingAdvance containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PacketTimingAdvance containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.PacketTimingAdvance.");
  }
  return 0;
}

void PacketTimingAdvance_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ val_present := ");
single_value->field_val__present.log();
TTCN_Logger::log_event_str(", val := ");
single_value->field_val.log();
TTCN_Logger::log_event_str(", idx_present := ");
single_value->field_idx__present.log();
TTCN_Logger::log_event_str(", idx := ");
single_value->field_idx.log();
TTCN_Logger::log_event_str(", timeslot_nr := ");
single_value->field_timeslot__nr.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void PacketTimingAdvance_template::log_match(const PacketTimingAdvance& 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_val__present.match(match_value.val__present(), legacy)){
TTCN_Logger::log_logmatch_info(".val_present");
single_value->field_val__present.log_match(match_value.val__present(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if (match_value.val().ispresent()){
if(!single_value->field_val.match(match_value.val(), legacy)){
TTCN_Logger::log_logmatch_info(".val");
single_value->field_val.log_match(match_value.val(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
} else {
if (!single_value->field_val.match_omit(legacy)){
 TTCN_Logger::log_logmatch_info(".val := omit with ");
TTCN_Logger::print_logmatch_buffer();
single_value->field_val.log();
TTCN_Logger::log_event_str(" unmatched");
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}
if(!single_value->field_idx__present.match(match_value.idx__present(), legacy)){
TTCN_Logger::log_logmatch_info(".idx_present");
single_value->field_idx__present.log_match(match_value.idx__present(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if (match_value.idx().ispresent()){
if(!single_value->field_idx.match(match_value.idx(), legacy)){
TTCN_Logger::log_logmatch_info(".idx");
single_value->field_idx.log_match(match_value.idx(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
} else {
if (!single_value->field_idx.match_omit(legacy)){
 TTCN_Logger::log_logmatch_info(".idx := omit with ");
TTCN_Logger::print_logmatch_buffer();
single_value->field_idx.log();
TTCN_Logger::log_event_str(" unmatched");
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}
if (match_value.timeslot__nr().ispresent()){
if(!single_value->field_timeslot__nr.match(match_value.timeslot__nr(), legacy)){
TTCN_Logger::log_logmatch_info(".timeslot_nr");
single_value->field_timeslot__nr.log_match(match_value.timeslot__nr(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
} else {
if (!single_value->field_timeslot__nr.match_omit(legacy)){
 TTCN_Logger::log_logmatch_info(".timeslot_nr := omit with ");
TTCN_Logger::print_logmatch_buffer();
single_value->field_timeslot__nr.log();
TTCN_Logger::log_event_str(" unmatched");
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}
}else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE) {
TTCN_Logger::log_event_str("{ val_present := ");
single_value->field_val__present.log_match(match_value.val__present(), legacy);
TTCN_Logger::log_event_str(", val := ");
if (match_value.val().ispresent()) {
single_value->field_val.log_match(match_value.val(), legacy);
} else {
TTCN_Logger::log_event_str("omit with ");
single_value->field_val.log();
if (single_value->field_val.match_omit(legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
TTCN_Logger::log_event_str(", idx_present := ");
single_value->field_idx__present.log_match(match_value.idx__present(), legacy);
TTCN_Logger::log_event_str(", idx := ");
if (match_value.idx().ispresent()) {
single_value->field_idx.log_match(match_value.idx(), legacy);
} else {
TTCN_Logger::log_event_str("omit with ");
single_value->field_idx.log();
if (single_value->field_idx.match_omit(legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
TTCN_Logger::log_event_str(", timeslot_nr := ");
if (match_value.timeslot__nr().ispresent()) {
single_value->field_timeslot__nr.log_match(match_value.timeslot__nr(), legacy);
} else {
TTCN_Logger::log_event_str("omit with ");
single_value->field_timeslot__nr.log();
if (single_value->field_timeslot__nr.match_omit(legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
TTCN_Logger::log_event_str(" }");
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void PacketTimingAdvance_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (val__present().is_bound()) val__present().set_implicit_omit();
if (!val().is_bound()) val() = OMIT_VALUE;
else val().set_implicit_omit();
if (idx__present().is_bound()) idx__present().set_implicit_omit();
if (!idx().is_bound()) idx() = OMIT_VALUE;
else idx().set_implicit_omit();
if (!timeslot__nr().is_bound()) timeslot__nr() = OMIT_VALUE;
else timeslot__nr().set_implicit_omit();
}

void PacketTimingAdvance_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_val__present.encode_text(text_buf);
single_value->field_val.encode_text(text_buf);
single_value->field_idx__present.encode_text(text_buf);
single_value->field_idx.encode_text(text_buf);
single_value->field_timeslot__nr.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 @RLCMAC_CSN1_Types.PacketTimingAdvance.");
}
}

void PacketTimingAdvance_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_val__present.decode_text(text_buf);
single_value->field_val.decode_text(text_buf);
single_value->field_idx__present.decode_text(text_buf);
single_value->field_idx.decode_text(text_buf);
single_value->field_timeslot__nr.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 PacketTimingAdvance_template[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 @RLCMAC_CSN1_Types.PacketTimingAdvance.");
}
}

void PacketTimingAdvance_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    PacketTimingAdvance_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_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 @RLCMAC_CSN1_Types.PacketTimingAdvance 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) val__present().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) val().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) idx__present().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) idx().set_param(*param.get_elem(3));
    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) timeslot__nr().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(), "val_present")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          val__present().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "val")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          val().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "idx_present")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          idx__present().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "idx")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          idx().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "timeslot_nr")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          timeslot__nr().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 @RLCMAC_CSN1_Types.PacketTimingAdvance: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    PacketTimingAdvance_template* precondition = new PacketTimingAdvance_template;
    precondition->set_param(*param.get_elem(0));
    PacketTimingAdvance_template* implied_template = new PacketTimingAdvance_template;
    implied_template->set_param(*param.get_elem(1));
    *this = PacketTimingAdvance_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@RLCMAC_CSN1_Types.PacketTimingAdvance");
  }
  is_ifpresent = param.get_ifpresent();
}

void PacketTimingAdvance_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_val__present.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PacketTimingAdvance");
single_value->field_val.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PacketTimingAdvance");
single_value->field_idx__present.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PacketTimingAdvance");
single_value->field_idx.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PacketTimingAdvance");
single_value->field_timeslot__nr.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PacketTimingAdvance");
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 : "@RLCMAC_CSN1_Types.PacketTimingAdvance");
}

boolean PacketTimingAdvance_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean PacketTimingAdvance_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<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;
}

PacketDlAssignment::PacketDlAssignment()
{
}

PacketDlAssignment::PacketDlAssignment(const PageMode& par_page__mode,
    const BITSTRING& par_pres1,
    const OPTIONAL< PersistenceLevels >& par_persistence__levels,
    const GlobalTfiOrTlli& par_tfi__or__tlli,
    const BITSTRING& par_egprs2,
    const BITSTRING& par_mac__mode,
    const BITSTRING& par_rlc__mode,
    const BITSTRING& par_control__ack,
    const BITSTRING& par_timeslot__alloc,
    const PacketTimingAdvance& par_pkt__ta,
    const BITSTRING& par_p0__present,
    const OPTIONAL< INTEGER >& par_p0,
    const OPTIONAL< BITSTRING >& par_reserved,
    const OPTIONAL< BITSTRING >& par_pr__mode,
    const BITSTRING& par_freq__par__present,
    const OPTIONAL< FrequencyParameters >& par_freq__par,
    const BITSTRING& par_dl__tfi__ass__present,
    const OPTIONAL< INTEGER >& par_dl__tfi__assignment,
    const BITSTRING& par_pwr__ctrl__present,
    const OPTIONAL< PowerControlParameters >& par_pwr__ctrl,
    const BITSTRING& par_tbf__starting__time__present,
    const OPTIONAL< StartingFnDesc >& par_tbf__starting__time,
    const BITSTRING& par_spare,
    const OPTIONAL< PktDlAssRelAdditions >& par_rel__additions)
  :   field_page__mode(par_page__mode),
  field_pres1(par_pres1),
  field_persistence__levels(par_persistence__levels),
  field_tfi__or__tlli(par_tfi__or__tlli),
  field_egprs2(par_egprs2),
  field_mac__mode(par_mac__mode),
  field_rlc__mode(par_rlc__mode),
  field_control__ack(par_control__ack),
  field_timeslot__alloc(par_timeslot__alloc),
  field_pkt__ta(par_pkt__ta),
  field_p0__present(par_p0__present),
  field_p0(par_p0),
  field_reserved(par_reserved),
  field_pr__mode(par_pr__mode),
  field_freq__par__present(par_freq__par__present),
  field_freq__par(par_freq__par),
  field_dl__tfi__ass__present(par_dl__tfi__ass__present),
  field_dl__tfi__assignment(par_dl__tfi__assignment),
  field_pwr__ctrl__present(par_pwr__ctrl__present),
  field_pwr__ctrl(par_pwr__ctrl),
  field_tbf__starting__time__present(par_tbf__starting__time__present),
  field_tbf__starting__time(par_tbf__starting__time),
  field_spare(par_spare),
  field_rel__additions(par_rel__additions)
{
}

PacketDlAssignment::PacketDlAssignment(const PacketDlAssignment& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RLCMAC_CSN1_Types.PacketDlAssignment.");
if (other_value.page__mode().is_bound()) field_page__mode = other_value.page__mode();
else field_page__mode.clean_up();
if (other_value.pres1().is_bound()) field_pres1 = other_value.pres1();
else field_pres1.clean_up();
if (other_value.persistence__levels().is_bound()) field_persistence__levels = other_value.persistence__levels();
else field_persistence__levels.clean_up();
if (other_value.tfi__or__tlli().is_bound()) field_tfi__or__tlli = other_value.tfi__or__tlli();
else field_tfi__or__tlli.clean_up();
if (other_value.egprs2().is_bound()) field_egprs2 = other_value.egprs2();
else field_egprs2.clean_up();
if (other_value.mac__mode().is_bound()) field_mac__mode = other_value.mac__mode();
else field_mac__mode.clean_up();
if (other_value.rlc__mode().is_bound()) field_rlc__mode = other_value.rlc__mode();
else field_rlc__mode.clean_up();
if (other_value.control__ack().is_bound()) field_control__ack = other_value.control__ack();
else field_control__ack.clean_up();
if (other_value.timeslot__alloc().is_bound()) field_timeslot__alloc = other_value.timeslot__alloc();
else field_timeslot__alloc.clean_up();
if (other_value.pkt__ta().is_bound()) field_pkt__ta = other_value.pkt__ta();
else field_pkt__ta.clean_up();
if (other_value.p0__present().is_bound()) field_p0__present = other_value.p0__present();
else field_p0__present.clean_up();
if (other_value.p0().is_bound()) field_p0 = other_value.p0();
else field_p0.clean_up();
if (other_value.reserved().is_bound()) field_reserved = other_value.reserved();
else field_reserved.clean_up();
if (other_value.pr__mode().is_bound()) field_pr__mode = other_value.pr__mode();
else field_pr__mode.clean_up();
if (other_value.freq__par__present().is_bound()) field_freq__par__present = other_value.freq__par__present();
else field_freq__par__present.clean_up();
if (other_value.freq__par().is_bound()) field_freq__par = other_value.freq__par();
else field_freq__par.clean_up();
if (other_value.dl__tfi__ass__present().is_bound()) field_dl__tfi__ass__present = other_value.dl__tfi__ass__present();
else field_dl__tfi__ass__present.clean_up();
if (other_value.dl__tfi__assignment().is_bound()) field_dl__tfi__assignment = other_value.dl__tfi__assignment();
else field_dl__tfi__assignment.clean_up();
if (other_value.pwr__ctrl__present().is_bound()) field_pwr__ctrl__present = other_value.pwr__ctrl__present();
else field_pwr__ctrl__present.clean_up();
if (other_value.pwr__ctrl().is_bound()) field_pwr__ctrl = other_value.pwr__ctrl();
else field_pwr__ctrl.clean_up();
if (other_value.tbf__starting__time__present().is_bound()) field_tbf__starting__time__present = other_value.tbf__starting__time__present();
else field_tbf__starting__time__present.clean_up();
if (other_value.tbf__starting__time().is_bound()) field_tbf__starting__time = other_value.tbf__starting__time();
else field_tbf__starting__time.clean_up();
if (other_value.spare().is_bound()) field_spare = other_value.spare();
else field_spare.clean_up();
if (other_value.rel__additions().is_bound()) field_rel__additions = other_value.rel__additions();
else field_rel__additions.clean_up();
}

void PacketDlAssignment::clean_up()
{
field_page__mode.clean_up();
field_pres1.clean_up();
field_persistence__levels.clean_up();
field_tfi__or__tlli.clean_up();
field_egprs2.clean_up();
field_mac__mode.clean_up();
field_rlc__mode.clean_up();
field_control__ack.clean_up();
field_timeslot__alloc.clean_up();
field_pkt__ta.clean_up();
field_p0__present.clean_up();
field_p0.clean_up();
field_reserved.clean_up();
field_pr__mode.clean_up();
field_freq__par__present.clean_up();
field_freq__par.clean_up();
field_dl__tfi__ass__present.clean_up();
field_dl__tfi__assignment.clean_up();
field_pwr__ctrl__present.clean_up();
field_pwr__ctrl.clean_up();
field_tbf__starting__time__present.clean_up();
field_tbf__starting__time.clean_up();
field_spare.clean_up();
field_rel__additions.clean_up();
}

const TTCN_Typedescriptor_t* PacketDlAssignment::get_descriptor() const { return &PacketDlAssignment_descr_; }
PacketDlAssignment& PacketDlAssignment::operator=(const PacketDlAssignment& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RLCMAC_CSN1_Types.PacketDlAssignment.");
  if (other_value.page__mode().is_bound()) field_page__mode = other_value.page__mode();
  else field_page__mode.clean_up();
  if (other_value.pres1().is_bound()) field_pres1 = other_value.pres1();
  else field_pres1.clean_up();
  if (other_value.persistence__levels().is_bound()) field_persistence__levels = other_value.persistence__levels();
  else field_persistence__levels.clean_up();
  if (other_value.tfi__or__tlli().is_bound()) field_tfi__or__tlli = other_value.tfi__or__tlli();
  else field_tfi__or__tlli.clean_up();
  if (other_value.egprs2().is_bound()) field_egprs2 = other_value.egprs2();
  else field_egprs2.clean_up();
  if (other_value.mac__mode().is_bound()) field_mac__mode = other_value.mac__mode();
  else field_mac__mode.clean_up();
  if (other_value.rlc__mode().is_bound()) field_rlc__mode = other_value.rlc__mode();
  else field_rlc__mode.clean_up();
  if (other_value.control__ack().is_bound()) field_control__ack = other_value.control__ack();
  else field_control__ack.clean_up();
  if (other_value.timeslot__alloc().is_bound()) field_timeslot__alloc = other_value.timeslot__alloc();
  else field_timeslot__alloc.clean_up();
  if (other_value.pkt__ta().is_bound()) field_pkt__ta = other_value.pkt__ta();
  else field_pkt__ta.clean_up();
  if (other_value.p0__present().is_bound()) field_p0__present = other_value.p0__present();
  else field_p0__present.clean_up();
  if (other_value.p0().is_bound()) field_p0 = other_value.p0();
  else field_p0.clean_up();
  if (other_value.reserved().is_bound()) field_reserved = other_value.reserved();
  else field_reserved.clean_up();
  if (other_value.pr__mode().is_bound()) field_pr__mode = other_value.pr__mode();
  else field_pr__mode.clean_up();
  if (other_value.freq__par__present().is_bound()) field_freq__par__present = other_value.freq__par__present();
  else field_freq__par__present.clean_up();
  if (other_value.freq__par().is_bound()) field_freq__par = other_value.freq__par();
  else field_freq__par.clean_up();
  if (other_value.dl__tfi__ass__present().is_bound()) field_dl__tfi__ass__present = other_value.dl__tfi__ass__present();
  else field_dl__tfi__ass__present.clean_up();
  if (other_value.dl__tfi__assignment().is_bound()) field_dl__tfi__assignment = other_value.dl__tfi__assignment();
  else field_dl__tfi__assignment.clean_up();
  if (other_value.pwr__ctrl__present().is_bound()) field_pwr__ctrl__present = other_value.pwr__ctrl__present();
  else field_pwr__ctrl__present.clean_up();
  if (other_value.pwr__ctrl().is_bound()) field_pwr__ctrl = other_value.pwr__ctrl();
  else field_pwr__ctrl.clean_up();
  if (other_value.tbf__starting__time__present().is_bound()) field_tbf__starting__time__present = other_value.tbf__starting__time__present();
  else field_tbf__starting__time__present.clean_up();
  if (other_value.tbf__starting__time().is_bound()) field_tbf__starting__time = other_value.tbf__starting__time();
  else field_tbf__starting__time.clean_up();
  if (other_value.spare().is_bound()) field_spare = other_value.spare();
  else field_spare.clean_up();
  if (other_value.rel__additions().is_bound()) field_rel__additions = other_value.rel__additions();
  else field_rel__additions.clean_up();
}
return *this;
}

boolean PacketDlAssignment::operator==(const PacketDlAssignment& other_value) const
{
return field_page__mode==other_value.field_page__mode
  && field_pres1==other_value.field_pres1
  && field_persistence__levels==other_value.field_persistence__levels
  && field_tfi__or__tlli==other_value.field_tfi__or__tlli
  && field_egprs2==other_value.field_egprs2
  && field_mac__mode==other_value.field_mac__mode
  && field_rlc__mode==other_value.field_rlc__mode
  && field_control__ack==other_value.field_control__ack
  && field_timeslot__alloc==other_value.field_timeslot__alloc
  && field_pkt__ta==other_value.field_pkt__ta
  && field_p0__present==other_value.field_p0__present
  && field_p0==other_value.field_p0
  && field_reserved==other_value.field_reserved
  && field_pr__mode==other_value.field_pr__mode
  && field_freq__par__present==other_value.field_freq__par__present
  && field_freq__par==other_value.field_freq__par
  && field_dl__tfi__ass__present==other_value.field_dl__tfi__ass__present
  && field_dl__tfi__assignment==other_value.field_dl__tfi__assignment
  && field_pwr__ctrl__present==other_value.field_pwr__ctrl__present
  && field_pwr__ctrl==other_value.field_pwr__ctrl
  && field_tbf__starting__time__present==other_value.field_tbf__starting__time__present
  && field_tbf__starting__time==other_value.field_tbf__starting__time
  && field_spare==other_value.field_spare
  && field_rel__additions==other_value.field_rel__additions;
}

boolean PacketDlAssignment::is_bound() const
{
return (field_page__mode.is_bound())
  || (field_pres1.is_bound())
  || (OPTIONAL_OMIT == field_persistence__levels.get_selection() || field_persistence__levels.is_bound())
  || (field_tfi__or__tlli.is_bound())
  || (field_egprs2.is_bound())
  || (field_mac__mode.is_bound())
  || (field_rlc__mode.is_bound())
  || (field_control__ack.is_bound())
  || (field_timeslot__alloc.is_bound())
  || (field_pkt__ta.is_bound())
  || (field_p0__present.is_bound())
  || (OPTIONAL_OMIT == field_p0.get_selection() || field_p0.is_bound())
  || (OPTIONAL_OMIT == field_reserved.get_selection() || field_reserved.is_bound())
  || (OPTIONAL_OMIT == field_pr__mode.get_selection() || field_pr__mode.is_bound())
  || (field_freq__par__present.is_bound())
  || (OPTIONAL_OMIT == field_freq__par.get_selection() || field_freq__par.is_bound())
  || (field_dl__tfi__ass__present.is_bound())
  || (OPTIONAL_OMIT == field_dl__tfi__assignment.get_selection() || field_dl__tfi__assignment.is_bound())
  || (field_pwr__ctrl__present.is_bound())
  || (OPTIONAL_OMIT == field_pwr__ctrl.get_selection() || field_pwr__ctrl.is_bound())
  || (field_tbf__starting__time__present.is_bound())
  || (OPTIONAL_OMIT == field_tbf__starting__time.get_selection() || field_tbf__starting__time.is_bound())
  || (field_spare.is_bound())
  || (OPTIONAL_OMIT == field_rel__additions.get_selection() || field_rel__additions.is_bound());
}
boolean PacketDlAssignment::is_value() const
{
return field_page__mode.is_value()
  && field_pres1.is_value()
  && (OPTIONAL_OMIT == field_persistence__levels.get_selection() || field_persistence__levels.is_value())
  && field_tfi__or__tlli.is_value()
  && field_egprs2.is_value()
  && field_mac__mode.is_value()
  && field_rlc__mode.is_value()
  && field_control__ack.is_value()
  && field_timeslot__alloc.is_value()
  && field_pkt__ta.is_value()
  && field_p0__present.is_value()
  && (OPTIONAL_OMIT == field_p0.get_selection() || field_p0.is_value())
  && (OPTIONAL_OMIT == field_reserved.get_selection() || field_reserved.is_value())
  && (OPTIONAL_OMIT == field_pr__mode.get_selection() || field_pr__mode.is_value())
  && field_freq__par__present.is_value()
  && (OPTIONAL_OMIT == field_freq__par.get_selection() || field_freq__par.is_value())
  && field_dl__tfi__ass__present.is_value()
  && (OPTIONAL_OMIT == field_dl__tfi__assignment.get_selection() || field_dl__tfi__assignment.is_value())
  && field_pwr__ctrl__present.is_value()
  && (OPTIONAL_OMIT == field_pwr__ctrl.get_selection() || field_pwr__ctrl.is_value())
  && field_tbf__starting__time__present.is_value()
  && (OPTIONAL_OMIT == field_tbf__starting__time.get_selection() || field_tbf__starting__time.is_value())
  && field_spare.is_value()
  && (OPTIONAL_OMIT == field_rel__additions.get_selection() || field_rel__additions.is_value());
}
int PacketDlAssignment::size_of() const
{
  int ret_val = 15;
  if (field_persistence__levels.ispresent()) ret_val++;
  if (field_p0.ispresent()) ret_val++;
  if (field_reserved.ispresent()) ret_val++;
  if (field_pr__mode.ispresent()) ret_val++;
  if (field_freq__par.ispresent()) ret_val++;
  if (field_dl__tfi__assignment.ispresent()) ret_val++;
  if (field_pwr__ctrl.ispresent()) ret_val++;
  if (field_tbf__starting__time.ispresent()) ret_val++;
  if (field_rel__additions.ispresent()) ret_val++;
  return ret_val;
}

void PacketDlAssignment::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ page_mode := ");
field_page__mode.log();
TTCN_Logger::log_event_str(", pres1 := ");
field_pres1.log();
TTCN_Logger::log_event_str(", persistence_levels := ");
field_persistence__levels.log();
TTCN_Logger::log_event_str(", tfi_or_tlli := ");
field_tfi__or__tlli.log();
TTCN_Logger::log_event_str(", egprs2 := ");
field_egprs2.log();
TTCN_Logger::log_event_str(", mac_mode := ");
field_mac__mode.log();
TTCN_Logger::log_event_str(", rlc_mode := ");
field_rlc__mode.log();
TTCN_Logger::log_event_str(", control_ack := ");
field_control__ack.log();
TTCN_Logger::log_event_str(", timeslot_alloc := ");
field_timeslot__alloc.log();
TTCN_Logger::log_event_str(", pkt_ta := ");
field_pkt__ta.log();
TTCN_Logger::log_event_str(", p0_present := ");
field_p0__present.log();
TTCN_Logger::log_event_str(", p0 := ");
field_p0.log();
TTCN_Logger::log_event_str(", reserved := ");
field_reserved.log();
TTCN_Logger::log_event_str(", pr_mode := ");
field_pr__mode.log();
TTCN_Logger::log_event_str(", freq_par_present := ");
field_freq__par__present.log();
TTCN_Logger::log_event_str(", freq_par := ");
field_freq__par.log();
TTCN_Logger::log_event_str(", dl_tfi_ass_present := ");
field_dl__tfi__ass__present.log();
TTCN_Logger::log_event_str(", dl_tfi_assignment := ");
field_dl__tfi__assignment.log();
TTCN_Logger::log_event_str(", pwr_ctrl_present := ");
field_pwr__ctrl__present.log();
TTCN_Logger::log_event_str(", pwr_ctrl := ");
field_pwr__ctrl.log();
TTCN_Logger::log_event_str(", tbf_starting_time_present := ");
field_tbf__starting__time__present.log();
TTCN_Logger::log_event_str(", tbf_starting_time := ");
field_tbf__starting__time.log();
TTCN_Logger::log_event_str(", spare := ");
field_spare.log();
TTCN_Logger::log_event_str(", rel_additions := ");
field_rel__additions.log();
TTCN_Logger::log_event_str(" }");
}

void PacketDlAssignment::set_implicit_omit()
{
if (page__mode().is_bound()) page__mode().set_implicit_omit();
if (pres1().is_bound()) pres1().set_implicit_omit();
if (!persistence__levels().is_bound()) persistence__levels() = OMIT_VALUE;
else persistence__levels().set_implicit_omit();
if (tfi__or__tlli().is_bound()) tfi__or__tlli().set_implicit_omit();
if (egprs2().is_bound()) egprs2().set_implicit_omit();
if (mac__mode().is_bound()) mac__mode().set_implicit_omit();
if (rlc__mode().is_bound()) rlc__mode().set_implicit_omit();
if (control__ack().is_bound()) control__ack().set_implicit_omit();
if (timeslot__alloc().is_bound()) timeslot__alloc().set_implicit_omit();
if (pkt__ta().is_bound()) pkt__ta().set_implicit_omit();
if (p0__present().is_bound()) p0__present().set_implicit_omit();
if (!p0().is_bound()) p0() = OMIT_VALUE;
else p0().set_implicit_omit();
if (!reserved().is_bound()) reserved() = OMIT_VALUE;
else reserved().set_implicit_omit();
if (!pr__mode().is_bound()) pr__mode() = OMIT_VALUE;
else pr__mode().set_implicit_omit();
if (freq__par__present().is_bound()) freq__par__present().set_implicit_omit();
if (!freq__par().is_bound()) freq__par() = OMIT_VALUE;
else freq__par().set_implicit_omit();
if (dl__tfi__ass__present().is_bound()) dl__tfi__ass__present().set_implicit_omit();
if (!dl__tfi__assignment().is_bound()) dl__tfi__assignment() = OMIT_VALUE;
else dl__tfi__assignment().set_implicit_omit();
if (pwr__ctrl__present().is_bound()) pwr__ctrl__present().set_implicit_omit();
if (!pwr__ctrl().is_bound()) pwr__ctrl() = OMIT_VALUE;
else pwr__ctrl().set_implicit_omit();
if (tbf__starting__time__present().is_bound()) tbf__starting__time__present().set_implicit_omit();
if (!tbf__starting__time().is_bound()) tbf__starting__time() = OMIT_VALUE;
else tbf__starting__time().set_implicit_omit();
if (spare().is_bound()) spare().set_implicit_omit();
if (!rel__additions().is_bound()) rel__additions() = OMIT_VALUE;
else rel__additions().set_implicit_omit();
}

void PacketDlAssignment::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 (24<param.get_size()) {
      param.error("record value of type @RLCMAC_CSN1_Types.PacketDlAssignment has 24 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) page__mode().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) pres1().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) persistence__levels().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) tfi__or__tlli().set_param(*param.get_elem(3));
    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) egprs2().set_param(*param.get_elem(4));
    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) mac__mode().set_param(*param.get_elem(5));
    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) rlc__mode().set_param(*param.get_elem(6));
    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) control__ack().set_param(*param.get_elem(7));
    if (param.get_size()>8 && param.get_elem(8)->get_type()!=Module_Param::MP_NotUsed) timeslot__alloc().set_param(*param.get_elem(8));
    if (param.get_size()>9 && param.get_elem(9)->get_type()!=Module_Param::MP_NotUsed) pkt__ta().set_param(*param.get_elem(9));
    if (param.get_size()>10 && param.get_elem(10)->get_type()!=Module_Param::MP_NotUsed) p0__present().set_param(*param.get_elem(10));
    if (param.get_size()>11 && param.get_elem(11)->get_type()!=Module_Param::MP_NotUsed) p0().set_param(*param.get_elem(11));
    if (param.get_size()>12 && param.get_elem(12)->get_type()!=Module_Param::MP_NotUsed) reserved().set_param(*param.get_elem(12));
    if (param.get_size()>13 && param.get_elem(13)->get_type()!=Module_Param::MP_NotUsed) pr__mode().set_param(*param.get_elem(13));
    if (param.get_size()>14 && param.get_elem(14)->get_type()!=Module_Param::MP_NotUsed) freq__par__present().set_param(*param.get_elem(14));
    if (param.get_size()>15 && param.get_elem(15)->get_type()!=Module_Param::MP_NotUsed) freq__par().set_param(*param.get_elem(15));
    if (param.get_size()>16 && param.get_elem(16)->get_type()!=Module_Param::MP_NotUsed) dl__tfi__ass__present().set_param(*param.get_elem(16));
    if (param.get_size()>17 && param.get_elem(17)->get_type()!=Module_Param::MP_NotUsed) dl__tfi__assignment().set_param(*param.get_elem(17));
    if (param.get_size()>18 && param.get_elem(18)->get_type()!=Module_Param::MP_NotUsed) pwr__ctrl__present().set_param(*param.get_elem(18));
    if (param.get_size()>19 && param.get_elem(19)->get_type()!=Module_Param::MP_NotUsed) pwr__ctrl().set_param(*param.get_elem(19));
    if (param.get_size()>20 && param.get_elem(20)->get_type()!=Module_Param::MP_NotUsed) tbf__starting__time__present().set_param(*param.get_elem(20));
    if (param.get_size()>21 && param.get_elem(21)->get_type()!=Module_Param::MP_NotUsed) tbf__starting__time().set_param(*param.get_elem(21));
    if (param.get_size()>22 && param.get_elem(22)->get_type()!=Module_Param::MP_NotUsed) spare().set_param(*param.get_elem(22));
    if (param.get_size()>23 && param.get_elem(23)->get_type()!=Module_Param::MP_NotUsed) rel__additions().set_param(*param.get_elem(23));
    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(), "page_mode")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          page__mode().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "pres1")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          pres1().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "persistence_levels")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          persistence__levels().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "tfi_or_tlli")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          tfi__or__tlli().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "egprs2")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          egprs2().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mac_mode")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mac__mode().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "rlc_mode")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          rlc__mode().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "control_ack")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          control__ack().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "timeslot_alloc")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          timeslot__alloc().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "pkt_ta")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          pkt__ta().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "p0_present")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          p0__present().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "p0")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          p0().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_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++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "pr_mode")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          pr__mode().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "freq_par_present")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          freq__par__present().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "freq_par")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          freq__par().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "dl_tfi_ass_present")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          dl__tfi__ass__present().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "dl_tfi_assignment")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          dl__tfi__assignment().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "pwr_ctrl_present")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          pwr__ctrl__present().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "pwr_ctrl")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          pwr__ctrl().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "tbf_starting_time_present")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          tbf__starting__time__present().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "tbf_starting_time")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          tbf__starting__time().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "spare")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          spare().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "rel_additions")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          rel__additions().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 @RLCMAC_CSN1_Types.PacketDlAssignment: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@RLCMAC_CSN1_Types.PacketDlAssignment");
  }
}

void PacketDlAssignment::encode_text(Text_Buf& text_buf) const
{
field_page__mode.encode_text(text_buf);
field_pres1.encode_text(text_buf);
field_persistence__levels.encode_text(text_buf);
field_tfi__or__tlli.encode_text(text_buf);
field_egprs2.encode_text(text_buf);
field_mac__mode.encode_text(text_buf);
field_rlc__mode.encode_text(text_buf);
field_control__ack.encode_text(text_buf);
field_timeslot__alloc.encode_text(text_buf);
field_pkt__ta.encode_text(text_buf);
field_p0__present.encode_text(text_buf);
field_p0.encode_text(text_buf);
field_reserved.encode_text(text_buf);
field_pr__mode.encode_text(text_buf);
field_freq__par__present.encode_text(text_buf);
field_freq__par.encode_text(text_buf);
field_dl__tfi__ass__present.encode_text(text_buf);
field_dl__tfi__assignment.encode_text(text_buf);
field_pwr__ctrl__present.encode_text(text_buf);
field_pwr__ctrl.encode_text(text_buf);
field_tbf__starting__time__present.encode_text(text_buf);
field_tbf__starting__time.encode_text(text_buf);
field_spare.encode_text(text_buf);
field_rel__additions.encode_text(text_buf);
}

void PacketDlAssignment::decode_text(Text_Buf& text_buf)
{
field_page__mode.decode_text(text_buf);
field_pres1.decode_text(text_buf);
field_persistence__levels.decode_text(text_buf);
field_tfi__or__tlli.decode_text(text_buf);
field_egprs2.decode_text(text_buf);
field_mac__mode.decode_text(text_buf);
field_rlc__mode.decode_text(text_buf);
field_control__ack.decode_text(text_buf);
field_timeslot__alloc.decode_text(text_buf);
field_pkt__ta.decode_text(text_buf);
field_p0__present.decode_text(text_buf);
field_p0.decode_text(text_buf);
field_reserved.decode_text(text_buf);
field_pr__mode.decode_text(text_buf);
field_freq__par__present.decode_text(text_buf);
field_freq__par.decode_text(text_buf);
field_dl__tfi__ass__present.decode_text(text_buf);
field_dl__tfi__assignment.decode_text(text_buf);
field_pwr__ctrl__present.decode_text(text_buf);
field_pwr__ctrl.decode_text(text_buf);
field_tbf__starting__time__present.decode_text(text_buf);
field_tbf__starting__time.decode_text(text_buf);
field_spare.decode_text(text_buf);
field_rel__additions.decode_text(text_buf);
}

void PacketDlAssignment::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void PacketDlAssignment::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int PacketDlAssignment::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, PacketDlAssignment_page__mode_descr_.raw->forceomit);
  decoded_field_length = field_page__mode.RAW_decode(PacketDlAssignment_page__mode_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, PacketDlAssignment_pres1_descr_.raw->forceomit);
  decoded_field_length = field_pres1.RAW_decode(PacketDlAssignment_pres1_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());
  if (limit > 0 && field_pres1 ==  bs_0){
  if (force_omit != NULL && (*force_omit)(2)) {
    field_persistence__levels = OMIT_VALUE;
  }
  else {
  size_t fl_start_pos = p_buf.get_pos_bit();
  RAW_Force_Omit field_2_force_omit(2, force_omit, PacketDlAssignment_persistence__levels_descr_.raw->forceomit);
  decoded_field_length = field_persistence__levels().RAW_decode(PacketDlAssignment_persistence__levels_descr_, p_buf, limit, local_top_order, TRUE, -1, TRUE, &field_2_force_omit);
  if (decoded_field_length < 1) {
  field_persistence__levels = OMIT_VALUE;
  p_buf.set_pos_bit(fl_start_pos);
  } else {
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  }
  }
  }
  else field_persistence__levels=OMIT_VALUE;
  RAW_Force_Omit field_3_force_omit(3, force_omit, PacketDlAssignment_tfi__or__tlli_descr_.raw->forceomit);
  decoded_field_length = field_tfi__or__tlli.RAW_decode(PacketDlAssignment_tfi__or__tlli_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, PacketDlAssignment_egprs2_descr_.raw->forceomit);
  decoded_field_length = field_egprs2.RAW_decode(PacketDlAssignment_egprs2_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, PacketDlAssignment_mac__mode_descr_.raw->forceomit);
  decoded_field_length = field_mac__mode.RAW_decode(PacketDlAssignment_mac__mode_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, PacketDlAssignment_rlc__mode_descr_.raw->forceomit);
  decoded_field_length = field_rlc__mode.RAW_decode(PacketDlAssignment_rlc__mode_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, PacketDlAssignment_control__ack_descr_.raw->forceomit);
  decoded_field_length = field_control__ack.RAW_decode(PacketDlAssignment_control__ack_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, PacketDlAssignment_timeslot__alloc_descr_.raw->forceomit);
  decoded_field_length = field_timeslot__alloc.RAW_decode(PacketDlAssignment_timeslot__alloc_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, PacketDlAssignment_pkt__ta_descr_.raw->forceomit);
  decoded_field_length = field_pkt__ta.RAW_decode(PacketDlAssignment_pkt__ta_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());
  RAW_Force_Omit field_10_force_omit(10, force_omit, PacketDlAssignment_p0__present_descr_.raw->forceomit);
  decoded_field_length = field_p0__present.RAW_decode(PacketDlAssignment_p0__present_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_10_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());
  if (limit > 0 && field_p0__present ==  bs_0){
  if (force_omit != NULL && (*force_omit)(11)) {
    field_p0 = OMIT_VALUE;
  }
  else {
  size_t fl_start_pos = p_buf.get_pos_bit();
  RAW_Force_Omit field_11_force_omit(11, force_omit, PacketDlAssignment_p0_descr_.raw->forceomit);
  decoded_field_length = field_p0().RAW_decode(PacketDlAssignment_p0_descr_, p_buf, limit, local_top_order, TRUE, -1, TRUE, &field_11_force_omit);
  if (decoded_field_length < 1) {
  field_p0 = OMIT_VALUE;
  p_buf.set_pos_bit(fl_start_pos);
  } else {
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  }
  }
  }
  else field_p0=OMIT_VALUE;
  if (limit > 0 && field_p0__present ==  bs_0){
  if (force_omit != NULL && (*force_omit)(12)) {
    field_reserved = OMIT_VALUE;
  }
  else {
  size_t fl_start_pos = p_buf.get_pos_bit();
  RAW_Force_Omit field_12_force_omit(12, force_omit, PacketDlAssignment_reserved_descr_.raw->forceomit);
  decoded_field_length = field_reserved().RAW_decode(PacketDlAssignment_reserved_descr_, p_buf, limit, local_top_order, TRUE, -1, TRUE, &field_12_force_omit);
  if (decoded_field_length < 1) {
  field_reserved = OMIT_VALUE;
  p_buf.set_pos_bit(fl_start_pos);
  } else {
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  }
  }
  }
  else field_reserved=OMIT_VALUE;
  if (limit > 0 && field_p0__present ==  bs_0){
  if (force_omit != NULL && (*force_omit)(13)) {
    field_pr__mode = OMIT_VALUE;
  }
  else {
  size_t fl_start_pos = p_buf.get_pos_bit();
  RAW_Force_Omit field_13_force_omit(13, force_omit, PacketDlAssignment_pr__mode_descr_.raw->forceomit);
  decoded_field_length = field_pr__mode().RAW_decode(PacketDlAssignment_pr__mode_descr_, p_buf, limit, local_top_order, TRUE, -1, TRUE, &field_13_force_omit);
  if (decoded_field_length < 1) {
  field_pr__mode = OMIT_VALUE;
  p_buf.set_pos_bit(fl_start_pos);
  } else {
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  }
  }
  }
  else field_pr__mode=OMIT_VALUE;
  RAW_Force_Omit field_14_force_omit(14, force_omit, PacketDlAssignment_freq__par__present_descr_.raw->forceomit);
  decoded_field_length = field_freq__par__present.RAW_decode(PacketDlAssignment_freq__par__present_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_14_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());
  if (limit > 0 && field_freq__par__present ==  bs_0){
  if (force_omit != NULL && (*force_omit)(15)) {
    field_freq__par = OMIT_VALUE;
  }
  else {
  size_t fl_start_pos = p_buf.get_pos_bit();
  RAW_Force_Omit field_15_force_omit(15, force_omit, PacketDlAssignment_freq__par_descr_.raw->forceomit);
  decoded_field_length = field_freq__par().RAW_decode(PacketDlAssignment_freq__par_descr_, p_buf, limit, local_top_order, TRUE, -1, TRUE, &field_15_force_omit);
  if (decoded_field_length < 1) {
  field_freq__par = OMIT_VALUE;
  p_buf.set_pos_bit(fl_start_pos);
  } else {
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  }
  }
  }
  else field_freq__par=OMIT_VALUE;
  RAW_Force_Omit field_16_force_omit(16, force_omit, PacketDlAssignment_dl__tfi__ass__present_descr_.raw->forceomit);
  decoded_field_length = field_dl__tfi__ass__present.RAW_decode(PacketDlAssignment_dl__tfi__ass__present_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_16_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());
  if (limit > 0 && field_dl__tfi__ass__present ==  bs_0){
  if (force_omit != NULL && (*force_omit)(17)) {
    field_dl__tfi__assignment = OMIT_VALUE;
  }
  else {
  size_t fl_start_pos = p_buf.get_pos_bit();
  RAW_Force_Omit field_17_force_omit(17, force_omit, PacketDlAssignment_dl__tfi__assignment_descr_.raw->forceomit);
  decoded_field_length = field_dl__tfi__assignment().RAW_decode(PacketDlAssignment_dl__tfi__assignment_descr_, p_buf, limit, local_top_order, TRUE, -1, TRUE, &field_17_force_omit);
  if (decoded_field_length < 1) {
  field_dl__tfi__assignment = OMIT_VALUE;
  p_buf.set_pos_bit(fl_start_pos);
  } else {
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  }
  }
  }
  else field_dl__tfi__assignment=OMIT_VALUE;
  RAW_Force_Omit field_18_force_omit(18, force_omit, PacketDlAssignment_pwr__ctrl__present_descr_.raw->forceomit);
  decoded_field_length = field_pwr__ctrl__present.RAW_decode(PacketDlAssignment_pwr__ctrl__present_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_18_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());
  if (limit > 0 && field_pwr__ctrl__present ==  bs_0){
  if (force_omit != NULL && (*force_omit)(19)) {
    field_pwr__ctrl = OMIT_VALUE;
  }
  else {
  size_t fl_start_pos = p_buf.get_pos_bit();
  RAW_Force_Omit field_19_force_omit(19, force_omit, PacketDlAssignment_pwr__ctrl_descr_.raw->forceomit);
  decoded_field_length = field_pwr__ctrl().RAW_decode(PacketDlAssignment_pwr__ctrl_descr_, p_buf, limit, local_top_order, TRUE, -1, TRUE, &field_19_force_omit);
  if (decoded_field_length < 1) {
  field_pwr__ctrl = OMIT_VALUE;
  p_buf.set_pos_bit(fl_start_pos);
  } else {
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  }
  }
  }
  else field_pwr__ctrl=OMIT_VALUE;
  RAW_Force_Omit field_20_force_omit(20, force_omit, PacketDlAssignment_tbf__starting__time__present_descr_.raw->forceomit);
  decoded_field_length = field_tbf__starting__time__present.RAW_decode(PacketDlAssignment_tbf__starting__time__present_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_20_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());
  if (limit > 0 && field_tbf__starting__time__present ==  bs_0){
  if (force_omit != NULL && (*force_omit)(21)) {
    field_tbf__starting__time = OMIT_VALUE;
  }
  else {
  size_t fl_start_pos = p_buf.get_pos_bit();
  RAW_Force_Omit field_21_force_omit(21, force_omit, PacketDlAssignment_tbf__starting__time_descr_.raw->forceomit);
  decoded_field_length = field_tbf__starting__time().RAW_decode(PacketDlAssignment_tbf__starting__time_descr_, p_buf, limit, local_top_order, TRUE, -1, TRUE, &field_21_force_omit);
  if (decoded_field_length < 1) {
  field_tbf__starting__time = OMIT_VALUE;
  p_buf.set_pos_bit(fl_start_pos);
  } else {
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  }
  }
  }
  else field_tbf__starting__time=OMIT_VALUE;
  RAW_Force_Omit field_22_force_omit(22, force_omit, PacketDlAssignment_spare_descr_.raw->forceomit);
  decoded_field_length = field_spare.RAW_decode(PacketDlAssignment_spare_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_22_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());
  if (limit > 0){
  if (force_omit != NULL && (*force_omit)(23)) {
    field_rel__additions = OMIT_VALUE;
  }
  else {
  size_t fl_start_pos = p_buf.get_pos_bit();
  RAW_Force_Omit field_23_force_omit(23, force_omit, PacketDlAssignment_rel__additions_descr_.raw->forceomit);
  decoded_field_length = field_rel__additions().RAW_decode(PacketDlAssignment_rel__additions_descr_, p_buf, limit, local_top_order, TRUE, -1, TRUE, &field_23_force_omit);
  if (decoded_field_length < 1) {
  field_rel__additions = OMIT_VALUE;
  p_buf.set_pos_bit(fl_start_pos);
  } else {
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  }
  }
  }
  else field_rel__additions=OMIT_VALUE;
  p_buf.set_pos_bit(last_decoded_pos);
  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
}

int PacketDlAssignment::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 = 24;
  myleaf.body.node.nodes = init_nodes_of_enc_tree(24);
  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, PacketDlAssignment_page__mode_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PacketDlAssignment_pres1_descr_.raw);
  if (field_persistence__levels.ispresent()) {
  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, PacketDlAssignment_persistence__levels_descr_.raw);
  }
  else myleaf.body.node.nodes[2] = NULL;
  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, PacketDlAssignment_tfi__or__tlli_descr_.raw);
  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, PacketDlAssignment_egprs2_descr_.raw);
  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, PacketDlAssignment_mac__mode_descr_.raw);
  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, PacketDlAssignment_rlc__mode_descr_.raw);
  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, PacketDlAssignment_control__ack_descr_.raw);
  myleaf.body.node.nodes[8] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 8, PacketDlAssignment_timeslot__alloc_descr_.raw);
  myleaf.body.node.nodes[9] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 9, PacketDlAssignment_pkt__ta_descr_.raw);
  myleaf.body.node.nodes[10] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 10, PacketDlAssignment_p0__present_descr_.raw);
  if (field_p0.ispresent()) {
  myleaf.body.node.nodes[11] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 11, PacketDlAssignment_p0_descr_.raw);
  }
  else myleaf.body.node.nodes[11] = NULL;
  if (field_reserved.ispresent()) {
  myleaf.body.node.nodes[12] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 12, PacketDlAssignment_reserved_descr_.raw);
  }
  else myleaf.body.node.nodes[12] = NULL;
  if (field_pr__mode.ispresent()) {
  myleaf.body.node.nodes[13] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 13, PacketDlAssignment_pr__mode_descr_.raw);
  }
  else myleaf.body.node.nodes[13] = NULL;
  myleaf.body.node.nodes[14] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 14, PacketDlAssignment_freq__par__present_descr_.raw);
  if (field_freq__par.ispresent()) {
  myleaf.body.node.nodes[15] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 15, PacketDlAssignment_freq__par_descr_.raw);
  }
  else myleaf.body.node.nodes[15] = NULL;
  myleaf.body.node.nodes[16] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 16, PacketDlAssignment_dl__tfi__ass__present_descr_.raw);
  if (field_dl__tfi__assignment.ispresent()) {
  myleaf.body.node.nodes[17] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 17, PacketDlAssignment_dl__tfi__assignment_descr_.raw);
  }
  else myleaf.body.node.nodes[17] = NULL;
  myleaf.body.node.nodes[18] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 18, PacketDlAssignment_pwr__ctrl__present_descr_.raw);
  if (field_pwr__ctrl.ispresent()) {
  myleaf.body.node.nodes[19] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 19, PacketDlAssignment_pwr__ctrl_descr_.raw);
  }
  else myleaf.body.node.nodes[19] = NULL;
  myleaf.body.node.nodes[20] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 20, PacketDlAssignment_tbf__starting__time__present_descr_.raw);
  if (field_tbf__starting__time.ispresent()) {
  myleaf.body.node.nodes[21] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 21, PacketDlAssignment_tbf__starting__time_descr_.raw);
  }
  else myleaf.body.node.nodes[21] = NULL;
  myleaf.body.node.nodes[22] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 22, PacketDlAssignment_spare_descr_.raw);
  if (field_rel__additions.ispresent()) {
  myleaf.body.node.nodes[23] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 23, PacketDlAssignment_rel__additions_descr_.raw);
  }
  else myleaf.body.node.nodes[23] = NULL;
  encoded_length += field_page__mode.RAW_encode(PacketDlAssignment_page__mode_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_pres1.RAW_encode(PacketDlAssignment_pres1_descr_, *myleaf.body.node.nodes[1]);
  if (field_persistence__levels.ispresent()) {
  encoded_length += field_persistence__levels().RAW_encode(PacketDlAssignment_persistence__levels_descr_, *myleaf.body.node.nodes[2]);
  }
  encoded_length += field_tfi__or__tlli.RAW_encode(PacketDlAssignment_tfi__or__tlli_descr_, *myleaf.body.node.nodes[3]);
  encoded_length += field_egprs2.RAW_encode(PacketDlAssignment_egprs2_descr_, *myleaf.body.node.nodes[4]);
  encoded_length += field_mac__mode.RAW_encode(PacketDlAssignment_mac__mode_descr_, *myleaf.body.node.nodes[5]);
  encoded_length += field_rlc__mode.RAW_encode(PacketDlAssignment_rlc__mode_descr_, *myleaf.body.node.nodes[6]);
  encoded_length += field_control__ack.RAW_encode(PacketDlAssignment_control__ack_descr_, *myleaf.body.node.nodes[7]);
  encoded_length += field_timeslot__alloc.RAW_encode(PacketDlAssignment_timeslot__alloc_descr_, *myleaf.body.node.nodes[8]);
  encoded_length += field_pkt__ta.RAW_encode(PacketDlAssignment_pkt__ta_descr_, *myleaf.body.node.nodes[9]);
  encoded_length += field_p0__present.RAW_encode(PacketDlAssignment_p0__present_descr_, *myleaf.body.node.nodes[10]);
  if (field_p0.ispresent()) {
  encoded_length += field_p0().RAW_encode(PacketDlAssignment_p0_descr_, *myleaf.body.node.nodes[11]);
  }
  if (field_reserved.ispresent()) {
  encoded_length += field_reserved().RAW_encode(PacketDlAssignment_reserved_descr_, *myleaf.body.node.nodes[12]);
  }
  if (field_pr__mode.ispresent()) {
  encoded_length += field_pr__mode().RAW_encode(PacketDlAssignment_pr__mode_descr_, *myleaf.body.node.nodes[13]);
  }
  encoded_length += field_freq__par__present.RAW_encode(PacketDlAssignment_freq__par__present_descr_, *myleaf.body.node.nodes[14]);
  if (field_freq__par.ispresent()) {
  encoded_length += field_freq__par().RAW_encode(PacketDlAssignment_freq__par_descr_, *myleaf.body.node.nodes[15]);
  }
  encoded_length += field_dl__tfi__ass__present.RAW_encode(PacketDlAssignment_dl__tfi__ass__present_descr_, *myleaf.body.node.nodes[16]);
  if (field_dl__tfi__assignment.ispresent()) {
  encoded_length += field_dl__tfi__assignment().RAW_encode(PacketDlAssignment_dl__tfi__assignment_descr_, *myleaf.body.node.nodes[17]);
  }
  encoded_length += field_pwr__ctrl__present.RAW_encode(PacketDlAssignment_pwr__ctrl__present_descr_, *myleaf.body.node.nodes[18]);
  if (field_pwr__ctrl.ispresent()) {
  encoded_length += field_pwr__ctrl().RAW_encode(PacketDlAssignment_pwr__ctrl_descr_, *myleaf.body.node.nodes[19]);
  }
  encoded_length += field_tbf__starting__time__present.RAW_encode(PacketDlAssignment_tbf__starting__time__present_descr_, *myleaf.body.node.nodes[20]);
  if (field_tbf__starting__time.ispresent()) {
  encoded_length += field_tbf__starting__time().RAW_encode(PacketDlAssignment_tbf__starting__time_descr_, *myleaf.body.node.nodes[21]);
  }
  encoded_length += field_spare.RAW_encode(PacketDlAssignment_spare_descr_, *myleaf.body.node.nodes[22]);
  if (field_rel__additions.ispresent()) {
  encoded_length += field_rel__additions().RAW_encode(PacketDlAssignment_rel__additions_descr_, *myleaf.body.node.nodes[23]);
  }
  if (field_persistence__levels.ispresent() && (field_pres1 !=  bs_0)) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={1};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   bs_0.RAW_encode(PacketDlAssignment_pres1_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);
  }
  }
  if (field_p0.ispresent() && (field_p0__present !=  bs_0)) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={10};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   bs_0.RAW_encode(PacketDlAssignment_p0__present_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);
  }
  }
  if (field_reserved.ispresent() && (field_p0__present !=  bs_0)) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={10};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   bs_0.RAW_encode(PacketDlAssignment_p0__present_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);
  }
  }
  if (field_pr__mode.ispresent() && (field_p0__present !=  bs_0)) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={10};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   bs_0.RAW_encode(PacketDlAssignment_p0__present_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);
  }
  }
  if (field_freq__par.ispresent() && (field_freq__par__present !=  bs_0)) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={14};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   bs_0.RAW_encode(PacketDlAssignment_freq__par__present_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);
  }
  }
  if (field_dl__tfi__assignment.ispresent() && (field_dl__tfi__ass__present !=  bs_0)) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={16};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   bs_0.RAW_encode(PacketDlAssignment_dl__tfi__ass__present_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);
  }
  }
  if (field_pwr__ctrl.ispresent() && (field_pwr__ctrl__present !=  bs_0)) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={18};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   bs_0.RAW_encode(PacketDlAssignment_pwr__ctrl__present_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);
  }
  }
  if (field_tbf__starting__time.ispresent() && (field_tbf__starting__time__present !=  bs_0)) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={20};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   bs_0.RAW_encode(PacketDlAssignment_tbf__starting__time__present_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);
  }
  }
  return myleaf.length = encoded_length;
}

struct PacketDlAssignment_template::single_value_struct {
PageMode_template field_page__mode;
BITSTRING_template field_pres1;
PersistenceLevels_template field_persistence__levels;
GlobalTfiOrTlli_template field_tfi__or__tlli;
BITSTRING_template field_egprs2;
BITSTRING_template field_mac__mode;
BITSTRING_template field_rlc__mode;
BITSTRING_template field_control__ack;
BITSTRING_template field_timeslot__alloc;
PacketTimingAdvance_template field_pkt__ta;
BITSTRING_template field_p0__present;
INTEGER_template field_p0;
BITSTRING_template field_reserved;
BITSTRING_template field_pr__mode;
BITSTRING_template field_freq__par__present;
FrequencyParameters_template field_freq__par;
BITSTRING_template field_dl__tfi__ass__present;
INTEGER_template field_dl__tfi__assignment;
BITSTRING_template field_pwr__ctrl__present;
PowerControlParameters_template field_pwr__ctrl;
BITSTRING_template field_tbf__starting__time__present;
StartingFnDesc_template field_tbf__starting__time;
BITSTRING_template field_spare;
PktDlAssRelAdditions_template field_rel__additions;
};

void PacketDlAssignment_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_page__mode = ANY_VALUE;
single_value->field_pres1 = ANY_VALUE;
single_value->field_persistence__levels = ANY_OR_OMIT;
single_value->field_tfi__or__tlli = ANY_VALUE;
single_value->field_egprs2 = ANY_VALUE;
single_value->field_mac__mode = ANY_VALUE;
single_value->field_rlc__mode = ANY_VALUE;
single_value->field_control__ack = ANY_VALUE;
single_value->field_timeslot__alloc = ANY_VALUE;
single_value->field_pkt__ta = ANY_VALUE;
single_value->field_p0__present = ANY_VALUE;
single_value->field_p0 = ANY_OR_OMIT;
single_value->field_reserved = ANY_OR_OMIT;
single_value->field_pr__mode = ANY_OR_OMIT;
single_value->field_freq__par__present = ANY_VALUE;
single_value->field_freq__par = ANY_OR_OMIT;
single_value->field_dl__tfi__ass__present = ANY_VALUE;
single_value->field_dl__tfi__assignment = ANY_OR_OMIT;
single_value->field_pwr__ctrl__present = ANY_VALUE;
single_value->field_pwr__ctrl = ANY_OR_OMIT;
single_value->field_tbf__starting__time__present = ANY_VALUE;
single_value->field_tbf__starting__time = ANY_OR_OMIT;
single_value->field_spare = ANY_VALUE;
single_value->field_rel__additions = ANY_OR_OMIT;
}
}
}

void PacketDlAssignment_template::copy_value(const PacketDlAssignment& other_value)
{
single_value = new single_value_struct;
if (other_value.page__mode().is_bound()) {
  single_value->field_page__mode = other_value.page__mode();
} else {
  single_value->field_page__mode.clean_up();
}
if (other_value.pres1().is_bound()) {
  single_value->field_pres1 = other_value.pres1();
} else {
  single_value->field_pres1.clean_up();
}
if (other_value.persistence__levels().is_bound()) {
  if (other_value.persistence__levels().ispresent()) single_value->field_persistence__levels = other_value.persistence__levels()();
  else single_value->field_persistence__levels = OMIT_VALUE;
} else {
  single_value->field_persistence__levels.clean_up();
}
if (other_value.tfi__or__tlli().is_bound()) {
  single_value->field_tfi__or__tlli = other_value.tfi__or__tlli();
} else {
  single_value->field_tfi__or__tlli.clean_up();
}
if (other_value.egprs2().is_bound()) {
  single_value->field_egprs2 = other_value.egprs2();
} else {
  single_value->field_egprs2.clean_up();
}
if (other_value.mac__mode().is_bound()) {
  single_value->field_mac__mode = other_value.mac__mode();
} else {
  single_value->field_mac__mode.clean_up();
}
if (other_value.rlc__mode().is_bound()) {
  single_value->field_rlc__mode = other_value.rlc__mode();
} else {
  single_value->field_rlc__mode.clean_up();
}
if (other_value.control__ack().is_bound()) {
  single_value->field_control__ack = other_value.control__ack();
} else {
  single_value->field_control__ack.clean_up();
}
if (other_value.timeslot__alloc().is_bound()) {
  single_value->field_timeslot__alloc = other_value.timeslot__alloc();
} else {
  single_value->field_timeslot__alloc.clean_up();
}
if (other_value.pkt__ta().is_bound()) {
  single_value->field_pkt__ta = other_value.pkt__ta();
} else {
  single_value->field_pkt__ta.clean_up();
}
if (other_value.p0__present().is_bound()) {
  single_value->field_p0__present = other_value.p0__present();
} else {
  single_value->field_p0__present.clean_up();
}
if (other_value.p0().is_bound()) {
  if (other_value.p0().ispresent()) single_value->field_p0 = other_value.p0()();
  else single_value->field_p0 = OMIT_VALUE;
} else {
  single_value->field_p0.clean_up();
}
if (other_value.reserved().is_bound()) {
  if (other_value.reserved().ispresent()) single_value->field_reserved = other_value.reserved()();
  else single_value->field_reserved = OMIT_VALUE;
} else {
  single_value->field_reserved.clean_up();
}
if (other_value.pr__mode().is_bound()) {
  if (other_value.pr__mode().ispresent()) single_value->field_pr__mode = other_value.pr__mode()();
  else single_value->field_pr__mode = OMIT_VALUE;
} else {
  single_value->field_pr__mode.clean_up();
}
if (other_value.freq__par__present().is_bound()) {
  single_value->field_freq__par__present = other_value.freq__par__present();
} else {
  single_value->field_freq__par__present.clean_up();
}
if (other_value.freq__par().is_bound()) {
  if (other_value.freq__par().ispresent()) single_value->field_freq__par = other_value.freq__par()();
  else single_value->field_freq__par = OMIT_VALUE;
} else {
  single_value->field_freq__par.clean_up();
}
if (other_value.dl__tfi__ass__present().is_bound()) {
  single_value->field_dl__tfi__ass__present = other_value.dl__tfi__ass__present();
} else {
  single_value->field_dl__tfi__ass__present.clean_up();
}
if (other_value.dl__tfi__assignment().is_bound()) {
  if (other_value.dl__tfi__assignment().ispresent()) single_value->field_dl__tfi__assignment = other_value.dl__tfi__assignment()();
  else single_value->field_dl__tfi__assignment = OMIT_VALUE;
} else {
  single_value->field_dl__tfi__assignment.clean_up();
}
if (other_value.pwr__ctrl__present().is_bound()) {
  single_value->field_pwr__ctrl__present = other_value.pwr__ctrl__present();
} else {
  single_value->field_pwr__ctrl__present.clean_up();
}
if (other_value.pwr__ctrl().is_bound()) {
  if (other_value.pwr__ctrl().ispresent()) single_value->field_pwr__ctrl = other_value.pwr__ctrl()();
  else single_value->field_pwr__ctrl = OMIT_VALUE;
} else {
  single_value->field_pwr__ctrl.clean_up();
}
if (other_value.tbf__starting__time__present().is_bound()) {
  single_value->field_tbf__starting__time__present = other_value.tbf__starting__time__present();
} else {
  single_value->field_tbf__starting__time__present.clean_up();
}
if (other_value.tbf__starting__time().is_bound()) {
  if (other_value.tbf__starting__time().ispresent()) single_value->field_tbf__starting__time = other_value.tbf__starting__time()();
  else single_value->field_tbf__starting__time = OMIT_VALUE;
} else {
  single_value->field_tbf__starting__time.clean_up();
}
if (other_value.spare().is_bound()) {
  single_value->field_spare = other_value.spare();
} else {
  single_value->field_spare.clean_up();
}
if (other_value.rel__additions().is_bound()) {
  if (other_value.rel__additions().ispresent()) single_value->field_rel__additions = other_value.rel__additions()();
  else single_value->field_rel__additions = OMIT_VALUE;
} else {
  single_value->field_rel__additions.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void PacketDlAssignment_template::copy_template(const PacketDlAssignment_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.page__mode().get_selection()) {
single_value->field_page__mode = other_value.page__mode();
} else {
single_value->field_page__mode.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.pres1().get_selection()) {
single_value->field_pres1 = other_value.pres1();
} else {
single_value->field_pres1.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.persistence__levels().get_selection()) {
single_value->field_persistence__levels = other_value.persistence__levels();
} else {
single_value->field_persistence__levels.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.tfi__or__tlli().get_selection()) {
single_value->field_tfi__or__tlli = other_value.tfi__or__tlli();
} else {
single_value->field_tfi__or__tlli.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.egprs2().get_selection()) {
single_value->field_egprs2 = other_value.egprs2();
} else {
single_value->field_egprs2.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.mac__mode().get_selection()) {
single_value->field_mac__mode = other_value.mac__mode();
} else {
single_value->field_mac__mode.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.rlc__mode().get_selection()) {
single_value->field_rlc__mode = other_value.rlc__mode();
} else {
single_value->field_rlc__mode.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.control__ack().get_selection()) {
single_value->field_control__ack = other_value.control__ack();
} else {
single_value->field_control__ack.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.timeslot__alloc().get_selection()) {
single_value->field_timeslot__alloc = other_value.timeslot__alloc();
} else {
single_value->field_timeslot__alloc.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.pkt__ta().get_selection()) {
single_value->field_pkt__ta = other_value.pkt__ta();
} else {
single_value->field_pkt__ta.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.p0__present().get_selection()) {
single_value->field_p0__present = other_value.p0__present();
} else {
single_value->field_p0__present.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.p0().get_selection()) {
single_value->field_p0 = other_value.p0();
} else {
single_value->field_p0.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.reserved().get_selection()) {
single_value->field_reserved = other_value.reserved();
} else {
single_value->field_reserved.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.pr__mode().get_selection()) {
single_value->field_pr__mode = other_value.pr__mode();
} else {
single_value->field_pr__mode.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.freq__par__present().get_selection()) {
single_value->field_freq__par__present = other_value.freq__par__present();
} else {
single_value->field_freq__par__present.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.freq__par().get_selection()) {
single_value->field_freq__par = other_value.freq__par();
} else {
single_value->field_freq__par.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.dl__tfi__ass__present().get_selection()) {
single_value->field_dl__tfi__ass__present = other_value.dl__tfi__ass__present();
} else {
single_value->field_dl__tfi__ass__present.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.dl__tfi__assignment().get_selection()) {
single_value->field_dl__tfi__assignment = other_value.dl__tfi__assignment();
} else {
single_value->field_dl__tfi__assignment.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.pwr__ctrl__present().get_selection()) {
single_value->field_pwr__ctrl__present = other_value.pwr__ctrl__present();
} else {
single_value->field_pwr__ctrl__present.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.pwr__ctrl().get_selection()) {
single_value->field_pwr__ctrl = other_value.pwr__ctrl();
} else {
single_value->field_pwr__ctrl.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.tbf__starting__time__present().get_selection()) {
single_value->field_tbf__starting__time__present = other_value.tbf__starting__time__present();
} else {
single_value->field_tbf__starting__time__present.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.tbf__starting__time().get_selection()) {
single_value->field_tbf__starting__time = other_value.tbf__starting__time();
} else {
single_value->field_tbf__starting__time.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.spare().get_selection()) {
single_value->field_spare = other_value.spare();
} else {
single_value->field_spare.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.rel__additions().get_selection()) {
single_value->field_rel__additions = other_value.rel__additions();
} else {
single_value->field_rel__additions.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new PacketDlAssignment_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new PacketDlAssignment_template(*other_value.implication_.precondition);
implication_.implied_template = new PacketDlAssignment_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.PacketDlAssignment.");
break;
}
set_selection(other_value);
}

PacketDlAssignment_template::PacketDlAssignment_template()
{
}

PacketDlAssignment_template::PacketDlAssignment_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

PacketDlAssignment_template::PacketDlAssignment_template(const PacketDlAssignment& other_value)
{
copy_value(other_value);
}

PacketDlAssignment_template::PacketDlAssignment_template(const OPTIONAL<PacketDlAssignment>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const PacketDlAssignment&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @RLCMAC_CSN1_Types.PacketDlAssignment from an unbound optional field.");
}
}

PacketDlAssignment_template::PacketDlAssignment_template(PacketDlAssignment_template* p_precondition, PacketDlAssignment_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

PacketDlAssignment_template::PacketDlAssignment_template(Dynamic_Match_Interface<PacketDlAssignment>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<PacketDlAssignment>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

PacketDlAssignment_template::PacketDlAssignment_template(const PacketDlAssignment_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

PacketDlAssignment_template::~PacketDlAssignment_template()
{
clean_up();
}

PacketDlAssignment_template& PacketDlAssignment_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

PacketDlAssignment_template& PacketDlAssignment_template::operator=(const PacketDlAssignment& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

PacketDlAssignment_template& PacketDlAssignment_template::operator=(const OPTIONAL<PacketDlAssignment>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const PacketDlAssignment&)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 @RLCMAC_CSN1_Types.PacketDlAssignment.");
}
return *this;
}

PacketDlAssignment_template& PacketDlAssignment_template::operator=(const PacketDlAssignment_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean PacketDlAssignment_template::match(const PacketDlAssignment& 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.page__mode().is_bound()) return FALSE;
if(!single_value->field_page__mode.match(other_value.page__mode(), legacy))return FALSE;
if(!other_value.pres1().is_bound()) return FALSE;
if(!single_value->field_pres1.match(other_value.pres1(), legacy))return FALSE;
if(!other_value.persistence__levels().is_bound()) return FALSE;
if((other_value.persistence__levels().ispresent() ? !single_value->field_persistence__levels.match((const PersistenceLevels&)other_value.persistence__levels(), legacy) : !single_value->field_persistence__levels.match_omit(legacy)))return FALSE;
if(!other_value.tfi__or__tlli().is_bound()) return FALSE;
if(!single_value->field_tfi__or__tlli.match(other_value.tfi__or__tlli(), legacy))return FALSE;
if(!other_value.egprs2().is_bound()) return FALSE;
if(!single_value->field_egprs2.match(other_value.egprs2(), legacy))return FALSE;
if(!other_value.mac__mode().is_bound()) return FALSE;
if(!single_value->field_mac__mode.match(other_value.mac__mode(), legacy))return FALSE;
if(!other_value.rlc__mode().is_bound()) return FALSE;
if(!single_value->field_rlc__mode.match(other_value.rlc__mode(), legacy))return FALSE;
if(!other_value.control__ack().is_bound()) return FALSE;
if(!single_value->field_control__ack.match(other_value.control__ack(), legacy))return FALSE;
if(!other_value.timeslot__alloc().is_bound()) return FALSE;
if(!single_value->field_timeslot__alloc.match(other_value.timeslot__alloc(), legacy))return FALSE;
if(!other_value.pkt__ta().is_bound()) return FALSE;
if(!single_value->field_pkt__ta.match(other_value.pkt__ta(), legacy))return FALSE;
if(!other_value.p0__present().is_bound()) return FALSE;
if(!single_value->field_p0__present.match(other_value.p0__present(), legacy))return FALSE;
if(!other_value.p0().is_bound()) return FALSE;
if((other_value.p0().ispresent() ? !single_value->field_p0.match((const INTEGER&)other_value.p0(), legacy) : !single_value->field_p0.match_omit(legacy)))return FALSE;
if(!other_value.reserved().is_bound()) return FALSE;
if((other_value.reserved().ispresent() ? !single_value->field_reserved.match((const BITSTRING&)other_value.reserved(), legacy) : !single_value->field_reserved.match_omit(legacy)))return FALSE;
if(!other_value.pr__mode().is_bound()) return FALSE;
if((other_value.pr__mode().ispresent() ? !single_value->field_pr__mode.match((const BITSTRING&)other_value.pr__mode(), legacy) : !single_value->field_pr__mode.match_omit(legacy)))return FALSE;
if(!other_value.freq__par__present().is_bound()) return FALSE;
if(!single_value->field_freq__par__present.match(other_value.freq__par__present(), legacy))return FALSE;
if(!other_value.freq__par().is_bound()) return FALSE;
if((other_value.freq__par().ispresent() ? !single_value->field_freq__par.match((const FrequencyParameters&)other_value.freq__par(), legacy) : !single_value->field_freq__par.match_omit(legacy)))return FALSE;
if(!other_value.dl__tfi__ass__present().is_bound()) return FALSE;
if(!single_value->field_dl__tfi__ass__present.match(other_value.dl__tfi__ass__present(), legacy))return FALSE;
if(!other_value.dl__tfi__assignment().is_bound()) return FALSE;
if((other_value.dl__tfi__assignment().ispresent() ? !single_value->field_dl__tfi__assignment.match((const INTEGER&)other_value.dl__tfi__assignment(), legacy) : !single_value->field_dl__tfi__assignment.match_omit(legacy)))return FALSE;
if(!other_value.pwr__ctrl__present().is_bound()) return FALSE;
if(!single_value->field_pwr__ctrl__present.match(other_value.pwr__ctrl__present(), legacy))return FALSE;
if(!other_value.pwr__ctrl().is_bound()) return FALSE;
if((other_value.pwr__ctrl().ispresent() ? !single_value->field_pwr__ctrl.match((const PowerControlParameters&)other_value.pwr__ctrl(), legacy) : !single_value->field_pwr__ctrl.match_omit(legacy)))return FALSE;
if(!other_value.tbf__starting__time__present().is_bound()) return FALSE;
if(!single_value->field_tbf__starting__time__present.match(other_value.tbf__starting__time__present(), legacy))return FALSE;
if(!other_value.tbf__starting__time().is_bound()) return FALSE;
if((other_value.tbf__starting__time().ispresent() ? !single_value->field_tbf__starting__time.match((const StartingFnDesc&)other_value.tbf__starting__time(), legacy) : !single_value->field_tbf__starting__time.match_omit(legacy)))return FALSE;
if(!other_value.spare().is_bound()) return FALSE;
if(!single_value->field_spare.match(other_value.spare(), legacy))return FALSE;
if(!other_value.rel__additions().is_bound()) return FALSE;
if((other_value.rel__additions().ispresent() ? !single_value->field_rel__additions.match((const PktDlAssRelAdditions&)other_value.rel__additions(), legacy) : !single_value->field_rel__additions.match_omit(legacy)))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.PacketDlAssignment.");
}
return FALSE;
}

boolean PacketDlAssignment_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_page__mode.is_bound()
 || single_value->field_pres1.is_bound()
 || (single_value->field_persistence__levels.is_omit() || single_value->field_persistence__levels.is_bound())
 || single_value->field_tfi__or__tlli.is_bound()
 || single_value->field_egprs2.is_bound()
 || single_value->field_mac__mode.is_bound()
 || single_value->field_rlc__mode.is_bound()
 || single_value->field_control__ack.is_bound()
 || single_value->field_timeslot__alloc.is_bound()
 || single_value->field_pkt__ta.is_bound()
 || single_value->field_p0__present.is_bound()
 || (single_value->field_p0.is_omit() || single_value->field_p0.is_bound())
 || (single_value->field_reserved.is_omit() || single_value->field_reserved.is_bound())
 || (single_value->field_pr__mode.is_omit() || single_value->field_pr__mode.is_bound())
 || single_value->field_freq__par__present.is_bound()
 || (single_value->field_freq__par.is_omit() || single_value->field_freq__par.is_bound())
 || single_value->field_dl__tfi__ass__present.is_bound()
 || (single_value->field_dl__tfi__assignment.is_omit() || single_value->field_dl__tfi__assignment.is_bound())
 || single_value->field_pwr__ctrl__present.is_bound()
 || (single_value->field_pwr__ctrl.is_omit() || single_value->field_pwr__ctrl.is_bound())
 || single_value->field_tbf__starting__time__present.is_bound()
 || (single_value->field_tbf__starting__time.is_omit() || single_value->field_tbf__starting__time.is_bound())
 || single_value->field_spare.is_bound()
 || (single_value->field_rel__additions.is_omit() || single_value->field_rel__additions.is_bound());
}

boolean PacketDlAssignment_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_page__mode.is_value()
 && single_value->field_pres1.is_value()
 && (single_value->field_persistence__levels.is_omit() || single_value->field_persistence__levels.is_value())
 && single_value->field_tfi__or__tlli.is_value()
 && single_value->field_egprs2.is_value()
 && single_value->field_mac__mode.is_value()
 && single_value->field_rlc__mode.is_value()
 && single_value->field_control__ack.is_value()
 && single_value->field_timeslot__alloc.is_value()
 && single_value->field_pkt__ta.is_value()
 && single_value->field_p0__present.is_value()
 && (single_value->field_p0.is_omit() || single_value->field_p0.is_value())
 && (single_value->field_reserved.is_omit() || single_value->field_reserved.is_value())
 && (single_value->field_pr__mode.is_omit() || single_value->field_pr__mode.is_value())
 && single_value->field_freq__par__present.is_value()
 && (single_value->field_freq__par.is_omit() || single_value->field_freq__par.is_value())
 && single_value->field_dl__tfi__ass__present.is_value()
 && (single_value->field_dl__tfi__assignment.is_omit() || single_value->field_dl__tfi__assignment.is_value())
 && single_value->field_pwr__ctrl__present.is_value()
 && (single_value->field_pwr__ctrl.is_omit() || single_value->field_pwr__ctrl.is_value())
 && single_value->field_tbf__starting__time__present.is_value()
 && (single_value->field_tbf__starting__time.is_omit() || single_value->field_tbf__starting__time.is_value())
 && single_value->field_spare.is_value()
 && (single_value->field_rel__additions.is_omit() || single_value->field_rel__additions.is_value());
}

void PacketDlAssignment_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

PacketDlAssignment PacketDlAssignment_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 @RLCMAC_CSN1_Types.PacketDlAssignment.");
PacketDlAssignment ret_val;
if (single_value->field_page__mode.is_bound()) {
ret_val.page__mode() = single_value->field_page__mode.valueof();
}
if (single_value->field_pres1.is_bound()) {
ret_val.pres1() = single_value->field_pres1.valueof();
}
if (single_value->field_persistence__levels.is_omit()) ret_val.persistence__levels() = OMIT_VALUE;
else if (single_value->field_persistence__levels.is_bound()) {
ret_val.persistence__levels() = single_value->field_persistence__levels.valueof();
}
if (single_value->field_tfi__or__tlli.is_bound()) {
ret_val.tfi__or__tlli() = single_value->field_tfi__or__tlli.valueof();
}
if (single_value->field_egprs2.is_bound()) {
ret_val.egprs2() = single_value->field_egprs2.valueof();
}
if (single_value->field_mac__mode.is_bound()) {
ret_val.mac__mode() = single_value->field_mac__mode.valueof();
}
if (single_value->field_rlc__mode.is_bound()) {
ret_val.rlc__mode() = single_value->field_rlc__mode.valueof();
}
if (single_value->field_control__ack.is_bound()) {
ret_val.control__ack() = single_value->field_control__ack.valueof();
}
if (single_value->field_timeslot__alloc.is_bound()) {
ret_val.timeslot__alloc() = single_value->field_timeslot__alloc.valueof();
}
if (single_value->field_pkt__ta.is_bound()) {
ret_val.pkt__ta() = single_value->field_pkt__ta.valueof();
}
if (single_value->field_p0__present.is_bound()) {
ret_val.p0__present() = single_value->field_p0__present.valueof();
}
if (single_value->field_p0.is_omit()) ret_val.p0() = OMIT_VALUE;
else if (single_value->field_p0.is_bound()) {
ret_val.p0() = single_value->field_p0.valueof();
}
if (single_value->field_reserved.is_omit()) ret_val.reserved() = OMIT_VALUE;
else if (single_value->field_reserved.is_bound()) {
ret_val.reserved() = single_value->field_reserved.valueof();
}
if (single_value->field_pr__mode.is_omit()) ret_val.pr__mode() = OMIT_VALUE;
else if (single_value->field_pr__mode.is_bound()) {
ret_val.pr__mode() = single_value->field_pr__mode.valueof();
}
if (single_value->field_freq__par__present.is_bound()) {
ret_val.freq__par__present() = single_value->field_freq__par__present.valueof();
}
if (single_value->field_freq__par.is_omit()) ret_val.freq__par() = OMIT_VALUE;
else if (single_value->field_freq__par.is_bound()) {
ret_val.freq__par() = single_value->field_freq__par.valueof();
}
if (single_value->field_dl__tfi__ass__present.is_bound()) {
ret_val.dl__tfi__ass__present() = single_value->field_dl__tfi__ass__present.valueof();
}
if (single_value->field_dl__tfi__assignment.is_omit()) ret_val.dl__tfi__assignment() = OMIT_VALUE;
else if (single_value->field_dl__tfi__assignment.is_bound()) {
ret_val.dl__tfi__assignment() = single_value->field_dl__tfi__assignment.valueof();
}
if (single_value->field_pwr__ctrl__present.is_bound()) {
ret_val.pwr__ctrl__present() = single_value->field_pwr__ctrl__present.valueof();
}
if (single_value->field_pwr__ctrl.is_omit()) ret_val.pwr__ctrl() = OMIT_VALUE;
else if (single_value->field_pwr__ctrl.is_bound()) {
ret_val.pwr__ctrl() = single_value->field_pwr__ctrl.valueof();
}
if (single_value->field_tbf__starting__time__present.is_bound()) {
ret_val.tbf__starting__time__present() = single_value->field_tbf__starting__time__present.valueof();
}
if (single_value->field_tbf__starting__time.is_omit()) ret_val.tbf__starting__time() = OMIT_VALUE;
else if (single_value->field_tbf__starting__time.is_bound()) {
ret_val.tbf__starting__time() = single_value->field_tbf__starting__time.valueof();
}
if (single_value->field_spare.is_bound()) {
ret_val.spare() = single_value->field_spare.valueof();
}
if (single_value->field_rel__additions.is_omit()) ret_val.rel__additions() = OMIT_VALUE;
else if (single_value->field_rel__additions.is_bound()) {
ret_val.rel__additions() = single_value->field_rel__additions.valueof();
}
return ret_val;
}

void PacketDlAssignment_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @RLCMAC_CSN1_Types.PacketDlAssignment.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new PacketDlAssignment_template[list_length];
}

PacketDlAssignment_template& PacketDlAssignment_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @RLCMAC_CSN1_Types.PacketDlAssignment.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @RLCMAC_CSN1_Types.PacketDlAssignment.");
return value_list.list_value[list_index];
}

PageMode_template& PacketDlAssignment_template::page__mode()
{
set_specific();
return single_value->field_page__mode;
}

const PageMode_template& PacketDlAssignment_template::page__mode() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field page_mode of a non-specific template of type @RLCMAC_CSN1_Types.PacketDlAssignment.");
return single_value->field_page__mode;
}

BITSTRING_template& PacketDlAssignment_template::pres1()
{
set_specific();
return single_value->field_pres1;
}

const BITSTRING_template& PacketDlAssignment_template::pres1() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field pres1 of a non-specific template of type @RLCMAC_CSN1_Types.PacketDlAssignment.");
return single_value->field_pres1;
}

PersistenceLevels_template& PacketDlAssignment_template::persistence__levels()
{
set_specific();
return single_value->field_persistence__levels;
}

const PersistenceLevels_template& PacketDlAssignment_template::persistence__levels() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field persistence_levels of a non-specific template of type @RLCMAC_CSN1_Types.PacketDlAssignment.");
return single_value->field_persistence__levels;
}

GlobalTfiOrTlli_template& PacketDlAssignment_template::tfi__or__tlli()
{
set_specific();
return single_value->field_tfi__or__tlli;
}

const GlobalTfiOrTlli_template& PacketDlAssignment_template::tfi__or__tlli() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field tfi_or_tlli of a non-specific template of type @RLCMAC_CSN1_Types.PacketDlAssignment.");
return single_value->field_tfi__or__tlli;
}

BITSTRING_template& PacketDlAssignment_template::egprs2()
{
set_specific();
return single_value->field_egprs2;
}

const BITSTRING_template& PacketDlAssignment_template::egprs2() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field egprs2 of a non-specific template of type @RLCMAC_CSN1_Types.PacketDlAssignment.");
return single_value->field_egprs2;
}

BITSTRING_template& PacketDlAssignment_template::mac__mode()
{
set_specific();
return single_value->field_mac__mode;
}

const BITSTRING_template& PacketDlAssignment_template::mac__mode() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field mac_mode of a non-specific template of type @RLCMAC_CSN1_Types.PacketDlAssignment.");
return single_value->field_mac__mode;
}

BITSTRING_template& PacketDlAssignment_template::rlc__mode()
{
set_specific();
return single_value->field_rlc__mode;
}

const BITSTRING_template& PacketDlAssignment_template::rlc__mode() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field rlc_mode of a non-specific template of type @RLCMAC_CSN1_Types.PacketDlAssignment.");
return single_value->field_rlc__mode;
}

BITSTRING_template& PacketDlAssignment_template::control__ack()
{
set_specific();
return single_value->field_control__ack;
}

const BITSTRING_template& PacketDlAssignment_template::control__ack() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field control_ack of a non-specific template of type @RLCMAC_CSN1_Types.PacketDlAssignment.");
return single_value->field_control__ack;
}

BITSTRING_template& PacketDlAssignment_template::timeslot__alloc()
{
set_specific();
return single_value->field_timeslot__alloc;
}

const BITSTRING_template& PacketDlAssignment_template::timeslot__alloc() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field timeslot_alloc of a non-specific template of type @RLCMAC_CSN1_Types.PacketDlAssignment.");
return single_value->field_timeslot__alloc;
}

PacketTimingAdvance_template& PacketDlAssignment_template::pkt__ta()
{
set_specific();
return single_value->field_pkt__ta;
}

const PacketTimingAdvance_template& PacketDlAssignment_template::pkt__ta() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field pkt_ta of a non-specific template of type @RLCMAC_CSN1_Types.PacketDlAssignment.");
return single_value->field_pkt__ta;
}

BITSTRING_template& PacketDlAssignment_template::p0__present()
{
set_specific();
return single_value->field_p0__present;
}

const BITSTRING_template& PacketDlAssignment_template::p0__present() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field p0_present of a non-specific template of type @RLCMAC_CSN1_Types.PacketDlAssignment.");
return single_value->field_p0__present;
}

INTEGER_template& PacketDlAssignment_template::p0()
{
set_specific();
return single_value->field_p0;
}

const INTEGER_template& PacketDlAssignment_template::p0() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field p0 of a non-specific template of type @RLCMAC_CSN1_Types.PacketDlAssignment.");
return single_value->field_p0;
}

BITSTRING_template& PacketDlAssignment_template::reserved()
{
set_specific();
return single_value->field_reserved;
}

const BITSTRING_template& PacketDlAssignment_template::reserved() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field reserved of a non-specific template of type @RLCMAC_CSN1_Types.PacketDlAssignment.");
return single_value->field_reserved;
}

BITSTRING_template& PacketDlAssignment_template::pr__mode()
{
set_specific();
return single_value->field_pr__mode;
}

const BITSTRING_template& PacketDlAssignment_template::pr__mode() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field pr_mode of a non-specific template of type @RLCMAC_CSN1_Types.PacketDlAssignment.");
return single_value->field_pr__mode;
}

BITSTRING_template& PacketDlAssignment_template::freq__par__present()
{
set_specific();
return single_value->field_freq__par__present;
}

const BITSTRING_template& PacketDlAssignment_template::freq__par__present() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field freq_par_present of a non-specific template of type @RLCMAC_CSN1_Types.PacketDlAssignment.");
return single_value->field_freq__par__present;
}

FrequencyParameters_template& PacketDlAssignment_template::freq__par()
{
set_specific();
return single_value->field_freq__par;
}

const FrequencyParameters_template& PacketDlAssignment_template::freq__par() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field freq_par of a non-specific template of type @RLCMAC_CSN1_Types.PacketDlAssignment.");
return single_value->field_freq__par;
}

BITSTRING_template& PacketDlAssignment_template::dl__tfi__ass__present()
{
set_specific();
return single_value->field_dl__tfi__ass__present;
}

const BITSTRING_template& PacketDlAssignment_template::dl__tfi__ass__present() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field dl_tfi_ass_present of a non-specific template of type @RLCMAC_CSN1_Types.PacketDlAssignment.");
return single_value->field_dl__tfi__ass__present;
}

INTEGER_template& PacketDlAssignment_template::dl__tfi__assignment()
{
set_specific();
return single_value->field_dl__tfi__assignment;
}

const INTEGER_template& PacketDlAssignment_template::dl__tfi__assignment() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field dl_tfi_assignment of a non-specific template of type @RLCMAC_CSN1_Types.PacketDlAssignment.");
return single_value->field_dl__tfi__assignment;
}

BITSTRING_template& PacketDlAssignment_template::pwr__ctrl__present()
{
set_specific();
return single_value->field_pwr__ctrl__present;
}

const BITSTRING_template& PacketDlAssignment_template::pwr__ctrl__present() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field pwr_ctrl_present of a non-specific template of type @RLCMAC_CSN1_Types.PacketDlAssignment.");
return single_value->field_pwr__ctrl__present;
}

PowerControlParameters_template& PacketDlAssignment_template::pwr__ctrl()
{
set_specific();
return single_value->field_pwr__ctrl;
}

const PowerControlParameters_template& PacketDlAssignment_template::pwr__ctrl() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field pwr_ctrl of a non-specific template of type @RLCMAC_CSN1_Types.PacketDlAssignment.");
return single_value->field_pwr__ctrl;
}

BITSTRING_template& PacketDlAssignment_template::tbf__starting__time__present()
{
set_specific();
return single_value->field_tbf__starting__time__present;
}

const BITSTRING_template& PacketDlAssignment_template::tbf__starting__time__present() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field tbf_starting_time_present of a non-specific template of type @RLCMAC_CSN1_Types.PacketDlAssignment.");
return single_value->field_tbf__starting__time__present;
}

StartingFnDesc_template& PacketDlAssignment_template::tbf__starting__time()
{
set_specific();
return single_value->field_tbf__starting__time;
}

const StartingFnDesc_template& PacketDlAssignment_template::tbf__starting__time() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field tbf_starting_time of a non-specific template of type @RLCMAC_CSN1_Types.PacketDlAssignment.");
return single_value->field_tbf__starting__time;
}

BITSTRING_template& PacketDlAssignment_template::spare()
{
set_specific();
return single_value->field_spare;
}

const BITSTRING_template& PacketDlAssignment_template::spare() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field spare of a non-specific template of type @RLCMAC_CSN1_Types.PacketDlAssignment.");
return single_value->field_spare;
}

PktDlAssRelAdditions_template& PacketDlAssignment_template::rel__additions()
{
set_specific();
return single_value->field_rel__additions;
}

const PktDlAssRelAdditions_template& PacketDlAssignment_template::rel__additions() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field rel_additions of a non-specific template of type @RLCMAC_CSN1_Types.PacketDlAssignment.");
return single_value->field_rel__additions;
}

int PacketDlAssignment_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PacketDlAssignment which has an ifpresent attribute.");
  switch (template_selection)
  {
  case SPECIFIC_VALUE:
  {    int ret_val = 15;
      if (single_value->field_persistence__levels.is_present()) ret_val++;
      if (single_value->field_p0.is_present()) ret_val++;
      if (single_value->field_reserved.is_present()) ret_val++;
      if (single_value->field_pr__mode.is_present()) ret_val++;
      if (single_value->field_freq__par.is_present()) ret_val++;
      if (single_value->field_dl__tfi__assignment.is_present()) ret_val++;
      if (single_value->field_pwr__ctrl.is_present()) ret_val++;
      if (single_value->field_tbf__starting__time.is_present()) ret_val++;
      if (single_value->field_rel__additions.is_present()) ret_val++;
      return ret_val;
    }
  case VALUE_LIST:
   {
     if (value_list.n_values<1)
       TTCN_error("Internal error: Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PacketDlAssignment 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 @RLCMAC_CSN1_Types.PacketDlAssignment containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PacketDlAssignment containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PacketDlAssignment containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PacketDlAssignment containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PacketDlAssignment containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PacketDlAssignment containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PacketDlAssignment containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.PacketDlAssignment.");
  }
  return 0;
}

void PacketDlAssignment_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ page_mode := ");
single_value->field_page__mode.log();
TTCN_Logger::log_event_str(", pres1 := ");
single_value->field_pres1.log();
TTCN_Logger::log_event_str(", persistence_levels := ");
single_value->field_persistence__levels.log();
TTCN_Logger::log_event_str(", tfi_or_tlli := ");
single_value->field_tfi__or__tlli.log();
TTCN_Logger::log_event_str(", egprs2 := ");
single_value->field_egprs2.log();
TTCN_Logger::log_event_str(", mac_mode := ");
single_value->field_mac__mode.log();
TTCN_Logger::log_event_str(", rlc_mode := ");
single_value->field_rlc__mode.log();
TTCN_Logger::log_event_str(", control_ack := ");
single_value->field_control__ack.log();
TTCN_Logger::log_event_str(", timeslot_alloc := ");
single_value->field_timeslot__alloc.log();
TTCN_Logger::log_event_str(", pkt_ta := ");
single_value->field_pkt__ta.log();
TTCN_Logger::log_event_str(", p0_present := ");
single_value->field_p0__present.log();
TTCN_Logger::log_event_str(", p0 := ");
single_value->field_p0.log();
TTCN_Logger::log_event_str(", reserved := ");
single_value->field_reserved.log();
TTCN_Logger::log_event_str(", pr_mode := ");
single_value->field_pr__mode.log();
TTCN_Logger::log_event_str(", freq_par_present := ");
single_value->field_freq__par__present.log();
TTCN_Logger::log_event_str(", freq_par := ");
single_value->field_freq__par.log();
TTCN_Logger::log_event_str(", dl_tfi_ass_present := ");
single_value->field_dl__tfi__ass__present.log();
TTCN_Logger::log_event_str(", dl_tfi_assignment := ");
single_value->field_dl__tfi__assignment.log();
TTCN_Logger::log_event_str(", pwr_ctrl_present := ");
single_value->field_pwr__ctrl__present.log();
TTCN_Logger::log_event_str(", pwr_ctrl := ");
single_value->field_pwr__ctrl.log();
TTCN_Logger::log_event_str(", tbf_starting_time_present := ");
single_value->field_tbf__starting__time__present.log();
TTCN_Logger::log_event_str(", tbf_starting_time := ");
single_value->field_tbf__starting__time.log();
TTCN_Logger::log_event_str(", spare := ");
single_value->field_spare.log();
TTCN_Logger::log_event_str(", rel_additions := ");
single_value->field_rel__additions.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void PacketDlAssignment_template::log_match(const PacketDlAssignment& 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_page__mode.match(match_value.page__mode(), legacy)){
TTCN_Logger::log_logmatch_info(".page_mode");
single_value->field_page__mode.log_match(match_value.page__mode(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_pres1.match(match_value.pres1(), legacy)){
TTCN_Logger::log_logmatch_info(".pres1");
single_value->field_pres1.log_match(match_value.pres1(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if (match_value.persistence__levels().ispresent()){
if(!single_value->field_persistence__levels.match(match_value.persistence__levels(), legacy)){
TTCN_Logger::log_logmatch_info(".persistence_levels");
single_value->field_persistence__levels.log_match(match_value.persistence__levels(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
} else {
if (!single_value->field_persistence__levels.match_omit(legacy)){
 TTCN_Logger::log_logmatch_info(".persistence_levels := omit with ");
TTCN_Logger::print_logmatch_buffer();
single_value->field_persistence__levels.log();
TTCN_Logger::log_event_str(" unmatched");
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}
if(!single_value->field_tfi__or__tlli.match(match_value.tfi__or__tlli(), legacy)){
TTCN_Logger::log_logmatch_info(".tfi_or_tlli");
single_value->field_tfi__or__tlli.log_match(match_value.tfi__or__tlli(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_egprs2.match(match_value.egprs2(), legacy)){
TTCN_Logger::log_logmatch_info(".egprs2");
single_value->field_egprs2.log_match(match_value.egprs2(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_mac__mode.match(match_value.mac__mode(), legacy)){
TTCN_Logger::log_logmatch_info(".mac_mode");
single_value->field_mac__mode.log_match(match_value.mac__mode(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_rlc__mode.match(match_value.rlc__mode(), legacy)){
TTCN_Logger::log_logmatch_info(".rlc_mode");
single_value->field_rlc__mode.log_match(match_value.rlc__mode(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_control__ack.match(match_value.control__ack(), legacy)){
TTCN_Logger::log_logmatch_info(".control_ack");
single_value->field_control__ack.log_match(match_value.control__ack(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_timeslot__alloc.match(match_value.timeslot__alloc(), legacy)){
TTCN_Logger::log_logmatch_info(".timeslot_alloc");
single_value->field_timeslot__alloc.log_match(match_value.timeslot__alloc(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_pkt__ta.match(match_value.pkt__ta(), legacy)){
TTCN_Logger::log_logmatch_info(".pkt_ta");
single_value->field_pkt__ta.log_match(match_value.pkt__ta(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_p0__present.match(match_value.p0__present(), legacy)){
TTCN_Logger::log_logmatch_info(".p0_present");
single_value->field_p0__present.log_match(match_value.p0__present(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if (match_value.p0().ispresent()){
if(!single_value->field_p0.match(match_value.p0(), legacy)){
TTCN_Logger::log_logmatch_info(".p0");
single_value->field_p0.log_match(match_value.p0(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
} else {
if (!single_value->field_p0.match_omit(legacy)){
 TTCN_Logger::log_logmatch_info(".p0 := omit with ");
TTCN_Logger::print_logmatch_buffer();
single_value->field_p0.log();
TTCN_Logger::log_event_str(" unmatched");
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}
if (match_value.reserved().ispresent()){
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 {
if (!single_value->field_reserved.match_omit(legacy)){
 TTCN_Logger::log_logmatch_info(".reserved := omit with ");
TTCN_Logger::print_logmatch_buffer();
single_value->field_reserved.log();
TTCN_Logger::log_event_str(" unmatched");
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}
if (match_value.pr__mode().ispresent()){
if(!single_value->field_pr__mode.match(match_value.pr__mode(), legacy)){
TTCN_Logger::log_logmatch_info(".pr_mode");
single_value->field_pr__mode.log_match(match_value.pr__mode(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
} else {
if (!single_value->field_pr__mode.match_omit(legacy)){
 TTCN_Logger::log_logmatch_info(".pr_mode := omit with ");
TTCN_Logger::print_logmatch_buffer();
single_value->field_pr__mode.log();
TTCN_Logger::log_event_str(" unmatched");
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}
if(!single_value->field_freq__par__present.match(match_value.freq__par__present(), legacy)){
TTCN_Logger::log_logmatch_info(".freq_par_present");
single_value->field_freq__par__present.log_match(match_value.freq__par__present(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if (match_value.freq__par().ispresent()){
if(!single_value->field_freq__par.match(match_value.freq__par(), legacy)){
TTCN_Logger::log_logmatch_info(".freq_par");
single_value->field_freq__par.log_match(match_value.freq__par(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
} else {
if (!single_value->field_freq__par.match_omit(legacy)){
 TTCN_Logger::log_logmatch_info(".freq_par := omit with ");
TTCN_Logger::print_logmatch_buffer();
single_value->field_freq__par.log();
TTCN_Logger::log_event_str(" unmatched");
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}
if(!single_value->field_dl__tfi__ass__present.match(match_value.dl__tfi__ass__present(), legacy)){
TTCN_Logger::log_logmatch_info(".dl_tfi_ass_present");
single_value->field_dl__tfi__ass__present.log_match(match_value.dl__tfi__ass__present(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if (match_value.dl__tfi__assignment().ispresent()){
if(!single_value->field_dl__tfi__assignment.match(match_value.dl__tfi__assignment(), legacy)){
TTCN_Logger::log_logmatch_info(".dl_tfi_assignment");
single_value->field_dl__tfi__assignment.log_match(match_value.dl__tfi__assignment(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
} else {
if (!single_value->field_dl__tfi__assignment.match_omit(legacy)){
 TTCN_Logger::log_logmatch_info(".dl_tfi_assignment := omit with ");
TTCN_Logger::print_logmatch_buffer();
single_value->field_dl__tfi__assignment.log();
TTCN_Logger::log_event_str(" unmatched");
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}
if(!single_value->field_pwr__ctrl__present.match(match_value.pwr__ctrl__present(), legacy)){
TTCN_Logger::log_logmatch_info(".pwr_ctrl_present");
single_value->field_pwr__ctrl__present.log_match(match_value.pwr__ctrl__present(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if (match_value.pwr__ctrl().ispresent()){
if(!single_value->field_pwr__ctrl.match(match_value.pwr__ctrl(), legacy)){
TTCN_Logger::log_logmatch_info(".pwr_ctrl");
single_value->field_pwr__ctrl.log_match(match_value.pwr__ctrl(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
} else {
if (!single_value->field_pwr__ctrl.match_omit(legacy)){
 TTCN_Logger::log_logmatch_info(".pwr_ctrl := omit with ");
TTCN_Logger::print_logmatch_buffer();
single_value->field_pwr__ctrl.log();
TTCN_Logger::log_event_str(" unmatched");
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}
if(!single_value->field_tbf__starting__time__present.match(match_value.tbf__starting__time__present(), legacy)){
TTCN_Logger::log_logmatch_info(".tbf_starting_time_present");
single_value->field_tbf__starting__time__present.log_match(match_value.tbf__starting__time__present(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if (match_value.tbf__starting__time().ispresent()){
if(!single_value->field_tbf__starting__time.match(match_value.tbf__starting__time(), legacy)){
TTCN_Logger::log_logmatch_info(".tbf_starting_time");
single_value->field_tbf__starting__time.log_match(match_value.tbf__starting__time(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
} else {
if (!single_value->field_tbf__starting__time.match_omit(legacy)){
 TTCN_Logger::log_logmatch_info(".tbf_starting_time := omit with ");
TTCN_Logger::print_logmatch_buffer();
single_value->field_tbf__starting__time.log();
TTCN_Logger::log_event_str(" unmatched");
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}
if(!single_value->field_spare.match(match_value.spare(), legacy)){
TTCN_Logger::log_logmatch_info(".spare");
single_value->field_spare.log_match(match_value.spare(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if (match_value.rel__additions().ispresent()){
if(!single_value->field_rel__additions.match(match_value.rel__additions(), legacy)){
TTCN_Logger::log_logmatch_info(".rel_additions");
single_value->field_rel__additions.log_match(match_value.rel__additions(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
} else {
if (!single_value->field_rel__additions.match_omit(legacy)){
 TTCN_Logger::log_logmatch_info(".rel_additions := omit with ");
TTCN_Logger::print_logmatch_buffer();
single_value->field_rel__additions.log();
TTCN_Logger::log_event_str(" unmatched");
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}
}else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE) {
TTCN_Logger::log_event_str("{ page_mode := ");
single_value->field_page__mode.log_match(match_value.page__mode(), legacy);
TTCN_Logger::log_event_str(", pres1 := ");
single_value->field_pres1.log_match(match_value.pres1(), legacy);
TTCN_Logger::log_event_str(", persistence_levels := ");
if (match_value.persistence__levels().ispresent()) {
single_value->field_persistence__levels.log_match(match_value.persistence__levels(), legacy);
} else {
TTCN_Logger::log_event_str("omit with ");
single_value->field_persistence__levels.log();
if (single_value->field_persistence__levels.match_omit(legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
TTCN_Logger::log_event_str(", tfi_or_tlli := ");
single_value->field_tfi__or__tlli.log_match(match_value.tfi__or__tlli(), legacy);
TTCN_Logger::log_event_str(", egprs2 := ");
single_value->field_egprs2.log_match(match_value.egprs2(), legacy);
TTCN_Logger::log_event_str(", mac_mode := ");
single_value->field_mac__mode.log_match(match_value.mac__mode(), legacy);
TTCN_Logger::log_event_str(", rlc_mode := ");
single_value->field_rlc__mode.log_match(match_value.rlc__mode(), legacy);
TTCN_Logger::log_event_str(", control_ack := ");
single_value->field_control__ack.log_match(match_value.control__ack(), legacy);
TTCN_Logger::log_event_str(", timeslot_alloc := ");
single_value->field_timeslot__alloc.log_match(match_value.timeslot__alloc(), legacy);
TTCN_Logger::log_event_str(", pkt_ta := ");
single_value->field_pkt__ta.log_match(match_value.pkt__ta(), legacy);
TTCN_Logger::log_event_str(", p0_present := ");
single_value->field_p0__present.log_match(match_value.p0__present(), legacy);
TTCN_Logger::log_event_str(", p0 := ");
if (match_value.p0().ispresent()) {
single_value->field_p0.log_match(match_value.p0(), legacy);
} else {
TTCN_Logger::log_event_str("omit with ");
single_value->field_p0.log();
if (single_value->field_p0.match_omit(legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
TTCN_Logger::log_event_str(", reserved := ");
if (match_value.reserved().ispresent()) {
single_value->field_reserved.log_match(match_value.reserved(), legacy);
} else {
TTCN_Logger::log_event_str("omit with ");
single_value->field_reserved.log();
if (single_value->field_reserved.match_omit(legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
TTCN_Logger::log_event_str(", pr_mode := ");
if (match_value.pr__mode().ispresent()) {
single_value->field_pr__mode.log_match(match_value.pr__mode(), legacy);
} else {
TTCN_Logger::log_event_str("omit with ");
single_value->field_pr__mode.log();
if (single_value->field_pr__mode.match_omit(legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
TTCN_Logger::log_event_str(", freq_par_present := ");
single_value->field_freq__par__present.log_match(match_value.freq__par__present(), legacy);
TTCN_Logger::log_event_str(", freq_par := ");
if (match_value.freq__par().ispresent()) {
single_value->field_freq__par.log_match(match_value.freq__par(), legacy);
} else {
TTCN_Logger::log_event_str("omit with ");
single_value->field_freq__par.log();
if (single_value->field_freq__par.match_omit(legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
TTCN_Logger::log_event_str(", dl_tfi_ass_present := ");
single_value->field_dl__tfi__ass__present.log_match(match_value.dl__tfi__ass__present(), legacy);
TTCN_Logger::log_event_str(", dl_tfi_assignment := ");
if (match_value.dl__tfi__assignment().ispresent()) {
single_value->field_dl__tfi__assignment.log_match(match_value.dl__tfi__assignment(), legacy);
} else {
TTCN_Logger::log_event_str("omit with ");
single_value->field_dl__tfi__assignment.log();
if (single_value->field_dl__tfi__assignment.match_omit(legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
TTCN_Logger::log_event_str(", pwr_ctrl_present := ");
single_value->field_pwr__ctrl__present.log_match(match_value.pwr__ctrl__present(), legacy);
TTCN_Logger::log_event_str(", pwr_ctrl := ");
if (match_value.pwr__ctrl().ispresent()) {
single_value->field_pwr__ctrl.log_match(match_value.pwr__ctrl(), legacy);
} else {
TTCN_Logger::log_event_str("omit with ");
single_value->field_pwr__ctrl.log();
if (single_value->field_pwr__ctrl.match_omit(legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
TTCN_Logger::log_event_str(", tbf_starting_time_present := ");
single_value->field_tbf__starting__time__present.log_match(match_value.tbf__starting__time__present(), legacy);
TTCN_Logger::log_event_str(", tbf_starting_time := ");
if (match_value.tbf__starting__time().ispresent()) {
single_value->field_tbf__starting__time.log_match(match_value.tbf__starting__time(), legacy);
} else {
TTCN_Logger::log_event_str("omit with ");
single_value->field_tbf__starting__time.log();
if (single_value->field_tbf__starting__time.match_omit(legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
TTCN_Logger::log_event_str(", spare := ");
single_value->field_spare.log_match(match_value.spare(), legacy);
TTCN_Logger::log_event_str(", rel_additions := ");
if (match_value.rel__additions().ispresent()) {
single_value->field_rel__additions.log_match(match_value.rel__additions(), legacy);
} else {
TTCN_Logger::log_event_str("omit with ");
single_value->field_rel__additions.log();
if (single_value->field_rel__additions.match_omit(legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
TTCN_Logger::log_event_str(" }");
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void PacketDlAssignment_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (page__mode().is_bound()) page__mode().set_implicit_omit();
if (pres1().is_bound()) pres1().set_implicit_omit();
if (!persistence__levels().is_bound()) persistence__levels() = OMIT_VALUE;
else persistence__levels().set_implicit_omit();
if (tfi__or__tlli().is_bound()) tfi__or__tlli().set_implicit_omit();
if (egprs2().is_bound()) egprs2().set_implicit_omit();
if (mac__mode().is_bound()) mac__mode().set_implicit_omit();
if (rlc__mode().is_bound()) rlc__mode().set_implicit_omit();
if (control__ack().is_bound()) control__ack().set_implicit_omit();
if (timeslot__alloc().is_bound()) timeslot__alloc().set_implicit_omit();
if (pkt__ta().is_bound()) pkt__ta().set_implicit_omit();
if (p0__present().is_bound()) p0__present().set_implicit_omit();
if (!p0().is_bound()) p0() = OMIT_VALUE;
else p0().set_implicit_omit();
if (!reserved().is_bound()) reserved() = OMIT_VALUE;
else reserved().set_implicit_omit();
if (!pr__mode().is_bound()) pr__mode() = OMIT_VALUE;
else pr__mode().set_implicit_omit();
if (freq__par__present().is_bound()) freq__par__present().set_implicit_omit();
if (!freq__par().is_bound()) freq__par() = OMIT_VALUE;
else freq__par().set_implicit_omit();
if (dl__tfi__ass__present().is_bound()) dl__tfi__ass__present().set_implicit_omit();
if (!dl__tfi__assignment().is_bound()) dl__tfi__assignment() = OMIT_VALUE;
else dl__tfi__assignment().set_implicit_omit();
if (pwr__ctrl__present().is_bound()) pwr__ctrl__present().set_implicit_omit();
if (!pwr__ctrl().is_bound()) pwr__ctrl() = OMIT_VALUE;
else pwr__ctrl().set_implicit_omit();
if (tbf__starting__time__present().is_bound()) tbf__starting__time__present().set_implicit_omit();
if (!tbf__starting__time().is_bound()) tbf__starting__time() = OMIT_VALUE;
else tbf__starting__time().set_implicit_omit();
if (spare().is_bound()) spare().set_implicit_omit();
if (!rel__additions().is_bound()) rel__additions() = OMIT_VALUE;
else rel__additions().set_implicit_omit();
}

void PacketDlAssignment_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_page__mode.encode_text(text_buf);
single_value->field_pres1.encode_text(text_buf);
single_value->field_persistence__levels.encode_text(text_buf);
single_value->field_tfi__or__tlli.encode_text(text_buf);
single_value->field_egprs2.encode_text(text_buf);
single_value->field_mac__mode.encode_text(text_buf);
single_value->field_rlc__mode.encode_text(text_buf);
single_value->field_control__ack.encode_text(text_buf);
single_value->field_timeslot__alloc.encode_text(text_buf);
single_value->field_pkt__ta.encode_text(text_buf);
single_value->field_p0__present.encode_text(text_buf);
single_value->field_p0.encode_text(text_buf);
single_value->field_reserved.encode_text(text_buf);
single_value->field_pr__mode.encode_text(text_buf);
single_value->field_freq__par__present.encode_text(text_buf);
single_value->field_freq__par.encode_text(text_buf);
single_value->field_dl__tfi__ass__present.encode_text(text_buf);
single_value->field_dl__tfi__assignment.encode_text(text_buf);
single_value->field_pwr__ctrl__present.encode_text(text_buf);
single_value->field_pwr__ctrl.encode_text(text_buf);
single_value->field_tbf__starting__time__present.encode_text(text_buf);
single_value->field_tbf__starting__time.encode_text(text_buf);
single_value->field_spare.encode_text(text_buf);
single_value->field_rel__additions.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 @RLCMAC_CSN1_Types.PacketDlAssignment.");
}
}

void PacketDlAssignment_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_page__mode.decode_text(text_buf);
single_value->field_pres1.decode_text(text_buf);
single_value->field_persistence__levels.decode_text(text_buf);
single_value->field_tfi__or__tlli.decode_text(text_buf);
single_value->field_egprs2.decode_text(text_buf);
single_value->field_mac__mode.decode_text(text_buf);
single_value->field_rlc__mode.decode_text(text_buf);
single_value->field_control__ack.decode_text(text_buf);
single_value->field_timeslot__alloc.decode_text(text_buf);
single_value->field_pkt__ta.decode_text(text_buf);
single_value->field_p0__present.decode_text(text_buf);
single_value->field_p0.decode_text(text_buf);
single_value->field_reserved.decode_text(text_buf);
single_value->field_pr__mode.decode_text(text_buf);
single_value->field_freq__par__present.decode_text(text_buf);
single_value->field_freq__par.decode_text(text_buf);
single_value->field_dl__tfi__ass__present.decode_text(text_buf);
single_value->field_dl__tfi__assignment.decode_text(text_buf);
single_value->field_pwr__ctrl__present.decode_text(text_buf);
single_value->field_pwr__ctrl.decode_text(text_buf);
single_value->field_tbf__starting__time__present.decode_text(text_buf);
single_value->field_tbf__starting__time.decode_text(text_buf);
single_value->field_spare.decode_text(text_buf);
single_value->field_rel__additions.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 PacketDlAssignment_template[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 @RLCMAC_CSN1_Types.PacketDlAssignment.");
}
}

void PacketDlAssignment_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    PacketDlAssignment_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_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 (24<param.get_size()) {
      param.error("record template of type @RLCMAC_CSN1_Types.PacketDlAssignment has 24 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) page__mode().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) pres1().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) persistence__levels().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) tfi__or__tlli().set_param(*param.get_elem(3));
    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) egprs2().set_param(*param.get_elem(4));
    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) mac__mode().set_param(*param.get_elem(5));
    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) rlc__mode().set_param(*param.get_elem(6));
    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) control__ack().set_param(*param.get_elem(7));
    if (param.get_size()>8 && param.get_elem(8)->get_type()!=Module_Param::MP_NotUsed) timeslot__alloc().set_param(*param.get_elem(8));
    if (param.get_size()>9 && param.get_elem(9)->get_type()!=Module_Param::MP_NotUsed) pkt__ta().set_param(*param.get_elem(9));
    if (param.get_size()>10 && param.get_elem(10)->get_type()!=Module_Param::MP_NotUsed) p0__present().set_param(*param.get_elem(10));
    if (param.get_size()>11 && param.get_elem(11)->get_type()!=Module_Param::MP_NotUsed) p0().set_param(*param.get_elem(11));
    if (param.get_size()>12 && param.get_elem(12)->get_type()!=Module_Param::MP_NotUsed) reserved().set_param(*param.get_elem(12));
    if (param.get_size()>13 && param.get_elem(13)->get_type()!=Module_Param::MP_NotUsed) pr__mode().set_param(*param.get_elem(13));
    if (param.get_size()>14 && param.get_elem(14)->get_type()!=Module_Param::MP_NotUsed) freq__par__present().set_param(*param.get_elem(14));
    if (param.get_size()>15 && param.get_elem(15)->get_type()!=Module_Param::MP_NotUsed) freq__par().set_param(*param.get_elem(15));
    if (param.get_size()>16 && param.get_elem(16)->get_type()!=Module_Param::MP_NotUsed) dl__tfi__ass__present().set_param(*param.get_elem(16));
    if (param.get_size()>17 && param.get_elem(17)->get_type()!=Module_Param::MP_NotUsed) dl__tfi__assignment().set_param(*param.get_elem(17));
    if (param.get_size()>18 && param.get_elem(18)->get_type()!=Module_Param::MP_NotUsed) pwr__ctrl__present().set_param(*param.get_elem(18));
    if (param.get_size()>19 && param.get_elem(19)->get_type()!=Module_Param::MP_NotUsed) pwr__ctrl().set_param(*param.get_elem(19));
    if (param.get_size()>20 && param.get_elem(20)->get_type()!=Module_Param::MP_NotUsed) tbf__starting__time__present().set_param(*param.get_elem(20));
    if (param.get_size()>21 && param.get_elem(21)->get_type()!=Module_Param::MP_NotUsed) tbf__starting__time().set_param(*param.get_elem(21));
    if (param.get_size()>22 && param.get_elem(22)->get_type()!=Module_Param::MP_NotUsed) spare().set_param(*param.get_elem(22));
    if (param.get_size()>23 && param.get_elem(23)->get_type()!=Module_Param::MP_NotUsed) rel__additions().set_param(*param.get_elem(23));
    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(), "page_mode")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          page__mode().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "pres1")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          pres1().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "persistence_levels")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          persistence__levels().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "tfi_or_tlli")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          tfi__or__tlli().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "egprs2")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          egprs2().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mac_mode")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mac__mode().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "rlc_mode")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          rlc__mode().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "control_ack")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          control__ack().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "timeslot_alloc")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          timeslot__alloc().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "pkt_ta")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          pkt__ta().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "p0_present")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          p0__present().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "p0")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          p0().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_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++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "pr_mode")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          pr__mode().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "freq_par_present")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          freq__par__present().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "freq_par")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          freq__par().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "dl_tfi_ass_present")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          dl__tfi__ass__present().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "dl_tfi_assignment")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          dl__tfi__assignment().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "pwr_ctrl_present")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          pwr__ctrl__present().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "pwr_ctrl")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          pwr__ctrl().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "tbf_starting_time_present")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          tbf__starting__time__present().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "tbf_starting_time")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          tbf__starting__time().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "spare")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          spare().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "rel_additions")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          rel__additions().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 @RLCMAC_CSN1_Types.PacketDlAssignment: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    PacketDlAssignment_template* precondition = new PacketDlAssignment_template;
    precondition->set_param(*param.get_elem(0));
    PacketDlAssignment_template* implied_template = new PacketDlAssignment_template;
    implied_template->set_param(*param.get_elem(1));
    *this = PacketDlAssignment_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@RLCMAC_CSN1_Types.PacketDlAssignment");
  }
  is_ifpresent = param.get_ifpresent();
}

void PacketDlAssignment_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_page__mode.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PacketDlAssignment");
single_value->field_pres1.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PacketDlAssignment");
single_value->field_persistence__levels.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PacketDlAssignment");
single_value->field_tfi__or__tlli.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PacketDlAssignment");
single_value->field_egprs2.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PacketDlAssignment");
single_value->field_mac__mode.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PacketDlAssignment");
single_value->field_rlc__mode.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PacketDlAssignment");
single_value->field_control__ack.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PacketDlAssignment");
single_value->field_timeslot__alloc.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PacketDlAssignment");
single_value->field_pkt__ta.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PacketDlAssignment");
single_value->field_p0__present.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PacketDlAssignment");
single_value->field_p0.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PacketDlAssignment");
single_value->field_reserved.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PacketDlAssignment");
single_value->field_pr__mode.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PacketDlAssignment");
single_value->field_freq__par__present.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PacketDlAssignment");
single_value->field_freq__par.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PacketDlAssignment");
single_value->field_dl__tfi__ass__present.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PacketDlAssignment");
single_value->field_dl__tfi__assignment.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PacketDlAssignment");
single_value->field_pwr__ctrl__present.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PacketDlAssignment");
single_value->field_pwr__ctrl.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PacketDlAssignment");
single_value->field_tbf__starting__time__present.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PacketDlAssignment");
single_value->field_tbf__starting__time.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PacketDlAssignment");
single_value->field_spare.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PacketDlAssignment");
single_value->field_rel__additions.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PacketDlAssignment");
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 : "@RLCMAC_CSN1_Types.PacketDlAssignment");
}

boolean PacketDlAssignment_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean PacketDlAssignment_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<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;
}

FrequencyParameters::FrequencyParameters()
{
}

FrequencyParameters::FrequencyParameters(const INTEGER& par_tsc,
    const BITSTRING& par_presence,
    const OPTIONAL< INTEGER >& par_arfcn,
    const OPTIONAL< FreqIndirect >& par_indirect,
    const OPTIONAL< FreqDirect1 >& par_direct1,
    const OPTIONAL< FreqDirect2 >& par_direct2)
  :   field_tsc(par_tsc),
  field_presence(par_presence),
  field_arfcn(par_arfcn),
  field_indirect(par_indirect),
  field_direct1(par_direct1),
  field_direct2(par_direct2)
{
}

FrequencyParameters::FrequencyParameters(const FrequencyParameters& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RLCMAC_CSN1_Types.FrequencyParameters.");
if (other_value.tsc().is_bound()) field_tsc = other_value.tsc();
else field_tsc.clean_up();
if (other_value.presence().is_bound()) field_presence = other_value.presence();
else field_presence.clean_up();
if (other_value.arfcn().is_bound()) field_arfcn = other_value.arfcn();
else field_arfcn.clean_up();
if (other_value.indirect().is_bound()) field_indirect = other_value.indirect();
else field_indirect.clean_up();
if (other_value.direct1().is_bound()) field_direct1 = other_value.direct1();
else field_direct1.clean_up();
if (other_value.direct2().is_bound()) field_direct2 = other_value.direct2();
else field_direct2.clean_up();
}

void FrequencyParameters::clean_up()
{
field_tsc.clean_up();
field_presence.clean_up();
field_arfcn.clean_up();
field_indirect.clean_up();
field_direct1.clean_up();
field_direct2.clean_up();
}

const TTCN_Typedescriptor_t* FrequencyParameters::get_descriptor() const { return &FrequencyParameters_descr_; }
FrequencyParameters& FrequencyParameters::operator=(const FrequencyParameters& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RLCMAC_CSN1_Types.FrequencyParameters.");
  if (other_value.tsc().is_bound()) field_tsc = other_value.tsc();
  else field_tsc.clean_up();
  if (other_value.presence().is_bound()) field_presence = other_value.presence();
  else field_presence.clean_up();
  if (other_value.arfcn().is_bound()) field_arfcn = other_value.arfcn();
  else field_arfcn.clean_up();
  if (other_value.indirect().is_bound()) field_indirect = other_value.indirect();
  else field_indirect.clean_up();
  if (other_value.direct1().is_bound()) field_direct1 = other_value.direct1();
  else field_direct1.clean_up();
  if (other_value.direct2().is_bound()) field_direct2 = other_value.direct2();
  else field_direct2.clean_up();
}
return *this;
}

boolean FrequencyParameters::operator==(const FrequencyParameters& other_value) const
{
return field_tsc==other_value.field_tsc
  && field_presence==other_value.field_presence
  && field_arfcn==other_value.field_arfcn
  && field_indirect==other_value.field_indirect
  && field_direct1==other_value.field_direct1
  && field_direct2==other_value.field_direct2;
}

boolean FrequencyParameters::is_bound() const
{
return (field_tsc.is_bound())
  || (field_presence.is_bound())
  || (OPTIONAL_OMIT == field_arfcn.get_selection() || field_arfcn.is_bound())
  || (OPTIONAL_OMIT == field_indirect.get_selection() || field_indirect.is_bound())
  || (OPTIONAL_OMIT == field_direct1.get_selection() || field_direct1.is_bound())
  || (OPTIONAL_OMIT == field_direct2.get_selection() || field_direct2.is_bound());
}
boolean FrequencyParameters::is_value() const
{
return field_tsc.is_value()
  && field_presence.is_value()
  && (OPTIONAL_OMIT == field_arfcn.get_selection() || field_arfcn.is_value())
  && (OPTIONAL_OMIT == field_indirect.get_selection() || field_indirect.is_value())
  && (OPTIONAL_OMIT == field_direct1.get_selection() || field_direct1.is_value())
  && (OPTIONAL_OMIT == field_direct2.get_selection() || field_direct2.is_value());
}
int FrequencyParameters::size_of() const
{
  int ret_val = 2;
  if (field_arfcn.ispresent()) ret_val++;
  if (field_indirect.ispresent()) ret_val++;
  if (field_direct1.ispresent()) ret_val++;
  if (field_direct2.ispresent()) ret_val++;
  return ret_val;
}

void FrequencyParameters::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ tsc := ");
field_tsc.log();
TTCN_Logger::log_event_str(", presence := ");
field_presence.log();
TTCN_Logger::log_event_str(", arfcn := ");
field_arfcn.log();
TTCN_Logger::log_event_str(", indirect := ");
field_indirect.log();
TTCN_Logger::log_event_str(", direct1 := ");
field_direct1.log();
TTCN_Logger::log_event_str(", direct2 := ");
field_direct2.log();
TTCN_Logger::log_event_str(" }");
}

void FrequencyParameters::set_implicit_omit()
{
if (tsc().is_bound()) tsc().set_implicit_omit();
if (presence().is_bound()) presence().set_implicit_omit();
if (!arfcn().is_bound()) arfcn() = OMIT_VALUE;
else arfcn().set_implicit_omit();
if (!indirect().is_bound()) indirect() = OMIT_VALUE;
else indirect().set_implicit_omit();
if (!direct1().is_bound()) direct1() = OMIT_VALUE;
else direct1().set_implicit_omit();
if (!direct2().is_bound()) direct2() = OMIT_VALUE;
else direct2().set_implicit_omit();
}

void FrequencyParameters::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 (6<param.get_size()) {
      param.error("record value of type @RLCMAC_CSN1_Types.FrequencyParameters has 6 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) tsc().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) presence().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) arfcn().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) indirect().set_param(*param.get_elem(3));
    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) direct1().set_param(*param.get_elem(4));
    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) direct2().set_param(*param.get_elem(5));
    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(), "tsc")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          tsc().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "presence")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          presence().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "arfcn")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          arfcn().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "indirect")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          indirect().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "direct1")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          direct1().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "direct2")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          direct2().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 @RLCMAC_CSN1_Types.FrequencyParameters: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@RLCMAC_CSN1_Types.FrequencyParameters");
  }
}

void FrequencyParameters::encode_text(Text_Buf& text_buf) const
{
field_tsc.encode_text(text_buf);
field_presence.encode_text(text_buf);
field_arfcn.encode_text(text_buf);
field_indirect.encode_text(text_buf);
field_direct1.encode_text(text_buf);
field_direct2.encode_text(text_buf);
}

void FrequencyParameters::decode_text(Text_Buf& text_buf)
{
field_tsc.decode_text(text_buf);
field_presence.decode_text(text_buf);
field_arfcn.decode_text(text_buf);
field_indirect.decode_text(text_buf);
field_direct1.decode_text(text_buf);
field_direct2.decode_text(text_buf);
}

void FrequencyParameters::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void FrequencyParameters::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int FrequencyParameters::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, FrequencyParameters_tsc_descr_.raw->forceomit);
  decoded_field_length = field_tsc.RAW_decode(FrequencyParameters_tsc_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, FrequencyParameters_presence_descr_.raw->forceomit);
  decoded_field_length = field_presence.RAW_decode(FrequencyParameters_presence_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());
  if (limit > 0 && field_presence ==  bs_2){
  if (force_omit != NULL && (*force_omit)(2)) {
    field_arfcn = OMIT_VALUE;
  }
  else {
  size_t fl_start_pos = p_buf.get_pos_bit();
  RAW_Force_Omit field_2_force_omit(2, force_omit, FrequencyParameters_arfcn_descr_.raw->forceomit);
  decoded_field_length = field_arfcn().RAW_decode(FrequencyParameters_arfcn_descr_, p_buf, limit, local_top_order, TRUE, -1, TRUE, &field_2_force_omit);
  if (decoded_field_length < 1) {
  field_arfcn = OMIT_VALUE;
  p_buf.set_pos_bit(fl_start_pos);
  } else {
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  }
  }
  }
  else field_arfcn=OMIT_VALUE;
  if (limit > 0 && field_presence ==  bs_3){
  if (force_omit != NULL && (*force_omit)(3)) {
    field_indirect = OMIT_VALUE;
  }
  else {
  size_t fl_start_pos = p_buf.get_pos_bit();
  RAW_Force_Omit field_3_force_omit(3, force_omit, FrequencyParameters_indirect_descr_.raw->forceomit);
  decoded_field_length = field_indirect().RAW_decode(FrequencyParameters_indirect_descr_, p_buf, limit, local_top_order, TRUE, -1, TRUE, &field_3_force_omit);
  if (decoded_field_length < 1) {
  field_indirect = OMIT_VALUE;
  p_buf.set_pos_bit(fl_start_pos);
  } else {
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  }
  }
  }
  else field_indirect=OMIT_VALUE;
  if (limit > 0 && field_presence ==  bs_4){
  if (force_omit != NULL && (*force_omit)(4)) {
    field_direct1 = OMIT_VALUE;
  }
  else {
  size_t fl_start_pos = p_buf.get_pos_bit();
  RAW_Force_Omit field_4_force_omit(4, force_omit, FrequencyParameters_direct1_descr_.raw->forceomit);
  decoded_field_length = field_direct1().RAW_decode(FrequencyParameters_direct1_descr_, p_buf, limit, local_top_order, TRUE, -1, TRUE, &field_4_force_omit);
  if (decoded_field_length < 1) {
  field_direct1 = OMIT_VALUE;
  p_buf.set_pos_bit(fl_start_pos);
  } else {
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  }
  }
  }
  else field_direct1=OMIT_VALUE;
  if (limit > 0 && field_presence ==  bs_5){
  if (force_omit != NULL && (*force_omit)(5)) {
    field_direct2 = OMIT_VALUE;
  }
  else {
  size_t fl_start_pos = p_buf.get_pos_bit();
  RAW_Force_Omit field_5_force_omit(5, force_omit, FrequencyParameters_direct2_descr_.raw->forceomit);
  decoded_field_length = field_direct2().RAW_decode(FrequencyParameters_direct2_descr_, p_buf, limit, local_top_order, TRUE, -1, TRUE, &field_5_force_omit);
  if (decoded_field_length < 1) {
  field_direct2 = OMIT_VALUE;
  p_buf.set_pos_bit(fl_start_pos);
  } else {
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  }
  }
  }
  else field_direct2=OMIT_VALUE;
  p_buf.set_pos_bit(last_decoded_pos);
  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
}

int FrequencyParameters::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 = 6;
  myleaf.body.node.nodes = init_nodes_of_enc_tree(6);
  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, FrequencyParameters_tsc_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, FrequencyParameters_presence_descr_.raw);
  if (field_arfcn.ispresent()) {
  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, FrequencyParameters_arfcn_descr_.raw);
  }
  else myleaf.body.node.nodes[2] = NULL;
  if (field_indirect.ispresent()) {
  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, FrequencyParameters_indirect_descr_.raw);
  }
  else myleaf.body.node.nodes[3] = NULL;
  if (field_direct1.ispresent()) {
  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, FrequencyParameters_direct1_descr_.raw);
  }
  else myleaf.body.node.nodes[4] = NULL;
  if (field_direct2.ispresent()) {
  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, FrequencyParameters_direct2_descr_.raw);
  }
  else myleaf.body.node.nodes[5] = NULL;
  encoded_length += field_tsc.RAW_encode(FrequencyParameters_tsc_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_presence.RAW_encode(FrequencyParameters_presence_descr_, *myleaf.body.node.nodes[1]);
  if (field_arfcn.ispresent()) {
  encoded_length += field_arfcn().RAW_encode(FrequencyParameters_arfcn_descr_, *myleaf.body.node.nodes[2]);
  }
  if (field_indirect.ispresent()) {
  encoded_length += field_indirect().RAW_encode(FrequencyParameters_indirect_descr_, *myleaf.body.node.nodes[3]);
  }
  if (field_direct1.ispresent()) {
  encoded_length += field_direct1().RAW_encode(FrequencyParameters_direct1_descr_, *myleaf.body.node.nodes[4]);
  }
  if (field_direct2.ispresent()) {
  encoded_length += field_direct2().RAW_encode(FrequencyParameters_direct2_descr_, *myleaf.body.node.nodes[5]);
  }
  if (field_arfcn.ispresent() && (field_presence !=  bs_2)) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={1};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   bs_2.RAW_encode(FrequencyParameters_presence_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);
  }
  }
  if (field_indirect.ispresent() && (field_presence !=  bs_3)) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={1};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   bs_3.RAW_encode(FrequencyParameters_presence_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);
  }
  }
  if (field_direct1.ispresent() && (field_presence !=  bs_4)) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={1};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   bs_4.RAW_encode(FrequencyParameters_presence_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);
  }
  }
  if (field_direct2.ispresent() && (field_presence !=  bs_5)) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={1};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   bs_5.RAW_encode(FrequencyParameters_presence_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);
  }
  }
  return myleaf.length = encoded_length;
}

struct FrequencyParameters_template::single_value_struct {
INTEGER_template field_tsc;
BITSTRING_template field_presence;
INTEGER_template field_arfcn;
FreqIndirect_template field_indirect;
FreqDirect1_template field_direct1;
FreqDirect2_template field_direct2;
};

void FrequencyParameters_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_tsc = ANY_VALUE;
single_value->field_presence = ANY_VALUE;
single_value->field_arfcn = ANY_OR_OMIT;
single_value->field_indirect = ANY_OR_OMIT;
single_value->field_direct1 = ANY_OR_OMIT;
single_value->field_direct2 = ANY_OR_OMIT;
}
}
}

void FrequencyParameters_template::copy_value(const FrequencyParameters& other_value)
{
single_value = new single_value_struct;
if (other_value.tsc().is_bound()) {
  single_value->field_tsc = other_value.tsc();
} else {
  single_value->field_tsc.clean_up();
}
if (other_value.presence().is_bound()) {
  single_value->field_presence = other_value.presence();
} else {
  single_value->field_presence.clean_up();
}
if (other_value.arfcn().is_bound()) {
  if (other_value.arfcn().ispresent()) single_value->field_arfcn = other_value.arfcn()();
  else single_value->field_arfcn = OMIT_VALUE;
} else {
  single_value->field_arfcn.clean_up();
}
if (other_value.indirect().is_bound()) {
  if (other_value.indirect().ispresent()) single_value->field_indirect = other_value.indirect()();
  else single_value->field_indirect = OMIT_VALUE;
} else {
  single_value->field_indirect.clean_up();
}
if (other_value.direct1().is_bound()) {
  if (other_value.direct1().ispresent()) single_value->field_direct1 = other_value.direct1()();
  else single_value->field_direct1 = OMIT_VALUE;
} else {
  single_value->field_direct1.clean_up();
}
if (other_value.direct2().is_bound()) {
  if (other_value.direct2().ispresent()) single_value->field_direct2 = other_value.direct2()();
  else single_value->field_direct2 = OMIT_VALUE;
} else {
  single_value->field_direct2.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void FrequencyParameters_template::copy_template(const FrequencyParameters_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.tsc().get_selection()) {
single_value->field_tsc = other_value.tsc();
} else {
single_value->field_tsc.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.presence().get_selection()) {
single_value->field_presence = other_value.presence();
} else {
single_value->field_presence.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.arfcn().get_selection()) {
single_value->field_arfcn = other_value.arfcn();
} else {
single_value->field_arfcn.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.indirect().get_selection()) {
single_value->field_indirect = other_value.indirect();
} else {
single_value->field_indirect.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.direct1().get_selection()) {
single_value->field_direct1 = other_value.direct1();
} else {
single_value->field_direct1.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.direct2().get_selection()) {
single_value->field_direct2 = other_value.direct2();
} else {
single_value->field_direct2.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new FrequencyParameters_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new FrequencyParameters_template(*other_value.implication_.precondition);
implication_.implied_template = new FrequencyParameters_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.FrequencyParameters.");
break;
}
set_selection(other_value);
}

FrequencyParameters_template::FrequencyParameters_template()
{
}

FrequencyParameters_template::FrequencyParameters_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

FrequencyParameters_template::FrequencyParameters_template(const FrequencyParameters& other_value)
{
copy_value(other_value);
}

FrequencyParameters_template::FrequencyParameters_template(const OPTIONAL<FrequencyParameters>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const FrequencyParameters&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @RLCMAC_CSN1_Types.FrequencyParameters from an unbound optional field.");
}
}

FrequencyParameters_template::FrequencyParameters_template(FrequencyParameters_template* p_precondition, FrequencyParameters_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

FrequencyParameters_template::FrequencyParameters_template(Dynamic_Match_Interface<FrequencyParameters>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<FrequencyParameters>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

FrequencyParameters_template::FrequencyParameters_template(const FrequencyParameters_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

FrequencyParameters_template::~FrequencyParameters_template()
{
clean_up();
}

FrequencyParameters_template& FrequencyParameters_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

FrequencyParameters_template& FrequencyParameters_template::operator=(const FrequencyParameters& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

FrequencyParameters_template& FrequencyParameters_template::operator=(const OPTIONAL<FrequencyParameters>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const FrequencyParameters&)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 @RLCMAC_CSN1_Types.FrequencyParameters.");
}
return *this;
}

FrequencyParameters_template& FrequencyParameters_template::operator=(const FrequencyParameters_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean FrequencyParameters_template::match(const FrequencyParameters& 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.tsc().is_bound()) return FALSE;
if(!single_value->field_tsc.match(other_value.tsc(), legacy))return FALSE;
if(!other_value.presence().is_bound()) return FALSE;
if(!single_value->field_presence.match(other_value.presence(), legacy))return FALSE;
if(!other_value.arfcn().is_bound()) return FALSE;
if((other_value.arfcn().ispresent() ? !single_value->field_arfcn.match((const INTEGER&)other_value.arfcn(), legacy) : !single_value->field_arfcn.match_omit(legacy)))return FALSE;
if(!other_value.indirect().is_bound()) return FALSE;
if((other_value.indirect().ispresent() ? !single_value->field_indirect.match((const FreqIndirect&)other_value.indirect(), legacy) : !single_value->field_indirect.match_omit(legacy)))return FALSE;
if(!other_value.direct1().is_bound()) return FALSE;
if((other_value.direct1().ispresent() ? !single_value->field_direct1.match((const FreqDirect1&)other_value.direct1(), legacy) : !single_value->field_direct1.match_omit(legacy)))return FALSE;
if(!other_value.direct2().is_bound()) return FALSE;
if((other_value.direct2().ispresent() ? !single_value->field_direct2.match((const FreqDirect2&)other_value.direct2(), legacy) : !single_value->field_direct2.match_omit(legacy)))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.FrequencyParameters.");
}
return FALSE;
}

boolean FrequencyParameters_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_tsc.is_bound()
 || single_value->field_presence.is_bound()
 || (single_value->field_arfcn.is_omit() || single_value->field_arfcn.is_bound())
 || (single_value->field_indirect.is_omit() || single_value->field_indirect.is_bound())
 || (single_value->field_direct1.is_omit() || single_value->field_direct1.is_bound())
 || (single_value->field_direct2.is_omit() || single_value->field_direct2.is_bound());
}

boolean FrequencyParameters_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_tsc.is_value()
 && single_value->field_presence.is_value()
 && (single_value->field_arfcn.is_omit() || single_value->field_arfcn.is_value())
 && (single_value->field_indirect.is_omit() || single_value->field_indirect.is_value())
 && (single_value->field_direct1.is_omit() || single_value->field_direct1.is_value())
 && (single_value->field_direct2.is_omit() || single_value->field_direct2.is_value());
}

void FrequencyParameters_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

FrequencyParameters FrequencyParameters_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 @RLCMAC_CSN1_Types.FrequencyParameters.");
FrequencyParameters ret_val;
if (single_value->field_tsc.is_bound()) {
ret_val.tsc() = single_value->field_tsc.valueof();
}
if (single_value->field_presence.is_bound()) {
ret_val.presence() = single_value->field_presence.valueof();
}
if (single_value->field_arfcn.is_omit()) ret_val.arfcn() = OMIT_VALUE;
else if (single_value->field_arfcn.is_bound()) {
ret_val.arfcn() = single_value->field_arfcn.valueof();
}
if (single_value->field_indirect.is_omit()) ret_val.indirect() = OMIT_VALUE;
else if (single_value->field_indirect.is_bound()) {
ret_val.indirect() = single_value->field_indirect.valueof();
}
if (single_value->field_direct1.is_omit()) ret_val.direct1() = OMIT_VALUE;
else if (single_value->field_direct1.is_bound()) {
ret_val.direct1() = single_value->field_direct1.valueof();
}
if (single_value->field_direct2.is_omit()) ret_val.direct2() = OMIT_VALUE;
else if (single_value->field_direct2.is_bound()) {
ret_val.direct2() = single_value->field_direct2.valueof();
}
return ret_val;
}

void FrequencyParameters_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @RLCMAC_CSN1_Types.FrequencyParameters.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new FrequencyParameters_template[list_length];
}

FrequencyParameters_template& FrequencyParameters_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @RLCMAC_CSN1_Types.FrequencyParameters.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @RLCMAC_CSN1_Types.FrequencyParameters.");
return value_list.list_value[list_index];
}

INTEGER_template& FrequencyParameters_template::tsc()
{
set_specific();
return single_value->field_tsc;
}

const INTEGER_template& FrequencyParameters_template::tsc() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field tsc of a non-specific template of type @RLCMAC_CSN1_Types.FrequencyParameters.");
return single_value->field_tsc;
}

BITSTRING_template& FrequencyParameters_template::presence()
{
set_specific();
return single_value->field_presence;
}

const BITSTRING_template& FrequencyParameters_template::presence() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field presence of a non-specific template of type @RLCMAC_CSN1_Types.FrequencyParameters.");
return single_value->field_presence;
}

INTEGER_template& FrequencyParameters_template::arfcn()
{
set_specific();
return single_value->field_arfcn;
}

const INTEGER_template& FrequencyParameters_template::arfcn() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field arfcn of a non-specific template of type @RLCMAC_CSN1_Types.FrequencyParameters.");
return single_value->field_arfcn;
}

FreqIndirect_template& FrequencyParameters_template::indirect()
{
set_specific();
return single_value->field_indirect;
}

const FreqIndirect_template& FrequencyParameters_template::indirect() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field indirect of a non-specific template of type @RLCMAC_CSN1_Types.FrequencyParameters.");
return single_value->field_indirect;
}

FreqDirect1_template& FrequencyParameters_template::direct1()
{
set_specific();
return single_value->field_direct1;
}

const FreqDirect1_template& FrequencyParameters_template::direct1() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field direct1 of a non-specific template of type @RLCMAC_CSN1_Types.FrequencyParameters.");
return single_value->field_direct1;
}

FreqDirect2_template& FrequencyParameters_template::direct2()
{
set_specific();
return single_value->field_direct2;
}

const FreqDirect2_template& FrequencyParameters_template::direct2() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field direct2 of a non-specific template of type @RLCMAC_CSN1_Types.FrequencyParameters.");
return single_value->field_direct2;
}

int FrequencyParameters_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.FrequencyParameters which has an ifpresent attribute.");
  switch (template_selection)
  {
  case SPECIFIC_VALUE:
  {    int ret_val = 2;
      if (single_value->field_arfcn.is_present()) ret_val++;
      if (single_value->field_indirect.is_present()) ret_val++;
      if (single_value->field_direct1.is_present()) ret_val++;
      if (single_value->field_direct2.is_present()) ret_val++;
      return ret_val;
    }
  case VALUE_LIST:
   {
     if (value_list.n_values<1)
       TTCN_error("Internal error: Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.FrequencyParameters 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 @RLCMAC_CSN1_Types.FrequencyParameters containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.FrequencyParameters containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.FrequencyParameters containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.FrequencyParameters containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.FrequencyParameters containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.FrequencyParameters containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.FrequencyParameters containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.FrequencyParameters.");
  }
  return 0;
}

void FrequencyParameters_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ tsc := ");
single_value->field_tsc.log();
TTCN_Logger::log_event_str(", presence := ");
single_value->field_presence.log();
TTCN_Logger::log_event_str(", arfcn := ");
single_value->field_arfcn.log();
TTCN_Logger::log_event_str(", indirect := ");
single_value->field_indirect.log();
TTCN_Logger::log_event_str(", direct1 := ");
single_value->field_direct1.log();
TTCN_Logger::log_event_str(", direct2 := ");
single_value->field_direct2.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void FrequencyParameters_template::log_match(const FrequencyParameters& 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_tsc.match(match_value.tsc(), legacy)){
TTCN_Logger::log_logmatch_info(".tsc");
single_value->field_tsc.log_match(match_value.tsc(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_presence.match(match_value.presence(), legacy)){
TTCN_Logger::log_logmatch_info(".presence");
single_value->field_presence.log_match(match_value.presence(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if (match_value.arfcn().ispresent()){
if(!single_value->field_arfcn.match(match_value.arfcn(), legacy)){
TTCN_Logger::log_logmatch_info(".arfcn");
single_value->field_arfcn.log_match(match_value.arfcn(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
} else {
if (!single_value->field_arfcn.match_omit(legacy)){
 TTCN_Logger::log_logmatch_info(".arfcn := omit with ");
TTCN_Logger::print_logmatch_buffer();
single_value->field_arfcn.log();
TTCN_Logger::log_event_str(" unmatched");
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}
if (match_value.indirect().ispresent()){
if(!single_value->field_indirect.match(match_value.indirect(), legacy)){
TTCN_Logger::log_logmatch_info(".indirect");
single_value->field_indirect.log_match(match_value.indirect(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
} else {
if (!single_value->field_indirect.match_omit(legacy)){
 TTCN_Logger::log_logmatch_info(".indirect := omit with ");
TTCN_Logger::print_logmatch_buffer();
single_value->field_indirect.log();
TTCN_Logger::log_event_str(" unmatched");
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}
if (match_value.direct1().ispresent()){
if(!single_value->field_direct1.match(match_value.direct1(), legacy)){
TTCN_Logger::log_logmatch_info(".direct1");
single_value->field_direct1.log_match(match_value.direct1(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
} else {
if (!single_value->field_direct1.match_omit(legacy)){
 TTCN_Logger::log_logmatch_info(".direct1 := omit with ");
TTCN_Logger::print_logmatch_buffer();
single_value->field_direct1.log();
TTCN_Logger::log_event_str(" unmatched");
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}
if (match_value.direct2().ispresent()){
if(!single_value->field_direct2.match(match_value.direct2(), legacy)){
TTCN_Logger::log_logmatch_info(".direct2");
single_value->field_direct2.log_match(match_value.direct2(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
} else {
if (!single_value->field_direct2.match_omit(legacy)){
 TTCN_Logger::log_logmatch_info(".direct2 := omit with ");
TTCN_Logger::print_logmatch_buffer();
single_value->field_direct2.log();
TTCN_Logger::log_event_str(" unmatched");
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}
}else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE) {
TTCN_Logger::log_event_str("{ tsc := ");
single_value->field_tsc.log_match(match_value.tsc(), legacy);
TTCN_Logger::log_event_str(", presence := ");
single_value->field_presence.log_match(match_value.presence(), legacy);
TTCN_Logger::log_event_str(", arfcn := ");
if (match_value.arfcn().ispresent()) {
single_value->field_arfcn.log_match(match_value.arfcn(), legacy);
} else {
TTCN_Logger::log_event_str("omit with ");
single_value->field_arfcn.log();
if (single_value->field_arfcn.match_omit(legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
TTCN_Logger::log_event_str(", indirect := ");
if (match_value.indirect().ispresent()) {
single_value->field_indirect.log_match(match_value.indirect(), legacy);
} else {
TTCN_Logger::log_event_str("omit with ");
single_value->field_indirect.log();
if (single_value->field_indirect.match_omit(legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
TTCN_Logger::log_event_str(", direct1 := ");
if (match_value.direct1().ispresent()) {
single_value->field_direct1.log_match(match_value.direct1(), legacy);
} else {
TTCN_Logger::log_event_str("omit with ");
single_value->field_direct1.log();
if (single_value->field_direct1.match_omit(legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
TTCN_Logger::log_event_str(", direct2 := ");
if (match_value.direct2().ispresent()) {
single_value->field_direct2.log_match(match_value.direct2(), legacy);
} else {
TTCN_Logger::log_event_str("omit with ");
single_value->field_direct2.log();
if (single_value->field_direct2.match_omit(legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
TTCN_Logger::log_event_str(" }");
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void FrequencyParameters_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (tsc().is_bound()) tsc().set_implicit_omit();
if (presence().is_bound()) presence().set_implicit_omit();
if (!arfcn().is_bound()) arfcn() = OMIT_VALUE;
else arfcn().set_implicit_omit();
if (!indirect().is_bound()) indirect() = OMIT_VALUE;
else indirect().set_implicit_omit();
if (!direct1().is_bound()) direct1() = OMIT_VALUE;
else direct1().set_implicit_omit();
if (!direct2().is_bound()) direct2() = OMIT_VALUE;
else direct2().set_implicit_omit();
}

void FrequencyParameters_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_tsc.encode_text(text_buf);
single_value->field_presence.encode_text(text_buf);
single_value->field_arfcn.encode_text(text_buf);
single_value->field_indirect.encode_text(text_buf);
single_value->field_direct1.encode_text(text_buf);
single_value->field_direct2.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 @RLCMAC_CSN1_Types.FrequencyParameters.");
}
}

void FrequencyParameters_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_tsc.decode_text(text_buf);
single_value->field_presence.decode_text(text_buf);
single_value->field_arfcn.decode_text(text_buf);
single_value->field_indirect.decode_text(text_buf);
single_value->field_direct1.decode_text(text_buf);
single_value->field_direct2.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 FrequencyParameters_template[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 @RLCMAC_CSN1_Types.FrequencyParameters.");
}
}

void FrequencyParameters_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    FrequencyParameters_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_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 (6<param.get_size()) {
      param.error("record template of type @RLCMAC_CSN1_Types.FrequencyParameters has 6 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) tsc().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) presence().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) arfcn().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) indirect().set_param(*param.get_elem(3));
    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) direct1().set_param(*param.get_elem(4));
    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) direct2().set_param(*param.get_elem(5));
    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(), "tsc")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          tsc().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "presence")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          presence().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "arfcn")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          arfcn().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "indirect")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          indirect().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "direct1")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          direct1().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "direct2")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          direct2().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 @RLCMAC_CSN1_Types.FrequencyParameters: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    FrequencyParameters_template* precondition = new FrequencyParameters_template;
    precondition->set_param(*param.get_elem(0));
    FrequencyParameters_template* implied_template = new FrequencyParameters_template;
    implied_template->set_param(*param.get_elem(1));
    *this = FrequencyParameters_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@RLCMAC_CSN1_Types.FrequencyParameters");
  }
  is_ifpresent = param.get_ifpresent();
}

void FrequencyParameters_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_tsc.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.FrequencyParameters");
single_value->field_presence.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.FrequencyParameters");
single_value->field_arfcn.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.FrequencyParameters");
single_value->field_indirect.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.FrequencyParameters");
single_value->field_direct1.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.FrequencyParameters");
single_value->field_direct2.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.FrequencyParameters");
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 : "@RLCMAC_CSN1_Types.FrequencyParameters");
}

boolean FrequencyParameters_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean FrequencyParameters_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<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;
}

FreqIndirect::FreqIndirect()
{
}

FreqIndirect::FreqIndirect(const INTEGER& par_maio,
    const INTEGER& par_ma__number,
    const BITSTRING& par_change__mark1__present,
    const OPTIONAL< INTEGER >& par_change__mark1,
    const BITSTRING& par_change__mark2__present,
    const OPTIONAL< INTEGER >& par_change__mark2)
  :   field_maio(par_maio),
  field_ma__number(par_ma__number),
  field_change__mark1__present(par_change__mark1__present),
  field_change__mark1(par_change__mark1),
  field_change__mark2__present(par_change__mark2__present),
  field_change__mark2(par_change__mark2)
{
}

FreqIndirect::FreqIndirect(const FreqIndirect& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RLCMAC_CSN1_Types.FreqIndirect.");
if (other_value.maio().is_bound()) field_maio = other_value.maio();
else field_maio.clean_up();
if (other_value.ma__number().is_bound()) field_ma__number = other_value.ma__number();
else field_ma__number.clean_up();
if (other_value.change__mark1__present().is_bound()) field_change__mark1__present = other_value.change__mark1__present();
else field_change__mark1__present.clean_up();
if (other_value.change__mark1().is_bound()) field_change__mark1 = other_value.change__mark1();
else field_change__mark1.clean_up();
if (other_value.change__mark2__present().is_bound()) field_change__mark2__present = other_value.change__mark2__present();
else field_change__mark2__present.clean_up();
if (other_value.change__mark2().is_bound()) field_change__mark2 = other_value.change__mark2();
else field_change__mark2.clean_up();
}

void FreqIndirect::clean_up()
{
field_maio.clean_up();
field_ma__number.clean_up();
field_change__mark1__present.clean_up();
field_change__mark1.clean_up();
field_change__mark2__present.clean_up();
field_change__mark2.clean_up();
}

const TTCN_Typedescriptor_t* FreqIndirect::get_descriptor() const { return &FreqIndirect_descr_; }
FreqIndirect& FreqIndirect::operator=(const FreqIndirect& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RLCMAC_CSN1_Types.FreqIndirect.");
  if (other_value.maio().is_bound()) field_maio = other_value.maio();
  else field_maio.clean_up();
  if (other_value.ma__number().is_bound()) field_ma__number = other_value.ma__number();
  else field_ma__number.clean_up();
  if (other_value.change__mark1__present().is_bound()) field_change__mark1__present = other_value.change__mark1__present();
  else field_change__mark1__present.clean_up();
  if (other_value.change__mark1().is_bound()) field_change__mark1 = other_value.change__mark1();
  else field_change__mark1.clean_up();
  if (other_value.change__mark2__present().is_bound()) field_change__mark2__present = other_value.change__mark2__present();
  else field_change__mark2__present.clean_up();
  if (other_value.change__mark2().is_bound()) field_change__mark2 = other_value.change__mark2();
  else field_change__mark2.clean_up();
}
return *this;
}

boolean FreqIndirect::operator==(const FreqIndirect& other_value) const
{
return field_maio==other_value.field_maio
  && field_ma__number==other_value.field_ma__number
  && field_change__mark1__present==other_value.field_change__mark1__present
  && field_change__mark1==other_value.field_change__mark1
  && field_change__mark2__present==other_value.field_change__mark2__present
  && field_change__mark2==other_value.field_change__mark2;
}

boolean FreqIndirect::is_bound() const
{
return (field_maio.is_bound())
  || (field_ma__number.is_bound())
  || (field_change__mark1__present.is_bound())
  || (OPTIONAL_OMIT == field_change__mark1.get_selection() || field_change__mark1.is_bound())
  || (field_change__mark2__present.is_bound())
  || (OPTIONAL_OMIT == field_change__mark2.get_selection() || field_change__mark2.is_bound());
}
boolean FreqIndirect::is_value() const
{
return field_maio.is_value()
  && field_ma__number.is_value()
  && field_change__mark1__present.is_value()
  && (OPTIONAL_OMIT == field_change__mark1.get_selection() || field_change__mark1.is_value())
  && field_change__mark2__present.is_value()
  && (OPTIONAL_OMIT == field_change__mark2.get_selection() || field_change__mark2.is_value());
}
int FreqIndirect::size_of() const
{
  int ret_val = 4;
  if (field_change__mark1.ispresent()) ret_val++;
  if (field_change__mark2.ispresent()) ret_val++;
  return ret_val;
}

void FreqIndirect::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ maio := ");
field_maio.log();
TTCN_Logger::log_event_str(", ma_number := ");
field_ma__number.log();
TTCN_Logger::log_event_str(", change_mark1_present := ");
field_change__mark1__present.log();
TTCN_Logger::log_event_str(", change_mark1 := ");
field_change__mark1.log();
TTCN_Logger::log_event_str(", change_mark2_present := ");
field_change__mark2__present.log();
TTCN_Logger::log_event_str(", change_mark2 := ");
field_change__mark2.log();
TTCN_Logger::log_event_str(" }");
}

void FreqIndirect::set_implicit_omit()
{
if (maio().is_bound()) maio().set_implicit_omit();
if (ma__number().is_bound()) ma__number().set_implicit_omit();
if (change__mark1__present().is_bound()) change__mark1__present().set_implicit_omit();
if (!change__mark1().is_bound()) change__mark1() = OMIT_VALUE;
else change__mark1().set_implicit_omit();
if (change__mark2__present().is_bound()) change__mark2__present().set_implicit_omit();
if (!change__mark2().is_bound()) change__mark2() = OMIT_VALUE;
else change__mark2().set_implicit_omit();
}

void FreqIndirect::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 (6<param.get_size()) {
      param.error("record value of type @RLCMAC_CSN1_Types.FreqIndirect has 6 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) maio().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ma__number().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) change__mark1__present().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) change__mark1().set_param(*param.get_elem(3));
    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) change__mark2__present().set_param(*param.get_elem(4));
    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) change__mark2().set_param(*param.get_elem(5));
    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(), "maio")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          maio().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ma_number")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ma__number().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "change_mark1_present")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          change__mark1__present().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "change_mark1")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          change__mark1().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "change_mark2_present")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          change__mark2__present().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "change_mark2")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          change__mark2().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 @RLCMAC_CSN1_Types.FreqIndirect: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@RLCMAC_CSN1_Types.FreqIndirect");
  }
}

void FreqIndirect::encode_text(Text_Buf& text_buf) const
{
field_maio.encode_text(text_buf);
field_ma__number.encode_text(text_buf);
field_change__mark1__present.encode_text(text_buf);
field_change__mark1.encode_text(text_buf);
field_change__mark2__present.encode_text(text_buf);
field_change__mark2.encode_text(text_buf);
}

void FreqIndirect::decode_text(Text_Buf& text_buf)
{
field_maio.decode_text(text_buf);
field_ma__number.decode_text(text_buf);
field_change__mark1__present.decode_text(text_buf);
field_change__mark1.decode_text(text_buf);
field_change__mark2__present.decode_text(text_buf);
field_change__mark2.decode_text(text_buf);
}

void FreqIndirect::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void FreqIndirect::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int FreqIndirect::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, FreqIndirect_maio_descr_.raw->forceomit);
  decoded_field_length = field_maio.RAW_decode(FreqIndirect_maio_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, FreqIndirect_ma__number_descr_.raw->forceomit);
  decoded_field_length = field_ma__number.RAW_decode(FreqIndirect_ma__number_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, FreqIndirect_change__mark1__present_descr_.raw->forceomit);
  decoded_field_length = field_change__mark1__present.RAW_decode(FreqIndirect_change__mark1__present_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());
  if (limit > 0 && field_change__mark1__present ==  bs_0){
  if (force_omit != NULL && (*force_omit)(3)) {
    field_change__mark1 = OMIT_VALUE;
  }
  else {
  size_t fl_start_pos = p_buf.get_pos_bit();
  RAW_Force_Omit field_3_force_omit(3, force_omit, FreqIndirect_change__mark1_descr_.raw->forceomit);
  decoded_field_length = field_change__mark1().RAW_decode(FreqIndirect_change__mark1_descr_, p_buf, limit, local_top_order, TRUE, -1, TRUE, &field_3_force_omit);
  if (decoded_field_length < 1) {
  field_change__mark1 = OMIT_VALUE;
  p_buf.set_pos_bit(fl_start_pos);
  } else {
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  }
  }
  }
  else field_change__mark1=OMIT_VALUE;
  RAW_Force_Omit field_4_force_omit(4, force_omit, FreqIndirect_change__mark2__present_descr_.raw->forceomit);
  decoded_field_length = field_change__mark2__present.RAW_decode(FreqIndirect_change__mark2__present_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());
  if (limit > 0 && field_change__mark2__present ==  bs_0){
  if (force_omit != NULL && (*force_omit)(5)) {
    field_change__mark2 = OMIT_VALUE;
  }
  else {
  size_t fl_start_pos = p_buf.get_pos_bit();
  RAW_Force_Omit field_5_force_omit(5, force_omit, FreqIndirect_change__mark2_descr_.raw->forceomit);
  decoded_field_length = field_change__mark2().RAW_decode(FreqIndirect_change__mark2_descr_, p_buf, limit, local_top_order, TRUE, -1, TRUE, &field_5_force_omit);
  if (decoded_field_length < 1) {
  field_change__mark2 = OMIT_VALUE;
  p_buf.set_pos_bit(fl_start_pos);
  } else {
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  }
  }
  }
  else field_change__mark2=OMIT_VALUE;
  p_buf.set_pos_bit(last_decoded_pos);
  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
}

int FreqIndirect::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 = 6;
  myleaf.body.node.nodes = init_nodes_of_enc_tree(6);
  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, FreqIndirect_maio_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, FreqIndirect_ma__number_descr_.raw);
  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, FreqIndirect_change__mark1__present_descr_.raw);
  if (field_change__mark1.ispresent()) {
  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, FreqIndirect_change__mark1_descr_.raw);
  }
  else myleaf.body.node.nodes[3] = NULL;
  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, FreqIndirect_change__mark2__present_descr_.raw);
  if (field_change__mark2.ispresent()) {
  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, FreqIndirect_change__mark2_descr_.raw);
  }
  else myleaf.body.node.nodes[5] = NULL;
  encoded_length += field_maio.RAW_encode(FreqIndirect_maio_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_ma__number.RAW_encode(FreqIndirect_ma__number_descr_, *myleaf.body.node.nodes[1]);
  encoded_length += field_change__mark1__present.RAW_encode(FreqIndirect_change__mark1__present_descr_, *myleaf.body.node.nodes[2]);
  if (field_change__mark1.ispresent()) {
  encoded_length += field_change__mark1().RAW_encode(FreqIndirect_change__mark1_descr_, *myleaf.body.node.nodes[3]);
  }
  encoded_length += field_change__mark2__present.RAW_encode(FreqIndirect_change__mark2__present_descr_, *myleaf.body.node.nodes[4]);
  if (field_change__mark2.ispresent()) {
  encoded_length += field_change__mark2().RAW_encode(FreqIndirect_change__mark2_descr_, *myleaf.body.node.nodes[5]);
  }
  if (field_change__mark1.ispresent() && (field_change__mark1__present !=  bs_0)) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={2};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   bs_0.RAW_encode(FreqIndirect_change__mark1__present_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);
  }
  }
  if (field_change__mark2.ispresent() && (field_change__mark2__present !=  bs_0)) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={4};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   bs_0.RAW_encode(FreqIndirect_change__mark2__present_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);
  }
  }
  return myleaf.length = encoded_length;
}

struct FreqIndirect_template::single_value_struct {
INTEGER_template field_maio;
INTEGER_template field_ma__number;
BITSTRING_template field_change__mark1__present;
INTEGER_template field_change__mark1;
BITSTRING_template field_change__mark2__present;
INTEGER_template field_change__mark2;
};

void FreqIndirect_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_maio = ANY_VALUE;
single_value->field_ma__number = ANY_VALUE;
single_value->field_change__mark1__present = ANY_VALUE;
single_value->field_change__mark1 = ANY_OR_OMIT;
single_value->field_change__mark2__present = ANY_VALUE;
single_value->field_change__mark2 = ANY_OR_OMIT;
}
}
}

void FreqIndirect_template::copy_value(const FreqIndirect& other_value)
{
single_value = new single_value_struct;
if (other_value.maio().is_bound()) {
  single_value->field_maio = other_value.maio();
} else {
  single_value->field_maio.clean_up();
}
if (other_value.ma__number().is_bound()) {
  single_value->field_ma__number = other_value.ma__number();
} else {
  single_value->field_ma__number.clean_up();
}
if (other_value.change__mark1__present().is_bound()) {
  single_value->field_change__mark1__present = other_value.change__mark1__present();
} else {
  single_value->field_change__mark1__present.clean_up();
}
if (other_value.change__mark1().is_bound()) {
  if (other_value.change__mark1().ispresent()) single_value->field_change__mark1 = other_value.change__mark1()();
  else single_value->field_change__mark1 = OMIT_VALUE;
} else {
  single_value->field_change__mark1.clean_up();
}
if (other_value.change__mark2__present().is_bound()) {
  single_value->field_change__mark2__present = other_value.change__mark2__present();
} else {
  single_value->field_change__mark2__present.clean_up();
}
if (other_value.change__mark2().is_bound()) {
  if (other_value.change__mark2().ispresent()) single_value->field_change__mark2 = other_value.change__mark2()();
  else single_value->field_change__mark2 = OMIT_VALUE;
} else {
  single_value->field_change__mark2.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void FreqIndirect_template::copy_template(const FreqIndirect_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.maio().get_selection()) {
single_value->field_maio = other_value.maio();
} else {
single_value->field_maio.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.ma__number().get_selection()) {
single_value->field_ma__number = other_value.ma__number();
} else {
single_value->field_ma__number.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.change__mark1__present().get_selection()) {
single_value->field_change__mark1__present = other_value.change__mark1__present();
} else {
single_value->field_change__mark1__present.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.change__mark1().get_selection()) {
single_value->field_change__mark1 = other_value.change__mark1();
} else {
single_value->field_change__mark1.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.change__mark2__present().get_selection()) {
single_value->field_change__mark2__present = other_value.change__mark2__present();
} else {
single_value->field_change__mark2__present.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.change__mark2().get_selection()) {
single_value->field_change__mark2 = other_value.change__mark2();
} else {
single_value->field_change__mark2.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new FreqIndirect_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new FreqIndirect_template(*other_value.implication_.precondition);
implication_.implied_template = new FreqIndirect_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.FreqIndirect.");
break;
}
set_selection(other_value);
}

FreqIndirect_template::FreqIndirect_template()
{
}

FreqIndirect_template::FreqIndirect_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

FreqIndirect_template::FreqIndirect_template(const FreqIndirect& other_value)
{
copy_value(other_value);
}

FreqIndirect_template::FreqIndirect_template(const OPTIONAL<FreqIndirect>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const FreqIndirect&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @RLCMAC_CSN1_Types.FreqIndirect from an unbound optional field.");
}
}

FreqIndirect_template::FreqIndirect_template(FreqIndirect_template* p_precondition, FreqIndirect_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

FreqIndirect_template::FreqIndirect_template(Dynamic_Match_Interface<FreqIndirect>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<FreqIndirect>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

FreqIndirect_template::FreqIndirect_template(const FreqIndirect_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

FreqIndirect_template::~FreqIndirect_template()
{
clean_up();
}

FreqIndirect_template& FreqIndirect_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

FreqIndirect_template& FreqIndirect_template::operator=(const FreqIndirect& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

FreqIndirect_template& FreqIndirect_template::operator=(const OPTIONAL<FreqIndirect>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const FreqIndirect&)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 @RLCMAC_CSN1_Types.FreqIndirect.");
}
return *this;
}

FreqIndirect_template& FreqIndirect_template::operator=(const FreqIndirect_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean FreqIndirect_template::match(const FreqIndirect& 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.maio().is_bound()) return FALSE;
if(!single_value->field_maio.match(other_value.maio(), legacy))return FALSE;
if(!other_value.ma__number().is_bound()) return FALSE;
if(!single_value->field_ma__number.match(other_value.ma__number(), legacy))return FALSE;
if(!other_value.change__mark1__present().is_bound()) return FALSE;
if(!single_value->field_change__mark1__present.match(other_value.change__mark1__present(), legacy))return FALSE;
if(!other_value.change__mark1().is_bound()) return FALSE;
if((other_value.change__mark1().ispresent() ? !single_value->field_change__mark1.match((const INTEGER&)other_value.change__mark1(), legacy) : !single_value->field_change__mark1.match_omit(legacy)))return FALSE;
if(!other_value.change__mark2__present().is_bound()) return FALSE;
if(!single_value->field_change__mark2__present.match(other_value.change__mark2__present(), legacy))return FALSE;
if(!other_value.change__mark2().is_bound()) return FALSE;
if((other_value.change__mark2().ispresent() ? !single_value->field_change__mark2.match((const INTEGER&)other_value.change__mark2(), legacy) : !single_value->field_change__mark2.match_omit(legacy)))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.FreqIndirect.");
}
return FALSE;
}

boolean FreqIndirect_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_maio.is_bound()
 || single_value->field_ma__number.is_bound()
 || single_value->field_change__mark1__present.is_bound()
 || (single_value->field_change__mark1.is_omit() || single_value->field_change__mark1.is_bound())
 || single_value->field_change__mark2__present.is_bound()
 || (single_value->field_change__mark2.is_omit() || single_value->field_change__mark2.is_bound());
}

boolean FreqIndirect_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_maio.is_value()
 && single_value->field_ma__number.is_value()
 && single_value->field_change__mark1__present.is_value()
 && (single_value->field_change__mark1.is_omit() || single_value->field_change__mark1.is_value())
 && single_value->field_change__mark2__present.is_value()
 && (single_value->field_change__mark2.is_omit() || single_value->field_change__mark2.is_value());
}

void FreqIndirect_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

FreqIndirect FreqIndirect_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 @RLCMAC_CSN1_Types.FreqIndirect.");
FreqIndirect ret_val;
if (single_value->field_maio.is_bound()) {
ret_val.maio() = single_value->field_maio.valueof();
}
if (single_value->field_ma__number.is_bound()) {
ret_val.ma__number() = single_value->field_ma__number.valueof();
}
if (single_value->field_change__mark1__present.is_bound()) {
ret_val.change__mark1__present() = single_value->field_change__mark1__present.valueof();
}
if (single_value->field_change__mark1.is_omit()) ret_val.change__mark1() = OMIT_VALUE;
else if (single_value->field_change__mark1.is_bound()) {
ret_val.change__mark1() = single_value->field_change__mark1.valueof();
}
if (single_value->field_change__mark2__present.is_bound()) {
ret_val.change__mark2__present() = single_value->field_change__mark2__present.valueof();
}
if (single_value->field_change__mark2.is_omit()) ret_val.change__mark2() = OMIT_VALUE;
else if (single_value->field_change__mark2.is_bound()) {
ret_val.change__mark2() = single_value->field_change__mark2.valueof();
}
return ret_val;
}

void FreqIndirect_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @RLCMAC_CSN1_Types.FreqIndirect.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new FreqIndirect_template[list_length];
}

FreqIndirect_template& FreqIndirect_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @RLCMAC_CSN1_Types.FreqIndirect.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @RLCMAC_CSN1_Types.FreqIndirect.");
return value_list.list_value[list_index];
}

INTEGER_template& FreqIndirect_template::maio()
{
set_specific();
return single_value->field_maio;
}

const INTEGER_template& FreqIndirect_template::maio() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field maio of a non-specific template of type @RLCMAC_CSN1_Types.FreqIndirect.");
return single_value->field_maio;
}

INTEGER_template& FreqIndirect_template::ma__number()
{
set_specific();
return single_value->field_ma__number;
}

const INTEGER_template& FreqIndirect_template::ma__number() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field ma_number of a non-specific template of type @RLCMAC_CSN1_Types.FreqIndirect.");
return single_value->field_ma__number;
}

BITSTRING_template& FreqIndirect_template::change__mark1__present()
{
set_specific();
return single_value->field_change__mark1__present;
}

const BITSTRING_template& FreqIndirect_template::change__mark1__present() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field change_mark1_present of a non-specific template of type @RLCMAC_CSN1_Types.FreqIndirect.");
return single_value->field_change__mark1__present;
}

INTEGER_template& FreqIndirect_template::change__mark1()
{
set_specific();
return single_value->field_change__mark1;
}

const INTEGER_template& FreqIndirect_template::change__mark1() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field change_mark1 of a non-specific template of type @RLCMAC_CSN1_Types.FreqIndirect.");
return single_value->field_change__mark1;
}

BITSTRING_template& FreqIndirect_template::change__mark2__present()
{
set_specific();
return single_value->field_change__mark2__present;
}

const BITSTRING_template& FreqIndirect_template::change__mark2__present() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field change_mark2_present of a non-specific template of type @RLCMAC_CSN1_Types.FreqIndirect.");
return single_value->field_change__mark2__present;
}

INTEGER_template& FreqIndirect_template::change__mark2()
{
set_specific();
return single_value->field_change__mark2;
}

const INTEGER_template& FreqIndirect_template::change__mark2() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field change_mark2 of a non-specific template of type @RLCMAC_CSN1_Types.FreqIndirect.");
return single_value->field_change__mark2;
}

int FreqIndirect_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.FreqIndirect which has an ifpresent attribute.");
  switch (template_selection)
  {
  case SPECIFIC_VALUE:
  {    int ret_val = 4;
      if (single_value->field_change__mark1.is_present()) ret_val++;
      if (single_value->field_change__mark2.is_present()) ret_val++;
      return ret_val;
    }
  case VALUE_LIST:
   {
     if (value_list.n_values<1)
       TTCN_error("Internal error: Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.FreqIndirect 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 @RLCMAC_CSN1_Types.FreqIndirect containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.FreqIndirect containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.FreqIndirect containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.FreqIndirect containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.FreqIndirect containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.FreqIndirect containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.FreqIndirect containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.FreqIndirect.");
  }
  return 0;
}

void FreqIndirect_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ maio := ");
single_value->field_maio.log();
TTCN_Logger::log_event_str(", ma_number := ");
single_value->field_ma__number.log();
TTCN_Logger::log_event_str(", change_mark1_present := ");
single_value->field_change__mark1__present.log();
TTCN_Logger::log_event_str(", change_mark1 := ");
single_value->field_change__mark1.log();
TTCN_Logger::log_event_str(", change_mark2_present := ");
single_value->field_change__mark2__present.log();
TTCN_Logger::log_event_str(", change_mark2 := ");
single_value->field_change__mark2.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void FreqIndirect_template::log_match(const FreqIndirect& 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_maio.match(match_value.maio(), legacy)){
TTCN_Logger::log_logmatch_info(".maio");
single_value->field_maio.log_match(match_value.maio(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_ma__number.match(match_value.ma__number(), legacy)){
TTCN_Logger::log_logmatch_info(".ma_number");
single_value->field_ma__number.log_match(match_value.ma__number(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_change__mark1__present.match(match_value.change__mark1__present(), legacy)){
TTCN_Logger::log_logmatch_info(".change_mark1_present");
single_value->field_change__mark1__present.log_match(match_value.change__mark1__present(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if (match_value.change__mark1().ispresent()){
if(!single_value->field_change__mark1.match(match_value.change__mark1(), legacy)){
TTCN_Logger::log_logmatch_info(".change_mark1");
single_value->field_change__mark1.log_match(match_value.change__mark1(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
} else {
if (!single_value->field_change__mark1.match_omit(legacy)){
 TTCN_Logger::log_logmatch_info(".change_mark1 := omit with ");
TTCN_Logger::print_logmatch_buffer();
single_value->field_change__mark1.log();
TTCN_Logger::log_event_str(" unmatched");
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}
if(!single_value->field_change__mark2__present.match(match_value.change__mark2__present(), legacy)){
TTCN_Logger::log_logmatch_info(".change_mark2_present");
single_value->field_change__mark2__present.log_match(match_value.change__mark2__present(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if (match_value.change__mark2().ispresent()){
if(!single_value->field_change__mark2.match(match_value.change__mark2(), legacy)){
TTCN_Logger::log_logmatch_info(".change_mark2");
single_value->field_change__mark2.log_match(match_value.change__mark2(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
} else {
if (!single_value->field_change__mark2.match_omit(legacy)){
 TTCN_Logger::log_logmatch_info(".change_mark2 := omit with ");
TTCN_Logger::print_logmatch_buffer();
single_value->field_change__mark2.log();
TTCN_Logger::log_event_str(" unmatched");
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}
}else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE) {
TTCN_Logger::log_event_str("{ maio := ");
single_value->field_maio.log_match(match_value.maio(), legacy);
TTCN_Logger::log_event_str(", ma_number := ");
single_value->field_ma__number.log_match(match_value.ma__number(), legacy);
TTCN_Logger::log_event_str(", change_mark1_present := ");
single_value->field_change__mark1__present.log_match(match_value.change__mark1__present(), legacy);
TTCN_Logger::log_event_str(", change_mark1 := ");
if (match_value.change__mark1().ispresent()) {
single_value->field_change__mark1.log_match(match_value.change__mark1(), legacy);
} else {
TTCN_Logger::log_event_str("omit with ");
single_value->field_change__mark1.log();
if (single_value->field_change__mark1.match_omit(legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
TTCN_Logger::log_event_str(", change_mark2_present := ");
single_value->field_change__mark2__present.log_match(match_value.change__mark2__present(), legacy);
TTCN_Logger::log_event_str(", change_mark2 := ");
if (match_value.change__mark2().ispresent()) {
single_value->field_change__mark2.log_match(match_value.change__mark2(), legacy);
} else {
TTCN_Logger::log_event_str("omit with ");
single_value->field_change__mark2.log();
if (single_value->field_change__mark2.match_omit(legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
TTCN_Logger::log_event_str(" }");
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void FreqIndirect_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (maio().is_bound()) maio().set_implicit_omit();
if (ma__number().is_bound()) ma__number().set_implicit_omit();
if (change__mark1__present().is_bound()) change__mark1__present().set_implicit_omit();
if (!change__mark1().is_bound()) change__mark1() = OMIT_VALUE;
else change__mark1().set_implicit_omit();
if (change__mark2__present().is_bound()) change__mark2__present().set_implicit_omit();
if (!change__mark2().is_bound()) change__mark2() = OMIT_VALUE;
else change__mark2().set_implicit_omit();
}

void FreqIndirect_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_maio.encode_text(text_buf);
single_value->field_ma__number.encode_text(text_buf);
single_value->field_change__mark1__present.encode_text(text_buf);
single_value->field_change__mark1.encode_text(text_buf);
single_value->field_change__mark2__present.encode_text(text_buf);
single_value->field_change__mark2.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 @RLCMAC_CSN1_Types.FreqIndirect.");
}
}

void FreqIndirect_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_maio.decode_text(text_buf);
single_value->field_ma__number.decode_text(text_buf);
single_value->field_change__mark1__present.decode_text(text_buf);
single_value->field_change__mark1.decode_text(text_buf);
single_value->field_change__mark2__present.decode_text(text_buf);
single_value->field_change__mark2.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 FreqIndirect_template[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 @RLCMAC_CSN1_Types.FreqIndirect.");
}
}

void FreqIndirect_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    FreqIndirect_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_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 (6<param.get_size()) {
      param.error("record template of type @RLCMAC_CSN1_Types.FreqIndirect has 6 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) maio().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ma__number().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) change__mark1__present().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) change__mark1().set_param(*param.get_elem(3));
    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) change__mark2__present().set_param(*param.get_elem(4));
    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) change__mark2().set_param(*param.get_elem(5));
    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(), "maio")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          maio().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ma_number")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ma__number().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "change_mark1_present")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          change__mark1__present().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "change_mark1")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          change__mark1().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "change_mark2_present")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          change__mark2__present().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "change_mark2")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          change__mark2().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 @RLCMAC_CSN1_Types.FreqIndirect: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    FreqIndirect_template* precondition = new FreqIndirect_template;
    precondition->set_param(*param.get_elem(0));
    FreqIndirect_template* implied_template = new FreqIndirect_template;
    implied_template->set_param(*param.get_elem(1));
    *this = FreqIndirect_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@RLCMAC_CSN1_Types.FreqIndirect");
  }
  is_ifpresent = param.get_ifpresent();
}

void FreqIndirect_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_maio.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.FreqIndirect");
single_value->field_ma__number.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.FreqIndirect");
single_value->field_change__mark1__present.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.FreqIndirect");
single_value->field_change__mark1.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.FreqIndirect");
single_value->field_change__mark2__present.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.FreqIndirect");
single_value->field_change__mark2.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.FreqIndirect");
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 : "@RLCMAC_CSN1_Types.FreqIndirect");
}

boolean FreqIndirect_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean FreqIndirect_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<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;
}

GprsMobileAllocation::GprsMobileAllocation()
{
}

GprsMobileAllocation::GprsMobileAllocation(const INTEGER& par_hsn,
    const BITSTRING& par_rfl__number__list__present,
    const OPTIONAL< RflNumberList >& par_rfl__number__list,
    const BITSTRING& par_ma__present,
    const OPTIONAL< INTEGER >& par_ma__length,
    const OPTIONAL< BITSTRING >& par_ma__bitmap)
  :   field_hsn(par_hsn),
  field_rfl__number__list__present(par_rfl__number__list__present),
  field_rfl__number__list(par_rfl__number__list),
  field_ma__present(par_ma__present),
  field_ma__length(par_ma__length),
  field_ma__bitmap(par_ma__bitmap)
{
}

GprsMobileAllocation::GprsMobileAllocation(const GprsMobileAllocation& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RLCMAC_CSN1_Types.GprsMobileAllocation.");
if (other_value.hsn().is_bound()) field_hsn = other_value.hsn();
else field_hsn.clean_up();
if (other_value.rfl__number__list__present().is_bound()) field_rfl__number__list__present = other_value.rfl__number__list__present();
else field_rfl__number__list__present.clean_up();
if (other_value.rfl__number__list().is_bound()) field_rfl__number__list = other_value.rfl__number__list();
else field_rfl__number__list.clean_up();
if (other_value.ma__present().is_bound()) field_ma__present = other_value.ma__present();
else field_ma__present.clean_up();
if (other_value.ma__length().is_bound()) field_ma__length = other_value.ma__length();
else field_ma__length.clean_up();
if (other_value.ma__bitmap().is_bound()) field_ma__bitmap = other_value.ma__bitmap();
else field_ma__bitmap.clean_up();
}

void GprsMobileAllocation::clean_up()
{
field_hsn.clean_up();
field_rfl__number__list__present.clean_up();
field_rfl__number__list.clean_up();
field_ma__present.clean_up();
field_ma__length.clean_up();
field_ma__bitmap.clean_up();
}

const TTCN_Typedescriptor_t* GprsMobileAllocation::get_descriptor() const { return &GprsMobileAllocation_descr_; }
GprsMobileAllocation& GprsMobileAllocation::operator=(const GprsMobileAllocation& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RLCMAC_CSN1_Types.GprsMobileAllocation.");
  if (other_value.hsn().is_bound()) field_hsn = other_value.hsn();
  else field_hsn.clean_up();
  if (other_value.rfl__number__list__present().is_bound()) field_rfl__number__list__present = other_value.rfl__number__list__present();
  else field_rfl__number__list__present.clean_up();
  if (other_value.rfl__number__list().is_bound()) field_rfl__number__list = other_value.rfl__number__list();
  else field_rfl__number__list.clean_up();
  if (other_value.ma__present().is_bound()) field_ma__present = other_value.ma__present();
  else field_ma__present.clean_up();
  if (other_value.ma__length().is_bound()) field_ma__length = other_value.ma__length();
  else field_ma__length.clean_up();
  if (other_value.ma__bitmap().is_bound()) field_ma__bitmap = other_value.ma__bitmap();
  else field_ma__bitmap.clean_up();
}
return *this;
}

boolean GprsMobileAllocation::operator==(const GprsMobileAllocation& other_value) const
{
return field_hsn==other_value.field_hsn
  && field_rfl__number__list__present==other_value.field_rfl__number__list__present
  && field_rfl__number__list==other_value.field_rfl__number__list
  && field_ma__present==other_value.field_ma__present
  && field_ma__length==other_value.field_ma__length
  && field_ma__bitmap==other_value.field_ma__bitmap;
}

boolean GprsMobileAllocation::is_bound() const
{
return (field_hsn.is_bound())
  || (field_rfl__number__list__present.is_bound())
  || (OPTIONAL_OMIT == field_rfl__number__list.get_selection() || field_rfl__number__list.is_bound())
  || (field_ma__present.is_bound())
  || (OPTIONAL_OMIT == field_ma__length.get_selection() || field_ma__length.is_bound())
  || (OPTIONAL_OMIT == field_ma__bitmap.get_selection() || field_ma__bitmap.is_bound());
}
boolean GprsMobileAllocation::is_value() const
{
return field_hsn.is_value()
  && field_rfl__number__list__present.is_value()
  && (OPTIONAL_OMIT == field_rfl__number__list.get_selection() || field_rfl__number__list.is_value())
  && field_ma__present.is_value()
  && (OPTIONAL_OMIT == field_ma__length.get_selection() || field_ma__length.is_value())
  && (OPTIONAL_OMIT == field_ma__bitmap.get_selection() || field_ma__bitmap.is_value());
}
int GprsMobileAllocation::size_of() const
{
  int ret_val = 3;
  if (field_rfl__number__list.ispresent()) ret_val++;
  if (field_ma__length.ispresent()) ret_val++;
  if (field_ma__bitmap.ispresent()) ret_val++;
  return ret_val;
}

void GprsMobileAllocation::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ hsn := ");
field_hsn.log();
TTCN_Logger::log_event_str(", rfl_number_list_present := ");
field_rfl__number__list__present.log();
TTCN_Logger::log_event_str(", rfl_number_list := ");
field_rfl__number__list.log();
TTCN_Logger::log_event_str(", ma_present := ");
field_ma__present.log();
TTCN_Logger::log_event_str(", ma_length := ");
field_ma__length.log();
TTCN_Logger::log_event_str(", ma_bitmap := ");
field_ma__bitmap.log();
TTCN_Logger::log_event_str(" }");
}

void GprsMobileAllocation::set_implicit_omit()
{
if (hsn().is_bound()) hsn().set_implicit_omit();
if (rfl__number__list__present().is_bound()) rfl__number__list__present().set_implicit_omit();
if (!rfl__number__list().is_bound()) rfl__number__list() = OMIT_VALUE;
else rfl__number__list().set_implicit_omit();
if (ma__present().is_bound()) ma__present().set_implicit_omit();
if (!ma__length().is_bound()) ma__length() = OMIT_VALUE;
else ma__length().set_implicit_omit();
if (!ma__bitmap().is_bound()) ma__bitmap() = OMIT_VALUE;
else ma__bitmap().set_implicit_omit();
}

void GprsMobileAllocation::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 (6<param.get_size()) {
      param.error("record value of type @RLCMAC_CSN1_Types.GprsMobileAllocation has 6 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) hsn().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) rfl__number__list__present().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) rfl__number__list().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) ma__present().set_param(*param.get_elem(3));
    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) ma__length().set_param(*param.get_elem(4));
    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) ma__bitmap().set_param(*param.get_elem(5));
    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(), "hsn")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          hsn().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "rfl_number_list_present")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          rfl__number__list__present().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "rfl_number_list")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          rfl__number__list().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ma_present")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ma__present().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ma_length")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ma__length().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ma_bitmap")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ma__bitmap().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 @RLCMAC_CSN1_Types.GprsMobileAllocation: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@RLCMAC_CSN1_Types.GprsMobileAllocation");
  }
}

void GprsMobileAllocation::encode_text(Text_Buf& text_buf) const
{
field_hsn.encode_text(text_buf);
field_rfl__number__list__present.encode_text(text_buf);
field_rfl__number__list.encode_text(text_buf);
field_ma__present.encode_text(text_buf);
field_ma__length.encode_text(text_buf);
field_ma__bitmap.encode_text(text_buf);
}

void GprsMobileAllocation::decode_text(Text_Buf& text_buf)
{
field_hsn.decode_text(text_buf);
field_rfl__number__list__present.decode_text(text_buf);
field_rfl__number__list.decode_text(text_buf);
field_ma__present.decode_text(text_buf);
field_ma__length.decode_text(text_buf);
field_ma__bitmap.decode_text(text_buf);
}

void GprsMobileAllocation::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void GprsMobileAllocation::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int GprsMobileAllocation::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_field4 = 0;
  RAW_Force_Omit field_0_force_omit(0, force_omit, GprsMobileAllocation_hsn_descr_.raw->forceomit);
  decoded_field_length = field_hsn.RAW_decode(GprsMobileAllocation_hsn_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, GprsMobileAllocation_rfl__number__list__present_descr_.raw->forceomit);
  decoded_field_length = field_rfl__number__list__present.RAW_decode(GprsMobileAllocation_rfl__number__list__present_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());
  if (limit > 0 && field_rfl__number__list__present ==  bs_0){
  if (force_omit != NULL && (*force_omit)(2)) {
    field_rfl__number__list = OMIT_VALUE;
  }
  else {
  size_t fl_start_pos = p_buf.get_pos_bit();
  RAW_Force_Omit field_2_force_omit(2, force_omit, GprsMobileAllocation_rfl__number__list_descr_.raw->forceomit);
  decoded_field_length = field_rfl__number__list().RAW_decode(GprsMobileAllocation_rfl__number__list_descr_, p_buf, limit, local_top_order, TRUE, -1, TRUE, &field_2_force_omit);
  if (decoded_field_length < 1) {
  field_rfl__number__list = OMIT_VALUE;
  p_buf.set_pos_bit(fl_start_pos);
  } else {
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  }
  }
  }
  else field_rfl__number__list=OMIT_VALUE;
  RAW_Force_Omit field_3_force_omit(3, force_omit, GprsMobileAllocation_ma__present_descr_.raw->forceomit);
  decoded_field_length = field_ma__present.RAW_decode(GprsMobileAllocation_ma__present_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());
  if (limit > 0 && field_ma__present ==  bs_1){
  if (force_omit != NULL && (*force_omit)(4)) {
    field_ma__length = OMIT_VALUE;
  }
  else {
  size_t fl_start_pos = p_buf.get_pos_bit();
  RAW_Force_Omit field_4_force_omit(4, force_omit, GprsMobileAllocation_ma__length_descr_.raw->forceomit);
  decoded_field_length = field_ma__length().RAW_decode(GprsMobileAllocation_ma__length_descr_, p_buf, limit, local_top_order, TRUE, -1, TRUE, &field_4_force_omit);
  if (decoded_field_length < 1) {
  field_ma__length = OMIT_VALUE;
  p_buf.set_pos_bit(fl_start_pos);
  } else {
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  INTEGER tmp4 = field_ma__length().convert_to_Integer(GprsMobileAllocation_ma__length_descr_);
  tmp4 = tmp4 - -1;
  field_ma__length() = tmp4;
  value_of_length_field4 += tmp4.get_long_long_val() * 1;
  }
  }
  }
  else field_ma__length=OMIT_VALUE;
  if (limit > 0 && value_of_length_field4 > 0 && field_ma__present ==  bs_1){
  if (force_omit != NULL && (*force_omit)(5)) {
    field_ma__bitmap = OMIT_VALUE;
  }
  else {
  size_t fl_start_pos = p_buf.get_pos_bit();
  RAW_Force_Omit field_5_force_omit(5, force_omit, GprsMobileAllocation_ma__bitmap_descr_.raw->forceomit);
  decoded_field_length = field_ma__bitmap().RAW_decode(GprsMobileAllocation_ma__bitmap_descr_, p_buf, min_of_ints(2, limit, value_of_length_field4), local_top_order, TRUE, -1, TRUE, &field_5_force_omit);
  if (decoded_field_length < 1) {
  field_ma__bitmap = OMIT_VALUE;
  p_buf.set_pos_bit(fl_start_pos);
  } else {
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field4 -= decoded_field_length;
  }
  }
  }
  else field_ma__bitmap=OMIT_VALUE;
  p_buf.set_pos_bit(last_decoded_pos);
  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
}

int GprsMobileAllocation::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 = 6;
  myleaf.body.node.nodes = init_nodes_of_enc_tree(6);
  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, GprsMobileAllocation_hsn_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, GprsMobileAllocation_rfl__number__list__present_descr_.raw);
  if (field_rfl__number__list.ispresent()) {
  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, GprsMobileAllocation_rfl__number__list_descr_.raw);
  }
  else myleaf.body.node.nodes[2] = NULL;
  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, GprsMobileAllocation_ma__present_descr_.raw);
  if (field_ma__length.ispresent()) {
  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, GprsMobileAllocation_ma__length_descr_.raw);
  }
  else myleaf.body.node.nodes[4] = NULL;
  if (field_ma__bitmap.ispresent()) {
  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, GprsMobileAllocation_ma__bitmap_descr_.raw);
  }
  else myleaf.body.node.nodes[5] = NULL;
  encoded_length += field_hsn.RAW_encode(GprsMobileAllocation_hsn_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_rfl__number__list__present.RAW_encode(GprsMobileAllocation_rfl__number__list__present_descr_, *myleaf.body.node.nodes[1]);
  if (field_rfl__number__list.ispresent()) {
  encoded_length += field_rfl__number__list().RAW_encode(GprsMobileAllocation_rfl__number__list_descr_, *myleaf.body.node.nodes[2]);
  }
  encoded_length += field_ma__present.RAW_encode(GprsMobileAllocation_ma__present_descr_, *myleaf.body.node.nodes[3]);
  if (field_ma__length.ispresent()) {
  encoded_length += 6;
  myleaf.body.node.nodes[4]->calc = CALC_LENGTH;
  myleaf.body.node.nodes[4]->coding_descr = &GprsMobileAllocation_ma__length_descr_;
  myleaf.body.node.nodes[4]->calcof.lengthto.num_of_fields = 1;
  myleaf.body.node.nodes[4]->calcof.lengthto.unit = 1;
  myleaf.body.node.nodes[4]->calcof.lengthto.offset = -1;
  myleaf.body.node.nodes[4]->calcof.lengthto.fields = init_lengthto_fields_list(1);
  myleaf.body.node.nodes[4]->length = 6;
  if (field_ma__bitmap.ispresent()) {
  myleaf.body.node.nodes[4]->calcof.lengthto.fields[0].level = myleaf.body.node.nodes[5]->curr_pos.level;
  myleaf.body.node.nodes[4]->calcof.lengthto.fields[0].pos = myleaf.body.node.nodes[5]->curr_pos.pos;
  } else {
  myleaf.body.node.nodes[4]->calcof.lengthto.fields[0].level = 0;
  myleaf.body.node.nodes[4]->calcof.lengthto.fields[0].pos = 0;
  }
  }
  if (field_ma__bitmap.ispresent()) {
  encoded_length += field_ma__bitmap().RAW_encode(GprsMobileAllocation_ma__bitmap_descr_, *myleaf.body.node.nodes[5]);
  }
  if (field_rfl__number__list.ispresent() && (field_rfl__number__list__present !=  bs_0)) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={1};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   bs_0.RAW_encode(GprsMobileAllocation_rfl__number__list__present_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);
  }
  }
  if (field_ma__length.ispresent() && (field_ma__present !=  bs_1)) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={3};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   bs_1.RAW_encode(GprsMobileAllocation_ma__present_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);
  }
  }
  if (field_ma__bitmap.ispresent() && (field_ma__present !=  bs_1)) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={3};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   bs_1.RAW_encode(GprsMobileAllocation_ma__present_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);
  }
  }
  return myleaf.length = encoded_length;
}

struct GprsMobileAllocation_template::single_value_struct {
INTEGER_template field_hsn;
BITSTRING_template field_rfl__number__list__present;
RflNumberList_template field_rfl__number__list;
BITSTRING_template field_ma__present;
INTEGER_template field_ma__length;
BITSTRING_template field_ma__bitmap;
};

void GprsMobileAllocation_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_hsn = ANY_VALUE;
single_value->field_rfl__number__list__present = ANY_VALUE;
single_value->field_rfl__number__list = ANY_OR_OMIT;
single_value->field_ma__present = ANY_VALUE;
single_value->field_ma__length = ANY_OR_OMIT;
single_value->field_ma__bitmap = ANY_OR_OMIT;
}
}
}

void GprsMobileAllocation_template::copy_value(const GprsMobileAllocation& other_value)
{
single_value = new single_value_struct;
if (other_value.hsn().is_bound()) {
  single_value->field_hsn = other_value.hsn();
} else {
  single_value->field_hsn.clean_up();
}
if (other_value.rfl__number__list__present().is_bound()) {
  single_value->field_rfl__number__list__present = other_value.rfl__number__list__present();
} else {
  single_value->field_rfl__number__list__present.clean_up();
}
if (other_value.rfl__number__list().is_bound()) {
  if (other_value.rfl__number__list().ispresent()) single_value->field_rfl__number__list = other_value.rfl__number__list()();
  else single_value->field_rfl__number__list = OMIT_VALUE;
} else {
  single_value->field_rfl__number__list.clean_up();
}
if (other_value.ma__present().is_bound()) {
  single_value->field_ma__present = other_value.ma__present();
} else {
  single_value->field_ma__present.clean_up();
}
if (other_value.ma__length().is_bound()) {
  if (other_value.ma__length().ispresent()) single_value->field_ma__length = other_value.ma__length()();
  else single_value->field_ma__length = OMIT_VALUE;
} else {
  single_value->field_ma__length.clean_up();
}
if (other_value.ma__bitmap().is_bound()) {
  if (other_value.ma__bitmap().ispresent()) single_value->field_ma__bitmap = other_value.ma__bitmap()();
  else single_value->field_ma__bitmap = OMIT_VALUE;
} else {
  single_value->field_ma__bitmap.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void GprsMobileAllocation_template::copy_template(const GprsMobileAllocation_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.hsn().get_selection()) {
single_value->field_hsn = other_value.hsn();
} else {
single_value->field_hsn.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.rfl__number__list__present().get_selection()) {
single_value->field_rfl__number__list__present = other_value.rfl__number__list__present();
} else {
single_value->field_rfl__number__list__present.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.rfl__number__list().get_selection()) {
single_value->field_rfl__number__list = other_value.rfl__number__list();
} else {
single_value->field_rfl__number__list.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.ma__present().get_selection()) {
single_value->field_ma__present = other_value.ma__present();
} else {
single_value->field_ma__present.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.ma__length().get_selection()) {
single_value->field_ma__length = other_value.ma__length();
} else {
single_value->field_ma__length.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.ma__bitmap().get_selection()) {
single_value->field_ma__bitmap = other_value.ma__bitmap();
} else {
single_value->field_ma__bitmap.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new GprsMobileAllocation_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new GprsMobileAllocation_template(*other_value.implication_.precondition);
implication_.implied_template = new GprsMobileAllocation_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.GprsMobileAllocation.");
break;
}
set_selection(other_value);
}

GprsMobileAllocation_template::GprsMobileAllocation_template()
{
}

GprsMobileAllocation_template::GprsMobileAllocation_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

GprsMobileAllocation_template::GprsMobileAllocation_template(const GprsMobileAllocation& other_value)
{
copy_value(other_value);
}

GprsMobileAllocation_template::GprsMobileAllocation_template(const OPTIONAL<GprsMobileAllocation>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const GprsMobileAllocation&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @RLCMAC_CSN1_Types.GprsMobileAllocation from an unbound optional field.");
}
}

GprsMobileAllocation_template::GprsMobileAllocation_template(GprsMobileAllocation_template* p_precondition, GprsMobileAllocation_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

GprsMobileAllocation_template::GprsMobileAllocation_template(Dynamic_Match_Interface<GprsMobileAllocation>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<GprsMobileAllocation>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

GprsMobileAllocation_template::GprsMobileAllocation_template(const GprsMobileAllocation_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

GprsMobileAllocation_template::~GprsMobileAllocation_template()
{
clean_up();
}

GprsMobileAllocation_template& GprsMobileAllocation_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

GprsMobileAllocation_template& GprsMobileAllocation_template::operator=(const GprsMobileAllocation& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

GprsMobileAllocation_template& GprsMobileAllocation_template::operator=(const OPTIONAL<GprsMobileAllocation>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const GprsMobileAllocation&)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 @RLCMAC_CSN1_Types.GprsMobileAllocation.");
}
return *this;
}

GprsMobileAllocation_template& GprsMobileAllocation_template::operator=(const GprsMobileAllocation_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean GprsMobileAllocation_template::match(const GprsMobileAllocation& 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.hsn().is_bound()) return FALSE;
if(!single_value->field_hsn.match(other_value.hsn(), legacy))return FALSE;
if(!other_value.rfl__number__list__present().is_bound()) return FALSE;
if(!single_value->field_rfl__number__list__present.match(other_value.rfl__number__list__present(), legacy))return FALSE;
if(!other_value.rfl__number__list().is_bound()) return FALSE;
if((other_value.rfl__number__list().ispresent() ? !single_value->field_rfl__number__list.match((const RflNumberList&)other_value.rfl__number__list(), legacy) : !single_value->field_rfl__number__list.match_omit(legacy)))return FALSE;
if(!other_value.ma__present().is_bound()) return FALSE;
if(!single_value->field_ma__present.match(other_value.ma__present(), legacy))return FALSE;
if(!other_value.ma__length().is_bound()) return FALSE;
if((other_value.ma__length().ispresent() ? !single_value->field_ma__length.match((const INTEGER&)other_value.ma__length(), legacy) : !single_value->field_ma__length.match_omit(legacy)))return FALSE;
if(!other_value.ma__bitmap().is_bound()) return FALSE;
if((other_value.ma__bitmap().ispresent() ? !single_value->field_ma__bitmap.match((const BITSTRING&)other_value.ma__bitmap(), legacy) : !single_value->field_ma__bitmap.match_omit(legacy)))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.GprsMobileAllocation.");
}
return FALSE;
}

boolean GprsMobileAllocation_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_hsn.is_bound()
 || single_value->field_rfl__number__list__present.is_bound()
 || (single_value->field_rfl__number__list.is_omit() || single_value->field_rfl__number__list.is_bound())
 || single_value->field_ma__present.is_bound()
 || (single_value->field_ma__length.is_omit() || single_value->field_ma__length.is_bound())
 || (single_value->field_ma__bitmap.is_omit() || single_value->field_ma__bitmap.is_bound());
}

boolean GprsMobileAllocation_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_hsn.is_value()
 && single_value->field_rfl__number__list__present.is_value()
 && (single_value->field_rfl__number__list.is_omit() || single_value->field_rfl__number__list.is_value())
 && single_value->field_ma__present.is_value()
 && (single_value->field_ma__length.is_omit() || single_value->field_ma__length.is_value())
 && (single_value->field_ma__bitmap.is_omit() || single_value->field_ma__bitmap.is_value());
}

void GprsMobileAllocation_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

GprsMobileAllocation GprsMobileAllocation_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 @RLCMAC_CSN1_Types.GprsMobileAllocation.");
GprsMobileAllocation ret_val;
if (single_value->field_hsn.is_bound()) {
ret_val.hsn() = single_value->field_hsn.valueof();
}
if (single_value->field_rfl__number__list__present.is_bound()) {
ret_val.rfl__number__list__present() = single_value->field_rfl__number__list__present.valueof();
}
if (single_value->field_rfl__number__list.is_omit()) ret_val.rfl__number__list() = OMIT_VALUE;
else if (single_value->field_rfl__number__list.is_bound()) {
ret_val.rfl__number__list() = single_value->field_rfl__number__list.valueof();
}
if (single_value->field_ma__present.is_bound()) {
ret_val.ma__present() = single_value->field_ma__present.valueof();
}
if (single_value->field_ma__length.is_omit()) ret_val.ma__length() = OMIT_VALUE;
else if (single_value->field_ma__length.is_bound()) {
ret_val.ma__length() = single_value->field_ma__length.valueof();
}
if (single_value->field_ma__bitmap.is_omit()) ret_val.ma__bitmap() = OMIT_VALUE;
else if (single_value->field_ma__bitmap.is_bound()) {
ret_val.ma__bitmap() = single_value->field_ma__bitmap.valueof();
}
return ret_val;
}

void GprsMobileAllocation_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @RLCMAC_CSN1_Types.GprsMobileAllocation.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new GprsMobileAllocation_template[list_length];
}

GprsMobileAllocation_template& GprsMobileAllocation_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @RLCMAC_CSN1_Types.GprsMobileAllocation.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @RLCMAC_CSN1_Types.GprsMobileAllocation.");
return value_list.list_value[list_index];
}

INTEGER_template& GprsMobileAllocation_template::hsn()
{
set_specific();
return single_value->field_hsn;
}

const INTEGER_template& GprsMobileAllocation_template::hsn() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field hsn of a non-specific template of type @RLCMAC_CSN1_Types.GprsMobileAllocation.");
return single_value->field_hsn;
}

BITSTRING_template& GprsMobileAllocation_template::rfl__number__list__present()
{
set_specific();
return single_value->field_rfl__number__list__present;
}

const BITSTRING_template& GprsMobileAllocation_template::rfl__number__list__present() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field rfl_number_list_present of a non-specific template of type @RLCMAC_CSN1_Types.GprsMobileAllocation.");
return single_value->field_rfl__number__list__present;
}

RflNumberList_template& GprsMobileAllocation_template::rfl__number__list()
{
set_specific();
return single_value->field_rfl__number__list;
}

const RflNumberList_template& GprsMobileAllocation_template::rfl__number__list() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field rfl_number_list of a non-specific template of type @RLCMAC_CSN1_Types.GprsMobileAllocation.");
return single_value->field_rfl__number__list;
}

BITSTRING_template& GprsMobileAllocation_template::ma__present()
{
set_specific();
return single_value->field_ma__present;
}

const BITSTRING_template& GprsMobileAllocation_template::ma__present() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field ma_present of a non-specific template of type @RLCMAC_CSN1_Types.GprsMobileAllocation.");
return single_value->field_ma__present;
}

INTEGER_template& GprsMobileAllocation_template::ma__length()
{
set_specific();
return single_value->field_ma__length;
}

const INTEGER_template& GprsMobileAllocation_template::ma__length() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field ma_length of a non-specific template of type @RLCMAC_CSN1_Types.GprsMobileAllocation.");
return single_value->field_ma__length;
}

BITSTRING_template& GprsMobileAllocation_template::ma__bitmap()
{
set_specific();
return single_value->field_ma__bitmap;
}

const BITSTRING_template& GprsMobileAllocation_template::ma__bitmap() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field ma_bitmap of a non-specific template of type @RLCMAC_CSN1_Types.GprsMobileAllocation.");
return single_value->field_ma__bitmap;
}

int GprsMobileAllocation_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.GprsMobileAllocation which has an ifpresent attribute.");
  switch (template_selection)
  {
  case SPECIFIC_VALUE:
  {    int ret_val = 3;
      if (single_value->field_rfl__number__list.is_present()) ret_val++;
      if (single_value->field_ma__length.is_present()) ret_val++;
      if (single_value->field_ma__bitmap.is_present()) ret_val++;
      return ret_val;
    }
  case VALUE_LIST:
   {
     if (value_list.n_values<1)
       TTCN_error("Internal error: Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.GprsMobileAllocation 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 @RLCMAC_CSN1_Types.GprsMobileAllocation containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.GprsMobileAllocation containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.GprsMobileAllocation containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.GprsMobileAllocation containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.GprsMobileAllocation containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.GprsMobileAllocation containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.GprsMobileAllocation containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.GprsMobileAllocation.");
  }
  return 0;
}

void GprsMobileAllocation_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ hsn := ");
single_value->field_hsn.log();
TTCN_Logger::log_event_str(", rfl_number_list_present := ");
single_value->field_rfl__number__list__present.log();
TTCN_Logger::log_event_str(", rfl_number_list := ");
single_value->field_rfl__number__list.log();
TTCN_Logger::log_event_str(", ma_present := ");
single_value->field_ma__present.log();
TTCN_Logger::log_event_str(", ma_length := ");
single_value->field_ma__length.log();
TTCN_Logger::log_event_str(", ma_bitmap := ");
single_value->field_ma__bitmap.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void GprsMobileAllocation_template::log_match(const GprsMobileAllocation& 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_hsn.match(match_value.hsn(), legacy)){
TTCN_Logger::log_logmatch_info(".hsn");
single_value->field_hsn.log_match(match_value.hsn(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_rfl__number__list__present.match(match_value.rfl__number__list__present(), legacy)){
TTCN_Logger::log_logmatch_info(".rfl_number_list_present");
single_value->field_rfl__number__list__present.log_match(match_value.rfl__number__list__present(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if (match_value.rfl__number__list().ispresent()){
if(!single_value->field_rfl__number__list.match(match_value.rfl__number__list(), legacy)){
TTCN_Logger::log_logmatch_info(".rfl_number_list");
single_value->field_rfl__number__list.log_match(match_value.rfl__number__list(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
} else {
if (!single_value->field_rfl__number__list.match_omit(legacy)){
 TTCN_Logger::log_logmatch_info(".rfl_number_list := omit with ");
TTCN_Logger::print_logmatch_buffer();
single_value->field_rfl__number__list.log();
TTCN_Logger::log_event_str(" unmatched");
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}
if(!single_value->field_ma__present.match(match_value.ma__present(), legacy)){
TTCN_Logger::log_logmatch_info(".ma_present");
single_value->field_ma__present.log_match(match_value.ma__present(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if (match_value.ma__length().ispresent()){
if(!single_value->field_ma__length.match(match_value.ma__length(), legacy)){
TTCN_Logger::log_logmatch_info(".ma_length");
single_value->field_ma__length.log_match(match_value.ma__length(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
} else {
if (!single_value->field_ma__length.match_omit(legacy)){
 TTCN_Logger::log_logmatch_info(".ma_length := omit with ");
TTCN_Logger::print_logmatch_buffer();
single_value->field_ma__length.log();
TTCN_Logger::log_event_str(" unmatched");
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}
if (match_value.ma__bitmap().ispresent()){
if(!single_value->field_ma__bitmap.match(match_value.ma__bitmap(), legacy)){
TTCN_Logger::log_logmatch_info(".ma_bitmap");
single_value->field_ma__bitmap.log_match(match_value.ma__bitmap(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
} else {
if (!single_value->field_ma__bitmap.match_omit(legacy)){
 TTCN_Logger::log_logmatch_info(".ma_bitmap := omit with ");
TTCN_Logger::print_logmatch_buffer();
single_value->field_ma__bitmap.log();
TTCN_Logger::log_event_str(" unmatched");
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}
}else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE) {
TTCN_Logger::log_event_str("{ hsn := ");
single_value->field_hsn.log_match(match_value.hsn(), legacy);
TTCN_Logger::log_event_str(", rfl_number_list_present := ");
single_value->field_rfl__number__list__present.log_match(match_value.rfl__number__list__present(), legacy);
TTCN_Logger::log_event_str(", rfl_number_list := ");
if (match_value.rfl__number__list().ispresent()) {
single_value->field_rfl__number__list.log_match(match_value.rfl__number__list(), legacy);
} else {
TTCN_Logger::log_event_str("omit with ");
single_value->field_rfl__number__list.log();
if (single_value->field_rfl__number__list.match_omit(legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
TTCN_Logger::log_event_str(", ma_present := ");
single_value->field_ma__present.log_match(match_value.ma__present(), legacy);
TTCN_Logger::log_event_str(", ma_length := ");
if (match_value.ma__length().ispresent()) {
single_value->field_ma__length.log_match(match_value.ma__length(), legacy);
} else {
TTCN_Logger::log_event_str("omit with ");
single_value->field_ma__length.log();
if (single_value->field_ma__length.match_omit(legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
TTCN_Logger::log_event_str(", ma_bitmap := ");
if (match_value.ma__bitmap().ispresent()) {
single_value->field_ma__bitmap.log_match(match_value.ma__bitmap(), legacy);
} else {
TTCN_Logger::log_event_str("omit with ");
single_value->field_ma__bitmap.log();
if (single_value->field_ma__bitmap.match_omit(legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
TTCN_Logger::log_event_str(" }");
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void GprsMobileAllocation_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (hsn().is_bound()) hsn().set_implicit_omit();
if (rfl__number__list__present().is_bound()) rfl__number__list__present().set_implicit_omit();
if (!rfl__number__list().is_bound()) rfl__number__list() = OMIT_VALUE;
else rfl__number__list().set_implicit_omit();
if (ma__present().is_bound()) ma__present().set_implicit_omit();
if (!ma__length().is_bound()) ma__length() = OMIT_VALUE;
else ma__length().set_implicit_omit();
if (!ma__bitmap().is_bound()) ma__bitmap() = OMIT_VALUE;
else ma__bitmap().set_implicit_omit();
}

void GprsMobileAllocation_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_hsn.encode_text(text_buf);
single_value->field_rfl__number__list__present.encode_text(text_buf);
single_value->field_rfl__number__list.encode_text(text_buf);
single_value->field_ma__present.encode_text(text_buf);
single_value->field_ma__length.encode_text(text_buf);
single_value->field_ma__bitmap.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 @RLCMAC_CSN1_Types.GprsMobileAllocation.");
}
}

void GprsMobileAllocation_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_hsn.decode_text(text_buf);
single_value->field_rfl__number__list__present.decode_text(text_buf);
single_value->field_rfl__number__list.decode_text(text_buf);
single_value->field_ma__present.decode_text(text_buf);
single_value->field_ma__length.decode_text(text_buf);
single_value->field_ma__bitmap.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 GprsMobileAllocation_template[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 @RLCMAC_CSN1_Types.GprsMobileAllocation.");
}
}

void GprsMobileAllocation_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    GprsMobileAllocation_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_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 (6<param.get_size()) {
      param.error("record template of type @RLCMAC_CSN1_Types.GprsMobileAllocation has 6 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) hsn().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) rfl__number__list__present().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) rfl__number__list().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) ma__present().set_param(*param.get_elem(3));
    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) ma__length().set_param(*param.get_elem(4));
    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) ma__bitmap().set_param(*param.get_elem(5));
    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(), "hsn")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          hsn().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "rfl_number_list_present")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          rfl__number__list__present().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "rfl_number_list")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          rfl__number__list().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ma_present")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ma__present().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ma_length")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ma__length().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ma_bitmap")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ma__bitmap().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 @RLCMAC_CSN1_Types.GprsMobileAllocation: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    GprsMobileAllocation_template* precondition = new GprsMobileAllocation_template;
    precondition->set_param(*param.get_elem(0));
    GprsMobileAllocation_template* implied_template = new GprsMobileAllocation_template;
    implied_template->set_param(*param.get_elem(1));
    *this = GprsMobileAllocation_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@RLCMAC_CSN1_Types.GprsMobileAllocation");
  }
  is_ifpresent = param.get_ifpresent();
}

void GprsMobileAllocation_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_hsn.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.GprsMobileAllocation");
single_value->field_rfl__number__list__present.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.GprsMobileAllocation");
single_value->field_rfl__number__list.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.GprsMobileAllocation");
single_value->field_ma__present.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.GprsMobileAllocation");
single_value->field_ma__length.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.GprsMobileAllocation");
single_value->field_ma__bitmap.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.GprsMobileAllocation");
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 : "@RLCMAC_CSN1_Types.GprsMobileAllocation");
}

boolean GprsMobileAllocation_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean GprsMobileAllocation_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<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;
}

RflNumberList::RflNumberList()
{
}

RflNumberList::RflNumberList(const INTEGER& par_rfl__number,
    const BITSTRING& par_presence,
    const OPTIONAL< RflNumberList >& par_rfl__number__list)
  :   field_rfl__number(par_rfl__number),
  field_presence(par_presence),
  field_rfl__number__list(par_rfl__number__list)
{
}

RflNumberList::RflNumberList(const RflNumberList& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RLCMAC_CSN1_Types.RflNumberList.");
if (other_value.rfl__number().is_bound()) field_rfl__number = other_value.rfl__number();
else field_rfl__number.clean_up();
if (other_value.presence().is_bound()) field_presence = other_value.presence();
else field_presence.clean_up();
if (other_value.rfl__number__list().is_bound()) field_rfl__number__list = other_value.rfl__number__list();
else field_rfl__number__list.clean_up();
}

void RflNumberList::clean_up()
{
field_rfl__number.clean_up();
field_presence.clean_up();
field_rfl__number__list.clean_up();
}

const TTCN_Typedescriptor_t* RflNumberList::get_descriptor() const { return &RflNumberList_descr_; }
RflNumberList& RflNumberList::operator=(const RflNumberList& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RLCMAC_CSN1_Types.RflNumberList.");
  if (other_value.rfl__number().is_bound()) field_rfl__number = other_value.rfl__number();
  else field_rfl__number.clean_up();
  if (other_value.presence().is_bound()) field_presence = other_value.presence();
  else field_presence.clean_up();
  if (other_value.rfl__number__list().is_bound()) field_rfl__number__list = other_value.rfl__number__list();
  else field_rfl__number__list.clean_up();
}
return *this;
}

boolean RflNumberList::operator==(const RflNumberList& other_value) const
{
return field_rfl__number==other_value.field_rfl__number
  && field_presence==other_value.field_presence
  && field_rfl__number__list==other_value.field_rfl__number__list;
}

boolean RflNumberList::is_bound() const
{
return (field_rfl__number.is_bound())
  || (field_presence.is_bound())
  || (OPTIONAL_OMIT == field_rfl__number__list.get_selection() || field_rfl__number__list.is_bound());
}
boolean RflNumberList::is_value() const
{
return field_rfl__number.is_value()
  && field_presence.is_value()
  && (OPTIONAL_OMIT == field_rfl__number__list.get_selection() || field_rfl__number__list.is_value());
}
int RflNumberList::size_of() const
{
  int ret_val = 2;
  if (field_rfl__number__list.ispresent()) ret_val++;
  return ret_val;
}

void RflNumberList::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ rfl_number := ");
field_rfl__number.log();
TTCN_Logger::log_event_str(", presence := ");
field_presence.log();
TTCN_Logger::log_event_str(", rfl_number_list := ");
field_rfl__number__list.log();
TTCN_Logger::log_event_str(" }");
}

void RflNumberList::set_implicit_omit()
{
if (rfl__number().is_bound()) rfl__number().set_implicit_omit();
if (presence().is_bound()) presence().set_implicit_omit();
if (!rfl__number__list().is_bound()) rfl__number__list() = OMIT_VALUE;
else rfl__number__list().set_implicit_omit();
}

void RflNumberList::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 @RLCMAC_CSN1_Types.RflNumberList 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) rfl__number().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) presence().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) rfl__number__list().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(), "rfl_number")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          rfl__number().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "presence")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          presence().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "rfl_number_list")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          rfl__number__list().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 @RLCMAC_CSN1_Types.RflNumberList: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@RLCMAC_CSN1_Types.RflNumberList");
  }
}

void RflNumberList::encode_text(Text_Buf& text_buf) const
{
field_rfl__number.encode_text(text_buf);
field_presence.encode_text(text_buf);
field_rfl__number__list.encode_text(text_buf);
}

void RflNumberList::decode_text(Text_Buf& text_buf)
{
field_rfl__number.decode_text(text_buf);
field_presence.decode_text(text_buf);
field_rfl__number__list.decode_text(text_buf);
}

void RflNumberList::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void RflNumberList::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int RflNumberList::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, RflNumberList_rfl__number_descr_.raw->forceomit);
  decoded_field_length = field_rfl__number.RAW_decode(RflNumberList_rfl__number_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, RflNumberList_presence_descr_.raw->forceomit);
  decoded_field_length = field_presence.RAW_decode(RflNumberList_presence_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());
  if (limit > 0 && field_presence ==  bs_0){
  if (force_omit != NULL && (*force_omit)(2)) {
    field_rfl__number__list = OMIT_VALUE;
  }
  else {
  size_t fl_start_pos = p_buf.get_pos_bit();
  RAW_Force_Omit field_2_force_omit(2, force_omit, RflNumberList_rfl__number__list_descr_.raw->forceomit);
  decoded_field_length = field_rfl__number__list().RAW_decode(RflNumberList_rfl__number__list_descr_, p_buf, limit, local_top_order, TRUE, -1, TRUE, &field_2_force_omit);
  if (decoded_field_length < 1) {
  field_rfl__number__list = OMIT_VALUE;
  p_buf.set_pos_bit(fl_start_pos);
  } else {
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  }
  }
  }
  else field_rfl__number__list=OMIT_VALUE;
  p_buf.set_pos_bit(last_decoded_pos);
  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
}

int RflNumberList::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, RflNumberList_rfl__number_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, RflNumberList_presence_descr_.raw);
  if (field_rfl__number__list.ispresent()) {
  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, RflNumberList_rfl__number__list_descr_.raw);
  }
  else myleaf.body.node.nodes[2] = NULL;
  encoded_length += field_rfl__number.RAW_encode(RflNumberList_rfl__number_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_presence.RAW_encode(RflNumberList_presence_descr_, *myleaf.body.node.nodes[1]);
  if (field_rfl__number__list.ispresent()) {
  encoded_length += field_rfl__number__list().RAW_encode(RflNumberList_rfl__number__list_descr_, *myleaf.body.node.nodes[2]);
  }
  if (field_rfl__number__list.ispresent() && (field_presence !=  bs_0)) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={1};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   bs_0.RAW_encode(RflNumberList_presence_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);
  }
  }
  return myleaf.length = encoded_length;
}

struct RflNumberList_template::single_value_struct {
INTEGER_template field_rfl__number;
BITSTRING_template field_presence;
RflNumberList_template field_rfl__number__list;
};

void RflNumberList_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_rfl__number = ANY_VALUE;
single_value->field_presence = ANY_VALUE;
single_value->field_rfl__number__list = ANY_OR_OMIT;
}
}
}

void RflNumberList_template::copy_value(const RflNumberList& other_value)
{
single_value = new single_value_struct;
if (other_value.rfl__number().is_bound()) {
  single_value->field_rfl__number = other_value.rfl__number();
} else {
  single_value->field_rfl__number.clean_up();
}
if (other_value.presence().is_bound()) {
  single_value->field_presence = other_value.presence();
} else {
  single_value->field_presence.clean_up();
}
if (other_value.rfl__number__list().is_bound()) {
  if (other_value.rfl__number__list().ispresent()) single_value->field_rfl__number__list = other_value.rfl__number__list()();
  else single_value->field_rfl__number__list = OMIT_VALUE;
} else {
  single_value->field_rfl__number__list.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void RflNumberList_template::copy_template(const RflNumberList_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.rfl__number().get_selection()) {
single_value->field_rfl__number = other_value.rfl__number();
} else {
single_value->field_rfl__number.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.presence().get_selection()) {
single_value->field_presence = other_value.presence();
} else {
single_value->field_presence.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.rfl__number__list().get_selection()) {
single_value->field_rfl__number__list = other_value.rfl__number__list();
} else {
single_value->field_rfl__number__list.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new RflNumberList_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new RflNumberList_template(*other_value.implication_.precondition);
implication_.implied_template = new RflNumberList_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.RflNumberList.");
break;
}
set_selection(other_value);
}

RflNumberList_template::RflNumberList_template()
{
}

RflNumberList_template::RflNumberList_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

RflNumberList_template::RflNumberList_template(const RflNumberList& other_value)
{
copy_value(other_value);
}

RflNumberList_template::RflNumberList_template(const OPTIONAL<RflNumberList>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const RflNumberList&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @RLCMAC_CSN1_Types.RflNumberList from an unbound optional field.");
}
}

RflNumberList_template::RflNumberList_template(RflNumberList_template* p_precondition, RflNumberList_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

RflNumberList_template::RflNumberList_template(Dynamic_Match_Interface<RflNumberList>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<RflNumberList>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

RflNumberList_template::RflNumberList_template(const RflNumberList_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

RflNumberList_template::~RflNumberList_template()
{
clean_up();
}

RflNumberList_template& RflNumberList_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

RflNumberList_template& RflNumberList_template::operator=(const RflNumberList& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

RflNumberList_template& RflNumberList_template::operator=(const OPTIONAL<RflNumberList>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const RflNumberList&)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 @RLCMAC_CSN1_Types.RflNumberList.");
}
return *this;
}

RflNumberList_template& RflNumberList_template::operator=(const RflNumberList_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean RflNumberList_template::match(const RflNumberList& 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.rfl__number().is_bound()) return FALSE;
if(!single_value->field_rfl__number.match(other_value.rfl__number(), legacy))return FALSE;
if(!other_value.presence().is_bound()) return FALSE;
if(!single_value->field_presence.match(other_value.presence(), legacy))return FALSE;
if(!other_value.rfl__number__list().is_bound()) return FALSE;
if((other_value.rfl__number__list().ispresent() ? !single_value->field_rfl__number__list.match((const RflNumberList&)other_value.rfl__number__list(), legacy) : !single_value->field_rfl__number__list.match_omit(legacy)))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.RflNumberList.");
}
return FALSE;
}

boolean RflNumberList_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_rfl__number.is_bound()
 || single_value->field_presence.is_bound()
 || (single_value->field_rfl__number__list.is_omit() || single_value->field_rfl__number__list.is_bound());
}

boolean RflNumberList_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_rfl__number.is_value()
 && single_value->field_presence.is_value()
 && (single_value->field_rfl__number__list.is_omit() || single_value->field_rfl__number__list.is_value());
}

void RflNumberList_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

RflNumberList RflNumberList_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 @RLCMAC_CSN1_Types.RflNumberList.");
RflNumberList ret_val;
if (single_value->field_rfl__number.is_bound()) {
ret_val.rfl__number() = single_value->field_rfl__number.valueof();
}
if (single_value->field_presence.is_bound()) {
ret_val.presence() = single_value->field_presence.valueof();
}
if (single_value->field_rfl__number__list.is_omit()) ret_val.rfl__number__list() = OMIT_VALUE;
else if (single_value->field_rfl__number__list.is_bound()) {
ret_val.rfl__number__list() = single_value->field_rfl__number__list.valueof();
}
return ret_val;
}

void RflNumberList_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @RLCMAC_CSN1_Types.RflNumberList.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new RflNumberList_template[list_length];
}

RflNumberList_template& RflNumberList_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @RLCMAC_CSN1_Types.RflNumberList.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @RLCMAC_CSN1_Types.RflNumberList.");
return value_list.list_value[list_index];
}

INTEGER_template& RflNumberList_template::rfl__number()
{
set_specific();
return single_value->field_rfl__number;
}

const INTEGER_template& RflNumberList_template::rfl__number() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field rfl_number of a non-specific template of type @RLCMAC_CSN1_Types.RflNumberList.");
return single_value->field_rfl__number;
}

BITSTRING_template& RflNumberList_template::presence()
{
set_specific();
return single_value->field_presence;
}

const BITSTRING_template& RflNumberList_template::presence() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field presence of a non-specific template of type @RLCMAC_CSN1_Types.RflNumberList.");
return single_value->field_presence;
}

RflNumberList_template& RflNumberList_template::rfl__number__list()
{
set_specific();
return single_value->field_rfl__number__list;
}

const RflNumberList_template& RflNumberList_template::rfl__number__list() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field rfl_number_list of a non-specific template of type @RLCMAC_CSN1_Types.RflNumberList.");
return single_value->field_rfl__number__list;
}

int RflNumberList_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.RflNumberList which has an ifpresent attribute.");
  switch (template_selection)
  {
  case SPECIFIC_VALUE:
  {    int ret_val = 2;
      if (single_value->field_rfl__number__list.is_present()) ret_val++;
      return ret_val;
    }
  case VALUE_LIST:
   {
     if (value_list.n_values<1)
       TTCN_error("Internal error: Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.RflNumberList 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 @RLCMAC_CSN1_Types.RflNumberList containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.RflNumberList containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.RflNumberList containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.RflNumberList containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.RflNumberList containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.RflNumberList containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.RflNumberList containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.RflNumberList.");
  }
  return 0;
}

void RflNumberList_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ rfl_number := ");
single_value->field_rfl__number.log();
TTCN_Logger::log_event_str(", presence := ");
single_value->field_presence.log();
TTCN_Logger::log_event_str(", rfl_number_list := ");
single_value->field_rfl__number__list.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void RflNumberList_template::log_match(const RflNumberList& 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_rfl__number.match(match_value.rfl__number(), legacy)){
TTCN_Logger::log_logmatch_info(".rfl_number");
single_value->field_rfl__number.log_match(match_value.rfl__number(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_presence.match(match_value.presence(), legacy)){
TTCN_Logger::log_logmatch_info(".presence");
single_value->field_presence.log_match(match_value.presence(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if (match_value.rfl__number__list().ispresent()){
if(!single_value->field_rfl__number__list.match(match_value.rfl__number__list(), legacy)){
TTCN_Logger::log_logmatch_info(".rfl_number_list");
single_value->field_rfl__number__list.log_match(match_value.rfl__number__list(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
} else {
if (!single_value->field_rfl__number__list.match_omit(legacy)){
 TTCN_Logger::log_logmatch_info(".rfl_number_list := omit with ");
TTCN_Logger::print_logmatch_buffer();
single_value->field_rfl__number__list.log();
TTCN_Logger::log_event_str(" unmatched");
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}
}else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE) {
TTCN_Logger::log_event_str("{ rfl_number := ");
single_value->field_rfl__number.log_match(match_value.rfl__number(), legacy);
TTCN_Logger::log_event_str(", presence := ");
single_value->field_presence.log_match(match_value.presence(), legacy);
TTCN_Logger::log_event_str(", rfl_number_list := ");
if (match_value.rfl__number__list().ispresent()) {
single_value->field_rfl__number__list.log_match(match_value.rfl__number__list(), legacy);
} else {
TTCN_Logger::log_event_str("omit with ");
single_value->field_rfl__number__list.log();
if (single_value->field_rfl__number__list.match_omit(legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
TTCN_Logger::log_event_str(" }");
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void RflNumberList_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (rfl__number().is_bound()) rfl__number().set_implicit_omit();
if (presence().is_bound()) presence().set_implicit_omit();
if (!rfl__number__list().is_bound()) rfl__number__list() = OMIT_VALUE;
else rfl__number__list().set_implicit_omit();
}

void RflNumberList_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_rfl__number.encode_text(text_buf);
single_value->field_presence.encode_text(text_buf);
single_value->field_rfl__number__list.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 @RLCMAC_CSN1_Types.RflNumberList.");
}
}

void RflNumberList_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_rfl__number.decode_text(text_buf);
single_value->field_presence.decode_text(text_buf);
single_value->field_rfl__number__list.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 RflNumberList_template[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 @RLCMAC_CSN1_Types.RflNumberList.");
}
}

void RflNumberList_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    RflNumberList_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_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 @RLCMAC_CSN1_Types.RflNumberList 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) rfl__number().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) presence().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) rfl__number__list().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(), "rfl_number")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          rfl__number().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "presence")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          presence().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "rfl_number_list")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          rfl__number__list().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 @RLCMAC_CSN1_Types.RflNumberList: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    RflNumberList_template* precondition = new RflNumberList_template;
    precondition->set_param(*param.get_elem(0));
    RflNumberList_template* implied_template = new RflNumberList_template;
    implied_template->set_param(*param.get_elem(1));
    *this = RflNumberList_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@RLCMAC_CSN1_Types.RflNumberList");
  }
  is_ifpresent = param.get_ifpresent();
}

void RflNumberList_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_rfl__number.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.RflNumberList");
single_value->field_presence.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.RflNumberList");
single_value->field_rfl__number__list.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.RflNumberList");
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 : "@RLCMAC_CSN1_Types.RflNumberList");
}

boolean RflNumberList_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean RflNumberList_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<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;
}

FreqDirect1::FreqDirect1()
{
}

FreqDirect1::FreqDirect1(const INTEGER& par_maio,
    const GprsMobileAllocation& par_mobile__allocation)
  :   field_maio(par_maio),
  field_mobile__allocation(par_mobile__allocation)
{
}

FreqDirect1::FreqDirect1(const FreqDirect1& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RLCMAC_CSN1_Types.FreqDirect1.");
if (other_value.maio().is_bound()) field_maio = other_value.maio();
else field_maio.clean_up();
if (other_value.mobile__allocation().is_bound()) field_mobile__allocation = other_value.mobile__allocation();
else field_mobile__allocation.clean_up();
}

void FreqDirect1::clean_up()
{
field_maio.clean_up();
field_mobile__allocation.clean_up();
}

const TTCN_Typedescriptor_t* FreqDirect1::get_descriptor() const { return &FreqDirect1_descr_; }
FreqDirect1& FreqDirect1::operator=(const FreqDirect1& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RLCMAC_CSN1_Types.FreqDirect1.");
  if (other_value.maio().is_bound()) field_maio = other_value.maio();
  else field_maio.clean_up();
  if (other_value.mobile__allocation().is_bound()) field_mobile__allocation = other_value.mobile__allocation();
  else field_mobile__allocation.clean_up();
}
return *this;
}

boolean FreqDirect1::operator==(const FreqDirect1& other_value) const
{
return field_maio==other_value.field_maio
  && field_mobile__allocation==other_value.field_mobile__allocation;
}

boolean FreqDirect1::is_bound() const
{
return (field_maio.is_bound())
  || (field_mobile__allocation.is_bound());
}
boolean FreqDirect1::is_value() const
{
return field_maio.is_value()
  && field_mobile__allocation.is_value();
}
void FreqDirect1::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ maio := ");
field_maio.log();
TTCN_Logger::log_event_str(", mobile_allocation := ");
field_mobile__allocation.log();
TTCN_Logger::log_event_str(" }");
}

void FreqDirect1::set_implicit_omit()
{
if (maio().is_bound()) maio().set_implicit_omit();
if (mobile__allocation().is_bound()) mobile__allocation().set_implicit_omit();
}

void FreqDirect1::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 @RLCMAC_CSN1_Types.FreqDirect1 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) maio().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) mobile__allocation().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(), "maio")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          maio().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mobile_allocation")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mobile__allocation().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 @RLCMAC_CSN1_Types.FreqDirect1: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@RLCMAC_CSN1_Types.FreqDirect1");
  }
}

void FreqDirect1::encode_text(Text_Buf& text_buf) const
{
field_maio.encode_text(text_buf);
field_mobile__allocation.encode_text(text_buf);
}

void FreqDirect1::decode_text(Text_Buf& text_buf)
{
field_maio.decode_text(text_buf);
field_mobile__allocation.decode_text(text_buf);
}

void FreqDirect1::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void FreqDirect1::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int FreqDirect1::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, FreqDirect1_maio_descr_.raw->forceomit);
  decoded_field_length = field_maio.RAW_decode(FreqDirect1_maio_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, FreqDirect1_mobile__allocation_descr_.raw->forceomit);
  decoded_field_length = field_mobile__allocation.RAW_decode(FreqDirect1_mobile__allocation_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 FreqDirect1::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, FreqDirect1_maio_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, FreqDirect1_mobile__allocation_descr_.raw);
  encoded_length += field_maio.RAW_encode(FreqDirect1_maio_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_mobile__allocation.RAW_encode(FreqDirect1_mobile__allocation_descr_, *myleaf.body.node.nodes[1]);
  return myleaf.length = encoded_length;
}

struct FreqDirect1_template::single_value_struct {
INTEGER_template field_maio;
GprsMobileAllocation_template field_mobile__allocation;
};

void FreqDirect1_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_maio = ANY_VALUE;
single_value->field_mobile__allocation = ANY_VALUE;
}
}
}

void FreqDirect1_template::copy_value(const FreqDirect1& other_value)
{
single_value = new single_value_struct;
if (other_value.maio().is_bound()) {
  single_value->field_maio = other_value.maio();
} else {
  single_value->field_maio.clean_up();
}
if (other_value.mobile__allocation().is_bound()) {
  single_value->field_mobile__allocation = other_value.mobile__allocation();
} else {
  single_value->field_mobile__allocation.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void FreqDirect1_template::copy_template(const FreqDirect1_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.maio().get_selection()) {
single_value->field_maio = other_value.maio();
} else {
single_value->field_maio.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.mobile__allocation().get_selection()) {
single_value->field_mobile__allocation = other_value.mobile__allocation();
} else {
single_value->field_mobile__allocation.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new FreqDirect1_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new FreqDirect1_template(*other_value.implication_.precondition);
implication_.implied_template = new FreqDirect1_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.FreqDirect1.");
break;
}
set_selection(other_value);
}

FreqDirect1_template::FreqDirect1_template()
{
}

FreqDirect1_template::FreqDirect1_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

FreqDirect1_template::FreqDirect1_template(const FreqDirect1& other_value)
{
copy_value(other_value);
}

FreqDirect1_template::FreqDirect1_template(const OPTIONAL<FreqDirect1>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const FreqDirect1&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @RLCMAC_CSN1_Types.FreqDirect1 from an unbound optional field.");
}
}

FreqDirect1_template::FreqDirect1_template(FreqDirect1_template* p_precondition, FreqDirect1_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

FreqDirect1_template::FreqDirect1_template(Dynamic_Match_Interface<FreqDirect1>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<FreqDirect1>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

FreqDirect1_template::FreqDirect1_template(const FreqDirect1_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

FreqDirect1_template::~FreqDirect1_template()
{
clean_up();
}

FreqDirect1_template& FreqDirect1_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

FreqDirect1_template& FreqDirect1_template::operator=(const FreqDirect1& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

FreqDirect1_template& FreqDirect1_template::operator=(const OPTIONAL<FreqDirect1>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const FreqDirect1&)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 @RLCMAC_CSN1_Types.FreqDirect1.");
}
return *this;
}

FreqDirect1_template& FreqDirect1_template::operator=(const FreqDirect1_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean FreqDirect1_template::match(const FreqDirect1& 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.maio().is_bound()) return FALSE;
if(!single_value->field_maio.match(other_value.maio(), legacy))return FALSE;
if(!other_value.mobile__allocation().is_bound()) return FALSE;
if(!single_value->field_mobile__allocation.match(other_value.mobile__allocation(), legacy))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.FreqDirect1.");
}
return FALSE;
}

boolean FreqDirect1_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_maio.is_bound()
 || single_value->field_mobile__allocation.is_bound();
}

boolean FreqDirect1_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_maio.is_value()
 && single_value->field_mobile__allocation.is_value();
}

void FreqDirect1_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

FreqDirect1 FreqDirect1_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 @RLCMAC_CSN1_Types.FreqDirect1.");
FreqDirect1 ret_val;
if (single_value->field_maio.is_bound()) {
ret_val.maio() = single_value->field_maio.valueof();
}
if (single_value->field_mobile__allocation.is_bound()) {
ret_val.mobile__allocation() = single_value->field_mobile__allocation.valueof();
}
return ret_val;
}

void FreqDirect1_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @RLCMAC_CSN1_Types.FreqDirect1.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new FreqDirect1_template[list_length];
}

FreqDirect1_template& FreqDirect1_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @RLCMAC_CSN1_Types.FreqDirect1.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @RLCMAC_CSN1_Types.FreqDirect1.");
return value_list.list_value[list_index];
}

INTEGER_template& FreqDirect1_template::maio()
{
set_specific();
return single_value->field_maio;
}

const INTEGER_template& FreqDirect1_template::maio() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field maio of a non-specific template of type @RLCMAC_CSN1_Types.FreqDirect1.");
return single_value->field_maio;
}

GprsMobileAllocation_template& FreqDirect1_template::mobile__allocation()
{
set_specific();
return single_value->field_mobile__allocation;
}

const GprsMobileAllocation_template& FreqDirect1_template::mobile__allocation() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field mobile_allocation of a non-specific template of type @RLCMAC_CSN1_Types.FreqDirect1.");
return single_value->field_mobile__allocation;
}

int FreqDirect1_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.FreqDirect1 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 @RLCMAC_CSN1_Types.FreqDirect1 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 @RLCMAC_CSN1_Types.FreqDirect1 containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.FreqDirect1 containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.FreqDirect1 containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.FreqDirect1 containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.FreqDirect1 containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.FreqDirect1 containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.FreqDirect1 containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.FreqDirect1.");
  }
  return 0;
}

void FreqDirect1_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ maio := ");
single_value->field_maio.log();
TTCN_Logger::log_event_str(", mobile_allocation := ");
single_value->field_mobile__allocation.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void FreqDirect1_template::log_match(const FreqDirect1& 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_maio.match(match_value.maio(), legacy)){
TTCN_Logger::log_logmatch_info(".maio");
single_value->field_maio.log_match(match_value.maio(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_mobile__allocation.match(match_value.mobile__allocation(), legacy)){
TTCN_Logger::log_logmatch_info(".mobile_allocation");
single_value->field_mobile__allocation.log_match(match_value.mobile__allocation(), 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("{ maio := ");
single_value->field_maio.log_match(match_value.maio(), legacy);
TTCN_Logger::log_event_str(", mobile_allocation := ");
single_value->field_mobile__allocation.log_match(match_value.mobile__allocation(), 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 FreqDirect1_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (maio().is_bound()) maio().set_implicit_omit();
if (mobile__allocation().is_bound()) mobile__allocation().set_implicit_omit();
}

void FreqDirect1_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_maio.encode_text(text_buf);
single_value->field_mobile__allocation.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 @RLCMAC_CSN1_Types.FreqDirect1.");
}
}

void FreqDirect1_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_maio.decode_text(text_buf);
single_value->field_mobile__allocation.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 FreqDirect1_template[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 @RLCMAC_CSN1_Types.FreqDirect1.");
}
}

void FreqDirect1_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    FreqDirect1_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_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 @RLCMAC_CSN1_Types.FreqDirect1 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) maio().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) mobile__allocation().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(), "maio")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          maio().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mobile_allocation")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mobile__allocation().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 @RLCMAC_CSN1_Types.FreqDirect1: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    FreqDirect1_template* precondition = new FreqDirect1_template;
    precondition->set_param(*param.get_elem(0));
    FreqDirect1_template* implied_template = new FreqDirect1_template;
    implied_template->set_param(*param.get_elem(1));
    *this = FreqDirect1_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@RLCMAC_CSN1_Types.FreqDirect1");
  }
  is_ifpresent = param.get_ifpresent();
}

void FreqDirect1_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_maio.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.FreqDirect1");
single_value->field_mobile__allocation.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.FreqDirect1");
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 : "@RLCMAC_CSN1_Types.FreqDirect1");
}

boolean FreqDirect1_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean FreqDirect1_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<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;
}

FreqDirect2::FreqDirect2()
{
}

FreqDirect2::FreqDirect2(const INTEGER& par_maio,
    const INTEGER& par_hsn,
    const INTEGER& par_ma__freq__len,
    const OCTETSTRING& par_m1__freq__list)
  :   field_maio(par_maio),
  field_hsn(par_hsn),
  field_ma__freq__len(par_ma__freq__len),
  field_m1__freq__list(par_m1__freq__list)
{
}

FreqDirect2::FreqDirect2(const FreqDirect2& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RLCMAC_CSN1_Types.FreqDirect2.");
if (other_value.maio().is_bound()) field_maio = other_value.maio();
else field_maio.clean_up();
if (other_value.hsn().is_bound()) field_hsn = other_value.hsn();
else field_hsn.clean_up();
if (other_value.ma__freq__len().is_bound()) field_ma__freq__len = other_value.ma__freq__len();
else field_ma__freq__len.clean_up();
if (other_value.m1__freq__list().is_bound()) field_m1__freq__list = other_value.m1__freq__list();
else field_m1__freq__list.clean_up();
}

void FreqDirect2::clean_up()
{
field_maio.clean_up();
field_hsn.clean_up();
field_ma__freq__len.clean_up();
field_m1__freq__list.clean_up();
}

const TTCN_Typedescriptor_t* FreqDirect2::get_descriptor() const { return &FreqDirect2_descr_; }
FreqDirect2& FreqDirect2::operator=(const FreqDirect2& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RLCMAC_CSN1_Types.FreqDirect2.");
  if (other_value.maio().is_bound()) field_maio = other_value.maio();
  else field_maio.clean_up();
  if (other_value.hsn().is_bound()) field_hsn = other_value.hsn();
  else field_hsn.clean_up();
  if (other_value.ma__freq__len().is_bound()) field_ma__freq__len = other_value.ma__freq__len();
  else field_ma__freq__len.clean_up();
  if (other_value.m1__freq__list().is_bound()) field_m1__freq__list = other_value.m1__freq__list();
  else field_m1__freq__list.clean_up();
}
return *this;
}

boolean FreqDirect2::operator==(const FreqDirect2& other_value) const
{
return field_maio==other_value.field_maio
  && field_hsn==other_value.field_hsn
  && field_ma__freq__len==other_value.field_ma__freq__len
  && field_m1__freq__list==other_value.field_m1__freq__list;
}

boolean FreqDirect2::is_bound() const
{
return (field_maio.is_bound())
  || (field_hsn.is_bound())
  || (field_ma__freq__len.is_bound())
  || (field_m1__freq__list.is_bound());
}
boolean FreqDirect2::is_value() const
{
return field_maio.is_value()
  && field_hsn.is_value()
  && field_ma__freq__len.is_value()
  && field_m1__freq__list.is_value();
}
void FreqDirect2::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ maio := ");
field_maio.log();
TTCN_Logger::log_event_str(", hsn := ");
field_hsn.log();
TTCN_Logger::log_event_str(", ma_freq_len := ");
field_ma__freq__len.log();
TTCN_Logger::log_event_str(", m1_freq_list := ");
field_m1__freq__list.log();
TTCN_Logger::log_event_str(" }");
}

void FreqDirect2::set_implicit_omit()
{
if (maio().is_bound()) maio().set_implicit_omit();
if (hsn().is_bound()) hsn().set_implicit_omit();
if (ma__freq__len().is_bound()) ma__freq__len().set_implicit_omit();
if (m1__freq__list().is_bound()) m1__freq__list().set_implicit_omit();
}

void FreqDirect2::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 @RLCMAC_CSN1_Types.FreqDirect2 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) maio().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) hsn().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) ma__freq__len().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) m1__freq__list().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(), "maio")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          maio().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "hsn")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          hsn().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ma_freq_len")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ma__freq__len().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "m1_freq_list")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          m1__freq__list().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 @RLCMAC_CSN1_Types.FreqDirect2: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@RLCMAC_CSN1_Types.FreqDirect2");
  }
}

void FreqDirect2::encode_text(Text_Buf& text_buf) const
{
field_maio.encode_text(text_buf);
field_hsn.encode_text(text_buf);
field_ma__freq__len.encode_text(text_buf);
field_m1__freq__list.encode_text(text_buf);
}

void FreqDirect2::decode_text(Text_Buf& text_buf)
{
field_maio.decode_text(text_buf);
field_hsn.decode_text(text_buf);
field_ma__freq__len.decode_text(text_buf);
field_m1__freq__list.decode_text(text_buf);
}

void FreqDirect2::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void FreqDirect2::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int FreqDirect2::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, FreqDirect2_maio_descr_.raw->forceomit);
  decoded_field_length = field_maio.RAW_decode(FreqDirect2_maio_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, FreqDirect2_hsn_descr_.raw->forceomit);
  decoded_field_length = field_hsn.RAW_decode(FreqDirect2_hsn_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, FreqDirect2_ma__freq__len_descr_.raw->forceomit);
  decoded_field_length = field_ma__freq__len.RAW_decode(FreqDirect2_ma__freq__len_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());
  INTEGER tmp2 = field_ma__freq__len.convert_to_Integer(FreqDirect2_ma__freq__len_descr_);
  tmp2 = tmp2 - 3;
  field_ma__freq__len = tmp2;
  value_of_length_field2 += tmp2.get_long_long_val() * 8;
  RAW_Force_Omit field_3_force_omit(3, force_omit, FreqDirect2_m1__freq__list_descr_.raw->forceomit);
  decoded_field_length = field_m1__freq__list.RAW_decode(FreqDirect2_m1__freq__list_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), 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());
  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 FreqDirect2::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, FreqDirect2_maio_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, FreqDirect2_hsn_descr_.raw);
  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, FreqDirect2_ma__freq__len_descr_.raw);
  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, FreqDirect2_m1__freq__list_descr_.raw);
  encoded_length += field_maio.RAW_encode(FreqDirect2_maio_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_hsn.RAW_encode(FreqDirect2_hsn_descr_, *myleaf.body.node.nodes[1]);
  encoded_length += 4;
  myleaf.body.node.nodes[2]->calc = CALC_LENGTH;
  myleaf.body.node.nodes[2]->coding_descr = &FreqDirect2_ma__freq__len_descr_;
  myleaf.body.node.nodes[2]->calcof.lengthto.num_of_fields = 1;
  myleaf.body.node.nodes[2]->calcof.lengthto.unit = 8;
  myleaf.body.node.nodes[2]->calcof.lengthto.offset = 3;
  myleaf.body.node.nodes[2]->calcof.lengthto.fields = init_lengthto_fields_list(1);
  myleaf.body.node.nodes[2]->length = 4;
  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_m1__freq__list.RAW_encode(FreqDirect2_m1__freq__list_descr_, *myleaf.body.node.nodes[3]);
  return myleaf.length = encoded_length;
}

struct FreqDirect2_template::single_value_struct {
INTEGER_template field_maio;
INTEGER_template field_hsn;
INTEGER_template field_ma__freq__len;
OCTETSTRING_template field_m1__freq__list;
};

void FreqDirect2_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_maio = ANY_VALUE;
single_value->field_hsn = ANY_VALUE;
single_value->field_ma__freq__len = ANY_VALUE;
single_value->field_m1__freq__list = ANY_VALUE;
}
}
}

void FreqDirect2_template::copy_value(const FreqDirect2& other_value)
{
single_value = new single_value_struct;
if (other_value.maio().is_bound()) {
  single_value->field_maio = other_value.maio();
} else {
  single_value->field_maio.clean_up();
}
if (other_value.hsn().is_bound()) {
  single_value->field_hsn = other_value.hsn();
} else {
  single_value->field_hsn.clean_up();
}
if (other_value.ma__freq__len().is_bound()) {
  single_value->field_ma__freq__len = other_value.ma__freq__len();
} else {
  single_value->field_ma__freq__len.clean_up();
}
if (other_value.m1__freq__list().is_bound()) {
  single_value->field_m1__freq__list = other_value.m1__freq__list();
} else {
  single_value->field_m1__freq__list.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void FreqDirect2_template::copy_template(const FreqDirect2_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.maio().get_selection()) {
single_value->field_maio = other_value.maio();
} else {
single_value->field_maio.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.hsn().get_selection()) {
single_value->field_hsn = other_value.hsn();
} else {
single_value->field_hsn.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.ma__freq__len().get_selection()) {
single_value->field_ma__freq__len = other_value.ma__freq__len();
} else {
single_value->field_ma__freq__len.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.m1__freq__list().get_selection()) {
single_value->field_m1__freq__list = other_value.m1__freq__list();
} else {
single_value->field_m1__freq__list.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new FreqDirect2_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new FreqDirect2_template(*other_value.implication_.precondition);
implication_.implied_template = new FreqDirect2_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.FreqDirect2.");
break;
}
set_selection(other_value);
}

FreqDirect2_template::FreqDirect2_template()
{
}

FreqDirect2_template::FreqDirect2_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

FreqDirect2_template::FreqDirect2_template(const FreqDirect2& other_value)
{
copy_value(other_value);
}

FreqDirect2_template::FreqDirect2_template(const OPTIONAL<FreqDirect2>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const FreqDirect2&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @RLCMAC_CSN1_Types.FreqDirect2 from an unbound optional field.");
}
}

FreqDirect2_template::FreqDirect2_template(FreqDirect2_template* p_precondition, FreqDirect2_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

FreqDirect2_template::FreqDirect2_template(Dynamic_Match_Interface<FreqDirect2>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<FreqDirect2>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

FreqDirect2_template::FreqDirect2_template(const FreqDirect2_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

FreqDirect2_template::~FreqDirect2_template()
{
clean_up();
}

FreqDirect2_template& FreqDirect2_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

FreqDirect2_template& FreqDirect2_template::operator=(const FreqDirect2& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

FreqDirect2_template& FreqDirect2_template::operator=(const OPTIONAL<FreqDirect2>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const FreqDirect2&)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 @RLCMAC_CSN1_Types.FreqDirect2.");
}
return *this;
}

FreqDirect2_template& FreqDirect2_template::operator=(const FreqDirect2_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean FreqDirect2_template::match(const FreqDirect2& 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.maio().is_bound()) return FALSE;
if(!single_value->field_maio.match(other_value.maio(), legacy))return FALSE;
if(!other_value.hsn().is_bound()) return FALSE;
if(!single_value->field_hsn.match(other_value.hsn(), legacy))return FALSE;
if(!other_value.ma__freq__len().is_bound()) return FALSE;
if(!single_value->field_ma__freq__len.match(other_value.ma__freq__len(), legacy))return FALSE;
if(!other_value.m1__freq__list().is_bound()) return FALSE;
if(!single_value->field_m1__freq__list.match(other_value.m1__freq__list(), legacy))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.FreqDirect2.");
}
return FALSE;
}

boolean FreqDirect2_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_maio.is_bound()
 || single_value->field_hsn.is_bound()
 || single_value->field_ma__freq__len.is_bound()
 || single_value->field_m1__freq__list.is_bound();
}

boolean FreqDirect2_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_maio.is_value()
 && single_value->field_hsn.is_value()
 && single_value->field_ma__freq__len.is_value()
 && single_value->field_m1__freq__list.is_value();
}

void FreqDirect2_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

FreqDirect2 FreqDirect2_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 @RLCMAC_CSN1_Types.FreqDirect2.");
FreqDirect2 ret_val;
if (single_value->field_maio.is_bound()) {
ret_val.maio() = single_value->field_maio.valueof();
}
if (single_value->field_hsn.is_bound()) {
ret_val.hsn() = single_value->field_hsn.valueof();
}
if (single_value->field_ma__freq__len.is_bound()) {
ret_val.ma__freq__len() = single_value->field_ma__freq__len.valueof();
}
if (single_value->field_m1__freq__list.is_bound()) {
ret_val.m1__freq__list() = single_value->field_m1__freq__list.valueof();
}
return ret_val;
}

void FreqDirect2_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @RLCMAC_CSN1_Types.FreqDirect2.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new FreqDirect2_template[list_length];
}

FreqDirect2_template& FreqDirect2_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @RLCMAC_CSN1_Types.FreqDirect2.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @RLCMAC_CSN1_Types.FreqDirect2.");
return value_list.list_value[list_index];
}

INTEGER_template& FreqDirect2_template::maio()
{
set_specific();
return single_value->field_maio;
}

const INTEGER_template& FreqDirect2_template::maio() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field maio of a non-specific template of type @RLCMAC_CSN1_Types.FreqDirect2.");
return single_value->field_maio;
}

INTEGER_template& FreqDirect2_template::hsn()
{
set_specific();
return single_value->field_hsn;
}

const INTEGER_template& FreqDirect2_template::hsn() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field hsn of a non-specific template of type @RLCMAC_CSN1_Types.FreqDirect2.");
return single_value->field_hsn;
}

INTEGER_template& FreqDirect2_template::ma__freq__len()
{
set_specific();
return single_value->field_ma__freq__len;
}

const INTEGER_template& FreqDirect2_template::ma__freq__len() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field ma_freq_len of a non-specific template of type @RLCMAC_CSN1_Types.FreqDirect2.");
return single_value->field_ma__freq__len;
}

OCTETSTRING_template& FreqDirect2_template::m1__freq__list()
{
set_specific();
return single_value->field_m1__freq__list;
}

const OCTETSTRING_template& FreqDirect2_template::m1__freq__list() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field m1_freq_list of a non-specific template of type @RLCMAC_CSN1_Types.FreqDirect2.");
return single_value->field_m1__freq__list;
}

int FreqDirect2_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.FreqDirect2 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 @RLCMAC_CSN1_Types.FreqDirect2 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 @RLCMAC_CSN1_Types.FreqDirect2 containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.FreqDirect2 containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.FreqDirect2 containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.FreqDirect2 containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.FreqDirect2 containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.FreqDirect2 containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.FreqDirect2 containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.FreqDirect2.");
  }
  return 0;
}

void FreqDirect2_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ maio := ");
single_value->field_maio.log();
TTCN_Logger::log_event_str(", hsn := ");
single_value->field_hsn.log();
TTCN_Logger::log_event_str(", ma_freq_len := ");
single_value->field_ma__freq__len.log();
TTCN_Logger::log_event_str(", m1_freq_list := ");
single_value->field_m1__freq__list.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void FreqDirect2_template::log_match(const FreqDirect2& 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_maio.match(match_value.maio(), legacy)){
TTCN_Logger::log_logmatch_info(".maio");
single_value->field_maio.log_match(match_value.maio(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_hsn.match(match_value.hsn(), legacy)){
TTCN_Logger::log_logmatch_info(".hsn");
single_value->field_hsn.log_match(match_value.hsn(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_ma__freq__len.match(match_value.ma__freq__len(), legacy)){
TTCN_Logger::log_logmatch_info(".ma_freq_len");
single_value->field_ma__freq__len.log_match(match_value.ma__freq__len(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_m1__freq__list.match(match_value.m1__freq__list(), legacy)){
TTCN_Logger::log_logmatch_info(".m1_freq_list");
single_value->field_m1__freq__list.log_match(match_value.m1__freq__list(), 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("{ maio := ");
single_value->field_maio.log_match(match_value.maio(), legacy);
TTCN_Logger::log_event_str(", hsn := ");
single_value->field_hsn.log_match(match_value.hsn(), legacy);
TTCN_Logger::log_event_str(", ma_freq_len := ");
single_value->field_ma__freq__len.log_match(match_value.ma__freq__len(), legacy);
TTCN_Logger::log_event_str(", m1_freq_list := ");
single_value->field_m1__freq__list.log_match(match_value.m1__freq__list(), 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 FreqDirect2_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (maio().is_bound()) maio().set_implicit_omit();
if (hsn().is_bound()) hsn().set_implicit_omit();
if (ma__freq__len().is_bound()) ma__freq__len().set_implicit_omit();
if (m1__freq__list().is_bound()) m1__freq__list().set_implicit_omit();
}

void FreqDirect2_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_maio.encode_text(text_buf);
single_value->field_hsn.encode_text(text_buf);
single_value->field_ma__freq__len.encode_text(text_buf);
single_value->field_m1__freq__list.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 @RLCMAC_CSN1_Types.FreqDirect2.");
}
}

void FreqDirect2_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_maio.decode_text(text_buf);
single_value->field_hsn.decode_text(text_buf);
single_value->field_ma__freq__len.decode_text(text_buf);
single_value->field_m1__freq__list.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 FreqDirect2_template[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 @RLCMAC_CSN1_Types.FreqDirect2.");
}
}

void FreqDirect2_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    FreqDirect2_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_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 @RLCMAC_CSN1_Types.FreqDirect2 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) maio().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) hsn().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) ma__freq__len().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) m1__freq__list().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(), "maio")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          maio().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "hsn")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          hsn().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ma_freq_len")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ma__freq__len().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "m1_freq_list")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          m1__freq__list().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 @RLCMAC_CSN1_Types.FreqDirect2: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    FreqDirect2_template* precondition = new FreqDirect2_template;
    precondition->set_param(*param.get_elem(0));
    FreqDirect2_template* implied_template = new FreqDirect2_template;
    implied_template->set_param(*param.get_elem(1));
    *this = FreqDirect2_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@RLCMAC_CSN1_Types.FreqDirect2");
  }
  is_ifpresent = param.get_ifpresent();
}

void FreqDirect2_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_maio.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.FreqDirect2");
single_value->field_hsn.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.FreqDirect2");
single_value->field_ma__freq__len.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.FreqDirect2");
single_value->field_m1__freq__list.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.FreqDirect2");
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 : "@RLCMAC_CSN1_Types.FreqDirect2");
}

boolean FreqDirect2_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean FreqDirect2_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<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 ZeroOneGamma ZeroOneGammas::UNBOUND_ELEM;
ZeroOneGammas::ZeroOneGammas()
{
val_ptr = NULL;
}

ZeroOneGammas::ZeroOneGammas(null_type)
{
val_ptr = new recordof_setof_struct;
val_ptr->ref_count = 1;
val_ptr->n_elements = 0;
val_ptr->value_elements = NULL;
}

ZeroOneGammas::ZeroOneGammas(const ZeroOneGammas& other_value)
{
if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RLCMAC_CSN1_Types.ZeroOneGammas.");
val_ptr = other_value.val_ptr;
val_ptr->ref_count++;
}

ZeroOneGammas::~ZeroOneGammas()
{
clean_up();
if (val_ptr != NULL) val_ptr = NULL;
}

void ZeroOneGammas::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.");
}
}

ZeroOneGammas& ZeroOneGammas::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;
}

ZeroOneGammas& ZeroOneGammas::operator=(const ZeroOneGammas& other_value)
{
if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @RLCMAC_CSN1_Types.ZeroOneGammas.");
if (this != &other_value) {
clean_up();
val_ptr = other_value.val_ptr;
val_ptr->ref_count++;
}
return *this;
}

boolean ZeroOneGammas::operator==(null_type) const
{
if (val_ptr == NULL)
TTCN_error("The left operand of comparison is an unbound value of type @RLCMAC_CSN1_Types.ZeroOneGammas.");
return val_ptr->n_elements == 0 ;
}

boolean ZeroOneGammas::operator==(const ZeroOneGammas& other_value) const
{
if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RLCMAC_CSN1_Types.ZeroOneGammas.");
if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @RLCMAC_CSN1_Types.ZeroOneGammas.");
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;
}

ZeroOneGamma& ZeroOneGammas::operator[](int index_value)
{
if (index_value < 0) TTCN_error("Accessing an element of type @RLCMAC_CSN1_Types.ZeroOneGammas 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 = (ZeroOneGamma**)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 ZeroOneGamma(*(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 ZeroOneGamma;
}
return *val_ptr->value_elements[index_value];
}

ZeroOneGamma& ZeroOneGammas::operator[](const INTEGER& index_value)
{
index_value.must_bound("Using an unbound integer value for indexing a value of type @RLCMAC_CSN1_Types.ZeroOneGammas.");
return (*this)[(int)index_value];
}

const ZeroOneGamma& ZeroOneGammas::operator[](int index_value) const
{
if (val_ptr == NULL)
TTCN_error("Accessing an element in an unbound value of type @RLCMAC_CSN1_Types.ZeroOneGammas.");
if (index_value < 0) TTCN_error("Accessing an element of type @RLCMAC_CSN1_Types.ZeroOneGammas using a negative index: %d.", index_value);
if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @RLCMAC_CSN1_Types.ZeroOneGammas: 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 ZeroOneGamma& ZeroOneGammas::operator[](const INTEGER& index_value) const
{
index_value.must_bound("Using an unbound integer value for indexing a value of type @RLCMAC_CSN1_Types.ZeroOneGammas.");
return (*this)[(int)index_value];
}

ZeroOneGammas ZeroOneGammas::operator<<=(int rotate_count) const
{
return *this >>= (-rotate_count);
}

ZeroOneGammas ZeroOneGammas::operator<<=(const INTEGER& rotate_count) const
{
rotate_count.must_bound("Unbound integer operand of rotate left operator.");
return *this >>= (int)(-rotate_count);
}

ZeroOneGammas ZeroOneGammas::operator>>=(const INTEGER& rotate_count) const
{
rotate_count.must_bound("Unbound integer operand of rotate right operator.");
return *this >>= (int)rotate_count;
}

ZeroOneGammas ZeroOneGammas::operator>>=(int rotate_count) const
{
if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @RLCMAC_CSN1_Types.ZeroOneGammas.");
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;
ZeroOneGammas 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 ZeroOneGamma(*val_ptr->value_elements[i]);
}
}
return ret_val;
}

ZeroOneGammas ZeroOneGammas::operator+(const ZeroOneGammas& other_value) const
{
if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @RLCMAC_CSN1_Types.ZeroOneGammas concatenation.");
if (val_ptr->n_elements == 0) return other_value;
if (other_value.val_ptr->n_elements == 0) return *this;
ZeroOneGammas 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 ZeroOneGamma(*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 ZeroOneGamma(*other_value.val_ptr->value_elements[i]);
}
}
return ret_val;
}

ZeroOneGammas ZeroOneGammas::substr(int index, int returncount) const
{
if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @RLCMAC_CSN1_Types.ZeroOneGammas.");
check_substr_arguments(val_ptr->n_elements, index, returncount, "@RLCMAC_CSN1_Types.ZeroOneGammas","element");
ZeroOneGammas 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 ZeroOneGamma(*val_ptr->value_elements[i+index]);
}
}
return ret_val;
}

ZeroOneGammas ZeroOneGammas::replace(int index, int len, const ZeroOneGammas& repl) const
{
if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @RLCMAC_CSN1_Types.ZeroOneGammas.");
if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @RLCMAC_CSN1_Types.ZeroOneGammas.");
check_replace_arguments(val_ptr->n_elements, index, len, "@RLCMAC_CSN1_Types.ZeroOneGammas","element");
ZeroOneGammas 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 ZeroOneGamma(*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 ZeroOneGamma(*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 ZeroOneGamma(*val_ptr->value_elements[index+i+len]);
}
}
return ret_val;
}

ZeroOneGammas ZeroOneGammas::replace(int index, int len, const ZeroOneGammas_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 ZeroOneGammas::set_size(int new_size)
{
if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @RLCMAC_CSN1_Types.ZeroOneGammas.");
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 = (ZeroOneGamma**)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 ZeroOneGamma(*(val_ptr->value_elements[elem_count]));
}
}
clean_up();
val_ptr = new_val_ptr;
}
if (new_size > val_ptr->n_elements) {
val_ptr->value_elements = (ZeroOneGamma**)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 @RLCMAC_CSN1_Types.ZeroOneGammas: %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 = (ZeroOneGamma**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size);
val_ptr->n_elements = new_size;
}
}

boolean ZeroOneGammas::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 ZeroOneGammas::size_of() const
{
if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @RLCMAC_CSN1_Types.ZeroOneGammas.");
return val_ptr->n_elements;
}

int ZeroOneGammas::lengthof() const
{
if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @RLCMAC_CSN1_Types.ZeroOneGammas.");
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 ZeroOneGammas::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 ZeroOneGammas::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 ZeroOneGammas::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", "@RLCMAC_CSN1_Types.ZeroOneGammas");
    }
    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", "@RLCMAC_CSN1_Types.ZeroOneGammas");
    }
    break;
  default:
    TTCN_error("Internal error: Unknown operation type.");
  }
}

void ZeroOneGammas::encode_text(Text_Buf& text_buf) const
{
if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @RLCMAC_CSN1_Types.ZeroOneGammas.");
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 ZeroOneGammas::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 @RLCMAC_CSN1_Types.ZeroOneGammas.");
val_ptr->value_elements = (ZeroOneGamma**)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 ZeroOneGamma;
val_ptr->value_elements[elem_count]->decode_text(text_buf);
}
}

void ZeroOneGammas::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void ZeroOneGammas::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int ZeroOneGammas::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;
    start_of_field=p_buf.get_pos_bit();
    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){
        while(a>=0){
          delete &(*this)[a+start_field];
          a--;
          val_ptr->n_elements--;
        }
        p_buf.set_pos_bit(start_of_field);
        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 ZeroOneGammas::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 ZeroOneGammas_template::copy_value(const ZeroOneGammas& other_value)
{
if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @RLCMAC_CSN1_Types.ZeroOneGammas with an unbound value.");
single_value.n_elements = other_value.size_of();
single_value.value_elements = (ZeroOneGamma_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 ZeroOneGamma_template(other_value[elem_count]);
} else {
single_value.value_elements[elem_count] = new ZeroOneGamma_template;
}
}
set_selection(SPECIFIC_VALUE);
}

void ZeroOneGammas_template::copy_template(const ZeroOneGammas_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 = (ZeroOneGamma_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 ZeroOneGamma_template(*other_value.single_value.value_elements[elem_count]);
} else {
single_value.value_elements[elem_count] = new ZeroOneGamma_template;
}
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new ZeroOneGammas_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new ZeroOneGammas_template(*other_value.implication_.precondition);
implication_.implied_template = new ZeroOneGammas_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.ZeroOneGammas.");
break;
}
set_selection(other_value);
}

boolean ZeroOneGammas_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 ZeroOneGammas_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const ZeroOneGammas*)value_ptr)[value_index], legacy);
else return ((const ZeroOneGammas_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit();
}

ZeroOneGammas_template::ZeroOneGammas_template()
{
}

ZeroOneGammas_template::ZeroOneGammas_template(template_sel other_value)
 : Base_Record_Of_Template(other_value)
{
check_single_selection(other_value);
}

ZeroOneGammas_template::ZeroOneGammas_template(null_type)
 : Base_Record_Of_Template(SPECIFIC_VALUE)
{
single_value.n_elements = 0;
single_value.value_elements = NULL;
}

ZeroOneGammas_template::ZeroOneGammas_template(const ZeroOneGammas& other_value)
{
copy_value(other_value);
}

ZeroOneGammas_template::ZeroOneGammas_template(const OPTIONAL<ZeroOneGammas>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const ZeroOneGammas&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @RLCMAC_CSN1_Types.ZeroOneGammas from an unbound optional field.");
}
}

ZeroOneGammas_template::ZeroOneGammas_template(ZeroOneGammas_template* p_precondition, ZeroOneGammas_template* p_implied_template)
 : Base_Record_Of_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

ZeroOneGammas_template::ZeroOneGammas_template(Dynamic_Match_Interface<ZeroOneGammas>* p_dyn_match)
 : Base_Record_Of_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<ZeroOneGammas>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

ZeroOneGammas_template::ZeroOneGammas_template(const ZeroOneGammas_template& other_value)
 : Base_Record_Of_Template()
{
copy_template(other_value);
}

ZeroOneGammas_template::~ZeroOneGammas_template()
{
clean_up();
}

void ZeroOneGammas_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++)
delete single_value.value_elements[elem_count];
free_pointers((void**)single_value.value_elements);
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

ZeroOneGammas_template& ZeroOneGammas_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

ZeroOneGammas_template& ZeroOneGammas_template::operator=(null_type)
{
clean_up();
set_selection(SPECIFIC_VALUE);
single_value.n_elements = 0;
single_value.value_elements = NULL;
return *this;
}

ZeroOneGammas_template& ZeroOneGammas_template::operator=(const ZeroOneGammas& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

ZeroOneGammas_template& ZeroOneGammas_template::operator=(const OPTIONAL<ZeroOneGammas>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const ZeroOneGammas&)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 @RLCMAC_CSN1_Types.ZeroOneGammas.");
}
return *this;
}

ZeroOneGammas_template& ZeroOneGammas_template::operator=(const ZeroOneGammas_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

ZeroOneGamma_template& ZeroOneGammas_template::operator[](int index_value)
{
if (index_value < 0) TTCN_error("Accessing an element of a template for type @RLCMAC_CSN1_Types.ZeroOneGammas 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 @RLCMAC_CSN1_Types.ZeroOneGammas.");
    break;
}
return *single_value.value_elements[index_value];
}

ZeroOneGamma_template& ZeroOneGammas_template::operator[](const INTEGER& index_value)
{
index_value.must_bound("Using an unbound integer value for indexing a template of type @RLCMAC_CSN1_Types.ZeroOneGammas.");
return (*this)[(int)index_value];
}

const ZeroOneGamma_template& ZeroOneGammas_template::operator[](int index_value) const
{
if (index_value < 0) TTCN_error("Accessing an element of a template for type @RLCMAC_CSN1_Types.ZeroOneGammas using a negative index: %d.", index_value);
if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @RLCMAC_CSN1_Types.ZeroOneGammas.");
if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @RLCMAC_CSN1_Types.ZeroOneGammas: 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 ZeroOneGamma_template& ZeroOneGammas_template::operator[](const INTEGER& index_value) const
{
index_value.must_bound("Using an unbound integer value for indexing a template of type @RLCMAC_CSN1_Types.ZeroOneGammas.");
return (*this)[(int)index_value];
}

void ZeroOneGammas_template::set_size(int new_size)
{
if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @RLCMAC_CSN1_Types.ZeroOneGammas.");
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 = (ZeroOneGamma_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 ZeroOneGamma_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 ZeroOneGamma_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 = (ZeroOneGamma_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size);
single_value.n_elements = new_size;
}
}

int ZeroOneGammas_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 ZeroOneGammas_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 @RLCMAC_CSN1_Types.ZeroOneGammas 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 @RLCMAC_CSN1_Types.ZeroOneGammas 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 @RLCMAC_CSN1_Types.ZeroOneGammas 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 @RLCMAC_CSN1_Types.ZeroOneGammas 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 @RLCMAC_CSN1_Types.ZeroOneGammas 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 @RLCMAC_CSN1_Types.ZeroOneGammas containing complemented list.", op_name);
default:
  TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.ZeroOneGammas.", op_name);
}
return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @RLCMAC_CSN1_Types.ZeroOneGammas");
}

boolean ZeroOneGammas_template::match(const ZeroOneGammas& other_value, boolean legacy) const
{
if (!other_value.is_bound()) return FALSE;
int value_length = other_value.size_of();
if (!match_length(value_length)) return FALSE;
switch (template_selection) {
case SPECIFIC_VALUE:
return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy);
case OMIT_VALUE:
return FALSE;
case ANY_VALUE:
case ANY_OR_OMIT:
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching with an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.ZeroOneGammas.");
}
return FALSE;
}

boolean ZeroOneGammas_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;
}

ZeroOneGammas ZeroOneGammas_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 @RLCMAC_CSN1_Types.ZeroOneGammas.");
ZeroOneGammas 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;
}

ZeroOneGammas ZeroOneGammas_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);
}

ZeroOneGammas ZeroOneGammas_template::replace(int index, int len, const ZeroOneGammas_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());
}

ZeroOneGammas ZeroOneGammas_template::replace(int index, int len, const ZeroOneGammas& 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 ZeroOneGammas_template::set_type(template_sel template_type, unsigned int list_length)
{
clean_up();
switch (template_type) {
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = list_length;
value_list.list_value = new ZeroOneGammas_template[list_length];
break;
default:
TTCN_error("Internal error: Setting an invalid type for a template of type @RLCMAC_CSN1_Types.ZeroOneGammas.");
}
set_selection(template_type);
}

ZeroOneGammas_template& ZeroOneGammas_template::list_item(unsigned int list_index)
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of type @RLCMAC_CSN1_Types.ZeroOneGammas.");
if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @RLCMAC_CSN1_Types.ZeroOneGammas.");
return value_list.list_value[list_index];
}

void ZeroOneGammas_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
if (single_value.n_elements > 0) {
TTCN_Logger::log_event_str("{ ");
for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) {
if (elem_count > 0) TTCN_Logger::log_event_str(", ");
if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation(");
single_value.value_elements[elem_count]->log();
if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')');
}
TTCN_Logger::log_event_str(" }");
} else TTCN_Logger::log_event_str("{ }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_restricted();
log_ifpresent();
}

void ZeroOneGammas_template::log_match(const ZeroOneGammas& 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 ZeroOneGammas_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 @RLCMAC_CSN1_Types.ZeroOneGammas.");
}
}

void ZeroOneGammas_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 @RLCMAC_CSN1_Types.ZeroOneGammas.");
single_value.value_elements = (ZeroOneGamma_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 ZeroOneGamma_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 ZeroOneGammas_template[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 @RLCMAC_CSN1_Types.ZeroOneGammas.");
}
}

boolean ZeroOneGammas_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean ZeroOneGammas_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int i=0; 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 ZeroOneGammas_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
for (int i = 0; i < single_value.n_elements; i++) {
if (single_value.value_elements[i] != NULL) single_value.value_elements[i]->set_implicit_omit();
}
}

void ZeroOneGammas_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE|Module_Param::BC_LIST, "record of template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    ZeroOneGammas_template temp;
    temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_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;
  case Module_Param::MP_Implication_Template: {
    ZeroOneGammas_template* precondition = new ZeroOneGammas_template;
    precondition->set_param(*param.get_elem(0));
    ZeroOneGammas_template* implied_template = new ZeroOneGammas_template;
    implied_template->set_param(*param.get_elem(1));
    *this = ZeroOneGammas_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record of template", "@RLCMAC_CSN1_Types.ZeroOneGammas");
  }
  is_ifpresent = param.get_ifpresent();
  set_length_range(param);
}

void ZeroOneGammas_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 : "@RLCMAC_CSN1_Types.ZeroOneGammas");
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 : "@RLCMAC_CSN1_Types.ZeroOneGammas");
}

boolean ZeroOneGammas_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);
}
}
ZeroOneGamma::ZeroOneGamma()
{
}

ZeroOneGamma::ZeroOneGamma(const BITSTRING& par_gamma__present,
    const OPTIONAL< INTEGER >& par_gamma)
  :   field_gamma__present(par_gamma__present),
  field_gamma(par_gamma)
{
}

ZeroOneGamma::ZeroOneGamma(const ZeroOneGamma& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RLCMAC_CSN1_Types.ZeroOneGamma.");
if (other_value.gamma__present().is_bound()) field_gamma__present = other_value.gamma__present();
else field_gamma__present.clean_up();
if (other_value.gamma().is_bound()) field_gamma = other_value.gamma();
else field_gamma.clean_up();
}

void ZeroOneGamma::clean_up()
{
field_gamma__present.clean_up();
field_gamma.clean_up();
}

const TTCN_Typedescriptor_t* ZeroOneGamma::get_descriptor() const { return &ZeroOneGamma_descr_; }
ZeroOneGamma& ZeroOneGamma::operator=(const ZeroOneGamma& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RLCMAC_CSN1_Types.ZeroOneGamma.");
  if (other_value.gamma__present().is_bound()) field_gamma__present = other_value.gamma__present();
  else field_gamma__present.clean_up();
  if (other_value.gamma().is_bound()) field_gamma = other_value.gamma();
  else field_gamma.clean_up();
}
return *this;
}

boolean ZeroOneGamma::operator==(const ZeroOneGamma& other_value) const
{
return field_gamma__present==other_value.field_gamma__present
  && field_gamma==other_value.field_gamma;
}

boolean ZeroOneGamma::is_bound() const
{
return (field_gamma__present.is_bound())
  || (OPTIONAL_OMIT == field_gamma.get_selection() || field_gamma.is_bound());
}
boolean ZeroOneGamma::is_value() const
{
return field_gamma__present.is_value()
  && (OPTIONAL_OMIT == field_gamma.get_selection() || field_gamma.is_value());
}
int ZeroOneGamma::size_of() const
{
  int ret_val = 1;
  if (field_gamma.ispresent()) ret_val++;
  return ret_val;
}

void ZeroOneGamma::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ gamma_present := ");
field_gamma__present.log();
TTCN_Logger::log_event_str(", gamma := ");
field_gamma.log();
TTCN_Logger::log_event_str(" }");
}

void ZeroOneGamma::set_implicit_omit()
{
if (gamma__present().is_bound()) gamma__present().set_implicit_omit();
if (!gamma().is_bound()) gamma() = OMIT_VALUE;
else gamma().set_implicit_omit();
}

void ZeroOneGamma::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 @RLCMAC_CSN1_Types.ZeroOneGamma 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) gamma__present().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) gamma().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(), "gamma_present")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          gamma__present().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "gamma")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          gamma().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 @RLCMAC_CSN1_Types.ZeroOneGamma: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@RLCMAC_CSN1_Types.ZeroOneGamma");
  }
}

void ZeroOneGamma::encode_text(Text_Buf& text_buf) const
{
field_gamma__present.encode_text(text_buf);
field_gamma.encode_text(text_buf);
}

void ZeroOneGamma::decode_text(Text_Buf& text_buf)
{
field_gamma__present.decode_text(text_buf);
field_gamma.decode_text(text_buf);
}

void ZeroOneGamma::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void ZeroOneGamma::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int ZeroOneGamma::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, ZeroOneGamma_gamma__present_descr_.raw->forceomit);
  decoded_field_length = field_gamma__present.RAW_decode(ZeroOneGamma_gamma__present_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());
  if (limit > 0 && field_gamma__present ==  bs_0){
  if (force_omit != NULL && (*force_omit)(1)) {
    field_gamma = OMIT_VALUE;
  }
  else {
  size_t fl_start_pos = p_buf.get_pos_bit();
  RAW_Force_Omit field_1_force_omit(1, force_omit, ZeroOneGamma_gamma_descr_.raw->forceomit);
  decoded_field_length = field_gamma().RAW_decode(ZeroOneGamma_gamma_descr_, p_buf, limit, local_top_order, TRUE, -1, TRUE, &field_1_force_omit);
  if (decoded_field_length < 1) {
  field_gamma = OMIT_VALUE;
  p_buf.set_pos_bit(fl_start_pos);
  } else {
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  }
  }
  }
  else field_gamma=OMIT_VALUE;
  p_buf.set_pos_bit(last_decoded_pos);
  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
}

int ZeroOneGamma::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, ZeroOneGamma_gamma__present_descr_.raw);
  if (field_gamma.ispresent()) {
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ZeroOneGamma_gamma_descr_.raw);
  }
  else myleaf.body.node.nodes[1] = NULL;
  encoded_length += field_gamma__present.RAW_encode(ZeroOneGamma_gamma__present_descr_, *myleaf.body.node.nodes[0]);
  if (field_gamma.ispresent()) {
  encoded_length += field_gamma().RAW_encode(ZeroOneGamma_gamma_descr_, *myleaf.body.node.nodes[1]);
  }
  if (field_gamma.ispresent() && (field_gamma__present !=  bs_0)) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={0};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   bs_0.RAW_encode(ZeroOneGamma_gamma__present_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);
  }
  }
  return myleaf.length = encoded_length;
}

struct ZeroOneGamma_template::single_value_struct {
BITSTRING_template field_gamma__present;
INTEGER_template field_gamma;
};

void ZeroOneGamma_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_gamma__present = ANY_VALUE;
single_value->field_gamma = ANY_OR_OMIT;
}
}
}

void ZeroOneGamma_template::copy_value(const ZeroOneGamma& other_value)
{
single_value = new single_value_struct;
if (other_value.gamma__present().is_bound()) {
  single_value->field_gamma__present = other_value.gamma__present();
} else {
  single_value->field_gamma__present.clean_up();
}
if (other_value.gamma().is_bound()) {
  if (other_value.gamma().ispresent()) single_value->field_gamma = other_value.gamma()();
  else single_value->field_gamma = OMIT_VALUE;
} else {
  single_value->field_gamma.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void ZeroOneGamma_template::copy_template(const ZeroOneGamma_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.gamma__present().get_selection()) {
single_value->field_gamma__present = other_value.gamma__present();
} else {
single_value->field_gamma__present.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.gamma().get_selection()) {
single_value->field_gamma = other_value.gamma();
} else {
single_value->field_gamma.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new ZeroOneGamma_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new ZeroOneGamma_template(*other_value.implication_.precondition);
implication_.implied_template = new ZeroOneGamma_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.ZeroOneGamma.");
break;
}
set_selection(other_value);
}

ZeroOneGamma_template::ZeroOneGamma_template()
{
}

ZeroOneGamma_template::ZeroOneGamma_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

ZeroOneGamma_template::ZeroOneGamma_template(const ZeroOneGamma& other_value)
{
copy_value(other_value);
}

ZeroOneGamma_template::ZeroOneGamma_template(const OPTIONAL<ZeroOneGamma>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const ZeroOneGamma&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @RLCMAC_CSN1_Types.ZeroOneGamma from an unbound optional field.");
}
}

ZeroOneGamma_template::ZeroOneGamma_template(ZeroOneGamma_template* p_precondition, ZeroOneGamma_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

ZeroOneGamma_template::ZeroOneGamma_template(Dynamic_Match_Interface<ZeroOneGamma>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<ZeroOneGamma>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

ZeroOneGamma_template::ZeroOneGamma_template(const ZeroOneGamma_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

ZeroOneGamma_template::~ZeroOneGamma_template()
{
clean_up();
}

ZeroOneGamma_template& ZeroOneGamma_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

ZeroOneGamma_template& ZeroOneGamma_template::operator=(const ZeroOneGamma& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

ZeroOneGamma_template& ZeroOneGamma_template::operator=(const OPTIONAL<ZeroOneGamma>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const ZeroOneGamma&)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 @RLCMAC_CSN1_Types.ZeroOneGamma.");
}
return *this;
}

ZeroOneGamma_template& ZeroOneGamma_template::operator=(const ZeroOneGamma_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean ZeroOneGamma_template::match(const ZeroOneGamma& 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.gamma__present().is_bound()) return FALSE;
if(!single_value->field_gamma__present.match(other_value.gamma__present(), legacy))return FALSE;
if(!other_value.gamma().is_bound()) return FALSE;
if((other_value.gamma().ispresent() ? !single_value->field_gamma.match((const INTEGER&)other_value.gamma(), legacy) : !single_value->field_gamma.match_omit(legacy)))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.ZeroOneGamma.");
}
return FALSE;
}

boolean ZeroOneGamma_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_gamma__present.is_bound()
 || (single_value->field_gamma.is_omit() || single_value->field_gamma.is_bound());
}

boolean ZeroOneGamma_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_gamma__present.is_value()
 && (single_value->field_gamma.is_omit() || single_value->field_gamma.is_value());
}

void ZeroOneGamma_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

ZeroOneGamma ZeroOneGamma_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 @RLCMAC_CSN1_Types.ZeroOneGamma.");
ZeroOneGamma ret_val;
if (single_value->field_gamma__present.is_bound()) {
ret_val.gamma__present() = single_value->field_gamma__present.valueof();
}
if (single_value->field_gamma.is_omit()) ret_val.gamma() = OMIT_VALUE;
else if (single_value->field_gamma.is_bound()) {
ret_val.gamma() = single_value->field_gamma.valueof();
}
return ret_val;
}

void ZeroOneGamma_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @RLCMAC_CSN1_Types.ZeroOneGamma.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new ZeroOneGamma_template[list_length];
}

ZeroOneGamma_template& ZeroOneGamma_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @RLCMAC_CSN1_Types.ZeroOneGamma.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @RLCMAC_CSN1_Types.ZeroOneGamma.");
return value_list.list_value[list_index];
}

BITSTRING_template& ZeroOneGamma_template::gamma__present()
{
set_specific();
return single_value->field_gamma__present;
}

const BITSTRING_template& ZeroOneGamma_template::gamma__present() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field gamma_present of a non-specific template of type @RLCMAC_CSN1_Types.ZeroOneGamma.");
return single_value->field_gamma__present;
}

INTEGER_template& ZeroOneGamma_template::gamma()
{
set_specific();
return single_value->field_gamma;
}

const INTEGER_template& ZeroOneGamma_template::gamma() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field gamma of a non-specific template of type @RLCMAC_CSN1_Types.ZeroOneGamma.");
return single_value->field_gamma;
}

int ZeroOneGamma_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.ZeroOneGamma which has an ifpresent attribute.");
  switch (template_selection)
  {
  case SPECIFIC_VALUE:
  {    int ret_val = 1;
      if (single_value->field_gamma.is_present()) ret_val++;
      return ret_val;
    }
  case VALUE_LIST:
   {
     if (value_list.n_values<1)
       TTCN_error("Internal error: Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.ZeroOneGamma 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 @RLCMAC_CSN1_Types.ZeroOneGamma containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.ZeroOneGamma containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.ZeroOneGamma containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.ZeroOneGamma containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.ZeroOneGamma containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.ZeroOneGamma containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.ZeroOneGamma containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.ZeroOneGamma.");
  }
  return 0;
}

void ZeroOneGamma_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ gamma_present := ");
single_value->field_gamma__present.log();
TTCN_Logger::log_event_str(", gamma := ");
single_value->field_gamma.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void ZeroOneGamma_template::log_match(const ZeroOneGamma& 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_gamma__present.match(match_value.gamma__present(), legacy)){
TTCN_Logger::log_logmatch_info(".gamma_present");
single_value->field_gamma__present.log_match(match_value.gamma__present(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if (match_value.gamma().ispresent()){
if(!single_value->field_gamma.match(match_value.gamma(), legacy)){
TTCN_Logger::log_logmatch_info(".gamma");
single_value->field_gamma.log_match(match_value.gamma(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
} else {
if (!single_value->field_gamma.match_omit(legacy)){
 TTCN_Logger::log_logmatch_info(".gamma := omit with ");
TTCN_Logger::print_logmatch_buffer();
single_value->field_gamma.log();
TTCN_Logger::log_event_str(" unmatched");
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}
}else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE) {
TTCN_Logger::log_event_str("{ gamma_present := ");
single_value->field_gamma__present.log_match(match_value.gamma__present(), legacy);
TTCN_Logger::log_event_str(", gamma := ");
if (match_value.gamma().ispresent()) {
single_value->field_gamma.log_match(match_value.gamma(), legacy);
} else {
TTCN_Logger::log_event_str("omit with ");
single_value->field_gamma.log();
if (single_value->field_gamma.match_omit(legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
TTCN_Logger::log_event_str(" }");
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void ZeroOneGamma_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (gamma__present().is_bound()) gamma__present().set_implicit_omit();
if (!gamma().is_bound()) gamma() = OMIT_VALUE;
else gamma().set_implicit_omit();
}

void ZeroOneGamma_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_gamma__present.encode_text(text_buf);
single_value->field_gamma.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 @RLCMAC_CSN1_Types.ZeroOneGamma.");
}
}

void ZeroOneGamma_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_gamma__present.decode_text(text_buf);
single_value->field_gamma.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 ZeroOneGamma_template[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 @RLCMAC_CSN1_Types.ZeroOneGamma.");
}
}

void ZeroOneGamma_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    ZeroOneGamma_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_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 @RLCMAC_CSN1_Types.ZeroOneGamma 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) gamma__present().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) gamma().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(), "gamma_present")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          gamma__present().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "gamma")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          gamma().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 @RLCMAC_CSN1_Types.ZeroOneGamma: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    ZeroOneGamma_template* precondition = new ZeroOneGamma_template;
    precondition->set_param(*param.get_elem(0));
    ZeroOneGamma_template* implied_template = new ZeroOneGamma_template;
    implied_template->set_param(*param.get_elem(1));
    *this = ZeroOneGamma_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@RLCMAC_CSN1_Types.ZeroOneGamma");
  }
  is_ifpresent = param.get_ifpresent();
}

void ZeroOneGamma_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_gamma__present.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.ZeroOneGamma");
single_value->field_gamma.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.ZeroOneGamma");
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 : "@RLCMAC_CSN1_Types.ZeroOneGamma");
}

boolean ZeroOneGamma_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean ZeroOneGamma_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<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;
}

PowerControlParameters::PowerControlParameters()
{
}

PowerControlParameters::PowerControlParameters(const INTEGER& par_alpha,
    const ZeroOneGammas& par_gamma)
  :   field_alpha(par_alpha),
  field_gamma(par_gamma)
{
}

PowerControlParameters::PowerControlParameters(const PowerControlParameters& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RLCMAC_CSN1_Types.PowerControlParameters.");
if (other_value.alpha().is_bound()) field_alpha = other_value.alpha();
else field_alpha.clean_up();
if (other_value.gamma().is_bound()) field_gamma = other_value.gamma();
else field_gamma.clean_up();
}

void PowerControlParameters::clean_up()
{
field_alpha.clean_up();
field_gamma.clean_up();
}

const TTCN_Typedescriptor_t* PowerControlParameters::get_descriptor() const { return &PowerControlParameters_descr_; }
PowerControlParameters& PowerControlParameters::operator=(const PowerControlParameters& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RLCMAC_CSN1_Types.PowerControlParameters.");
  if (other_value.alpha().is_bound()) field_alpha = other_value.alpha();
  else field_alpha.clean_up();
  if (other_value.gamma().is_bound()) field_gamma = other_value.gamma();
  else field_gamma.clean_up();
}
return *this;
}

boolean PowerControlParameters::operator==(const PowerControlParameters& other_value) const
{
return field_alpha==other_value.field_alpha
  && field_gamma==other_value.field_gamma;
}

boolean PowerControlParameters::is_bound() const
{
return (field_alpha.is_bound())
  || (field_gamma.is_bound());
}
boolean PowerControlParameters::is_value() const
{
return field_alpha.is_value()
  && field_gamma.is_value();
}
void PowerControlParameters::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ alpha := ");
field_alpha.log();
TTCN_Logger::log_event_str(", gamma := ");
field_gamma.log();
TTCN_Logger::log_event_str(" }");
}

void PowerControlParameters::set_implicit_omit()
{
if (alpha().is_bound()) alpha().set_implicit_omit();
if (gamma().is_bound()) gamma().set_implicit_omit();
}

void PowerControlParameters::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 @RLCMAC_CSN1_Types.PowerControlParameters 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) alpha().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) gamma().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(), "alpha")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          alpha().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "gamma")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          gamma().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 @RLCMAC_CSN1_Types.PowerControlParameters: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@RLCMAC_CSN1_Types.PowerControlParameters");
  }
}

void PowerControlParameters::encode_text(Text_Buf& text_buf) const
{
field_alpha.encode_text(text_buf);
field_gamma.encode_text(text_buf);
}

void PowerControlParameters::decode_text(Text_Buf& text_buf)
{
field_alpha.decode_text(text_buf);
field_gamma.decode_text(text_buf);
}

void PowerControlParameters::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void PowerControlParameters::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int PowerControlParameters::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, PowerControlParameters_alpha_descr_.raw->forceomit);
  decoded_field_length = field_alpha.RAW_decode(PowerControlParameters_alpha_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, PowerControlParameters_gamma_descr_.raw->forceomit);
  decoded_field_length = field_gamma.RAW_decode(PowerControlParameters_gamma_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 PowerControlParameters::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, PowerControlParameters_alpha_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PowerControlParameters_gamma_descr_.raw);
  encoded_length += field_alpha.RAW_encode(PowerControlParameters_alpha_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_gamma.RAW_encode(PowerControlParameters_gamma_descr_, *myleaf.body.node.nodes[1]);
  return myleaf.length = encoded_length;
}

struct PowerControlParameters_template::single_value_struct {
INTEGER_template field_alpha;
ZeroOneGammas_template field_gamma;
};

void PowerControlParameters_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_alpha = ANY_VALUE;
single_value->field_gamma = ANY_VALUE;
}
}
}

void PowerControlParameters_template::copy_value(const PowerControlParameters& other_value)
{
single_value = new single_value_struct;
if (other_value.alpha().is_bound()) {
  single_value->field_alpha = other_value.alpha();
} else {
  single_value->field_alpha.clean_up();
}
if (other_value.gamma().is_bound()) {
  single_value->field_gamma = other_value.gamma();
} else {
  single_value->field_gamma.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void PowerControlParameters_template::copy_template(const PowerControlParameters_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.alpha().get_selection()) {
single_value->field_alpha = other_value.alpha();
} else {
single_value->field_alpha.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.gamma().get_selection()) {
single_value->field_gamma = other_value.gamma();
} else {
single_value->field_gamma.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new PowerControlParameters_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new PowerControlParameters_template(*other_value.implication_.precondition);
implication_.implied_template = new PowerControlParameters_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.PowerControlParameters.");
break;
}
set_selection(other_value);
}

PowerControlParameters_template::PowerControlParameters_template()
{
}

PowerControlParameters_template::PowerControlParameters_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

PowerControlParameters_template::PowerControlParameters_template(const PowerControlParameters& other_value)
{
copy_value(other_value);
}

PowerControlParameters_template::PowerControlParameters_template(const OPTIONAL<PowerControlParameters>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const PowerControlParameters&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @RLCMAC_CSN1_Types.PowerControlParameters from an unbound optional field.");
}
}

PowerControlParameters_template::PowerControlParameters_template(PowerControlParameters_template* p_precondition, PowerControlParameters_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

PowerControlParameters_template::PowerControlParameters_template(Dynamic_Match_Interface<PowerControlParameters>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<PowerControlParameters>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

PowerControlParameters_template::PowerControlParameters_template(const PowerControlParameters_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

PowerControlParameters_template::~PowerControlParameters_template()
{
clean_up();
}

PowerControlParameters_template& PowerControlParameters_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

PowerControlParameters_template& PowerControlParameters_template::operator=(const PowerControlParameters& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

PowerControlParameters_template& PowerControlParameters_template::operator=(const OPTIONAL<PowerControlParameters>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const PowerControlParameters&)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 @RLCMAC_CSN1_Types.PowerControlParameters.");
}
return *this;
}

PowerControlParameters_template& PowerControlParameters_template::operator=(const PowerControlParameters_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean PowerControlParameters_template::match(const PowerControlParameters& 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.alpha().is_bound()) return FALSE;
if(!single_value->field_alpha.match(other_value.alpha(), legacy))return FALSE;
if(!other_value.gamma().is_bound()) return FALSE;
if(!single_value->field_gamma.match(other_value.gamma(), legacy))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.PowerControlParameters.");
}
return FALSE;
}

boolean PowerControlParameters_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_alpha.is_bound()
 || single_value->field_gamma.is_bound();
}

boolean PowerControlParameters_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_alpha.is_value()
 && single_value->field_gamma.is_value();
}

void PowerControlParameters_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

PowerControlParameters PowerControlParameters_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 @RLCMAC_CSN1_Types.PowerControlParameters.");
PowerControlParameters ret_val;
if (single_value->field_alpha.is_bound()) {
ret_val.alpha() = single_value->field_alpha.valueof();
}
if (single_value->field_gamma.is_bound()) {
ret_val.gamma() = single_value->field_gamma.valueof();
}
return ret_val;
}

void PowerControlParameters_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @RLCMAC_CSN1_Types.PowerControlParameters.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new PowerControlParameters_template[list_length];
}

PowerControlParameters_template& PowerControlParameters_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @RLCMAC_CSN1_Types.PowerControlParameters.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @RLCMAC_CSN1_Types.PowerControlParameters.");
return value_list.list_value[list_index];
}

INTEGER_template& PowerControlParameters_template::alpha()
{
set_specific();
return single_value->field_alpha;
}

const INTEGER_template& PowerControlParameters_template::alpha() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field alpha of a non-specific template of type @RLCMAC_CSN1_Types.PowerControlParameters.");
return single_value->field_alpha;
}

ZeroOneGammas_template& PowerControlParameters_template::gamma()
{
set_specific();
return single_value->field_gamma;
}

const ZeroOneGammas_template& PowerControlParameters_template::gamma() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field gamma of a non-specific template of type @RLCMAC_CSN1_Types.PowerControlParameters.");
return single_value->field_gamma;
}

int PowerControlParameters_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PowerControlParameters 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 @RLCMAC_CSN1_Types.PowerControlParameters 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 @RLCMAC_CSN1_Types.PowerControlParameters containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PowerControlParameters containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PowerControlParameters containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PowerControlParameters containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PowerControlParameters containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PowerControlParameters containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PowerControlParameters containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.PowerControlParameters.");
  }
  return 0;
}

void PowerControlParameters_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ alpha := ");
single_value->field_alpha.log();
TTCN_Logger::log_event_str(", gamma := ");
single_value->field_gamma.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void PowerControlParameters_template::log_match(const PowerControlParameters& 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_alpha.match(match_value.alpha(), legacy)){
TTCN_Logger::log_logmatch_info(".alpha");
single_value->field_alpha.log_match(match_value.alpha(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_gamma.match(match_value.gamma(), legacy)){
TTCN_Logger::log_logmatch_info(".gamma");
single_value->field_gamma.log_match(match_value.gamma(), 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("{ alpha := ");
single_value->field_alpha.log_match(match_value.alpha(), legacy);
TTCN_Logger::log_event_str(", gamma := ");
single_value->field_gamma.log_match(match_value.gamma(), 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 PowerControlParameters_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (alpha().is_bound()) alpha().set_implicit_omit();
if (gamma().is_bound()) gamma().set_implicit_omit();
}

void PowerControlParameters_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_alpha.encode_text(text_buf);
single_value->field_gamma.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 @RLCMAC_CSN1_Types.PowerControlParameters.");
}
}

void PowerControlParameters_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_alpha.decode_text(text_buf);
single_value->field_gamma.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 PowerControlParameters_template[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 @RLCMAC_CSN1_Types.PowerControlParameters.");
}
}

void PowerControlParameters_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    PowerControlParameters_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_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 @RLCMAC_CSN1_Types.PowerControlParameters 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) alpha().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) gamma().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(), "alpha")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          alpha().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "gamma")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          gamma().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 @RLCMAC_CSN1_Types.PowerControlParameters: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    PowerControlParameters_template* precondition = new PowerControlParameters_template;
    precondition->set_param(*param.get_elem(0));
    PowerControlParameters_template* implied_template = new PowerControlParameters_template;
    implied_template->set_param(*param.get_elem(1));
    *this = PowerControlParameters_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@RLCMAC_CSN1_Types.PowerControlParameters");
  }
  is_ifpresent = param.get_ifpresent();
}

void PowerControlParameters_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_alpha.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PowerControlParameters");
single_value->field_gamma.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PowerControlParameters");
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 : "@RLCMAC_CSN1_Types.PowerControlParameters");
}

boolean PowerControlParameters_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean PowerControlParameters_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<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;
}

StartingFnDesc::StartingFnDesc()
{
}

StartingFnDesc::StartingFnDesc(const BITSTRING& par_presence,
    const OPTIONAL< INTEGER >& par_absolute__starting__time,
    const OPTIONAL< INTEGER >& par_relative__k)
  :   field_presence(par_presence),
  field_absolute__starting__time(par_absolute__starting__time),
  field_relative__k(par_relative__k)
{
}

StartingFnDesc::StartingFnDesc(const StartingFnDesc& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RLCMAC_CSN1_Types.StartingFnDesc.");
if (other_value.presence().is_bound()) field_presence = other_value.presence();
else field_presence.clean_up();
if (other_value.absolute__starting__time().is_bound()) field_absolute__starting__time = other_value.absolute__starting__time();
else field_absolute__starting__time.clean_up();
if (other_value.relative__k().is_bound()) field_relative__k = other_value.relative__k();
else field_relative__k.clean_up();
}

void StartingFnDesc::clean_up()
{
field_presence.clean_up();
field_absolute__starting__time.clean_up();
field_relative__k.clean_up();
}

const TTCN_Typedescriptor_t* StartingFnDesc::get_descriptor() const { return &StartingFnDesc_descr_; }
StartingFnDesc& StartingFnDesc::operator=(const StartingFnDesc& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RLCMAC_CSN1_Types.StartingFnDesc.");
  if (other_value.presence().is_bound()) field_presence = other_value.presence();
  else field_presence.clean_up();
  if (other_value.absolute__starting__time().is_bound()) field_absolute__starting__time = other_value.absolute__starting__time();
  else field_absolute__starting__time.clean_up();
  if (other_value.relative__k().is_bound()) field_relative__k = other_value.relative__k();
  else field_relative__k.clean_up();
}
return *this;
}

boolean StartingFnDesc::operator==(const StartingFnDesc& other_value) const
{
return field_presence==other_value.field_presence
  && field_absolute__starting__time==other_value.field_absolute__starting__time
  && field_relative__k==other_value.field_relative__k;
}

boolean StartingFnDesc::is_bound() const
{
return (field_presence.is_bound())
  || (OPTIONAL_OMIT == field_absolute__starting__time.get_selection() || field_absolute__starting__time.is_bound())
  || (OPTIONAL_OMIT == field_relative__k.get_selection() || field_relative__k.is_bound());
}
boolean StartingFnDesc::is_value() const
{
return field_presence.is_value()
  && (OPTIONAL_OMIT == field_absolute__starting__time.get_selection() || field_absolute__starting__time.is_value())
  && (OPTIONAL_OMIT == field_relative__k.get_selection() || field_relative__k.is_value());
}
int StartingFnDesc::size_of() const
{
  int ret_val = 1;
  if (field_absolute__starting__time.ispresent()) ret_val++;
  if (field_relative__k.ispresent()) ret_val++;
  return ret_val;
}

void StartingFnDesc::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ presence := ");
field_presence.log();
TTCN_Logger::log_event_str(", absolute_starting_time := ");
field_absolute__starting__time.log();
TTCN_Logger::log_event_str(", relative_k := ");
field_relative__k.log();
TTCN_Logger::log_event_str(" }");
}

void StartingFnDesc::set_implicit_omit()
{
if (presence().is_bound()) presence().set_implicit_omit();
if (!absolute__starting__time().is_bound()) absolute__starting__time() = OMIT_VALUE;
else absolute__starting__time().set_implicit_omit();
if (!relative__k().is_bound()) relative__k() = OMIT_VALUE;
else relative__k().set_implicit_omit();
}

void StartingFnDesc::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 @RLCMAC_CSN1_Types.StartingFnDesc 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) presence().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) absolute__starting__time().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) relative__k().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(), "presence")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          presence().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "absolute_starting_time")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          absolute__starting__time().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "relative_k")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          relative__k().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 @RLCMAC_CSN1_Types.StartingFnDesc: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@RLCMAC_CSN1_Types.StartingFnDesc");
  }
}

void StartingFnDesc::encode_text(Text_Buf& text_buf) const
{
field_presence.encode_text(text_buf);
field_absolute__starting__time.encode_text(text_buf);
field_relative__k.encode_text(text_buf);
}

void StartingFnDesc::decode_text(Text_Buf& text_buf)
{
field_presence.decode_text(text_buf);
field_absolute__starting__time.decode_text(text_buf);
field_relative__k.decode_text(text_buf);
}

void StartingFnDesc::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void StartingFnDesc::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int StartingFnDesc::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, StartingFnDesc_presence_descr_.raw->forceomit);
  decoded_field_length = field_presence.RAW_decode(StartingFnDesc_presence_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());
  if (limit > 0 && field_presence ==  bs_1){
  if (force_omit != NULL && (*force_omit)(1)) {
    field_absolute__starting__time = OMIT_VALUE;
  }
  else {
  size_t fl_start_pos = p_buf.get_pos_bit();
  RAW_Force_Omit field_1_force_omit(1, force_omit, StartingFnDesc_absolute__starting__time_descr_.raw->forceomit);
  decoded_field_length = field_absolute__starting__time().RAW_decode(StartingFnDesc_absolute__starting__time_descr_, p_buf, limit, local_top_order, TRUE, -1, TRUE, &field_1_force_omit);
  if (decoded_field_length < 1) {
  field_absolute__starting__time = OMIT_VALUE;
  p_buf.set_pos_bit(fl_start_pos);
  } else {
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  }
  }
  }
  else field_absolute__starting__time=OMIT_VALUE;
  if (limit > 0 && field_presence ==  bs_0){
  if (force_omit != NULL && (*force_omit)(2)) {
    field_relative__k = OMIT_VALUE;
  }
  else {
  size_t fl_start_pos = p_buf.get_pos_bit();
  RAW_Force_Omit field_2_force_omit(2, force_omit, StartingFnDesc_relative__k_descr_.raw->forceomit);
  decoded_field_length = field_relative__k().RAW_decode(StartingFnDesc_relative__k_descr_, p_buf, limit, local_top_order, TRUE, -1, TRUE, &field_2_force_omit);
  if (decoded_field_length < 1) {
  field_relative__k = OMIT_VALUE;
  p_buf.set_pos_bit(fl_start_pos);
  } else {
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  }
  }
  }
  else field_relative__k=OMIT_VALUE;
  p_buf.set_pos_bit(last_decoded_pos);
  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
}

int StartingFnDesc::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, StartingFnDesc_presence_descr_.raw);
  if (field_absolute__starting__time.ispresent()) {
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, StartingFnDesc_absolute__starting__time_descr_.raw);
  }
  else myleaf.body.node.nodes[1] = NULL;
  if (field_relative__k.ispresent()) {
  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, StartingFnDesc_relative__k_descr_.raw);
  }
  else myleaf.body.node.nodes[2] = NULL;
  encoded_length += field_presence.RAW_encode(StartingFnDesc_presence_descr_, *myleaf.body.node.nodes[0]);
  if (field_absolute__starting__time.ispresent()) {
  encoded_length += field_absolute__starting__time().RAW_encode(StartingFnDesc_absolute__starting__time_descr_, *myleaf.body.node.nodes[1]);
  }
  if (field_relative__k.ispresent()) {
  encoded_length += field_relative__k().RAW_encode(StartingFnDesc_relative__k_descr_, *myleaf.body.node.nodes[2]);
  }
  if (field_absolute__starting__time.ispresent() && (field_presence !=  bs_1)) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={0};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   bs_1.RAW_encode(StartingFnDesc_presence_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);
  }
  }
  if (field_relative__k.ispresent() && (field_presence !=  bs_0)) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={0};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   bs_0.RAW_encode(StartingFnDesc_presence_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);
  }
  }
  return myleaf.length = encoded_length;
}

struct StartingFnDesc_template::single_value_struct {
BITSTRING_template field_presence;
INTEGER_template field_absolute__starting__time;
INTEGER_template field_relative__k;
};

void StartingFnDesc_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_presence = ANY_VALUE;
single_value->field_absolute__starting__time = ANY_OR_OMIT;
single_value->field_relative__k = ANY_OR_OMIT;
}
}
}

void StartingFnDesc_template::copy_value(const StartingFnDesc& other_value)
{
single_value = new single_value_struct;
if (other_value.presence().is_bound()) {
  single_value->field_presence = other_value.presence();
} else {
  single_value->field_presence.clean_up();
}
if (other_value.absolute__starting__time().is_bound()) {
  if (other_value.absolute__starting__time().ispresent()) single_value->field_absolute__starting__time = other_value.absolute__starting__time()();
  else single_value->field_absolute__starting__time = OMIT_VALUE;
} else {
  single_value->field_absolute__starting__time.clean_up();
}
if (other_value.relative__k().is_bound()) {
  if (other_value.relative__k().ispresent()) single_value->field_relative__k = other_value.relative__k()();
  else single_value->field_relative__k = OMIT_VALUE;
} else {
  single_value->field_relative__k.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void StartingFnDesc_template::copy_template(const StartingFnDesc_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.presence().get_selection()) {
single_value->field_presence = other_value.presence();
} else {
single_value->field_presence.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.absolute__starting__time().get_selection()) {
single_value->field_absolute__starting__time = other_value.absolute__starting__time();
} else {
single_value->field_absolute__starting__time.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.relative__k().get_selection()) {
single_value->field_relative__k = other_value.relative__k();
} else {
single_value->field_relative__k.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new StartingFnDesc_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new StartingFnDesc_template(*other_value.implication_.precondition);
implication_.implied_template = new StartingFnDesc_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.StartingFnDesc.");
break;
}
set_selection(other_value);
}

StartingFnDesc_template::StartingFnDesc_template()
{
}

StartingFnDesc_template::StartingFnDesc_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

StartingFnDesc_template::StartingFnDesc_template(const StartingFnDesc& other_value)
{
copy_value(other_value);
}

StartingFnDesc_template::StartingFnDesc_template(const OPTIONAL<StartingFnDesc>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const StartingFnDesc&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @RLCMAC_CSN1_Types.StartingFnDesc from an unbound optional field.");
}
}

StartingFnDesc_template::StartingFnDesc_template(StartingFnDesc_template* p_precondition, StartingFnDesc_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

StartingFnDesc_template::StartingFnDesc_template(Dynamic_Match_Interface<StartingFnDesc>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<StartingFnDesc>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

StartingFnDesc_template::StartingFnDesc_template(const StartingFnDesc_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

StartingFnDesc_template::~StartingFnDesc_template()
{
clean_up();
}

StartingFnDesc_template& StartingFnDesc_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

StartingFnDesc_template& StartingFnDesc_template::operator=(const StartingFnDesc& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

StartingFnDesc_template& StartingFnDesc_template::operator=(const OPTIONAL<StartingFnDesc>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const StartingFnDesc&)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 @RLCMAC_CSN1_Types.StartingFnDesc.");
}
return *this;
}

StartingFnDesc_template& StartingFnDesc_template::operator=(const StartingFnDesc_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean StartingFnDesc_template::match(const StartingFnDesc& 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.presence().is_bound()) return FALSE;
if(!single_value->field_presence.match(other_value.presence(), legacy))return FALSE;
if(!other_value.absolute__starting__time().is_bound()) return FALSE;
if((other_value.absolute__starting__time().ispresent() ? !single_value->field_absolute__starting__time.match((const INTEGER&)other_value.absolute__starting__time(), legacy) : !single_value->field_absolute__starting__time.match_omit(legacy)))return FALSE;
if(!other_value.relative__k().is_bound()) return FALSE;
if((other_value.relative__k().ispresent() ? !single_value->field_relative__k.match((const INTEGER&)other_value.relative__k(), legacy) : !single_value->field_relative__k.match_omit(legacy)))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.StartingFnDesc.");
}
return FALSE;
}

boolean StartingFnDesc_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_presence.is_bound()
 || (single_value->field_absolute__starting__time.is_omit() || single_value->field_absolute__starting__time.is_bound())
 || (single_value->field_relative__k.is_omit() || single_value->field_relative__k.is_bound());
}

boolean StartingFnDesc_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_presence.is_value()
 && (single_value->field_absolute__starting__time.is_omit() || single_value->field_absolute__starting__time.is_value())
 && (single_value->field_relative__k.is_omit() || single_value->field_relative__k.is_value());
}

void StartingFnDesc_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

StartingFnDesc StartingFnDesc_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 @RLCMAC_CSN1_Types.StartingFnDesc.");
StartingFnDesc ret_val;
if (single_value->field_presence.is_bound()) {
ret_val.presence() = single_value->field_presence.valueof();
}
if (single_value->field_absolute__starting__time.is_omit()) ret_val.absolute__starting__time() = OMIT_VALUE;
else if (single_value->field_absolute__starting__time.is_bound()) {
ret_val.absolute__starting__time() = single_value->field_absolute__starting__time.valueof();
}
if (single_value->field_relative__k.is_omit()) ret_val.relative__k() = OMIT_VALUE;
else if (single_value->field_relative__k.is_bound()) {
ret_val.relative__k() = single_value->field_relative__k.valueof();
}
return ret_val;
}

void StartingFnDesc_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @RLCMAC_CSN1_Types.StartingFnDesc.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new StartingFnDesc_template[list_length];
}

StartingFnDesc_template& StartingFnDesc_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @RLCMAC_CSN1_Types.StartingFnDesc.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @RLCMAC_CSN1_Types.StartingFnDesc.");
return value_list.list_value[list_index];
}

BITSTRING_template& StartingFnDesc_template::presence()
{
set_specific();
return single_value->field_presence;
}

const BITSTRING_template& StartingFnDesc_template::presence() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field presence of a non-specific template of type @RLCMAC_CSN1_Types.StartingFnDesc.");
return single_value->field_presence;
}

INTEGER_template& StartingFnDesc_template::absolute__starting__time()
{
set_specific();
return single_value->field_absolute__starting__time;
}

const INTEGER_template& StartingFnDesc_template::absolute__starting__time() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field absolute_starting_time of a non-specific template of type @RLCMAC_CSN1_Types.StartingFnDesc.");
return single_value->field_absolute__starting__time;
}

INTEGER_template& StartingFnDesc_template::relative__k()
{
set_specific();
return single_value->field_relative__k;
}

const INTEGER_template& StartingFnDesc_template::relative__k() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field relative_k of a non-specific template of type @RLCMAC_CSN1_Types.StartingFnDesc.");
return single_value->field_relative__k;
}

int StartingFnDesc_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.StartingFnDesc which has an ifpresent attribute.");
  switch (template_selection)
  {
  case SPECIFIC_VALUE:
  {    int ret_val = 1;
      if (single_value->field_absolute__starting__time.is_present()) ret_val++;
      if (single_value->field_relative__k.is_present()) ret_val++;
      return ret_val;
    }
  case VALUE_LIST:
   {
     if (value_list.n_values<1)
       TTCN_error("Internal error: Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.StartingFnDesc 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 @RLCMAC_CSN1_Types.StartingFnDesc containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.StartingFnDesc containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.StartingFnDesc containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.StartingFnDesc containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.StartingFnDesc containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.StartingFnDesc containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.StartingFnDesc containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.StartingFnDesc.");
  }
  return 0;
}

void StartingFnDesc_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ presence := ");
single_value->field_presence.log();
TTCN_Logger::log_event_str(", absolute_starting_time := ");
single_value->field_absolute__starting__time.log();
TTCN_Logger::log_event_str(", relative_k := ");
single_value->field_relative__k.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void StartingFnDesc_template::log_match(const StartingFnDesc& 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_presence.match(match_value.presence(), legacy)){
TTCN_Logger::log_logmatch_info(".presence");
single_value->field_presence.log_match(match_value.presence(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if (match_value.absolute__starting__time().ispresent()){
if(!single_value->field_absolute__starting__time.match(match_value.absolute__starting__time(), legacy)){
TTCN_Logger::log_logmatch_info(".absolute_starting_time");
single_value->field_absolute__starting__time.log_match(match_value.absolute__starting__time(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
} else {
if (!single_value->field_absolute__starting__time.match_omit(legacy)){
 TTCN_Logger::log_logmatch_info(".absolute_starting_time := omit with ");
TTCN_Logger::print_logmatch_buffer();
single_value->field_absolute__starting__time.log();
TTCN_Logger::log_event_str(" unmatched");
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}
if (match_value.relative__k().ispresent()){
if(!single_value->field_relative__k.match(match_value.relative__k(), legacy)){
TTCN_Logger::log_logmatch_info(".relative_k");
single_value->field_relative__k.log_match(match_value.relative__k(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
} else {
if (!single_value->field_relative__k.match_omit(legacy)){
 TTCN_Logger::log_logmatch_info(".relative_k := omit with ");
TTCN_Logger::print_logmatch_buffer();
single_value->field_relative__k.log();
TTCN_Logger::log_event_str(" unmatched");
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}
}else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE) {
TTCN_Logger::log_event_str("{ presence := ");
single_value->field_presence.log_match(match_value.presence(), legacy);
TTCN_Logger::log_event_str(", absolute_starting_time := ");
if (match_value.absolute__starting__time().ispresent()) {
single_value->field_absolute__starting__time.log_match(match_value.absolute__starting__time(), legacy);
} else {
TTCN_Logger::log_event_str("omit with ");
single_value->field_absolute__starting__time.log();
if (single_value->field_absolute__starting__time.match_omit(legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
TTCN_Logger::log_event_str(", relative_k := ");
if (match_value.relative__k().ispresent()) {
single_value->field_relative__k.log_match(match_value.relative__k(), legacy);
} else {
TTCN_Logger::log_event_str("omit with ");
single_value->field_relative__k.log();
if (single_value->field_relative__k.match_omit(legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
TTCN_Logger::log_event_str(" }");
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void StartingFnDesc_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (presence().is_bound()) presence().set_implicit_omit();
if (!absolute__starting__time().is_bound()) absolute__starting__time() = OMIT_VALUE;
else absolute__starting__time().set_implicit_omit();
if (!relative__k().is_bound()) relative__k() = OMIT_VALUE;
else relative__k().set_implicit_omit();
}

void StartingFnDesc_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_presence.encode_text(text_buf);
single_value->field_absolute__starting__time.encode_text(text_buf);
single_value->field_relative__k.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 @RLCMAC_CSN1_Types.StartingFnDesc.");
}
}

void StartingFnDesc_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_presence.decode_text(text_buf);
single_value->field_absolute__starting__time.decode_text(text_buf);
single_value->field_relative__k.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 StartingFnDesc_template[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 @RLCMAC_CSN1_Types.StartingFnDesc.");
}
}

void StartingFnDesc_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    StartingFnDesc_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_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 @RLCMAC_CSN1_Types.StartingFnDesc 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) presence().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) absolute__starting__time().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) relative__k().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(), "presence")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          presence().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "absolute_starting_time")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          absolute__starting__time().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "relative_k")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          relative__k().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 @RLCMAC_CSN1_Types.StartingFnDesc: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    StartingFnDesc_template* precondition = new StartingFnDesc_template;
    precondition->set_param(*param.get_elem(0));
    StartingFnDesc_template* implied_template = new StartingFnDesc_template;
    implied_template->set_param(*param.get_elem(1));
    *this = StartingFnDesc_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@RLCMAC_CSN1_Types.StartingFnDesc");
  }
  is_ifpresent = param.get_ifpresent();
}

void StartingFnDesc_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_presence.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.StartingFnDesc");
single_value->field_absolute__starting__time.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.StartingFnDesc");
single_value->field_relative__k.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.StartingFnDesc");
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 : "@RLCMAC_CSN1_Types.StartingFnDesc");
}

boolean StartingFnDesc_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean StartingFnDesc_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<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;
}

PktDlAssRelAdditions::PktDlAssRelAdditions()
{
}

PktDlAssRelAdditions::PktDlAssRelAdditions(const BITSTRING& par_rel99__presence,
    const OPTIONAL< PktDlAssR99Additions >& par_rel99)
  :   field_rel99__presence(par_rel99__presence),
  field_rel99(par_rel99)
{
}

PktDlAssRelAdditions::PktDlAssRelAdditions(const PktDlAssRelAdditions& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RLCMAC_CSN1_Types.PktDlAssRelAdditions.");
if (other_value.rel99__presence().is_bound()) field_rel99__presence = other_value.rel99__presence();
else field_rel99__presence.clean_up();
if (other_value.rel99().is_bound()) field_rel99 = other_value.rel99();
else field_rel99.clean_up();
}

void PktDlAssRelAdditions::clean_up()
{
field_rel99__presence.clean_up();
field_rel99.clean_up();
}

const TTCN_Typedescriptor_t* PktDlAssRelAdditions::get_descriptor() const { return &PktDlAssRelAdditions_descr_; }
PktDlAssRelAdditions& PktDlAssRelAdditions::operator=(const PktDlAssRelAdditions& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RLCMAC_CSN1_Types.PktDlAssRelAdditions.");
  if (other_value.rel99__presence().is_bound()) field_rel99__presence = other_value.rel99__presence();
  else field_rel99__presence.clean_up();
  if (other_value.rel99().is_bound()) field_rel99 = other_value.rel99();
  else field_rel99.clean_up();
}
return *this;
}

boolean PktDlAssRelAdditions::operator==(const PktDlAssRelAdditions& other_value) const
{
return field_rel99__presence==other_value.field_rel99__presence
  && field_rel99==other_value.field_rel99;
}

boolean PktDlAssRelAdditions::is_bound() const
{
return (field_rel99__presence.is_bound())
  || (OPTIONAL_OMIT == field_rel99.get_selection() || field_rel99.is_bound());
}
boolean PktDlAssRelAdditions::is_value() const
{
return field_rel99__presence.is_value()
  && (OPTIONAL_OMIT == field_rel99.get_selection() || field_rel99.is_value());
}
int PktDlAssRelAdditions::size_of() const
{
  int ret_val = 1;
  if (field_rel99.ispresent()) ret_val++;
  return ret_val;
}

void PktDlAssRelAdditions::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ rel99_presence := ");
field_rel99__presence.log();
TTCN_Logger::log_event_str(", rel99 := ");
field_rel99.log();
TTCN_Logger::log_event_str(" }");
}

void PktDlAssRelAdditions::set_implicit_omit()
{
if (rel99__presence().is_bound()) rel99__presence().set_implicit_omit();
if (!rel99().is_bound()) rel99() = OMIT_VALUE;
else rel99().set_implicit_omit();
}

void PktDlAssRelAdditions::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 @RLCMAC_CSN1_Types.PktDlAssRelAdditions 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) rel99__presence().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) rel99().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(), "rel99_presence")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          rel99__presence().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "rel99")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          rel99().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 @RLCMAC_CSN1_Types.PktDlAssRelAdditions: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@RLCMAC_CSN1_Types.PktDlAssRelAdditions");
  }
}

void PktDlAssRelAdditions::encode_text(Text_Buf& text_buf) const
{
field_rel99__presence.encode_text(text_buf);
field_rel99.encode_text(text_buf);
}

void PktDlAssRelAdditions::decode_text(Text_Buf& text_buf)
{
field_rel99__presence.decode_text(text_buf);
field_rel99.decode_text(text_buf);
}

void PktDlAssRelAdditions::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void PktDlAssRelAdditions::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int PktDlAssRelAdditions::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, PktDlAssRelAdditions_rel99__presence_descr_.raw->forceomit);
  decoded_field_length = field_rel99__presence.RAW_decode(PktDlAssRelAdditions_rel99__presence_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());
  if (limit > 0 && field_rel99__presence ==  bs_0){
  if (force_omit != NULL && (*force_omit)(1)) {
    field_rel99 = OMIT_VALUE;
  }
  else {
  size_t fl_start_pos = p_buf.get_pos_bit();
  RAW_Force_Omit field_1_force_omit(1, force_omit, PktDlAssRelAdditions_rel99_descr_.raw->forceomit);
  decoded_field_length = field_rel99().RAW_decode(PktDlAssRelAdditions_rel99_descr_, p_buf, limit, local_top_order, TRUE, -1, TRUE, &field_1_force_omit);
  if (decoded_field_length < 1) {
  field_rel99 = OMIT_VALUE;
  p_buf.set_pos_bit(fl_start_pos);
  } else {
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  }
  }
  }
  else field_rel99=OMIT_VALUE;
  p_buf.set_pos_bit(last_decoded_pos);
  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
}

int PktDlAssRelAdditions::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, PktDlAssRelAdditions_rel99__presence_descr_.raw);
  if (field_rel99.ispresent()) {
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PktDlAssRelAdditions_rel99_descr_.raw);
  }
  else myleaf.body.node.nodes[1] = NULL;
  encoded_length += field_rel99__presence.RAW_encode(PktDlAssRelAdditions_rel99__presence_descr_, *myleaf.body.node.nodes[0]);
  if (field_rel99.ispresent()) {
  encoded_length += field_rel99().RAW_encode(PktDlAssRelAdditions_rel99_descr_, *myleaf.body.node.nodes[1]);
  }
  if (field_rel99.ispresent() && (field_rel99__presence !=  bs_0)) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={0};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   bs_0.RAW_encode(PktDlAssRelAdditions_rel99__presence_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);
  }
  }
  return myleaf.length = encoded_length;
}

struct PktDlAssRelAdditions_template::single_value_struct {
BITSTRING_template field_rel99__presence;
PktDlAssR99Additions_template field_rel99;
};

void PktDlAssRelAdditions_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_rel99__presence = ANY_VALUE;
single_value->field_rel99 = ANY_OR_OMIT;
}
}
}

void PktDlAssRelAdditions_template::copy_value(const PktDlAssRelAdditions& other_value)
{
single_value = new single_value_struct;
if (other_value.rel99__presence().is_bound()) {
  single_value->field_rel99__presence = other_value.rel99__presence();
} else {
  single_value->field_rel99__presence.clean_up();
}
if (other_value.rel99().is_bound()) {
  if (other_value.rel99().ispresent()) single_value->field_rel99 = other_value.rel99()();
  else single_value->field_rel99 = OMIT_VALUE;
} else {
  single_value->field_rel99.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void PktDlAssRelAdditions_template::copy_template(const PktDlAssRelAdditions_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.rel99__presence().get_selection()) {
single_value->field_rel99__presence = other_value.rel99__presence();
} else {
single_value->field_rel99__presence.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.rel99().get_selection()) {
single_value->field_rel99 = other_value.rel99();
} else {
single_value->field_rel99.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new PktDlAssRelAdditions_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new PktDlAssRelAdditions_template(*other_value.implication_.precondition);
implication_.implied_template = new PktDlAssRelAdditions_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.PktDlAssRelAdditions.");
break;
}
set_selection(other_value);
}

PktDlAssRelAdditions_template::PktDlAssRelAdditions_template()
{
}

PktDlAssRelAdditions_template::PktDlAssRelAdditions_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

PktDlAssRelAdditions_template::PktDlAssRelAdditions_template(const PktDlAssRelAdditions& other_value)
{
copy_value(other_value);
}

PktDlAssRelAdditions_template::PktDlAssRelAdditions_template(const OPTIONAL<PktDlAssRelAdditions>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const PktDlAssRelAdditions&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @RLCMAC_CSN1_Types.PktDlAssRelAdditions from an unbound optional field.");
}
}

PktDlAssRelAdditions_template::PktDlAssRelAdditions_template(PktDlAssRelAdditions_template* p_precondition, PktDlAssRelAdditions_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

PktDlAssRelAdditions_template::PktDlAssRelAdditions_template(Dynamic_Match_Interface<PktDlAssRelAdditions>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<PktDlAssRelAdditions>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

PktDlAssRelAdditions_template::PktDlAssRelAdditions_template(const PktDlAssRelAdditions_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

PktDlAssRelAdditions_template::~PktDlAssRelAdditions_template()
{
clean_up();
}

PktDlAssRelAdditions_template& PktDlAssRelAdditions_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

PktDlAssRelAdditions_template& PktDlAssRelAdditions_template::operator=(const PktDlAssRelAdditions& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

PktDlAssRelAdditions_template& PktDlAssRelAdditions_template::operator=(const OPTIONAL<PktDlAssRelAdditions>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const PktDlAssRelAdditions&)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 @RLCMAC_CSN1_Types.PktDlAssRelAdditions.");
}
return *this;
}

PktDlAssRelAdditions_template& PktDlAssRelAdditions_template::operator=(const PktDlAssRelAdditions_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean PktDlAssRelAdditions_template::match(const PktDlAssRelAdditions& 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.rel99__presence().is_bound()) return FALSE;
if(!single_value->field_rel99__presence.match(other_value.rel99__presence(), legacy))return FALSE;
if(!other_value.rel99().is_bound()) return FALSE;
if((other_value.rel99().ispresent() ? !single_value->field_rel99.match((const PktDlAssR99Additions&)other_value.rel99(), legacy) : !single_value->field_rel99.match_omit(legacy)))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.PktDlAssRelAdditions.");
}
return FALSE;
}

boolean PktDlAssRelAdditions_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_rel99__presence.is_bound()
 || (single_value->field_rel99.is_omit() || single_value->field_rel99.is_bound());
}

boolean PktDlAssRelAdditions_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_rel99__presence.is_value()
 && (single_value->field_rel99.is_omit() || single_value->field_rel99.is_value());
}

void PktDlAssRelAdditions_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

PktDlAssRelAdditions PktDlAssRelAdditions_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 @RLCMAC_CSN1_Types.PktDlAssRelAdditions.");
PktDlAssRelAdditions ret_val;
if (single_value->field_rel99__presence.is_bound()) {
ret_val.rel99__presence() = single_value->field_rel99__presence.valueof();
}
if (single_value->field_rel99.is_omit()) ret_val.rel99() = OMIT_VALUE;
else if (single_value->field_rel99.is_bound()) {
ret_val.rel99() = single_value->field_rel99.valueof();
}
return ret_val;
}

void PktDlAssRelAdditions_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @RLCMAC_CSN1_Types.PktDlAssRelAdditions.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new PktDlAssRelAdditions_template[list_length];
}

PktDlAssRelAdditions_template& PktDlAssRelAdditions_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @RLCMAC_CSN1_Types.PktDlAssRelAdditions.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @RLCMAC_CSN1_Types.PktDlAssRelAdditions.");
return value_list.list_value[list_index];
}

BITSTRING_template& PktDlAssRelAdditions_template::rel99__presence()
{
set_specific();
return single_value->field_rel99__presence;
}

const BITSTRING_template& PktDlAssRelAdditions_template::rel99__presence() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field rel99_presence of a non-specific template of type @RLCMAC_CSN1_Types.PktDlAssRelAdditions.");
return single_value->field_rel99__presence;
}

PktDlAssR99Additions_template& PktDlAssRelAdditions_template::rel99()
{
set_specific();
return single_value->field_rel99;
}

const PktDlAssR99Additions_template& PktDlAssRelAdditions_template::rel99() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field rel99 of a non-specific template of type @RLCMAC_CSN1_Types.PktDlAssRelAdditions.");
return single_value->field_rel99;
}

int PktDlAssRelAdditions_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PktDlAssRelAdditions which has an ifpresent attribute.");
  switch (template_selection)
  {
  case SPECIFIC_VALUE:
  {    int ret_val = 1;
      if (single_value->field_rel99.is_present()) ret_val++;
      return ret_val;
    }
  case VALUE_LIST:
   {
     if (value_list.n_values<1)
       TTCN_error("Internal error: Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PktDlAssRelAdditions 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 @RLCMAC_CSN1_Types.PktDlAssRelAdditions containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PktDlAssRelAdditions containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PktDlAssRelAdditions containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PktDlAssRelAdditions containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PktDlAssRelAdditions containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PktDlAssRelAdditions containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PktDlAssRelAdditions containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.PktDlAssRelAdditions.");
  }
  return 0;
}

void PktDlAssRelAdditions_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ rel99_presence := ");
single_value->field_rel99__presence.log();
TTCN_Logger::log_event_str(", rel99 := ");
single_value->field_rel99.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void PktDlAssRelAdditions_template::log_match(const PktDlAssRelAdditions& 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_rel99__presence.match(match_value.rel99__presence(), legacy)){
TTCN_Logger::log_logmatch_info(".rel99_presence");
single_value->field_rel99__presence.log_match(match_value.rel99__presence(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if (match_value.rel99().ispresent()){
if(!single_value->field_rel99.match(match_value.rel99(), legacy)){
TTCN_Logger::log_logmatch_info(".rel99");
single_value->field_rel99.log_match(match_value.rel99(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
} else {
if (!single_value->field_rel99.match_omit(legacy)){
 TTCN_Logger::log_logmatch_info(".rel99 := omit with ");
TTCN_Logger::print_logmatch_buffer();
single_value->field_rel99.log();
TTCN_Logger::log_event_str(" unmatched");
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}
}else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE) {
TTCN_Logger::log_event_str("{ rel99_presence := ");
single_value->field_rel99__presence.log_match(match_value.rel99__presence(), legacy);
TTCN_Logger::log_event_str(", rel99 := ");
if (match_value.rel99().ispresent()) {
single_value->field_rel99.log_match(match_value.rel99(), legacy);
} else {
TTCN_Logger::log_event_str("omit with ");
single_value->field_rel99.log();
if (single_value->field_rel99.match_omit(legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
TTCN_Logger::log_event_str(" }");
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void PktDlAssRelAdditions_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (rel99__presence().is_bound()) rel99__presence().set_implicit_omit();
if (!rel99().is_bound()) rel99() = OMIT_VALUE;
else rel99().set_implicit_omit();
}

void PktDlAssRelAdditions_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_rel99__presence.encode_text(text_buf);
single_value->field_rel99.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 @RLCMAC_CSN1_Types.PktDlAssRelAdditions.");
}
}

void PktDlAssRelAdditions_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_rel99__presence.decode_text(text_buf);
single_value->field_rel99.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 PktDlAssRelAdditions_template[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 @RLCMAC_CSN1_Types.PktDlAssRelAdditions.");
}
}

void PktDlAssRelAdditions_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    PktDlAssRelAdditions_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_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 @RLCMAC_CSN1_Types.PktDlAssRelAdditions 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) rel99__presence().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) rel99().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(), "rel99_presence")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          rel99__presence().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "rel99")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          rel99().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 @RLCMAC_CSN1_Types.PktDlAssRelAdditions: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    PktDlAssRelAdditions_template* precondition = new PktDlAssRelAdditions_template;
    precondition->set_param(*param.get_elem(0));
    PktDlAssRelAdditions_template* implied_template = new PktDlAssRelAdditions_template;
    implied_template->set_param(*param.get_elem(1));
    *this = PktDlAssRelAdditions_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@RLCMAC_CSN1_Types.PktDlAssRelAdditions");
  }
  is_ifpresent = param.get_ifpresent();
}

void PktDlAssRelAdditions_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_rel99__presence.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PktDlAssRelAdditions");
single_value->field_rel99.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PktDlAssRelAdditions");
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 : "@RLCMAC_CSN1_Types.PktDlAssRelAdditions");
}

boolean PktDlAssRelAdditions_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean PktDlAssRelAdditions_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<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;
}

PktDlAssR99Additions::PktDlAssR99Additions()
{
}

PktDlAssR99Additions::PktDlAssR99Additions(const BITSTRING& par_egprs__present,
    const OPTIONAL< PktDlAssR99EGPRS >& par_egprs,
    const BITSTRING& par_pkt__ext__ta__present,
    const OPTIONAL< BITSTRING >& par_pkt__ext__ta,
    const BITSTRING& par_compact__reduced__ma__present,
    const OPTIONAL< COMPACTreducedMA >& par_compact__reduced__ma)
  :   field_egprs__present(par_egprs__present),
  field_egprs(par_egprs),
  field_pkt__ext__ta__present(par_pkt__ext__ta__present),
  field_pkt__ext__ta(par_pkt__ext__ta),
  field_compact__reduced__ma__present(par_compact__reduced__ma__present),
  field_compact__reduced__ma(par_compact__reduced__ma)
{
}

PktDlAssR99Additions::PktDlAssR99Additions(const PktDlAssR99Additions& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RLCMAC_CSN1_Types.PktDlAssR99Additions.");
if (other_value.egprs__present().is_bound()) field_egprs__present = other_value.egprs__present();
else field_egprs__present.clean_up();
if (other_value.egprs().is_bound()) field_egprs = other_value.egprs();
else field_egprs.clean_up();
if (other_value.pkt__ext__ta__present().is_bound()) field_pkt__ext__ta__present = other_value.pkt__ext__ta__present();
else field_pkt__ext__ta__present.clean_up();
if (other_value.pkt__ext__ta().is_bound()) field_pkt__ext__ta = other_value.pkt__ext__ta();
else field_pkt__ext__ta.clean_up();
if (other_value.compact__reduced__ma__present().is_bound()) field_compact__reduced__ma__present = other_value.compact__reduced__ma__present();
else field_compact__reduced__ma__present.clean_up();
if (other_value.compact__reduced__ma().is_bound()) field_compact__reduced__ma = other_value.compact__reduced__ma();
else field_compact__reduced__ma.clean_up();
}

void PktDlAssR99Additions::clean_up()
{
field_egprs__present.clean_up();
field_egprs.clean_up();
field_pkt__ext__ta__present.clean_up();
field_pkt__ext__ta.clean_up();
field_compact__reduced__ma__present.clean_up();
field_compact__reduced__ma.clean_up();
}

const TTCN_Typedescriptor_t* PktDlAssR99Additions::get_descriptor() const { return &PktDlAssR99Additions_descr_; }
PktDlAssR99Additions& PktDlAssR99Additions::operator=(const PktDlAssR99Additions& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RLCMAC_CSN1_Types.PktDlAssR99Additions.");
  if (other_value.egprs__present().is_bound()) field_egprs__present = other_value.egprs__present();
  else field_egprs__present.clean_up();
  if (other_value.egprs().is_bound()) field_egprs = other_value.egprs();
  else field_egprs.clean_up();
  if (other_value.pkt__ext__ta__present().is_bound()) field_pkt__ext__ta__present = other_value.pkt__ext__ta__present();
  else field_pkt__ext__ta__present.clean_up();
  if (other_value.pkt__ext__ta().is_bound()) field_pkt__ext__ta = other_value.pkt__ext__ta();
  else field_pkt__ext__ta.clean_up();
  if (other_value.compact__reduced__ma__present().is_bound()) field_compact__reduced__ma__present = other_value.compact__reduced__ma__present();
  else field_compact__reduced__ma__present.clean_up();
  if (other_value.compact__reduced__ma().is_bound()) field_compact__reduced__ma = other_value.compact__reduced__ma();
  else field_compact__reduced__ma.clean_up();
}
return *this;
}

boolean PktDlAssR99Additions::operator==(const PktDlAssR99Additions& other_value) const
{
return field_egprs__present==other_value.field_egprs__present
  && field_egprs==other_value.field_egprs
  && field_pkt__ext__ta__present==other_value.field_pkt__ext__ta__present
  && field_pkt__ext__ta==other_value.field_pkt__ext__ta
  && field_compact__reduced__ma__present==other_value.field_compact__reduced__ma__present
  && field_compact__reduced__ma==other_value.field_compact__reduced__ma;
}

boolean PktDlAssR99Additions::is_bound() const
{
return (field_egprs__present.is_bound())
  || (OPTIONAL_OMIT == field_egprs.get_selection() || field_egprs.is_bound())
  || (field_pkt__ext__ta__present.is_bound())
  || (OPTIONAL_OMIT == field_pkt__ext__ta.get_selection() || field_pkt__ext__ta.is_bound())
  || (field_compact__reduced__ma__present.is_bound())
  || (OPTIONAL_OMIT == field_compact__reduced__ma.get_selection() || field_compact__reduced__ma.is_bound());
}
boolean PktDlAssR99Additions::is_value() const
{
return field_egprs__present.is_value()
  && (OPTIONAL_OMIT == field_egprs.get_selection() || field_egprs.is_value())
  && field_pkt__ext__ta__present.is_value()
  && (OPTIONAL_OMIT == field_pkt__ext__ta.get_selection() || field_pkt__ext__ta.is_value())
  && field_compact__reduced__ma__present.is_value()
  && (OPTIONAL_OMIT == field_compact__reduced__ma.get_selection() || field_compact__reduced__ma.is_value());
}
int PktDlAssR99Additions::size_of() const
{
  int ret_val = 3;
  if (field_egprs.ispresent()) ret_val++;
  if (field_pkt__ext__ta.ispresent()) ret_val++;
  if (field_compact__reduced__ma.ispresent()) ret_val++;
  return ret_val;
}

void PktDlAssR99Additions::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ egprs_present := ");
field_egprs__present.log();
TTCN_Logger::log_event_str(", egprs := ");
field_egprs.log();
TTCN_Logger::log_event_str(", pkt_ext_ta_present := ");
field_pkt__ext__ta__present.log();
TTCN_Logger::log_event_str(", pkt_ext_ta := ");
field_pkt__ext__ta.log();
TTCN_Logger::log_event_str(", compact_reduced_ma_present := ");
field_compact__reduced__ma__present.log();
TTCN_Logger::log_event_str(", compact_reduced_ma := ");
field_compact__reduced__ma.log();
TTCN_Logger::log_event_str(" }");
}

void PktDlAssR99Additions::set_implicit_omit()
{
if (egprs__present().is_bound()) egprs__present().set_implicit_omit();
if (!egprs().is_bound()) egprs() = OMIT_VALUE;
else egprs().set_implicit_omit();
if (pkt__ext__ta__present().is_bound()) pkt__ext__ta__present().set_implicit_omit();
if (!pkt__ext__ta().is_bound()) pkt__ext__ta() = OMIT_VALUE;
else pkt__ext__ta().set_implicit_omit();
if (compact__reduced__ma__present().is_bound()) compact__reduced__ma__present().set_implicit_omit();
if (!compact__reduced__ma().is_bound()) compact__reduced__ma() = OMIT_VALUE;
else compact__reduced__ma().set_implicit_omit();
}

void PktDlAssR99Additions::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 (6<param.get_size()) {
      param.error("record value of type @RLCMAC_CSN1_Types.PktDlAssR99Additions has 6 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) egprs__present().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) egprs().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) pkt__ext__ta__present().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) pkt__ext__ta().set_param(*param.get_elem(3));
    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) compact__reduced__ma__present().set_param(*param.get_elem(4));
    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) compact__reduced__ma().set_param(*param.get_elem(5));
    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(), "egprs_present")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          egprs__present().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "egprs")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          egprs().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "pkt_ext_ta_present")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          pkt__ext__ta__present().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "pkt_ext_ta")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          pkt__ext__ta().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "compact_reduced_ma_present")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          compact__reduced__ma__present().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "compact_reduced_ma")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          compact__reduced__ma().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 @RLCMAC_CSN1_Types.PktDlAssR99Additions: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@RLCMAC_CSN1_Types.PktDlAssR99Additions");
  }
}

void PktDlAssR99Additions::encode_text(Text_Buf& text_buf) const
{
field_egprs__present.encode_text(text_buf);
field_egprs.encode_text(text_buf);
field_pkt__ext__ta__present.encode_text(text_buf);
field_pkt__ext__ta.encode_text(text_buf);
field_compact__reduced__ma__present.encode_text(text_buf);
field_compact__reduced__ma.encode_text(text_buf);
}

void PktDlAssR99Additions::decode_text(Text_Buf& text_buf)
{
field_egprs__present.decode_text(text_buf);
field_egprs.decode_text(text_buf);
field_pkt__ext__ta__present.decode_text(text_buf);
field_pkt__ext__ta.decode_text(text_buf);
field_compact__reduced__ma__present.decode_text(text_buf);
field_compact__reduced__ma.decode_text(text_buf);
}

void PktDlAssR99Additions::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void PktDlAssR99Additions::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int PktDlAssR99Additions::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, PktDlAssR99Additions_egprs__present_descr_.raw->forceomit);
  decoded_field_length = field_egprs__present.RAW_decode(PktDlAssR99Additions_egprs__present_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());
  if (limit > 0 && field_egprs__present ==  bs_0){
  if (force_omit != NULL && (*force_omit)(1)) {
    field_egprs = OMIT_VALUE;
  }
  else {
  size_t fl_start_pos = p_buf.get_pos_bit();
  RAW_Force_Omit field_1_force_omit(1, force_omit, PktDlAssR99Additions_egprs_descr_.raw->forceomit);
  decoded_field_length = field_egprs().RAW_decode(PktDlAssR99Additions_egprs_descr_, p_buf, limit, local_top_order, TRUE, -1, TRUE, &field_1_force_omit);
  if (decoded_field_length < 1) {
  field_egprs = OMIT_VALUE;
  p_buf.set_pos_bit(fl_start_pos);
  } else {
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  }
  }
  }
  else field_egprs=OMIT_VALUE;
  RAW_Force_Omit field_2_force_omit(2, force_omit, PktDlAssR99Additions_pkt__ext__ta__present_descr_.raw->forceomit);
  decoded_field_length = field_pkt__ext__ta__present.RAW_decode(PktDlAssR99Additions_pkt__ext__ta__present_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());
  if (limit > 0 && field_pkt__ext__ta__present ==  bs_0){
  if (force_omit != NULL && (*force_omit)(3)) {
    field_pkt__ext__ta = OMIT_VALUE;
  }
  else {
  size_t fl_start_pos = p_buf.get_pos_bit();
  RAW_Force_Omit field_3_force_omit(3, force_omit, PktDlAssR99Additions_pkt__ext__ta_descr_.raw->forceomit);
  decoded_field_length = field_pkt__ext__ta().RAW_decode(PktDlAssR99Additions_pkt__ext__ta_descr_, p_buf, limit, local_top_order, TRUE, -1, TRUE, &field_3_force_omit);
  if (decoded_field_length < 1) {
  field_pkt__ext__ta = OMIT_VALUE;
  p_buf.set_pos_bit(fl_start_pos);
  } else {
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  }
  }
  }
  else field_pkt__ext__ta=OMIT_VALUE;
  RAW_Force_Omit field_4_force_omit(4, force_omit, PktDlAssR99Additions_compact__reduced__ma__present_descr_.raw->forceomit);
  decoded_field_length = field_compact__reduced__ma__present.RAW_decode(PktDlAssR99Additions_compact__reduced__ma__present_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());
  if (limit > 0 && field_compact__reduced__ma__present ==  bs_0){
  if (force_omit != NULL && (*force_omit)(5)) {
    field_compact__reduced__ma = OMIT_VALUE;
  }
  else {
  size_t fl_start_pos = p_buf.get_pos_bit();
  RAW_Force_Omit field_5_force_omit(5, force_omit, PktDlAssR99Additions_compact__reduced__ma_descr_.raw->forceomit);
  decoded_field_length = field_compact__reduced__ma().RAW_decode(PktDlAssR99Additions_compact__reduced__ma_descr_, p_buf, limit, local_top_order, TRUE, -1, TRUE, &field_5_force_omit);
  if (decoded_field_length < 1) {
  field_compact__reduced__ma = OMIT_VALUE;
  p_buf.set_pos_bit(fl_start_pos);
  } else {
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  }
  }
  }
  else field_compact__reduced__ma=OMIT_VALUE;
  p_buf.set_pos_bit(last_decoded_pos);
  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
}

int PktDlAssR99Additions::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 = 6;
  myleaf.body.node.nodes = init_nodes_of_enc_tree(6);
  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, PktDlAssR99Additions_egprs__present_descr_.raw);
  if (field_egprs.ispresent()) {
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PktDlAssR99Additions_egprs_descr_.raw);
  }
  else myleaf.body.node.nodes[1] = NULL;
  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, PktDlAssR99Additions_pkt__ext__ta__present_descr_.raw);
  if (field_pkt__ext__ta.ispresent()) {
  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, PktDlAssR99Additions_pkt__ext__ta_descr_.raw);
  }
  else myleaf.body.node.nodes[3] = NULL;
  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, PktDlAssR99Additions_compact__reduced__ma__present_descr_.raw);
  if (field_compact__reduced__ma.ispresent()) {
  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, PktDlAssR99Additions_compact__reduced__ma_descr_.raw);
  }
  else myleaf.body.node.nodes[5] = NULL;
  encoded_length += field_egprs__present.RAW_encode(PktDlAssR99Additions_egprs__present_descr_, *myleaf.body.node.nodes[0]);
  if (field_egprs.ispresent()) {
  encoded_length += field_egprs().RAW_encode(PktDlAssR99Additions_egprs_descr_, *myleaf.body.node.nodes[1]);
  }
  encoded_length += field_pkt__ext__ta__present.RAW_encode(PktDlAssR99Additions_pkt__ext__ta__present_descr_, *myleaf.body.node.nodes[2]);
  if (field_pkt__ext__ta.ispresent()) {
  encoded_length += field_pkt__ext__ta().RAW_encode(PktDlAssR99Additions_pkt__ext__ta_descr_, *myleaf.body.node.nodes[3]);
  }
  encoded_length += field_compact__reduced__ma__present.RAW_encode(PktDlAssR99Additions_compact__reduced__ma__present_descr_, *myleaf.body.node.nodes[4]);
  if (field_compact__reduced__ma.ispresent()) {
  encoded_length += field_compact__reduced__ma().RAW_encode(PktDlAssR99Additions_compact__reduced__ma_descr_, *myleaf.body.node.nodes[5]);
  }
  if (field_egprs.ispresent() && (field_egprs__present !=  bs_0)) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={0};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   bs_0.RAW_encode(PktDlAssR99Additions_egprs__present_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);
  }
  }
  if (field_pkt__ext__ta.ispresent() && (field_pkt__ext__ta__present !=  bs_0)) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={2};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   bs_0.RAW_encode(PktDlAssR99Additions_pkt__ext__ta__present_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);
  }
  }
  if (field_compact__reduced__ma.ispresent() && (field_compact__reduced__ma__present !=  bs_0)) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={4};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   bs_0.RAW_encode(PktDlAssR99Additions_compact__reduced__ma__present_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);
  }
  }
  return myleaf.length = encoded_length;
}

struct PktDlAssR99Additions_template::single_value_struct {
BITSTRING_template field_egprs__present;
PktDlAssR99EGPRS_template field_egprs;
BITSTRING_template field_pkt__ext__ta__present;
BITSTRING_template field_pkt__ext__ta;
BITSTRING_template field_compact__reduced__ma__present;
COMPACTreducedMA_template field_compact__reduced__ma;
};

void PktDlAssR99Additions_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_egprs__present = ANY_VALUE;
single_value->field_egprs = ANY_OR_OMIT;
single_value->field_pkt__ext__ta__present = ANY_VALUE;
single_value->field_pkt__ext__ta = ANY_OR_OMIT;
single_value->field_compact__reduced__ma__present = ANY_VALUE;
single_value->field_compact__reduced__ma = ANY_OR_OMIT;
}
}
}

void PktDlAssR99Additions_template::copy_value(const PktDlAssR99Additions& other_value)
{
single_value = new single_value_struct;
if (other_value.egprs__present().is_bound()) {
  single_value->field_egprs__present = other_value.egprs__present();
} else {
  single_value->field_egprs__present.clean_up();
}
if (other_value.egprs().is_bound()) {
  if (other_value.egprs().ispresent()) single_value->field_egprs = other_value.egprs()();
  else single_value->field_egprs = OMIT_VALUE;
} else {
  single_value->field_egprs.clean_up();
}
if (other_value.pkt__ext__ta__present().is_bound()) {
  single_value->field_pkt__ext__ta__present = other_value.pkt__ext__ta__present();
} else {
  single_value->field_pkt__ext__ta__present.clean_up();
}
if (other_value.pkt__ext__ta().is_bound()) {
  if (other_value.pkt__ext__ta().ispresent()) single_value->field_pkt__ext__ta = other_value.pkt__ext__ta()();
  else single_value->field_pkt__ext__ta = OMIT_VALUE;
} else {
  single_value->field_pkt__ext__ta.clean_up();
}
if (other_value.compact__reduced__ma__present().is_bound()) {
  single_value->field_compact__reduced__ma__present = other_value.compact__reduced__ma__present();
} else {
  single_value->field_compact__reduced__ma__present.clean_up();
}
if (other_value.compact__reduced__ma().is_bound()) {
  if (other_value.compact__reduced__ma().ispresent()) single_value->field_compact__reduced__ma = other_value.compact__reduced__ma()();
  else single_value->field_compact__reduced__ma = OMIT_VALUE;
} else {
  single_value->field_compact__reduced__ma.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void PktDlAssR99Additions_template::copy_template(const PktDlAssR99Additions_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.egprs__present().get_selection()) {
single_value->field_egprs__present = other_value.egprs__present();
} else {
single_value->field_egprs__present.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.egprs().get_selection()) {
single_value->field_egprs = other_value.egprs();
} else {
single_value->field_egprs.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.pkt__ext__ta__present().get_selection()) {
single_value->field_pkt__ext__ta__present = other_value.pkt__ext__ta__present();
} else {
single_value->field_pkt__ext__ta__present.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.pkt__ext__ta().get_selection()) {
single_value->field_pkt__ext__ta = other_value.pkt__ext__ta();
} else {
single_value->field_pkt__ext__ta.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.compact__reduced__ma__present().get_selection()) {
single_value->field_compact__reduced__ma__present = other_value.compact__reduced__ma__present();
} else {
single_value->field_compact__reduced__ma__present.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.compact__reduced__ma().get_selection()) {
single_value->field_compact__reduced__ma = other_value.compact__reduced__ma();
} else {
single_value->field_compact__reduced__ma.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new PktDlAssR99Additions_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new PktDlAssR99Additions_template(*other_value.implication_.precondition);
implication_.implied_template = new PktDlAssR99Additions_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.PktDlAssR99Additions.");
break;
}
set_selection(other_value);
}

PktDlAssR99Additions_template::PktDlAssR99Additions_template()
{
}

PktDlAssR99Additions_template::PktDlAssR99Additions_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

PktDlAssR99Additions_template::PktDlAssR99Additions_template(const PktDlAssR99Additions& other_value)
{
copy_value(other_value);
}

PktDlAssR99Additions_template::PktDlAssR99Additions_template(const OPTIONAL<PktDlAssR99Additions>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const PktDlAssR99Additions&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @RLCMAC_CSN1_Types.PktDlAssR99Additions from an unbound optional field.");
}
}

PktDlAssR99Additions_template::PktDlAssR99Additions_template(PktDlAssR99Additions_template* p_precondition, PktDlAssR99Additions_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

PktDlAssR99Additions_template::PktDlAssR99Additions_template(Dynamic_Match_Interface<PktDlAssR99Additions>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<PktDlAssR99Additions>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

PktDlAssR99Additions_template::PktDlAssR99Additions_template(const PktDlAssR99Additions_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

PktDlAssR99Additions_template::~PktDlAssR99Additions_template()
{
clean_up();
}

PktDlAssR99Additions_template& PktDlAssR99Additions_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

PktDlAssR99Additions_template& PktDlAssR99Additions_template::operator=(const PktDlAssR99Additions& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

PktDlAssR99Additions_template& PktDlAssR99Additions_template::operator=(const OPTIONAL<PktDlAssR99Additions>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const PktDlAssR99Additions&)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 @RLCMAC_CSN1_Types.PktDlAssR99Additions.");
}
return *this;
}

PktDlAssR99Additions_template& PktDlAssR99Additions_template::operator=(const PktDlAssR99Additions_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean PktDlAssR99Additions_template::match(const PktDlAssR99Additions& 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.egprs__present().is_bound()) return FALSE;
if(!single_value->field_egprs__present.match(other_value.egprs__present(), legacy))return FALSE;
if(!other_value.egprs().is_bound()) return FALSE;
if((other_value.egprs().ispresent() ? !single_value->field_egprs.match((const PktDlAssR99EGPRS&)other_value.egprs(), legacy) : !single_value->field_egprs.match_omit(legacy)))return FALSE;
if(!other_value.pkt__ext__ta__present().is_bound()) return FALSE;
if(!single_value->field_pkt__ext__ta__present.match(other_value.pkt__ext__ta__present(), legacy))return FALSE;
if(!other_value.pkt__ext__ta().is_bound()) return FALSE;
if((other_value.pkt__ext__ta().ispresent() ? !single_value->field_pkt__ext__ta.match((const BITSTRING&)other_value.pkt__ext__ta(), legacy) : !single_value->field_pkt__ext__ta.match_omit(legacy)))return FALSE;
if(!other_value.compact__reduced__ma__present().is_bound()) return FALSE;
if(!single_value->field_compact__reduced__ma__present.match(other_value.compact__reduced__ma__present(), legacy))return FALSE;
if(!other_value.compact__reduced__ma().is_bound()) return FALSE;
if((other_value.compact__reduced__ma().ispresent() ? !single_value->field_compact__reduced__ma.match((const COMPACTreducedMA&)other_value.compact__reduced__ma(), legacy) : !single_value->field_compact__reduced__ma.match_omit(legacy)))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.PktDlAssR99Additions.");
}
return FALSE;
}

boolean PktDlAssR99Additions_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_egprs__present.is_bound()
 || (single_value->field_egprs.is_omit() || single_value->field_egprs.is_bound())
 || single_value->field_pkt__ext__ta__present.is_bound()
 || (single_value->field_pkt__ext__ta.is_omit() || single_value->field_pkt__ext__ta.is_bound())
 || single_value->field_compact__reduced__ma__present.is_bound()
 || (single_value->field_compact__reduced__ma.is_omit() || single_value->field_compact__reduced__ma.is_bound());
}

boolean PktDlAssR99Additions_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_egprs__present.is_value()
 && (single_value->field_egprs.is_omit() || single_value->field_egprs.is_value())
 && single_value->field_pkt__ext__ta__present.is_value()
 && (single_value->field_pkt__ext__ta.is_omit() || single_value->field_pkt__ext__ta.is_value())
 && single_value->field_compact__reduced__ma__present.is_value()
 && (single_value->field_compact__reduced__ma.is_omit() || single_value->field_compact__reduced__ma.is_value());
}

void PktDlAssR99Additions_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

PktDlAssR99Additions PktDlAssR99Additions_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 @RLCMAC_CSN1_Types.PktDlAssR99Additions.");
PktDlAssR99Additions ret_val;
if (single_value->field_egprs__present.is_bound()) {
ret_val.egprs__present() = single_value->field_egprs__present.valueof();
}
if (single_value->field_egprs.is_omit()) ret_val.egprs() = OMIT_VALUE;
else if (single_value->field_egprs.is_bound()) {
ret_val.egprs() = single_value->field_egprs.valueof();
}
if (single_value->field_pkt__ext__ta__present.is_bound()) {
ret_val.pkt__ext__ta__present() = single_value->field_pkt__ext__ta__present.valueof();
}
if (single_value->field_pkt__ext__ta.is_omit()) ret_val.pkt__ext__ta() = OMIT_VALUE;
else if (single_value->field_pkt__ext__ta.is_bound()) {
ret_val.pkt__ext__ta() = single_value->field_pkt__ext__ta.valueof();
}
if (single_value->field_compact__reduced__ma__present.is_bound()) {
ret_val.compact__reduced__ma__present() = single_value->field_compact__reduced__ma__present.valueof();
}
if (single_value->field_compact__reduced__ma.is_omit()) ret_val.compact__reduced__ma() = OMIT_VALUE;
else if (single_value->field_compact__reduced__ma.is_bound()) {
ret_val.compact__reduced__ma() = single_value->field_compact__reduced__ma.valueof();
}
return ret_val;
}

void PktDlAssR99Additions_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @RLCMAC_CSN1_Types.PktDlAssR99Additions.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new PktDlAssR99Additions_template[list_length];
}

PktDlAssR99Additions_template& PktDlAssR99Additions_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @RLCMAC_CSN1_Types.PktDlAssR99Additions.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @RLCMAC_CSN1_Types.PktDlAssR99Additions.");
return value_list.list_value[list_index];
}

BITSTRING_template& PktDlAssR99Additions_template::egprs__present()
{
set_specific();
return single_value->field_egprs__present;
}

const BITSTRING_template& PktDlAssR99Additions_template::egprs__present() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field egprs_present of a non-specific template of type @RLCMAC_CSN1_Types.PktDlAssR99Additions.");
return single_value->field_egprs__present;
}

PktDlAssR99EGPRS_template& PktDlAssR99Additions_template::egprs()
{
set_specific();
return single_value->field_egprs;
}

const PktDlAssR99EGPRS_template& PktDlAssR99Additions_template::egprs() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field egprs of a non-specific template of type @RLCMAC_CSN1_Types.PktDlAssR99Additions.");
return single_value->field_egprs;
}

BITSTRING_template& PktDlAssR99Additions_template::pkt__ext__ta__present()
{
set_specific();
return single_value->field_pkt__ext__ta__present;
}

const BITSTRING_template& PktDlAssR99Additions_template::pkt__ext__ta__present() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field pkt_ext_ta_present of a non-specific template of type @RLCMAC_CSN1_Types.PktDlAssR99Additions.");
return single_value->field_pkt__ext__ta__present;
}

BITSTRING_template& PktDlAssR99Additions_template::pkt__ext__ta()
{
set_specific();
return single_value->field_pkt__ext__ta;
}

const BITSTRING_template& PktDlAssR99Additions_template::pkt__ext__ta() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field pkt_ext_ta of a non-specific template of type @RLCMAC_CSN1_Types.PktDlAssR99Additions.");
return single_value->field_pkt__ext__ta;
}

BITSTRING_template& PktDlAssR99Additions_template::compact__reduced__ma__present()
{
set_specific();
return single_value->field_compact__reduced__ma__present;
}

const BITSTRING_template& PktDlAssR99Additions_template::compact__reduced__ma__present() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field compact_reduced_ma_present of a non-specific template of type @RLCMAC_CSN1_Types.PktDlAssR99Additions.");
return single_value->field_compact__reduced__ma__present;
}

COMPACTreducedMA_template& PktDlAssR99Additions_template::compact__reduced__ma()
{
set_specific();
return single_value->field_compact__reduced__ma;
}

const COMPACTreducedMA_template& PktDlAssR99Additions_template::compact__reduced__ma() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field compact_reduced_ma of a non-specific template of type @RLCMAC_CSN1_Types.PktDlAssR99Additions.");
return single_value->field_compact__reduced__ma;
}

int PktDlAssR99Additions_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PktDlAssR99Additions which has an ifpresent attribute.");
  switch (template_selection)
  {
  case SPECIFIC_VALUE:
  {    int ret_val = 3;
      if (single_value->field_egprs.is_present()) ret_val++;
      if (single_value->field_pkt__ext__ta.is_present()) ret_val++;
      if (single_value->field_compact__reduced__ma.is_present()) ret_val++;
      return ret_val;
    }
  case VALUE_LIST:
   {
     if (value_list.n_values<1)
       TTCN_error("Internal error: Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PktDlAssR99Additions 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 @RLCMAC_CSN1_Types.PktDlAssR99Additions containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PktDlAssR99Additions containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PktDlAssR99Additions containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PktDlAssR99Additions containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PktDlAssR99Additions containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PktDlAssR99Additions containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PktDlAssR99Additions containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.PktDlAssR99Additions.");
  }
  return 0;
}

void PktDlAssR99Additions_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ egprs_present := ");
single_value->field_egprs__present.log();
TTCN_Logger::log_event_str(", egprs := ");
single_value->field_egprs.log();
TTCN_Logger::log_event_str(", pkt_ext_ta_present := ");
single_value->field_pkt__ext__ta__present.log();
TTCN_Logger::log_event_str(", pkt_ext_ta := ");
single_value->field_pkt__ext__ta.log();
TTCN_Logger::log_event_str(", compact_reduced_ma_present := ");
single_value->field_compact__reduced__ma__present.log();
TTCN_Logger::log_event_str(", compact_reduced_ma := ");
single_value->field_compact__reduced__ma.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void PktDlAssR99Additions_template::log_match(const PktDlAssR99Additions& 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_egprs__present.match(match_value.egprs__present(), legacy)){
TTCN_Logger::log_logmatch_info(".egprs_present");
single_value->field_egprs__present.log_match(match_value.egprs__present(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if (match_value.egprs().ispresent()){
if(!single_value->field_egprs.match(match_value.egprs(), legacy)){
TTCN_Logger::log_logmatch_info(".egprs");
single_value->field_egprs.log_match(match_value.egprs(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
} else {
if (!single_value->field_egprs.match_omit(legacy)){
 TTCN_Logger::log_logmatch_info(".egprs := omit with ");
TTCN_Logger::print_logmatch_buffer();
single_value->field_egprs.log();
TTCN_Logger::log_event_str(" unmatched");
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}
if(!single_value->field_pkt__ext__ta__present.match(match_value.pkt__ext__ta__present(), legacy)){
TTCN_Logger::log_logmatch_info(".pkt_ext_ta_present");
single_value->field_pkt__ext__ta__present.log_match(match_value.pkt__ext__ta__present(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if (match_value.pkt__ext__ta().ispresent()){
if(!single_value->field_pkt__ext__ta.match(match_value.pkt__ext__ta(), legacy)){
TTCN_Logger::log_logmatch_info(".pkt_ext_ta");
single_value->field_pkt__ext__ta.log_match(match_value.pkt__ext__ta(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
} else {
if (!single_value->field_pkt__ext__ta.match_omit(legacy)){
 TTCN_Logger::log_logmatch_info(".pkt_ext_ta := omit with ");
TTCN_Logger::print_logmatch_buffer();
single_value->field_pkt__ext__ta.log();
TTCN_Logger::log_event_str(" unmatched");
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}
if(!single_value->field_compact__reduced__ma__present.match(match_value.compact__reduced__ma__present(), legacy)){
TTCN_Logger::log_logmatch_info(".compact_reduced_ma_present");
single_value->field_compact__reduced__ma__present.log_match(match_value.compact__reduced__ma__present(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if (match_value.compact__reduced__ma().ispresent()){
if(!single_value->field_compact__reduced__ma.match(match_value.compact__reduced__ma(), legacy)){
TTCN_Logger::log_logmatch_info(".compact_reduced_ma");
single_value->field_compact__reduced__ma.log_match(match_value.compact__reduced__ma(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
} else {
if (!single_value->field_compact__reduced__ma.match_omit(legacy)){
 TTCN_Logger::log_logmatch_info(".compact_reduced_ma := omit with ");
TTCN_Logger::print_logmatch_buffer();
single_value->field_compact__reduced__ma.log();
TTCN_Logger::log_event_str(" unmatched");
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}
}else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE) {
TTCN_Logger::log_event_str("{ egprs_present := ");
single_value->field_egprs__present.log_match(match_value.egprs__present(), legacy);
TTCN_Logger::log_event_str(", egprs := ");
if (match_value.egprs().ispresent()) {
single_value->field_egprs.log_match(match_value.egprs(), legacy);
} else {
TTCN_Logger::log_event_str("omit with ");
single_value->field_egprs.log();
if (single_value->field_egprs.match_omit(legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
TTCN_Logger::log_event_str(", pkt_ext_ta_present := ");
single_value->field_pkt__ext__ta__present.log_match(match_value.pkt__ext__ta__present(), legacy);
TTCN_Logger::log_event_str(", pkt_ext_ta := ");
if (match_value.pkt__ext__ta().ispresent()) {
single_value->field_pkt__ext__ta.log_match(match_value.pkt__ext__ta(), legacy);
} else {
TTCN_Logger::log_event_str("omit with ");
single_value->field_pkt__ext__ta.log();
if (single_value->field_pkt__ext__ta.match_omit(legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
TTCN_Logger::log_event_str(", compact_reduced_ma_present := ");
single_value->field_compact__reduced__ma__present.log_match(match_value.compact__reduced__ma__present(), legacy);
TTCN_Logger::log_event_str(", compact_reduced_ma := ");
if (match_value.compact__reduced__ma().ispresent()) {
single_value->field_compact__reduced__ma.log_match(match_value.compact__reduced__ma(), legacy);
} else {
TTCN_Logger::log_event_str("omit with ");
single_value->field_compact__reduced__ma.log();
if (single_value->field_compact__reduced__ma.match_omit(legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
TTCN_Logger::log_event_str(" }");
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void PktDlAssR99Additions_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (egprs__present().is_bound()) egprs__present().set_implicit_omit();
if (!egprs().is_bound()) egprs() = OMIT_VALUE;
else egprs().set_implicit_omit();
if (pkt__ext__ta__present().is_bound()) pkt__ext__ta__present().set_implicit_omit();
if (!pkt__ext__ta().is_bound()) pkt__ext__ta() = OMIT_VALUE;
else pkt__ext__ta().set_implicit_omit();
if (compact__reduced__ma__present().is_bound()) compact__reduced__ma__present().set_implicit_omit();
if (!compact__reduced__ma().is_bound()) compact__reduced__ma() = OMIT_VALUE;
else compact__reduced__ma().set_implicit_omit();
}

void PktDlAssR99Additions_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_egprs__present.encode_text(text_buf);
single_value->field_egprs.encode_text(text_buf);
single_value->field_pkt__ext__ta__present.encode_text(text_buf);
single_value->field_pkt__ext__ta.encode_text(text_buf);
single_value->field_compact__reduced__ma__present.encode_text(text_buf);
single_value->field_compact__reduced__ma.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 @RLCMAC_CSN1_Types.PktDlAssR99Additions.");
}
}

void PktDlAssR99Additions_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_egprs__present.decode_text(text_buf);
single_value->field_egprs.decode_text(text_buf);
single_value->field_pkt__ext__ta__present.decode_text(text_buf);
single_value->field_pkt__ext__ta.decode_text(text_buf);
single_value->field_compact__reduced__ma__present.decode_text(text_buf);
single_value->field_compact__reduced__ma.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 PktDlAssR99Additions_template[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 @RLCMAC_CSN1_Types.PktDlAssR99Additions.");
}
}

void PktDlAssR99Additions_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    PktDlAssR99Additions_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_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 (6<param.get_size()) {
      param.error("record template of type @RLCMAC_CSN1_Types.PktDlAssR99Additions has 6 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) egprs__present().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) egprs().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) pkt__ext__ta__present().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) pkt__ext__ta().set_param(*param.get_elem(3));
    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) compact__reduced__ma__present().set_param(*param.get_elem(4));
    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) compact__reduced__ma().set_param(*param.get_elem(5));
    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(), "egprs_present")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          egprs__present().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "egprs")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          egprs().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "pkt_ext_ta_present")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          pkt__ext__ta__present().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "pkt_ext_ta")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          pkt__ext__ta().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "compact_reduced_ma_present")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          compact__reduced__ma__present().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "compact_reduced_ma")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          compact__reduced__ma().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 @RLCMAC_CSN1_Types.PktDlAssR99Additions: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    PktDlAssR99Additions_template* precondition = new PktDlAssR99Additions_template;
    precondition->set_param(*param.get_elem(0));
    PktDlAssR99Additions_template* implied_template = new PktDlAssR99Additions_template;
    implied_template->set_param(*param.get_elem(1));
    *this = PktDlAssR99Additions_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@RLCMAC_CSN1_Types.PktDlAssR99Additions");
  }
  is_ifpresent = param.get_ifpresent();
}

void PktDlAssR99Additions_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_egprs__present.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PktDlAssR99Additions");
single_value->field_egprs.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PktDlAssR99Additions");
single_value->field_pkt__ext__ta__present.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PktDlAssR99Additions");
single_value->field_pkt__ext__ta.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PktDlAssR99Additions");
single_value->field_compact__reduced__ma__present.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PktDlAssR99Additions");
single_value->field_compact__reduced__ma.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PktDlAssR99Additions");
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 : "@RLCMAC_CSN1_Types.PktDlAssR99Additions");
}

boolean PktDlAssR99Additions_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean PktDlAssR99Additions_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<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;
}

PktDlAssR99EGPRS::PktDlAssR99EGPRS()
{
}

PktDlAssR99EGPRS::PktDlAssR99EGPRS(const EgprsWindowSize& par_window__size,
    const BITSTRING& par_link__quality__meas__mode,
    const BITSTRING& par_bep__period2__present,
    const OPTIONAL< BITSTRING >& par_bep__period2)
  :   field_window__size(par_window__size),
  field_link__quality__meas__mode(par_link__quality__meas__mode),
  field_bep__period2__present(par_bep__period2__present),
  field_bep__period2(par_bep__period2)
{
}

PktDlAssR99EGPRS::PktDlAssR99EGPRS(const PktDlAssR99EGPRS& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RLCMAC_CSN1_Types.PktDlAssR99EGPRS.");
if (other_value.window__size().is_bound()) field_window__size = other_value.window__size();
else field_window__size.clean_up();
if (other_value.link__quality__meas__mode().is_bound()) field_link__quality__meas__mode = other_value.link__quality__meas__mode();
else field_link__quality__meas__mode.clean_up();
if (other_value.bep__period2__present().is_bound()) field_bep__period2__present = other_value.bep__period2__present();
else field_bep__period2__present.clean_up();
if (other_value.bep__period2().is_bound()) field_bep__period2 = other_value.bep__period2();
else field_bep__period2.clean_up();
}

void PktDlAssR99EGPRS::clean_up()
{
field_window__size.clean_up();
field_link__quality__meas__mode.clean_up();
field_bep__period2__present.clean_up();
field_bep__period2.clean_up();
}

const TTCN_Typedescriptor_t* PktDlAssR99EGPRS::get_descriptor() const { return &PktDlAssR99EGPRS_descr_; }
PktDlAssR99EGPRS& PktDlAssR99EGPRS::operator=(const PktDlAssR99EGPRS& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RLCMAC_CSN1_Types.PktDlAssR99EGPRS.");
  if (other_value.window__size().is_bound()) field_window__size = other_value.window__size();
  else field_window__size.clean_up();
  if (other_value.link__quality__meas__mode().is_bound()) field_link__quality__meas__mode = other_value.link__quality__meas__mode();
  else field_link__quality__meas__mode.clean_up();
  if (other_value.bep__period2__present().is_bound()) field_bep__period2__present = other_value.bep__period2__present();
  else field_bep__period2__present.clean_up();
  if (other_value.bep__period2().is_bound()) field_bep__period2 = other_value.bep__period2();
  else field_bep__period2.clean_up();
}
return *this;
}

boolean PktDlAssR99EGPRS::operator==(const PktDlAssR99EGPRS& other_value) const
{
return field_window__size==other_value.field_window__size
  && field_link__quality__meas__mode==other_value.field_link__quality__meas__mode
  && field_bep__period2__present==other_value.field_bep__period2__present
  && field_bep__period2==other_value.field_bep__period2;
}

boolean PktDlAssR99EGPRS::is_bound() const
{
return (field_window__size.is_bound())
  || (field_link__quality__meas__mode.is_bound())
  || (field_bep__period2__present.is_bound())
  || (OPTIONAL_OMIT == field_bep__period2.get_selection() || field_bep__period2.is_bound());
}
boolean PktDlAssR99EGPRS::is_value() const
{
return field_window__size.is_value()
  && field_link__quality__meas__mode.is_value()
  && field_bep__period2__present.is_value()
  && (OPTIONAL_OMIT == field_bep__period2.get_selection() || field_bep__period2.is_value());
}
int PktDlAssR99EGPRS::size_of() const
{
  int ret_val = 3;
  if (field_bep__period2.ispresent()) ret_val++;
  return ret_val;
}

void PktDlAssR99EGPRS::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ window_size := ");
field_window__size.log();
TTCN_Logger::log_event_str(", link_quality_meas_mode := ");
field_link__quality__meas__mode.log();
TTCN_Logger::log_event_str(", bep_period2_present := ");
field_bep__period2__present.log();
TTCN_Logger::log_event_str(", bep_period2 := ");
field_bep__period2.log();
TTCN_Logger::log_event_str(" }");
}

void PktDlAssR99EGPRS::set_implicit_omit()
{
if (window__size().is_bound()) window__size().set_implicit_omit();
if (link__quality__meas__mode().is_bound()) link__quality__meas__mode().set_implicit_omit();
if (bep__period2__present().is_bound()) bep__period2__present().set_implicit_omit();
if (!bep__period2().is_bound()) bep__period2() = OMIT_VALUE;
else bep__period2().set_implicit_omit();
}

void PktDlAssR99EGPRS::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 @RLCMAC_CSN1_Types.PktDlAssR99EGPRS 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) window__size().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) link__quality__meas__mode().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) bep__period2__present().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) bep__period2().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(), "window_size")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          window__size().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "link_quality_meas_mode")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          link__quality__meas__mode().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "bep_period2_present")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          bep__period2__present().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "bep_period2")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          bep__period2().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 @RLCMAC_CSN1_Types.PktDlAssR99EGPRS: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@RLCMAC_CSN1_Types.PktDlAssR99EGPRS");
  }
}

void PktDlAssR99EGPRS::encode_text(Text_Buf& text_buf) const
{
field_window__size.encode_text(text_buf);
field_link__quality__meas__mode.encode_text(text_buf);
field_bep__period2__present.encode_text(text_buf);
field_bep__period2.encode_text(text_buf);
}

void PktDlAssR99EGPRS::decode_text(Text_Buf& text_buf)
{
field_window__size.decode_text(text_buf);
field_link__quality__meas__mode.decode_text(text_buf);
field_bep__period2__present.decode_text(text_buf);
field_bep__period2.decode_text(text_buf);
}

void PktDlAssR99EGPRS::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void PktDlAssR99EGPRS::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int PktDlAssR99EGPRS::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, PktDlAssR99EGPRS_window__size_descr_.raw->forceomit);
  decoded_field_length = field_window__size.RAW_decode(PktDlAssR99EGPRS_window__size_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, PktDlAssR99EGPRS_link__quality__meas__mode_descr_.raw->forceomit);
  decoded_field_length = field_link__quality__meas__mode.RAW_decode(PktDlAssR99EGPRS_link__quality__meas__mode_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, PktDlAssR99EGPRS_bep__period2__present_descr_.raw->forceomit);
  decoded_field_length = field_bep__period2__present.RAW_decode(PktDlAssR99EGPRS_bep__period2__present_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());
  if (limit > 0 && field_bep__period2__present ==  bs_0){
  if (force_omit != NULL && (*force_omit)(3)) {
    field_bep__period2 = OMIT_VALUE;
  }
  else {
  size_t fl_start_pos = p_buf.get_pos_bit();
  RAW_Force_Omit field_3_force_omit(3, force_omit, PktDlAssR99EGPRS_bep__period2_descr_.raw->forceomit);
  decoded_field_length = field_bep__period2().RAW_decode(PktDlAssR99EGPRS_bep__period2_descr_, p_buf, limit, local_top_order, TRUE, -1, TRUE, &field_3_force_omit);
  if (decoded_field_length < 1) {
  field_bep__period2 = OMIT_VALUE;
  p_buf.set_pos_bit(fl_start_pos);
  } else {
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  }
  }
  }
  else field_bep__period2=OMIT_VALUE;
  p_buf.set_pos_bit(last_decoded_pos);
  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
}

int PktDlAssR99EGPRS::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, PktDlAssR99EGPRS_window__size_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PktDlAssR99EGPRS_link__quality__meas__mode_descr_.raw);
  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, PktDlAssR99EGPRS_bep__period2__present_descr_.raw);
  if (field_bep__period2.ispresent()) {
  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, PktDlAssR99EGPRS_bep__period2_descr_.raw);
  }
  else myleaf.body.node.nodes[3] = NULL;
  encoded_length += field_window__size.RAW_encode(PktDlAssR99EGPRS_window__size_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_link__quality__meas__mode.RAW_encode(PktDlAssR99EGPRS_link__quality__meas__mode_descr_, *myleaf.body.node.nodes[1]);
  encoded_length += field_bep__period2__present.RAW_encode(PktDlAssR99EGPRS_bep__period2__present_descr_, *myleaf.body.node.nodes[2]);
  if (field_bep__period2.ispresent()) {
  encoded_length += field_bep__period2().RAW_encode(PktDlAssR99EGPRS_bep__period2_descr_, *myleaf.body.node.nodes[3]);
  }
  if (field_bep__period2.ispresent() && (field_bep__period2__present !=  bs_0)) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={2};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   bs_0.RAW_encode(PktDlAssR99EGPRS_bep__period2__present_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);
  }
  }
  return myleaf.length = encoded_length;
}

struct PktDlAssR99EGPRS_template::single_value_struct {
EgprsWindowSize_template field_window__size;
BITSTRING_template field_link__quality__meas__mode;
BITSTRING_template field_bep__period2__present;
BITSTRING_template field_bep__period2;
};

void PktDlAssR99EGPRS_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_window__size = ANY_VALUE;
single_value->field_link__quality__meas__mode = ANY_VALUE;
single_value->field_bep__period2__present = ANY_VALUE;
single_value->field_bep__period2 = ANY_OR_OMIT;
}
}
}

void PktDlAssR99EGPRS_template::copy_value(const PktDlAssR99EGPRS& other_value)
{
single_value = new single_value_struct;
if (other_value.window__size().is_bound()) {
  single_value->field_window__size = other_value.window__size();
} else {
  single_value->field_window__size.clean_up();
}
if (other_value.link__quality__meas__mode().is_bound()) {
  single_value->field_link__quality__meas__mode = other_value.link__quality__meas__mode();
} else {
  single_value->field_link__quality__meas__mode.clean_up();
}
if (other_value.bep__period2__present().is_bound()) {
  single_value->field_bep__period2__present = other_value.bep__period2__present();
} else {
  single_value->field_bep__period2__present.clean_up();
}
if (other_value.bep__period2().is_bound()) {
  if (other_value.bep__period2().ispresent()) single_value->field_bep__period2 = other_value.bep__period2()();
  else single_value->field_bep__period2 = OMIT_VALUE;
} else {
  single_value->field_bep__period2.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void PktDlAssR99EGPRS_template::copy_template(const PktDlAssR99EGPRS_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.window__size().get_selection()) {
single_value->field_window__size = other_value.window__size();
} else {
single_value->field_window__size.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.link__quality__meas__mode().get_selection()) {
single_value->field_link__quality__meas__mode = other_value.link__quality__meas__mode();
} else {
single_value->field_link__quality__meas__mode.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.bep__period2__present().get_selection()) {
single_value->field_bep__period2__present = other_value.bep__period2__present();
} else {
single_value->field_bep__period2__present.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.bep__period2().get_selection()) {
single_value->field_bep__period2 = other_value.bep__period2();
} else {
single_value->field_bep__period2.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new PktDlAssR99EGPRS_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new PktDlAssR99EGPRS_template(*other_value.implication_.precondition);
implication_.implied_template = new PktDlAssR99EGPRS_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.PktDlAssR99EGPRS.");
break;
}
set_selection(other_value);
}

PktDlAssR99EGPRS_template::PktDlAssR99EGPRS_template()
{
}

PktDlAssR99EGPRS_template::PktDlAssR99EGPRS_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

PktDlAssR99EGPRS_template::PktDlAssR99EGPRS_template(const PktDlAssR99EGPRS& other_value)
{
copy_value(other_value);
}

PktDlAssR99EGPRS_template::PktDlAssR99EGPRS_template(const OPTIONAL<PktDlAssR99EGPRS>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const PktDlAssR99EGPRS&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @RLCMAC_CSN1_Types.PktDlAssR99EGPRS from an unbound optional field.");
}
}

PktDlAssR99EGPRS_template::PktDlAssR99EGPRS_template(PktDlAssR99EGPRS_template* p_precondition, PktDlAssR99EGPRS_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

PktDlAssR99EGPRS_template::PktDlAssR99EGPRS_template(Dynamic_Match_Interface<PktDlAssR99EGPRS>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<PktDlAssR99EGPRS>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

PktDlAssR99EGPRS_template::PktDlAssR99EGPRS_template(const PktDlAssR99EGPRS_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

PktDlAssR99EGPRS_template::~PktDlAssR99EGPRS_template()
{
clean_up();
}

PktDlAssR99EGPRS_template& PktDlAssR99EGPRS_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

PktDlAssR99EGPRS_template& PktDlAssR99EGPRS_template::operator=(const PktDlAssR99EGPRS& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

PktDlAssR99EGPRS_template& PktDlAssR99EGPRS_template::operator=(const OPTIONAL<PktDlAssR99EGPRS>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const PktDlAssR99EGPRS&)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 @RLCMAC_CSN1_Types.PktDlAssR99EGPRS.");
}
return *this;
}

PktDlAssR99EGPRS_template& PktDlAssR99EGPRS_template::operator=(const PktDlAssR99EGPRS_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean PktDlAssR99EGPRS_template::match(const PktDlAssR99EGPRS& 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.window__size().is_bound()) return FALSE;
if(!single_value->field_window__size.match(other_value.window__size(), legacy))return FALSE;
if(!other_value.link__quality__meas__mode().is_bound()) return FALSE;
if(!single_value->field_link__quality__meas__mode.match(other_value.link__quality__meas__mode(), legacy))return FALSE;
if(!other_value.bep__period2__present().is_bound()) return FALSE;
if(!single_value->field_bep__period2__present.match(other_value.bep__period2__present(), legacy))return FALSE;
if(!other_value.bep__period2().is_bound()) return FALSE;
if((other_value.bep__period2().ispresent() ? !single_value->field_bep__period2.match((const BITSTRING&)other_value.bep__period2(), legacy) : !single_value->field_bep__period2.match_omit(legacy)))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.PktDlAssR99EGPRS.");
}
return FALSE;
}

boolean PktDlAssR99EGPRS_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_window__size.is_bound()
 || single_value->field_link__quality__meas__mode.is_bound()
 || single_value->field_bep__period2__present.is_bound()
 || (single_value->field_bep__period2.is_omit() || single_value->field_bep__period2.is_bound());
}

boolean PktDlAssR99EGPRS_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_window__size.is_value()
 && single_value->field_link__quality__meas__mode.is_value()
 && single_value->field_bep__period2__present.is_value()
 && (single_value->field_bep__period2.is_omit() || single_value->field_bep__period2.is_value());
}

void PktDlAssR99EGPRS_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

PktDlAssR99EGPRS PktDlAssR99EGPRS_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 @RLCMAC_CSN1_Types.PktDlAssR99EGPRS.");
PktDlAssR99EGPRS ret_val;
if (single_value->field_window__size.is_bound()) {
ret_val.window__size() = single_value->field_window__size.valueof();
}
if (single_value->field_link__quality__meas__mode.is_bound()) {
ret_val.link__quality__meas__mode() = single_value->field_link__quality__meas__mode.valueof();
}
if (single_value->field_bep__period2__present.is_bound()) {
ret_val.bep__period2__present() = single_value->field_bep__period2__present.valueof();
}
if (single_value->field_bep__period2.is_omit()) ret_val.bep__period2() = OMIT_VALUE;
else if (single_value->field_bep__period2.is_bound()) {
ret_val.bep__period2() = single_value->field_bep__period2.valueof();
}
return ret_val;
}

void PktDlAssR99EGPRS_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @RLCMAC_CSN1_Types.PktDlAssR99EGPRS.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new PktDlAssR99EGPRS_template[list_length];
}

PktDlAssR99EGPRS_template& PktDlAssR99EGPRS_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @RLCMAC_CSN1_Types.PktDlAssR99EGPRS.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @RLCMAC_CSN1_Types.PktDlAssR99EGPRS.");
return value_list.list_value[list_index];
}

EgprsWindowSize_template& PktDlAssR99EGPRS_template::window__size()
{
set_specific();
return single_value->field_window__size;
}

const EgprsWindowSize_template& PktDlAssR99EGPRS_template::window__size() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field window_size of a non-specific template of type @RLCMAC_CSN1_Types.PktDlAssR99EGPRS.");
return single_value->field_window__size;
}

BITSTRING_template& PktDlAssR99EGPRS_template::link__quality__meas__mode()
{
set_specific();
return single_value->field_link__quality__meas__mode;
}

const BITSTRING_template& PktDlAssR99EGPRS_template::link__quality__meas__mode() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field link_quality_meas_mode of a non-specific template of type @RLCMAC_CSN1_Types.PktDlAssR99EGPRS.");
return single_value->field_link__quality__meas__mode;
}

BITSTRING_template& PktDlAssR99EGPRS_template::bep__period2__present()
{
set_specific();
return single_value->field_bep__period2__present;
}

const BITSTRING_template& PktDlAssR99EGPRS_template::bep__period2__present() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field bep_period2_present of a non-specific template of type @RLCMAC_CSN1_Types.PktDlAssR99EGPRS.");
return single_value->field_bep__period2__present;
}

BITSTRING_template& PktDlAssR99EGPRS_template::bep__period2()
{
set_specific();
return single_value->field_bep__period2;
}

const BITSTRING_template& PktDlAssR99EGPRS_template::bep__period2() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field bep_period2 of a non-specific template of type @RLCMAC_CSN1_Types.PktDlAssR99EGPRS.");
return single_value->field_bep__period2;
}

int PktDlAssR99EGPRS_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PktDlAssR99EGPRS which has an ifpresent attribute.");
  switch (template_selection)
  {
  case SPECIFIC_VALUE:
  {    int ret_val = 3;
      if (single_value->field_bep__period2.is_present()) ret_val++;
      return ret_val;
    }
  case VALUE_LIST:
   {
     if (value_list.n_values<1)
       TTCN_error("Internal error: Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PktDlAssR99EGPRS 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 @RLCMAC_CSN1_Types.PktDlAssR99EGPRS containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PktDlAssR99EGPRS containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PktDlAssR99EGPRS containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PktDlAssR99EGPRS containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PktDlAssR99EGPRS containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PktDlAssR99EGPRS containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @RLCMAC_CSN1_Types.PktDlAssR99EGPRS containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RLCMAC_CSN1_Types.PktDlAssR99EGPRS.");
  }
  return 0;
}

void PktDlAssR99EGPRS_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ window_size := ");
single_value->field_window__size.log();
TTCN_Logger::log_event_str(", link_quality_meas_mode := ");
single_value->field_link__quality__meas__mode.log();
TTCN_Logger::log_event_str(", bep_period2_present := ");
single_value->field_bep__period2__present.log();
TTCN_Logger::log_event_str(", bep_period2 := ");
single_value->field_bep__period2.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void PktDlAssR99EGPRS_template::log_match(const PktDlAssR99EGPRS& 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_window__size.match(match_value.window__size(), legacy)){
TTCN_Logger::log_logmatch_info(".window_size");
single_value->field_window__size.log_match(match_value.window__size(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_link__quality__meas__mode.match(match_value.link__quality__meas__mode(), legacy)){
TTCN_Logger::log_logmatch_info(".link_quality_meas_mode");
single_value->field_link__quality__meas__mode.log_match(match_value.link__quality__meas__mode(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_bep__period2__present.match(match_value.bep__period2__present(), legacy)){
TTCN_Logger::log_logmatch_info(".bep_period2_present");
single_value->field_bep__period2__present.log_match(match_value.bep__period2__present(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if (match_value.bep__period2().ispresent()){
if(!single_value->field_bep__period2.match(match_value.bep__period2(), legacy)){
TTCN_Logger::log_logmatch_info(".bep_period2");
single_value->field_bep__period2.log_match(match_value.bep__period2(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
} else {
if (!single_value->field_bep__period2.match_omit(legacy)){
 TTCN_Logger::log_logmatch_info(".bep_period2 := omit with ");
TTCN_Logger::print_logmatch_buffer();
single_value->field_bep__period2.log();
TTCN_Logger::log_event_str(" unmatched");
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}
}else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE) {
TTCN_Logger::log_event_str("{ window_size := ");
single_value->field_window__size.log_match(match_value.window__size(), legacy);
TTCN_Logger::log_event_str(", link_quality_meas_mode := ");
single_value->field_link__quality__meas__mode.log_match(match_value.link__quality__meas__mode(), legacy);
TTCN_Logger::log_event_str(", bep_period2_present := ");
single_value->field_bep__period2__present.log_match(match_value.bep__period2__present(), legacy);
TTCN_Logger::log_event_str(", bep_period2 := ");
if (match_value.bep__period2().ispresent()) {
single_value->field_bep__period2.log_match(match_value.bep__period2(), legacy);
} else {
TTCN_Logger::log_event_str("omit with ");
single_value->field_bep__period2.log();
if (single_value->field_bep__period2.match_omit(legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
TTCN_Logger::log_event_str(" }");
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void PktDlAssR99EGPRS_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (window__size().is_bound()) window__size().set_implicit_omit();
if (link__quality__meas__mode().is_bound()) link__quality__meas__mode().set_implicit_omit();
if (bep__period2__present().is_bound()) bep__period2__present().set_implicit_omit();
if (!bep__period2().is_bound()) bep__period2() = OMIT_VALUE;
else bep__period2().set_implicit_omit();
}

void PktDlAssR99EGPRS_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_window__size.encode_text(text_buf);
single_value->field_link__quality__meas__mode.encode_text(text_buf);
single_value->field_bep__period2__present.encode_text(text_buf);
single_value->field_bep__period2.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 @RLCMAC_CSN1_Types.PktDlAssR99EGPRS.");
}
}

void PktDlAssR99EGPRS_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_window__size.decode_text(text_buf);
single_value->field_link__quality__meas__mode.decode_text(text_buf);
single_value->field_bep__period2__present.decode_text(text_buf);
single_value->field_bep__period2.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 PktDlAssR99EGPRS_template[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 @RLCMAC_CSN1_Types.PktDlAssR99EGPRS.");
}
}

void PktDlAssR99EGPRS_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    PktDlAssR99EGPRS_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_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 @RLCMAC_CSN1_Types.PktDlAssR99EGPRS 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) window__size().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) link__quality__meas__mode().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) bep__period2__present().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) bep__period2().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(), "window_size")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          window__size().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "link_quality_meas_mode")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          link__quality__meas__mode().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "bep_period2_present")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          bep__period2__present().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "bep_period2")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          bep__period2().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 @RLCMAC_CSN1_Types.PktDlAssR99EGPRS: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    PktDlAssR99EGPRS_template* precondition = new PktDlAssR99EGPRS_template;
    precondition->set_param(*param.get_elem(0));
    PktDlAssR99EGPRS_template* implied_template = new PktDlAssR99EGPRS_template;
    implied_template->set_param(*param.get_elem(1));
    *this = PktDlAssR99EGPRS_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@RLCMAC_CSN1_Types.PktDlAssR99EGPRS");
  }
  is_ifpresent = param.get_ifpresent();
}

void PktDlAssR99EGPRS_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_window__size.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PktDlAssR99EGPRS");
single_value->field_link__quality__meas__mode.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PktDlAssR99EGPRS");
single_value->field_bep__period2__present.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PktDlAssR99EGPRS");
single_value->field_bep__period2.check_restriction(t_res, t_name ? t_name : "@RLCMAC_CSN1_Types.PktDlAssR99EGPRS");
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 : "@RLCMAC_CSN1_Types.PktDlAssR99EGPRS");
}

boolean PktDlAssR99EGPRS_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean PktDlAssR99EGPRS_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<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;
}


} /* end of namespace */
