// This C++ source file was generated by the TTCN-3 compiler // of the TTCN-3 Test Executor version 9.0.0 // for (build@3978f7fbee0c) on Mon Jun 24 02:37:33 2024 // Copyright (c) 2000-2023 Ericsson Telecom AB // Do not edit this file unless you know what you are doing. /* Including header files */ #include "GTPC_Types.hh" namespace GTPC__Types { /* Literal string constants */ const unsigned char bs_24_bits[] = { 0 }, bs_10_bits[] = { 0 }, bs_11_bits[] = { 0 }, bs_12_bits[] = { 16 }, bs_13_bits[] = { 8 }, bs_14_bits[] = { 24 }, bs_0_bits[] = { 4 }, bs_15_bits[] = { 4 }, bs_16_bits[] = { 20 }, bs_17_bits[] = { 12 }, bs_18_bits[] = { 28 }, bs_7_bits[] = { 2 }, bs_5_bits[] = { 2 }, bs_19_bits[] = { 2 }, bs_20_bits[] = { 18 }, bs_21_bits[] = { 10 }, bs_22_bits[] = { 26 }, bs_1_bits[] = { 6 }, bs_23_bits[] = { 6 }, bs_3_bits[] = { 1 }, bs_8_bits[] = { 1 }, bs_2_bits[] = { 1 }, bs_4_bits[] = { 5 }, bs_9_bits[] = { 3 }, bs_6_bits[] = { 3 }; extern const BITSTRING bs_24(1, bs_24_bits), bs_10(2, bs_10_bits), bs_11(5, bs_11_bits), bs_12(5, bs_12_bits), bs_13(5, bs_13_bits), bs_14(5, bs_14_bits), bs_0(3, bs_0_bits), bs_15(5, bs_15_bits), bs_16(5, bs_16_bits), bs_17(5, bs_17_bits), bs_18(5, bs_18_bits), bs_7(2, bs_7_bits), bs_5(3, bs_5_bits), bs_19(5, bs_19_bits), bs_20(5, bs_20_bits), bs_21(5, bs_21_bits), bs_22(5, bs_22_bits), bs_1(3, bs_1_bits), bs_23(5, bs_23_bits), bs_3(1, bs_3_bits), bs_8(2, bs_8_bits), bs_2(3, bs_2_bits), bs_4(3, bs_4_bits), bs_9(2, bs_9_bits), bs_6(3, bs_6_bits); const unsigned char hs_0_nibbles[] = { 0 }, hs_1_nibbles[] = { 1 }, hs_2_nibbles[] = { 2 }; extern const HEXSTRING hs_0(1, hs_0_nibbles), hs_1(1, hs_1_nibbles), hs_2(1, hs_2_nibbles); const unsigned char os_28_octets[] = { 0 }, os_13_octets[] = { 1 }, os_2_octets[] = { 2 }, os_3_octets[] = { 3 }, os_58_octets[] = { 4 }, os_52_octets[] = { 5 }, os_40_octets[] = { 8 }, os_55_octets[] = { 9 }, os_50_octets[] = { 11 }, os_53_octets[] = { 12 }, os_59_octets[] = { 13 }, os_1_octets[] = { 14 }, os_4_octets[] = { 15 }, os_5_octets[] = { 16 }, os_6_octets[] = { 17 }, os_81_octets[] = { 18 }, os_48_octets[] = { 19 }, os_7_octets[] = { 20 }, os_83_octets[] = { 21 }, os_61_octets[] = { 22 }, os_62_octets[] = { 23 }, os_63_octets[] = { 24 }, os_64_octets[] = { 25 }, os_8_octets[] = { 26 }, os_9_octets[] = { 27 }, os_10_octets[] = { 28 }, os_51_octets[] = { 29 }, os_131_octets[] = { 30 }, os_132_octets[] = { 31 }, os_133_octets[] = { 32 }, os_11_octets[] = { 33 }, os_134_octets[] = { 34 }, os_135_octets[] = { 35 }, os_136_octets[] = { 36 }, os_137_octets[] = { 37 }, os_138_octets[] = { 48 }, os_139_octets[] = { 49 }, os_140_octets[] = { 50 }, os_141_octets[] = { 51 }, os_142_octets[] = { 52 }, os_143_octets[] = { 53 }, os_144_octets[] = { 54 }, os_145_octets[] = { 55 }, os_146_octets[] = { 56 }, os_147_octets[] = { 57 }, os_148_octets[] = { 58 }, os_149_octets[] = { 59 }, os_150_octets[] = { 60 }, os_151_octets[] = { 61 }, os_170_octets[] = { 62 }, os_152_octets[] = { 63 }, os_153_octets[] = { 70 }, os_106_octets[] = { 77 }, os_107_octets[] = { 78 }, os_105_octets[] = { 85 }, os_108_octets[] = { 86 }, os_12_octets[] = { 87 }, os_154_octets[] = { 96 }, os_155_octets[] = { 97 }, os_156_octets[] = { 98 }, os_157_octets[] = { 99 }, os_158_octets[] = { 100 }, os_159_octets[] = { 101 }, os_160_octets[] = { 102 }, os_161_octets[] = { 103 }, os_162_octets[] = { 104 }, os_163_octets[] = { 105 }, os_110_octets[] = { 112 }, os_109_octets[] = { 113 }, os_111_octets[] = { 114 }, os_112_octets[] = { 115 }, os_113_octets[] = { 116 }, os_164_octets[] = { 117 }, os_165_octets[] = { 118 }, os_166_octets[] = { 119 }, os_167_octets[] = { 120 }, os_168_octets[] = { 121 }, os_41_octets[] = { 127 }, os_15_octets[] = { 128 }, os_65_octets[] = { 129 }, os_66_octets[] = { 130 }, os_16_octets[] = { 131 }, os_17_octets[] = { 132 }, os_18_octets[] = { 133 }, os_19_octets[] = { 134 }, os_20_octets[] = { 135 }, os_56_octets[] = { 136 }, os_21_octets[] = { 137 }, os_84_octets[] = { 138 }, os_85_octets[] = { 139 }, os_100_octets[] = { 140 }, os_14_octets[] = { 141 }, os_22_octets[] = { 142 }, os_23_octets[] = { 143 }, os_114_octets[] = { 144 }, os_67_octets[] = { 145 }, os_101_octets[] = { 146 }, os_60_octets[] = { 147 }, os_24_octets[] = { 148 }, os_25_octets[] = { 149 }, os_68_octets[] = { 150 }, os_26_octets[] = { 151 }, os_27_octets[] = { 152 }, os_29_octets[] = { 153 }, os_30_octets[] = { 154 }, os_31_octets[] = { 155 }, os_69_octets[] = { 156 }, os_120_octets[] = { 157 }, os_115_octets[] = { 158 }, os_117_octets[] = { 159 }, os_122_octets[] = { 160 }, os_103_octets[] = { 161 }, os_32_octets[] = { 162 }, os_54_octets[] = { 163 }, os_86_octets[] = { 164 }, os_123_octets[] = { 165 }, os_124_octets[] = { 166 }, os_118_octets[] = { 167 }, os_125_octets[] = { 168 }, os_119_octets[] = { 169 }, os_126_octets[] = { 170 }, os_127_octets[] = { 171 }, os_87_octets[] = { 173 }, os_88_octets[] = { 174 }, os_104_octets[] = { 175 }, os_89_octets[] = { 176 }, os_121_octets[] = { 177 }, os_116_octets[] = { 178 }, os_102_octets[] = { 179 }, os_90_octets[] = { 180 }, os_42_octets[] = { 181 }, os_46_octets[] = { 182 }, os_33_octets[] = { 183 }, os_43_octets[] = { 184 }, os_128_octets[] = { 185 }, os_129_octets[] = { 186 }, os_130_octets[] = { 187 }, os_91_octets[] = { 188 }, os_70_octets[] = { 189 }, os_71_octets[] = { 190 }, os_34_octets[] = { 191 }, os_72_octets[] = { 192 }, os_35_octets[] = { 193 }, os_36_octets[] = { 194 }, os_44_octets[] = { 195 }, os_92_octets[] = { 196 }, os_93_octets[] = { 197 }, os_37_octets[] = { 198 }, os_73_octets[] = { 199 }, os_74_octets[] = { 200 }, os_75_octets[] = { 201 }, os_45_octets[] = { 202 }, os_38_octets[] = { 203 }, os_76_octets[] = { 204 }, os_77_octets[] = { 205 }, os_94_octets[] = { 207 }, os_95_octets[] = { 208 }, os_96_octets[] = { 209 }, os_97_octets[] = { 210 }, os_98_octets[] = { 211 }, os_99_octets[] = { 212 }, os_78_octets[] = { 213 }, os_49_octets[] = { 214 }, os_79_octets[] = { 215 }, os_39_octets[] = { 216 }, os_57_octets[] = { 217 }, os_80_octets[] = { 218 }, os_82_octets[] = { 219 }, os_169_octets[] = { 238 }, os_47_octets[] = { 251 }, os_0_octets[] = { 255 }; extern const OCTETSTRING os_28(1, os_28_octets), os_13(1, os_13_octets), os_2(1, os_2_octets), os_3(1, os_3_octets), os_58(1, os_58_octets), os_52(1, os_52_octets), os_40(1, os_40_octets), os_55(1, os_55_octets), os_50(1, os_50_octets), os_53(1, os_53_octets), os_59(1, os_59_octets), os_1(1, os_1_octets), os_4(1, os_4_octets), os_5(1, os_5_octets), os_6(1, os_6_octets), os_81(1, os_81_octets), os_48(1, os_48_octets), os_7(1, os_7_octets), os_83(1, os_83_octets), os_61(1, os_61_octets), os_62(1, os_62_octets), os_63(1, os_63_octets), os_64(1, os_64_octets), os_8(1, os_8_octets), os_9(1, os_9_octets), os_10(1, os_10_octets), os_51(1, os_51_octets), os_131(1, os_131_octets), os_132(1, os_132_octets), os_133(1, os_133_octets), os_11(1, os_11_octets), os_134(1, os_134_octets), os_135(1, os_135_octets), os_136(1, os_136_octets), os_137(1, os_137_octets), os_138(1, os_138_octets), os_139(1, os_139_octets), os_140(1, os_140_octets), os_141(1, os_141_octets), os_142(1, os_142_octets), os_143(1, os_143_octets), os_144(1, os_144_octets), os_145(1, os_145_octets), os_146(1, os_146_octets), os_147(1, os_147_octets), os_148(1, os_148_octets), os_149(1, os_149_octets), os_150(1, os_150_octets), os_151(1, os_151_octets), os_170(1, os_170_octets), os_152(1, os_152_octets), os_153(1, os_153_octets), os_106(1, os_106_octets), os_107(1, os_107_octets), os_105(1, os_105_octets), os_108(1, os_108_octets), os_12(1, os_12_octets), os_154(1, os_154_octets), os_155(1, os_155_octets), os_156(1, os_156_octets), os_157(1, os_157_octets), os_158(1, os_158_octets), os_159(1, os_159_octets), os_160(1, os_160_octets), os_161(1, os_161_octets), os_162(1, os_162_octets), os_163(1, os_163_octets), os_110(1, os_110_octets), os_109(1, os_109_octets), os_111(1, os_111_octets), os_112(1, os_112_octets), os_113(1, os_113_octets), os_164(1, os_164_octets), os_165(1, os_165_octets), os_166(1, os_166_octets), os_167(1, os_167_octets), os_168(1, os_168_octets), os_41(1, os_41_octets), os_15(1, os_15_octets), os_65(1, os_65_octets), os_66(1, os_66_octets), os_16(1, os_16_octets), os_17(1, os_17_octets), os_18(1, os_18_octets), os_19(1, os_19_octets), os_20(1, os_20_octets), os_56(1, os_56_octets), os_21(1, os_21_octets), os_84(1, os_84_octets), os_85(1, os_85_octets), os_100(1, os_100_octets), os_14(1, os_14_octets), os_22(1, os_22_octets), os_23(1, os_23_octets), os_114(1, os_114_octets), os_67(1, os_67_octets), os_101(1, os_101_octets), os_60(1, os_60_octets), os_24(1, os_24_octets), os_25(1, os_25_octets), os_68(1, os_68_octets), os_26(1, os_26_octets), os_27(1, os_27_octets), os_29(1, os_29_octets), os_30(1, os_30_octets), os_31(1, os_31_octets), os_69(1, os_69_octets), os_120(1, os_120_octets), os_115(1, os_115_octets), os_117(1, os_117_octets), os_122(1, os_122_octets), os_103(1, os_103_octets), os_32(1, os_32_octets), os_54(1, os_54_octets), os_86(1, os_86_octets), os_123(1, os_123_octets), os_124(1, os_124_octets), os_118(1, os_118_octets), os_125(1, os_125_octets), os_119(1, os_119_octets), os_126(1, os_126_octets), os_127(1, os_127_octets), os_87(1, os_87_octets), os_88(1, os_88_octets), os_104(1, os_104_octets), os_89(1, os_89_octets), os_121(1, os_121_octets), os_116(1, os_116_octets), os_102(1, os_102_octets), os_90(1, os_90_octets), os_42(1, os_42_octets), os_46(1, os_46_octets), os_33(1, os_33_octets), os_43(1, os_43_octets), os_128(1, os_128_octets), os_129(1, os_129_octets), os_130(1, os_130_octets), os_91(1, os_91_octets), os_70(1, os_70_octets), os_71(1, os_71_octets), os_34(1, os_34_octets), os_72(1, os_72_octets), os_35(1, os_35_octets), os_36(1, os_36_octets), os_44(1, os_44_octets), os_92(1, os_92_octets), os_93(1, os_93_octets), os_37(1, os_37_octets), os_73(1, os_73_octets), os_74(1, os_74_octets), os_75(1, os_75_octets), os_45(1, os_45_octets), os_38(1, os_38_octets), os_76(1, os_76_octets), os_77(1, os_77_octets), os_94(1, os_94_octets), os_95(1, os_95_octets), os_96(1, os_96_octets), os_97(1, os_97_octets), os_98(1, os_98_octets), os_99(1, os_99_octets), os_78(1, os_78_octets), os_49(1, os_49_octets), os_79(1, os_79_octets), os_39(1, os_39_octets), os_57(1, os_57_octets), os_80(1, os_80_octets), os_82(1, os_82_octets), os_169(1, os_169_octets), os_47(1, os_47_octets), os_0(1, os_0_octets); const unsigned char module_checksum[] = { 0xba, 0x04, 0xf2, 0x5f, 0xa4, 0xdb, 0x9f, 0x1d, 0x58, 0x81, 0x4b, 0x06, 0x34, 0xc7, 0x6d, 0x8e }; /* Global variable definitions */ SystemUnderTest const_dec__PDU__GTPC_pl__SystemUnderTest_defval; const SystemUnderTest& dec__PDU__GTPC_pl__SystemUnderTest_defval = const_dec__PDU__GTPC_pl__SystemUnderTest_defval; const TTCN_RAWdescriptor_t SystemUnderTest_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for SystemUnderTest const TTCN_Typedescriptor_t SystemUnderTest_descr_ = { "@GTPC_Types.SystemUnderTest", NULL, &SystemUnderTest_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SystemUnderTest_default_coding("RAW"); const XERdescriptor_t IE__Type__Extension_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int IE__Type__Extension_type__gtpc_oer_ext_arr_[0] = {}; const int IE__Type__Extension_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t IE__Type__Extension_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, IE__Type__Extension_type__gtpc_oer_ext_arr_, 0, IE__Type__Extension_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t IE__Type__Extension_type__gtpc_descr_ = { "@GTPC_Types.IE_Type_Extension.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &IE__Type__Extension_type__gtpc_xer_, &OCTETSTRING_json_, &IE__Type__Extension_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IE__Type__Extension_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t IE__Type__Extension_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t IE__Type__Extension_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t IE__Type__Extension_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t IE__Type__Extension_lengthf_descr_ = { "@GTPC_Types.IE_Type_Extension.lengthf", &INTEGER_ber_, &IE__Type__Extension_lengthf_raw_, &INTEGER_text_, &IE__Type__Extension_lengthf_xer_, &INTEGER_json_, &IE__Type__Extension_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IE__Type__Extension_lengthf_default_coding("RAW"); const TTCN_RAWdescriptor_t IE__Extension__UnionType_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for IE__Extension__UnionType const TTCN_Typedescriptor_t IE__Extension__UnionType_descr_ = { "@GTPC_Types.IE_Extension_UnionType", NULL, &IE__Extension__UnionType_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t IE__Extension__Type_elementIdentifier_xer_ = { {"elementIdentifier>\n", "elementIdentifier>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int IE__Extension__Type_elementIdentifier_oer_ext_arr_[0] = {}; const int IE__Extension__Type_elementIdentifier_oer_p_[0] = {}; const TTCN_OERdescriptor_t IE__Extension__Type_elementIdentifier_oer_ = { -1, TRUE, 2, FALSE, 0, 0, IE__Extension__Type_elementIdentifier_oer_ext_arr_, 0, IE__Extension__Type_elementIdentifier_oer_p_}; const TTCN_Typedescriptor_t IE__Extension__Type_elementIdentifier_descr_ = { "@GTPC_Types.IE_Extension_Type.elementIdentifier", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &IE__Extension__Type_elementIdentifier_xer_, &OCTETSTRING_json_, &IE__Extension__Type_elementIdentifier_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IE__Extension__Type_elementIdentifier_default_coding("RAW"); const XERdescriptor_t IE__Extension__Type_valueField_xer_ = { {"valueField>\n", "valueField>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int IE__Extension__Type_valueField_oer_ext_arr_[0] = {}; const int IE__Extension__Type_valueField_oer_p_[0] = {}; const TTCN_OERdescriptor_t IE__Extension__Type_valueField_oer_ = { -1, TRUE, -1, FALSE, 0, 0, IE__Extension__Type_valueField_oer_ext_arr_, 0, IE__Extension__Type_valueField_oer_p_}; const TTCN_Typedescriptor_t IE__Extension__Type_valueField_descr_ = { "@GTPC_Types.IE_Extension_Type.valueField", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &IE__Extension__Type_valueField_xer_, &OCTETSTRING_json_, &IE__Extension__Type_valueField_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IE__Extension__Type_valueField_default_coding("RAW"); const TTCN_RAWdescriptor_t IE__Extension__Type_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for IE__Extension__Type const TTCN_Typedescriptor_t IE__Extension__Type_descr_ = { "@GTPC_Types.IE_Extension_Type", NULL, &IE__Extension__Type_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IE__Extension__Type_default_coding("RAW"); UNIVERSAL_CHARSTRING IE__Extension__UnionType_iE__Type__Extension_default_coding("RAW"); UNIVERSAL_CHARSTRING IE__Extension__UnionType_default_coding("RAW"); UNIVERSAL_CHARSTRING IE__Type__Extension_iE__Type__Extension_default_coding("RAW"); const TTCN_RAWdescriptor_t IE__Type__Extension_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for IE__Type__Extension const TTCN_Typedescriptor_t IE__Type__Extension_descr_ = { "@GTPC_Types.IE_Type_Extension", NULL, &IE__Type__Extension_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IE__Type__Extension_default_coding("RAW"); const XERdescriptor_t Cause__gtpc_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int Cause__gtpc_type__gtpc_oer_ext_arr_[0] = {}; const int Cause__gtpc_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t Cause__gtpc_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Cause__gtpc_type__gtpc_oer_ext_arr_, 0, Cause__gtpc_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t Cause__gtpc_type__gtpc_descr_ = { "@GTPC_Types.Cause_gtpc.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Cause__gtpc_type__gtpc_xer_, &OCTETSTRING_json_, &Cause__gtpc_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Cause__gtpc_type__gtpc_default_coding("RAW"); const XERdescriptor_t Cause__gtpc_causevalue_xer_ = { {"causevalue>\n", "causevalue>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int Cause__gtpc_causevalue_oer_ext_arr_[0] = {}; const int Cause__gtpc_causevalue_oer_p_[0] = {}; const TTCN_OERdescriptor_t Cause__gtpc_causevalue_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Cause__gtpc_causevalue_oer_ext_arr_, 0, Cause__gtpc_causevalue_oer_p_}; const TTCN_Typedescriptor_t Cause__gtpc_causevalue_descr_ = { "@GTPC_Types.Cause_gtpc.causevalue", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Cause__gtpc_causevalue_xer_, &OCTETSTRING_json_, &Cause__gtpc_causevalue_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Cause__gtpc_causevalue_default_coding("RAW"); const TTCN_RAWdescriptor_t Cause__gtpc_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for Cause__gtpc const TTCN_Typedescriptor_t Cause__gtpc_descr_ = { "@GTPC_Types.Cause_gtpc", NULL, &Cause__gtpc_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Cause__gtpc_default_coding("RAW"); const XERdescriptor_t IMSI__gtpc_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int IMSI__gtpc_type__gtpc_oer_ext_arr_[0] = {}; const int IMSI__gtpc_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t IMSI__gtpc_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, IMSI__gtpc_type__gtpc_oer_ext_arr_, 0, IMSI__gtpc_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t IMSI__gtpc_type__gtpc_descr_ = { "@GTPC_Types.IMSI_gtpc.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &IMSI__gtpc_type__gtpc_xer_, &OCTETSTRING_json_, &IMSI__gtpc_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IMSI__gtpc_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t IMSI__gtpc_digits_raw_ = {60,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t IMSI__gtpc_digits_xer_ = { {"digits>\n", "digits>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t IMSI__gtpc_digits_descr_ = { "@GTPC_Types.IMSI_gtpc.digits", NULL, &IMSI__gtpc_digits_raw_, NULL, &IMSI__gtpc_digits_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IMSI__gtpc_digits_default_coding("RAW"); const XERdescriptor_t IMSI__gtpc_padding_xer_ = { {"padding>\n", "padding>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t IMSI__gtpc_padding_descr_ = { "@GTPC_Types.IMSI_gtpc.padding", NULL, &General__Types::HEX1_raw_, NULL, &IMSI__gtpc_padding_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IMSI__gtpc_padding_default_coding("RAW"); const TTCN_RAWdescriptor_t IMSI__gtpc_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for IMSI__gtpc const TTCN_Typedescriptor_t IMSI__gtpc_descr_ = { "@GTPC_Types.IMSI_gtpc", NULL, &IMSI__gtpc_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IMSI__gtpc_default_coding("RAW"); const XERdescriptor_t RoutingAreaIdentity_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RoutingAreaIdentity_type__gtpc_oer_ext_arr_[0] = {}; const int RoutingAreaIdentity_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t RoutingAreaIdentity_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RoutingAreaIdentity_type__gtpc_oer_ext_arr_, 0, RoutingAreaIdentity_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t RoutingAreaIdentity_type__gtpc_descr_ = { "@GTPC_Types.RoutingAreaIdentity.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RoutingAreaIdentity_type__gtpc_xer_, &OCTETSTRING_json_, &RoutingAreaIdentity_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RoutingAreaIdentity_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t RoutingAreaIdentity_mcc__digits_raw_ = {12,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t RoutingAreaIdentity_mcc__digits_xer_ = { {"mcc_digits>\n", "mcc_digits>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t RoutingAreaIdentity_mcc__digits_descr_ = { "@GTPC_Types.RoutingAreaIdentity.mcc_digits", NULL, &RoutingAreaIdentity_mcc__digits_raw_, NULL, &RoutingAreaIdentity_mcc__digits_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RoutingAreaIdentity_mcc__digits_default_coding("RAW"); const TTCN_RAWdescriptor_t RoutingAreaIdentity_mnc__digits_raw_ = {12,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t RoutingAreaIdentity_mnc__digits_xer_ = { {"mnc_digits>\n", "mnc_digits>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t RoutingAreaIdentity_mnc__digits_descr_ = { "@GTPC_Types.RoutingAreaIdentity.mnc_digits", NULL, &RoutingAreaIdentity_mnc__digits_raw_, NULL, &RoutingAreaIdentity_mnc__digits_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RoutingAreaIdentity_mnc__digits_default_coding("RAW"); const XERdescriptor_t RoutingAreaIdentity_lac_xer_ = { {"lac>\n", "lac>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RoutingAreaIdentity_lac_oer_ext_arr_[0] = {}; const int RoutingAreaIdentity_lac_oer_p_[0] = {}; const TTCN_OERdescriptor_t RoutingAreaIdentity_lac_oer_ = { -1, TRUE, 2, FALSE, 0, 0, RoutingAreaIdentity_lac_oer_ext_arr_, 0, RoutingAreaIdentity_lac_oer_p_}; const TTCN_Typedescriptor_t RoutingAreaIdentity_lac_descr_ = { "@GTPC_Types.RoutingAreaIdentity.lac", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &RoutingAreaIdentity_lac_xer_, &OCTETSTRING_json_, &RoutingAreaIdentity_lac_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RoutingAreaIdentity_lac_default_coding("RAW"); const XERdescriptor_t RoutingAreaIdentity_rac_xer_ = { {"rac>\n", "rac>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RoutingAreaIdentity_rac_oer_ext_arr_[0] = {}; const int RoutingAreaIdentity_rac_oer_p_[0] = {}; const TTCN_OERdescriptor_t RoutingAreaIdentity_rac_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RoutingAreaIdentity_rac_oer_ext_arr_, 0, RoutingAreaIdentity_rac_oer_p_}; const TTCN_Typedescriptor_t RoutingAreaIdentity_rac_descr_ = { "@GTPC_Types.RoutingAreaIdentity.rac", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RoutingAreaIdentity_rac_xer_, &OCTETSTRING_json_, &RoutingAreaIdentity_rac_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RoutingAreaIdentity_rac_default_coding("RAW"); const TTCN_RAWdescriptor_t RoutingAreaIdentity_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RoutingAreaIdentity const TTCN_Typedescriptor_t RoutingAreaIdentity_descr_ = { "@GTPC_Types.RoutingAreaIdentity", NULL, &RoutingAreaIdentity_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RoutingAreaIdentity_default_coding("RAW"); const XERdescriptor_t TLLI_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int TLLI_type__gtpc_oer_ext_arr_[0] = {}; const int TLLI_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t TLLI_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, TLLI_type__gtpc_oer_ext_arr_, 0, TLLI_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t TLLI_type__gtpc_descr_ = { "@GTPC_Types.TLLI.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &TLLI_type__gtpc_xer_, &OCTETSTRING_json_, &TLLI_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TLLI_type__gtpc_default_coding("RAW"); const XERdescriptor_t TLLI_tlli__element_xer_ = { {"tlli_element>\n", "tlli_element>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int TLLI_tlli__element_oer_ext_arr_[0] = {}; const int TLLI_tlli__element_oer_p_[0] = {}; const TTCN_OERdescriptor_t TLLI_tlli__element_oer_ = { -1, TRUE, 4, FALSE, 0, 0, TLLI_tlli__element_oer_ext_arr_, 0, TLLI_tlli__element_oer_p_}; const TTCN_Typedescriptor_t TLLI_tlli__element_descr_ = { "@GTPC_Types.TLLI.tlli_element", &OCTETSTRING_ber_, &General__Types::OCT4_raw_, &OCTETSTRING_text_, &TLLI_tlli__element_xer_, &OCTETSTRING_json_, &TLLI_tlli__element_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TLLI_tlli__element_default_coding("RAW"); const TTCN_RAWdescriptor_t TLLI_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for TLLI const TTCN_Typedescriptor_t TLLI_descr_ = { "@GTPC_Types.TLLI", NULL, &TLLI_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TLLI_default_coding("RAW"); const XERdescriptor_t PacketTMSI_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PacketTMSI_type__gtpc_oer_ext_arr_[0] = {}; const int PacketTMSI_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t PacketTMSI_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PacketTMSI_type__gtpc_oer_ext_arr_, 0, PacketTMSI_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t PacketTMSI_type__gtpc_descr_ = { "@GTPC_Types.PacketTMSI.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PacketTMSI_type__gtpc_xer_, &OCTETSTRING_json_, &PacketTMSI_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PacketTMSI_type__gtpc_default_coding("RAW"); const XERdescriptor_t PacketTMSI_p__tmsi_xer_ = { {"p_tmsi>\n", "p_tmsi>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PacketTMSI_p__tmsi_oer_ext_arr_[0] = {}; const int PacketTMSI_p__tmsi_oer_p_[0] = {}; const TTCN_OERdescriptor_t PacketTMSI_p__tmsi_oer_ = { -1, TRUE, 4, FALSE, 0, 0, PacketTMSI_p__tmsi_oer_ext_arr_, 0, PacketTMSI_p__tmsi_oer_p_}; const TTCN_Typedescriptor_t PacketTMSI_p__tmsi_descr_ = { "@GTPC_Types.PacketTMSI.p_tmsi", &OCTETSTRING_ber_, &General__Types::OCT4_raw_, &OCTETSTRING_text_, &PacketTMSI_p__tmsi_xer_, &OCTETSTRING_json_, &PacketTMSI_p__tmsi_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PacketTMSI_p__tmsi_default_coding("RAW"); const TTCN_RAWdescriptor_t PacketTMSI_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for PacketTMSI const TTCN_Typedescriptor_t PacketTMSI_descr_ = { "@GTPC_Types.PacketTMSI", NULL, &PacketTMSI_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PacketTMSI_default_coding("RAW"); const XERdescriptor_t ReorderingRequired_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int ReorderingRequired_type__gtpc_oer_ext_arr_[0] = {}; const int ReorderingRequired_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t ReorderingRequired_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ReorderingRequired_type__gtpc_oer_ext_arr_, 0, ReorderingRequired_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t ReorderingRequired_type__gtpc_descr_ = { "@GTPC_Types.ReorderingRequired.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &ReorderingRequired_type__gtpc_xer_, &OCTETSTRING_json_, &ReorderingRequired_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ReorderingRequired_type__gtpc_default_coding("RAW"); const XERdescriptor_t ReorderingRequired_reordreq_xer_ = { {"reordreq>\n", "reordreq>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t ReorderingRequired_reordreq_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t ReorderingRequired_reordreq_descr_ = { "@GTPC_Types.ReorderingRequired.reordreq", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &ReorderingRequired_reordreq_xer_, &BITSTRING_json_, &ReorderingRequired_reordreq_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ReorderingRequired_reordreq_default_coding("RAW"); const XERdescriptor_t ReorderingRequired_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 ReorderingRequired_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t ReorderingRequired_spare_descr_ = { "@GTPC_Types.ReorderingRequired.spare", &BITSTRING_ber_, &General__Types::BIT7_raw_, NULL, &ReorderingRequired_spare_xer_, &BITSTRING_json_, &ReorderingRequired_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ReorderingRequired_spare_default_coding("RAW"); const TTCN_RAWdescriptor_t ReorderingRequired_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for ReorderingRequired const TTCN_Typedescriptor_t ReorderingRequired_descr_ = { "@GTPC_Types.ReorderingRequired", NULL, &ReorderingRequired_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ReorderingRequired_default_coding("RAW"); const XERdescriptor_t AuthenticationTriplet__GTPC_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int AuthenticationTriplet__GTPC_type__gtpc_oer_ext_arr_[0] = {}; const int AuthenticationTriplet__GTPC_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t AuthenticationTriplet__GTPC_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, AuthenticationTriplet__GTPC_type__gtpc_oer_ext_arr_, 0, AuthenticationTriplet__GTPC_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t AuthenticationTriplet__GTPC_type__gtpc_descr_ = { "@GTPC_Types.AuthenticationTriplet_GTPC.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &AuthenticationTriplet__GTPC_type__gtpc_xer_, &OCTETSTRING_json_, &AuthenticationTriplet__GTPC_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AuthenticationTriplet__GTPC_type__gtpc_default_coding("RAW"); const XERdescriptor_t AuthenticationTriplet__GTPC_rand_xer_ = { {"rand>\n", "rand>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int AuthenticationTriplet__GTPC_rand_oer_ext_arr_[0] = {}; const int AuthenticationTriplet__GTPC_rand_oer_p_[0] = {}; const TTCN_OERdescriptor_t AuthenticationTriplet__GTPC_rand_oer_ = { -1, TRUE, 16, FALSE, 0, 0, AuthenticationTriplet__GTPC_rand_oer_ext_arr_, 0, AuthenticationTriplet__GTPC_rand_oer_p_}; const TTCN_Typedescriptor_t AuthenticationTriplet__GTPC_rand_descr_ = { "@GTPC_Types.AuthenticationTriplet_GTPC.rand", &OCTETSTRING_ber_, &General__Types::OCT16_raw_, &OCTETSTRING_text_, &AuthenticationTriplet__GTPC_rand_xer_, &OCTETSTRING_json_, &AuthenticationTriplet__GTPC_rand_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AuthenticationTriplet__GTPC_rand_default_coding("RAW"); const XERdescriptor_t AuthenticationTriplet__GTPC_sres_xer_ = { {"sres>\n", "sres>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int AuthenticationTriplet__GTPC_sres_oer_ext_arr_[0] = {}; const int AuthenticationTriplet__GTPC_sres_oer_p_[0] = {}; const TTCN_OERdescriptor_t AuthenticationTriplet__GTPC_sres_oer_ = { -1, TRUE, 4, FALSE, 0, 0, AuthenticationTriplet__GTPC_sres_oer_ext_arr_, 0, AuthenticationTriplet__GTPC_sres_oer_p_}; const TTCN_Typedescriptor_t AuthenticationTriplet__GTPC_sres_descr_ = { "@GTPC_Types.AuthenticationTriplet_GTPC.sres", &OCTETSTRING_ber_, &General__Types::OCT4_raw_, &OCTETSTRING_text_, &AuthenticationTriplet__GTPC_sres_xer_, &OCTETSTRING_json_, &AuthenticationTriplet__GTPC_sres_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AuthenticationTriplet__GTPC_sres_default_coding("RAW"); const XERdescriptor_t AuthenticationTriplet__GTPC_kc_xer_ = { {"kc>\n", "kc>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int AuthenticationTriplet__GTPC_kc_oer_ext_arr_[0] = {}; const int AuthenticationTriplet__GTPC_kc_oer_p_[0] = {}; const TTCN_OERdescriptor_t AuthenticationTriplet__GTPC_kc_oer_ = { -1, TRUE, 8, FALSE, 0, 0, AuthenticationTriplet__GTPC_kc_oer_ext_arr_, 0, AuthenticationTriplet__GTPC_kc_oer_p_}; const TTCN_Typedescriptor_t AuthenticationTriplet__GTPC_kc_descr_ = { "@GTPC_Types.AuthenticationTriplet_GTPC.kc", &OCTETSTRING_ber_, &General__Types::OCT8_raw_, &OCTETSTRING_text_, &AuthenticationTriplet__GTPC_kc_xer_, &OCTETSTRING_json_, &AuthenticationTriplet__GTPC_kc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AuthenticationTriplet__GTPC_kc_default_coding("RAW"); const TTCN_RAWdescriptor_t AuthenticationTriplet__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for AuthenticationTriplet__GTPC const TTCN_Typedescriptor_t AuthenticationTriplet__GTPC_descr_ = { "@GTPC_Types.AuthenticationTriplet_GTPC", NULL, &AuthenticationTriplet__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AuthenticationTriplet__GTPC_default_coding("RAW"); const TTCN_RAWdescriptor_t AuthenticationTriplet__GTPC__SetOf_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for AuthenticationTriplet__GTPC__SetOf const TTCN_Typedescriptor_t AuthenticationTriplet__GTPC__SetOf_descr_ = { "@GTPC_Types.AuthenticationTriplet_GTPC_SetOf", NULL, &AuthenticationTriplet__GTPC__SetOf_raw_, NULL, NULL, NULL, NULL, NULL, &AuthenticationTriplet__GTPC_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AuthenticationTriplet__GTPC__SetOf_0_default_coding("RAW"); UNIVERSAL_CHARSTRING AuthenticationTriplet__GTPC__SetOf_default_coding("RAW"); const XERdescriptor_t MAP__Cause_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MAP__Cause_type__gtpc_oer_ext_arr_[0] = {}; const int MAP__Cause_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t MAP__Cause_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MAP__Cause_type__gtpc_oer_ext_arr_, 0, MAP__Cause_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t MAP__Cause_type__gtpc_descr_ = { "@GTPC_Types.MAP_Cause.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MAP__Cause_type__gtpc_xer_, &OCTETSTRING_json_, &MAP__Cause_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MAP__Cause_type__gtpc_default_coding("RAW"); const XERdescriptor_t MAP__Cause_mapCauseValue_xer_ = { {"mapCauseValue>\n", "mapCauseValue>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MAP__Cause_mapCauseValue_oer_ext_arr_[0] = {}; const int MAP__Cause_mapCauseValue_oer_p_[0] = {}; const TTCN_OERdescriptor_t MAP__Cause_mapCauseValue_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MAP__Cause_mapCauseValue_oer_ext_arr_, 0, MAP__Cause_mapCauseValue_oer_p_}; const TTCN_Typedescriptor_t MAP__Cause_mapCauseValue_descr_ = { "@GTPC_Types.MAP_Cause.mapCauseValue", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MAP__Cause_mapCauseValue_xer_, &OCTETSTRING_json_, &MAP__Cause_mapCauseValue_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MAP__Cause_mapCauseValue_default_coding("RAW"); const TTCN_RAWdescriptor_t MAP__Cause_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MAP__Cause const TTCN_Typedescriptor_t MAP__Cause_descr_ = { "@GTPC_Types.MAP_Cause", NULL, &MAP__Cause_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MAP__Cause_default_coding("RAW"); const XERdescriptor_t PTMSI__Signature_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PTMSI__Signature_type__gtpc_oer_ext_arr_[0] = {}; const int PTMSI__Signature_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t PTMSI__Signature_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PTMSI__Signature_type__gtpc_oer_ext_arr_, 0, PTMSI__Signature_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t PTMSI__Signature_type__gtpc_descr_ = { "@GTPC_Types.PTMSI_Signature.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PTMSI__Signature_type__gtpc_xer_, &OCTETSTRING_json_, &PTMSI__Signature_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PTMSI__Signature_type__gtpc_default_coding("RAW"); const XERdescriptor_t PTMSI__Signature_ptmsi__Signature_xer_ = { {"ptmsi_Signature>\n", "ptmsi_Signature>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PTMSI__Signature_ptmsi__Signature_oer_ext_arr_[0] = {}; const int PTMSI__Signature_ptmsi__Signature_oer_p_[0] = {}; const TTCN_OERdescriptor_t PTMSI__Signature_ptmsi__Signature_oer_ = { -1, TRUE, 3, FALSE, 0, 0, PTMSI__Signature_ptmsi__Signature_oer_ext_arr_, 0, PTMSI__Signature_ptmsi__Signature_oer_p_}; const TTCN_Typedescriptor_t PTMSI__Signature_ptmsi__Signature_descr_ = { "@GTPC_Types.PTMSI_Signature.ptmsi_Signature", &OCTETSTRING_ber_, &General__Types::OCT3_raw_, &OCTETSTRING_text_, &PTMSI__Signature_ptmsi__Signature_xer_, &OCTETSTRING_json_, &PTMSI__Signature_ptmsi__Signature_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PTMSI__Signature_ptmsi__Signature_default_coding("RAW"); const TTCN_RAWdescriptor_t PTMSI__Signature_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for PTMSI__Signature const TTCN_Typedescriptor_t PTMSI__Signature_descr_ = { "@GTPC_Types.PTMSI_Signature", NULL, &PTMSI__Signature_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PTMSI__Signature_default_coding("RAW"); const XERdescriptor_t MS__Validated_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MS__Validated_type__gtpc_oer_ext_arr_[0] = {}; const int MS__Validated_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t MS__Validated_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MS__Validated_type__gtpc_oer_ext_arr_, 0, MS__Validated_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t MS__Validated_type__gtpc_descr_ = { "@GTPC_Types.MS_Validated.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MS__Validated_type__gtpc_xer_, &OCTETSTRING_json_, &MS__Validated_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MS__Validated_type__gtpc_default_coding("RAW"); const XERdescriptor_t MS__Validated_msValidated_xer_ = { {"msValidated>\n", "msValidated>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MS__Validated_msValidated_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MS__Validated_msValidated_descr_ = { "@GTPC_Types.MS_Validated.msValidated", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &MS__Validated_msValidated_xer_, &BITSTRING_json_, &MS__Validated_msValidated_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MS__Validated_msValidated_default_coding("RAW"); const XERdescriptor_t MS__Validated_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 MS__Validated_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MS__Validated_spare_descr_ = { "@GTPC_Types.MS_Validated.spare", &BITSTRING_ber_, &General__Types::BIT7_raw_, NULL, &MS__Validated_spare_xer_, &BITSTRING_json_, &MS__Validated_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MS__Validated_spare_default_coding("RAW"); const TTCN_RAWdescriptor_t MS__Validated_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MS__Validated const TTCN_Typedescriptor_t MS__Validated_descr_ = { "@GTPC_Types.MS_Validated", NULL, &MS__Validated_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MS__Validated_default_coding("RAW"); const XERdescriptor_t Recovery__gtpc_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int Recovery__gtpc_type__gtpc_oer_ext_arr_[0] = {}; const int Recovery__gtpc_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t Recovery__gtpc_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Recovery__gtpc_type__gtpc_oer_ext_arr_, 0, Recovery__gtpc_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t Recovery__gtpc_type__gtpc_descr_ = { "@GTPC_Types.Recovery_gtpc.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Recovery__gtpc_type__gtpc_xer_, &OCTETSTRING_json_, &Recovery__gtpc_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Recovery__gtpc_type__gtpc_default_coding("RAW"); const XERdescriptor_t Recovery__gtpc_restartCounter_xer_ = { {"restartCounter>\n", "restartCounter>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int Recovery__gtpc_restartCounter_oer_ext_arr_[0] = {}; const int Recovery__gtpc_restartCounter_oer_p_[0] = {}; const TTCN_OERdescriptor_t Recovery__gtpc_restartCounter_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Recovery__gtpc_restartCounter_oer_ext_arr_, 0, Recovery__gtpc_restartCounter_oer_p_}; const TTCN_Typedescriptor_t Recovery__gtpc_restartCounter_descr_ = { "@GTPC_Types.Recovery_gtpc.restartCounter", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Recovery__gtpc_restartCounter_xer_, &OCTETSTRING_json_, &Recovery__gtpc_restartCounter_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Recovery__gtpc_restartCounter_default_coding("RAW"); const TTCN_RAWdescriptor_t Recovery__gtpc_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for Recovery__gtpc const TTCN_Typedescriptor_t Recovery__gtpc_descr_ = { "@GTPC_Types.Recovery_gtpc", NULL, &Recovery__gtpc_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Recovery__gtpc_default_coding("RAW"); const XERdescriptor_t SelectionMode_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int SelectionMode_type__gtpc_oer_ext_arr_[0] = {}; const int SelectionMode_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t SelectionMode_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SelectionMode_type__gtpc_oer_ext_arr_, 0, SelectionMode_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t SelectionMode_type__gtpc_descr_ = { "@GTPC_Types.SelectionMode.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &SelectionMode_type__gtpc_xer_, &OCTETSTRING_json_, &SelectionMode_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SelectionMode_type__gtpc_default_coding("RAW"); const XERdescriptor_t SelectionMode_selectModeValue_xer_ = { {"selectModeValue>\n", "selectModeValue>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t SelectionMode_selectModeValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t SelectionMode_selectModeValue_descr_ = { "@GTPC_Types.SelectionMode.selectModeValue", &BITSTRING_ber_, &General__Types::BIT2_raw_, NULL, &SelectionMode_selectModeValue_xer_, &BITSTRING_json_, &SelectionMode_selectModeValue_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SelectionMode_selectModeValue_default_coding("RAW"); const XERdescriptor_t SelectionMode_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 SelectionMode_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t SelectionMode_spare_descr_ = { "@GTPC_Types.SelectionMode.spare", &BITSTRING_ber_, &General__Types::BIT6_raw_, NULL, &SelectionMode_spare_xer_, &BITSTRING_json_, &SelectionMode_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SelectionMode_spare_default_coding("RAW"); const TTCN_RAWdescriptor_t SelectionMode_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for SelectionMode const TTCN_Typedescriptor_t SelectionMode_descr_ = { "@GTPC_Types.SelectionMode", NULL, &SelectionMode_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SelectionMode_default_coding("RAW"); const XERdescriptor_t TeidDataI_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int TeidDataI_type__gtpc_oer_ext_arr_[0] = {}; const int TeidDataI_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t TeidDataI_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, TeidDataI_type__gtpc_oer_ext_arr_, 0, TeidDataI_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t TeidDataI_type__gtpc_descr_ = { "@GTPC_Types.TeidDataI.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &TeidDataI_type__gtpc_xer_, &OCTETSTRING_json_, &TeidDataI_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TeidDataI_type__gtpc_default_coding("RAW"); const XERdescriptor_t TeidDataI_teidDataI_xer_ = { {"teidDataI>\n", "teidDataI>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int TeidDataI_teidDataI_oer_ext_arr_[0] = {}; const int TeidDataI_teidDataI_oer_p_[0] = {}; const TTCN_OERdescriptor_t TeidDataI_teidDataI_oer_ = { -1, TRUE, 4, FALSE, 0, 0, TeidDataI_teidDataI_oer_ext_arr_, 0, TeidDataI_teidDataI_oer_p_}; const TTCN_Typedescriptor_t TeidDataI_teidDataI_descr_ = { "@GTPC_Types.TeidDataI.teidDataI", &OCTETSTRING_ber_, &General__Types::OCT4_raw_, &OCTETSTRING_text_, &TeidDataI_teidDataI_xer_, &OCTETSTRING_json_, &TeidDataI_teidDataI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TeidDataI_teidDataI_default_coding("RAW"); const TTCN_RAWdescriptor_t TeidDataI_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for TeidDataI const TTCN_Typedescriptor_t TeidDataI_descr_ = { "@GTPC_Types.TeidDataI", NULL, &TeidDataI_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TeidDataI_default_coding("RAW"); const XERdescriptor_t TeidControlPlane_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int TeidControlPlane_type__gtpc_oer_ext_arr_[0] = {}; const int TeidControlPlane_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t TeidControlPlane_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, TeidControlPlane_type__gtpc_oer_ext_arr_, 0, TeidControlPlane_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t TeidControlPlane_type__gtpc_descr_ = { "@GTPC_Types.TeidControlPlane.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &TeidControlPlane_type__gtpc_xer_, &OCTETSTRING_json_, &TeidControlPlane_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TeidControlPlane_type__gtpc_default_coding("RAW"); const XERdescriptor_t TeidControlPlane_teidControlPlane_xer_ = { {"teidControlPlane>\n", "teidControlPlane>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int TeidControlPlane_teidControlPlane_oer_ext_arr_[0] = {}; const int TeidControlPlane_teidControlPlane_oer_p_[0] = {}; const TTCN_OERdescriptor_t TeidControlPlane_teidControlPlane_oer_ = { -1, TRUE, 4, FALSE, 0, 0, TeidControlPlane_teidControlPlane_oer_ext_arr_, 0, TeidControlPlane_teidControlPlane_oer_p_}; const TTCN_Typedescriptor_t TeidControlPlane_teidControlPlane_descr_ = { "@GTPC_Types.TeidControlPlane.teidControlPlane", &OCTETSTRING_ber_, &General__Types::OCT4_raw_, &OCTETSTRING_text_, &TeidControlPlane_teidControlPlane_xer_, &OCTETSTRING_json_, &TeidControlPlane_teidControlPlane_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TeidControlPlane_teidControlPlane_default_coding("RAW"); const TTCN_RAWdescriptor_t TeidControlPlane_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for TeidControlPlane const TTCN_Typedescriptor_t TeidControlPlane_descr_ = { "@GTPC_Types.TeidControlPlane", NULL, &TeidControlPlane_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TeidControlPlane_default_coding("RAW"); const TTCN_RAWdescriptor_t TeidDataII__List_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for TeidDataII__List const TTCN_Typedescriptor_t TeidDataII__List_descr_ = { "@GTPC_Types.TeidDataII_List", NULL, &TeidDataII__List_raw_, NULL, NULL, NULL, NULL, NULL, &TeidDataII_descr_, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t TeidDataII_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int TeidDataII_type__gtpc_oer_ext_arr_[0] = {}; const int TeidDataII_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t TeidDataII_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, TeidDataII_type__gtpc_oer_ext_arr_, 0, TeidDataII_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t TeidDataII_type__gtpc_descr_ = { "@GTPC_Types.TeidDataII.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &TeidDataII_type__gtpc_xer_, &OCTETSTRING_json_, &TeidDataII_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TeidDataII_type__gtpc_default_coding("RAW"); const XERdescriptor_t TeidDataII_nsapi_xer_ = { {"nsapi>\n", "nsapi>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t TeidDataII_nsapi_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t TeidDataII_nsapi_descr_ = { "@GTPC_Types.TeidDataII.nsapi", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &TeidDataII_nsapi_xer_, &BITSTRING_json_, &TeidDataII_nsapi_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TeidDataII_nsapi_default_coding("RAW"); const XERdescriptor_t TeidDataII_unused_xer_ = { {"unused>\n", "unused>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t TeidDataII_unused_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t TeidDataII_unused_descr_ = { "@GTPC_Types.TeidDataII.unused", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &TeidDataII_unused_xer_, &BITSTRING_json_, &TeidDataII_unused_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TeidDataII_unused_default_coding("RAW"); const XERdescriptor_t TeidDataII_teidDataII_xer_ = { {"teidDataII>\n", "teidDataII>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int TeidDataII_teidDataII_oer_ext_arr_[0] = {}; const int TeidDataII_teidDataII_oer_p_[0] = {}; const TTCN_OERdescriptor_t TeidDataII_teidDataII_oer_ = { -1, TRUE, 4, FALSE, 0, 0, TeidDataII_teidDataII_oer_ext_arr_, 0, TeidDataII_teidDataII_oer_p_}; const TTCN_Typedescriptor_t TeidDataII_teidDataII_descr_ = { "@GTPC_Types.TeidDataII.teidDataII", &OCTETSTRING_ber_, &General__Types::OCT4_raw_, &OCTETSTRING_text_, &TeidDataII_teidDataII_xer_, &OCTETSTRING_json_, &TeidDataII_teidDataII_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TeidDataII_teidDataII_default_coding("RAW"); const TTCN_RAWdescriptor_t TeidDataII_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for TeidDataII const TTCN_Typedescriptor_t TeidDataII_descr_ = { "@GTPC_Types.TeidDataII", NULL, &TeidDataII_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TeidDataII_default_coding("RAW"); UNIVERSAL_CHARSTRING TeidDataII__List_0_default_coding("RAW"); UNIVERSAL_CHARSTRING TeidDataII__List_default_coding("RAW"); const XERdescriptor_t TearDownInd_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int TearDownInd_type__gtpc_oer_ext_arr_[0] = {}; const int TearDownInd_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t TearDownInd_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, TearDownInd_type__gtpc_oer_ext_arr_, 0, TearDownInd_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t TearDownInd_type__gtpc_descr_ = { "@GTPC_Types.TearDownInd.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &TearDownInd_type__gtpc_xer_, &OCTETSTRING_json_, &TearDownInd_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TearDownInd_type__gtpc_default_coding("RAW"); const XERdescriptor_t TearDownInd_tdInd_xer_ = { {"tdInd>\n", "tdInd>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t TearDownInd_tdInd_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t TearDownInd_tdInd_descr_ = { "@GTPC_Types.TearDownInd.tdInd", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &TearDownInd_tdInd_xer_, &BITSTRING_json_, &TearDownInd_tdInd_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TearDownInd_tdInd_default_coding("RAW"); const XERdescriptor_t TearDownInd_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 TearDownInd_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t TearDownInd_spare_descr_ = { "@GTPC_Types.TearDownInd.spare", &BITSTRING_ber_, &General__Types::BIT7_raw_, NULL, &TearDownInd_spare_xer_, &BITSTRING_json_, &TearDownInd_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TearDownInd_spare_default_coding("RAW"); const TTCN_RAWdescriptor_t TearDownInd_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for TearDownInd const TTCN_Typedescriptor_t TearDownInd_descr_ = { "@GTPC_Types.TearDownInd", NULL, &TearDownInd_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TearDownInd_default_coding("RAW"); const XERdescriptor_t NSAPI__GTPC_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int NSAPI__GTPC_type__gtpc_oer_ext_arr_[0] = {}; const int NSAPI__GTPC_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t NSAPI__GTPC_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, NSAPI__GTPC_type__gtpc_oer_ext_arr_, 0, NSAPI__GTPC_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t NSAPI__GTPC_type__gtpc_descr_ = { "@GTPC_Types.NSAPI_GTPC.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &NSAPI__GTPC_type__gtpc_xer_, &OCTETSTRING_json_, &NSAPI__GTPC_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING NSAPI__GTPC_type__gtpc_default_coding("RAW"); const XERdescriptor_t NSAPI__GTPC_nsapi_xer_ = { {"nsapi>\n", "nsapi>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t NSAPI__GTPC_nsapi_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t NSAPI__GTPC_nsapi_descr_ = { "@GTPC_Types.NSAPI_GTPC.nsapi", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &NSAPI__GTPC_nsapi_xer_, &BITSTRING_json_, &NSAPI__GTPC_nsapi_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING NSAPI__GTPC_nsapi_default_coding("RAW"); const XERdescriptor_t NSAPI__GTPC_unused_xer_ = { {"unused>\n", "unused>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t NSAPI__GTPC_unused_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t NSAPI__GTPC_unused_descr_ = { "@GTPC_Types.NSAPI_GTPC.unused", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &NSAPI__GTPC_unused_xer_, &BITSTRING_json_, &NSAPI__GTPC_unused_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING NSAPI__GTPC_unused_default_coding("RAW"); const TTCN_RAWdescriptor_t NSAPI__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for NSAPI__GTPC const TTCN_Typedescriptor_t NSAPI__GTPC_descr_ = { "@GTPC_Types.NSAPI_GTPC", NULL, &NSAPI__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING NSAPI__GTPC_default_coding("RAW"); const XERdescriptor_t RANAPCause_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RANAPCause_type__gtpc_oer_ext_arr_[0] = {}; const int RANAPCause_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t RANAPCause_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RANAPCause_type__gtpc_oer_ext_arr_, 0, RANAPCause_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t RANAPCause_type__gtpc_descr_ = { "@GTPC_Types.RANAPCause.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RANAPCause_type__gtpc_xer_, &OCTETSTRING_json_, &RANAPCause_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RANAPCause_type__gtpc_default_coding("RAW"); const XERdescriptor_t RANAPCause_ranapCause_xer_ = { {"ranapCause>\n", "ranapCause>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RANAPCause_ranapCause_oer_ext_arr_[0] = {}; const int RANAPCause_ranapCause_oer_p_[0] = {}; const TTCN_OERdescriptor_t RANAPCause_ranapCause_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RANAPCause_ranapCause_oer_ext_arr_, 0, RANAPCause_ranapCause_oer_p_}; const TTCN_Typedescriptor_t RANAPCause_ranapCause_descr_ = { "@GTPC_Types.RANAPCause.ranapCause", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RANAPCause_ranapCause_xer_, &OCTETSTRING_json_, &RANAPCause_ranapCause_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RANAPCause_ranapCause_default_coding("RAW"); const TTCN_RAWdescriptor_t RANAPCause_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RANAPCause const TTCN_Typedescriptor_t RANAPCause_descr_ = { "@GTPC_Types.RANAPCause", NULL, &RANAPCause_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RANAPCause_default_coding("RAW"); const TTCN_RAWdescriptor_t RABContext__List_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RABContext__List const TTCN_Typedescriptor_t RABContext__List_descr_ = { "@GTPC_Types.RABContext_List", NULL, &RABContext__List_raw_, NULL, NULL, NULL, NULL, NULL, &RABContext_descr_, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t RABContext_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RABContext_type__gtpc_oer_ext_arr_[0] = {}; const int RABContext_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t RABContext_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RABContext_type__gtpc_oer_ext_arr_, 0, RABContext_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t RABContext_type__gtpc_descr_ = { "@GTPC_Types.RABContext.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RABContext_type__gtpc_xer_, &OCTETSTRING_json_, &RABContext_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RABContext_type__gtpc_default_coding("RAW"); const XERdescriptor_t RABContext_nsapi_xer_ = { {"nsapi>\n", "nsapi>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RABContext_nsapi_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RABContext_nsapi_descr_ = { "@GTPC_Types.RABContext.nsapi", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &RABContext_nsapi_xer_, &BITSTRING_json_, &RABContext_nsapi_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RABContext_nsapi_default_coding("RAW"); const XERdescriptor_t RABContext_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 RABContext_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RABContext_spare_descr_ = { "@GTPC_Types.RABContext.spare", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &RABContext_spare_xer_, &BITSTRING_json_, &RABContext_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RABContext_spare_default_coding("RAW"); const XERdescriptor_t RABContext_dlgtp__u_xer_ = { {"dlgtp_u>\n", "dlgtp_u>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RABContext_dlgtp__u_oer_ext_arr_[0] = {}; const int RABContext_dlgtp__u_oer_p_[0] = {}; const TTCN_OERdescriptor_t RABContext_dlgtp__u_oer_ = { -1, TRUE, 2, FALSE, 0, 0, RABContext_dlgtp__u_oer_ext_arr_, 0, RABContext_dlgtp__u_oer_p_}; const TTCN_Typedescriptor_t RABContext_dlgtp__u_descr_ = { "@GTPC_Types.RABContext.dlgtp_u", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &RABContext_dlgtp__u_xer_, &OCTETSTRING_json_, &RABContext_dlgtp__u_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RABContext_dlgtp__u_default_coding("RAW"); const XERdescriptor_t RABContext_ulgtp__u_xer_ = { {"ulgtp_u>\n", "ulgtp_u>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RABContext_ulgtp__u_oer_ext_arr_[0] = {}; const int RABContext_ulgtp__u_oer_p_[0] = {}; const TTCN_OERdescriptor_t RABContext_ulgtp__u_oer_ = { -1, TRUE, 2, FALSE, 0, 0, RABContext_ulgtp__u_oer_ext_arr_, 0, RABContext_ulgtp__u_oer_p_}; const TTCN_Typedescriptor_t RABContext_ulgtp__u_descr_ = { "@GTPC_Types.RABContext.ulgtp_u", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &RABContext_ulgtp__u_xer_, &OCTETSTRING_json_, &RABContext_ulgtp__u_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RABContext_ulgtp__u_default_coding("RAW"); const XERdescriptor_t RABContext_dl__pdcp_xer_ = { {"dl_pdcp>\n", "dl_pdcp>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RABContext_dl__pdcp_oer_ext_arr_[0] = {}; const int RABContext_dl__pdcp_oer_p_[0] = {}; const TTCN_OERdescriptor_t RABContext_dl__pdcp_oer_ = { -1, TRUE, 2, FALSE, 0, 0, RABContext_dl__pdcp_oer_ext_arr_, 0, RABContext_dl__pdcp_oer_p_}; const TTCN_Typedescriptor_t RABContext_dl__pdcp_descr_ = { "@GTPC_Types.RABContext.dl_pdcp", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &RABContext_dl__pdcp_xer_, &OCTETSTRING_json_, &RABContext_dl__pdcp_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RABContext_dl__pdcp_default_coding("RAW"); const XERdescriptor_t RABContext_ul__pdcp_xer_ = { {"ul_pdcp>\n", "ul_pdcp>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RABContext_ul__pdcp_oer_ext_arr_[0] = {}; const int RABContext_ul__pdcp_oer_p_[0] = {}; const TTCN_OERdescriptor_t RABContext_ul__pdcp_oer_ = { -1, TRUE, 2, FALSE, 0, 0, RABContext_ul__pdcp_oer_ext_arr_, 0, RABContext_ul__pdcp_oer_p_}; const TTCN_Typedescriptor_t RABContext_ul__pdcp_descr_ = { "@GTPC_Types.RABContext.ul_pdcp", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &RABContext_ul__pdcp_xer_, &OCTETSTRING_json_, &RABContext_ul__pdcp_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RABContext_ul__pdcp_default_coding("RAW"); const TTCN_RAWdescriptor_t RABContext_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RABContext const TTCN_Typedescriptor_t RABContext_descr_ = { "@GTPC_Types.RABContext", NULL, &RABContext_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RABContext_default_coding("RAW"); UNIVERSAL_CHARSTRING RABContext__List_0_default_coding("RAW"); UNIVERSAL_CHARSTRING RABContext__List_default_coding("RAW"); const XERdescriptor_t RadioPrioritySMS_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RadioPrioritySMS_type__gtpc_oer_ext_arr_[0] = {}; const int RadioPrioritySMS_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t RadioPrioritySMS_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RadioPrioritySMS_type__gtpc_oer_ext_arr_, 0, RadioPrioritySMS_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t RadioPrioritySMS_type__gtpc_descr_ = { "@GTPC_Types.RadioPrioritySMS.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RadioPrioritySMS_type__gtpc_xer_, &OCTETSTRING_json_, &RadioPrioritySMS_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RadioPrioritySMS_type__gtpc_default_coding("RAW"); const XERdescriptor_t RadioPrioritySMS_radioprioritySMS_xer_ = { {"radioprioritySMS>\n", "radioprioritySMS>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RadioPrioritySMS_radioprioritySMS_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RadioPrioritySMS_radioprioritySMS_descr_ = { "@GTPC_Types.RadioPrioritySMS.radioprioritySMS", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &RadioPrioritySMS_radioprioritySMS_xer_, &BITSTRING_json_, &RadioPrioritySMS_radioprioritySMS_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RadioPrioritySMS_radioprioritySMS_default_coding("RAW"); const XERdescriptor_t RadioPrioritySMS_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 RadioPrioritySMS_reserved_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RadioPrioritySMS_reserved_descr_ = { "@GTPC_Types.RadioPrioritySMS.reserved", &BITSTRING_ber_, &General__Types::BIT5_raw_, NULL, &RadioPrioritySMS_reserved_xer_, &BITSTRING_json_, &RadioPrioritySMS_reserved_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RadioPrioritySMS_reserved_default_coding("RAW"); const TTCN_RAWdescriptor_t RadioPrioritySMS_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RadioPrioritySMS const TTCN_Typedescriptor_t RadioPrioritySMS_descr_ = { "@GTPC_Types.RadioPrioritySMS", NULL, &RadioPrioritySMS_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RadioPrioritySMS_default_coding("RAW"); const TTCN_RAWdescriptor_t RadioPriority__List_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RadioPriority__List const TTCN_Typedescriptor_t RadioPriority__List_descr_ = { "@GTPC_Types.RadioPriority_List", NULL, &RadioPriority__List_raw_, NULL, NULL, NULL, NULL, NULL, &RadioPriority_descr_, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t RadioPriority_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RadioPriority_type__gtpc_oer_ext_arr_[0] = {}; const int RadioPriority_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t RadioPriority_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RadioPriority_type__gtpc_oer_ext_arr_, 0, RadioPriority_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t RadioPriority_type__gtpc_descr_ = { "@GTPC_Types.RadioPriority.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RadioPriority_type__gtpc_xer_, &OCTETSTRING_json_, &RadioPriority_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RadioPriority_type__gtpc_default_coding("RAW"); const XERdescriptor_t RadioPriority_radiopriority_xer_ = { {"radiopriority>\n", "radiopriority>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RadioPriority_radiopriority_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RadioPriority_radiopriority_descr_ = { "@GTPC_Types.RadioPriority.radiopriority", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &RadioPriority_radiopriority_xer_, &BITSTRING_json_, &RadioPriority_radiopriority_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RadioPriority_radiopriority_default_coding("RAW"); const XERdescriptor_t RadioPriority_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 RadioPriority_reserved_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RadioPriority_reserved_descr_ = { "@GTPC_Types.RadioPriority.reserved", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &RadioPriority_reserved_xer_, &BITSTRING_json_, &RadioPriority_reserved_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RadioPriority_reserved_default_coding("RAW"); const XERdescriptor_t RadioPriority_nsapi_xer_ = { {"nsapi>\n", "nsapi>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RadioPriority_nsapi_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RadioPriority_nsapi_descr_ = { "@GTPC_Types.RadioPriority.nsapi", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &RadioPriority_nsapi_xer_, &BITSTRING_json_, &RadioPriority_nsapi_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RadioPriority_nsapi_default_coding("RAW"); const TTCN_RAWdescriptor_t RadioPriority_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RadioPriority const TTCN_Typedescriptor_t RadioPriority_descr_ = { "@GTPC_Types.RadioPriority", NULL, &RadioPriority_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RadioPriority_default_coding("RAW"); UNIVERSAL_CHARSTRING RadioPriority__List_0_default_coding("RAW"); UNIVERSAL_CHARSTRING RadioPriority__List_default_coding("RAW"); const TTCN_RAWdescriptor_t PacketFlowID__List_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for PacketFlowID__List const TTCN_Typedescriptor_t PacketFlowID__List_descr_ = { "@GTPC_Types.PacketFlowID_List", NULL, &PacketFlowID__List_raw_, NULL, NULL, NULL, NULL, NULL, &PacketFlowID_descr_, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t PacketFlowID_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PacketFlowID_type__gtpc_oer_ext_arr_[0] = {}; const int PacketFlowID_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t PacketFlowID_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PacketFlowID_type__gtpc_oer_ext_arr_, 0, PacketFlowID_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t PacketFlowID_type__gtpc_descr_ = { "@GTPC_Types.PacketFlowID.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PacketFlowID_type__gtpc_xer_, &OCTETSTRING_json_, &PacketFlowID_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PacketFlowID_type__gtpc_default_coding("RAW"); const XERdescriptor_t PacketFlowID_nsapi_xer_ = { {"nsapi>\n", "nsapi>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t PacketFlowID_nsapi_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t PacketFlowID_nsapi_descr_ = { "@GTPC_Types.PacketFlowID.nsapi", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &PacketFlowID_nsapi_xer_, &BITSTRING_json_, &PacketFlowID_nsapi_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PacketFlowID_nsapi_default_coding("RAW"); const XERdescriptor_t PacketFlowID_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 PacketFlowID_reserved_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t PacketFlowID_reserved_descr_ = { "@GTPC_Types.PacketFlowID.reserved", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &PacketFlowID_reserved_xer_, &BITSTRING_json_, &PacketFlowID_reserved_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PacketFlowID_reserved_default_coding("RAW"); const XERdescriptor_t PacketFlowID_packflowID_xer_ = { {"packflowID>\n", "packflowID>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PacketFlowID_packflowID_oer_ext_arr_[0] = {}; const int PacketFlowID_packflowID_oer_p_[0] = {}; const TTCN_OERdescriptor_t PacketFlowID_packflowID_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PacketFlowID_packflowID_oer_ext_arr_, 0, PacketFlowID_packflowID_oer_p_}; const TTCN_Typedescriptor_t PacketFlowID_packflowID_descr_ = { "@GTPC_Types.PacketFlowID.packflowID", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PacketFlowID_packflowID_xer_, &OCTETSTRING_json_, &PacketFlowID_packflowID_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PacketFlowID_packflowID_default_coding("RAW"); const TTCN_RAWdescriptor_t PacketFlowID_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for PacketFlowID const TTCN_Typedescriptor_t PacketFlowID_descr_ = { "@GTPC_Types.PacketFlowID", NULL, &PacketFlowID_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PacketFlowID_default_coding("RAW"); UNIVERSAL_CHARSTRING PacketFlowID__List_0_default_coding("RAW"); UNIVERSAL_CHARSTRING PacketFlowID__List_default_coding("RAW"); const TTCN_RAWdescriptor_t ChargingCharacteristics__List__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for ChargingCharacteristics__List__GTPC const TTCN_Typedescriptor_t ChargingCharacteristics__List__GTPC_descr_ = { "@GTPC_Types.ChargingCharacteristics_List_GTPC", NULL, &ChargingCharacteristics__List__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, &ChargingCharacteristics__GTPC_descr_, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t ChargingCharacteristics__GTPC_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int ChargingCharacteristics__GTPC_type__gtpc_oer_ext_arr_[0] = {}; const int ChargingCharacteristics__GTPC_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t ChargingCharacteristics__GTPC_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChargingCharacteristics__GTPC_type__gtpc_oer_ext_arr_, 0, ChargingCharacteristics__GTPC_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t ChargingCharacteristics__GTPC_type__gtpc_descr_ = { "@GTPC_Types.ChargingCharacteristics_GTPC.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &ChargingCharacteristics__GTPC_type__gtpc_xer_, &OCTETSTRING_json_, &ChargingCharacteristics__GTPC_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ChargingCharacteristics__GTPC_type__gtpc_default_coding("RAW"); const XERdescriptor_t ChargingCharacteristics__GTPC_chargingChar_xer_ = { {"chargingChar>\n", "chargingChar>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int ChargingCharacteristics__GTPC_chargingChar_oer_ext_arr_[0] = {}; const int ChargingCharacteristics__GTPC_chargingChar_oer_p_[0] = {}; const TTCN_OERdescriptor_t ChargingCharacteristics__GTPC_chargingChar_oer_ = { -1, TRUE, 2, FALSE, 0, 0, ChargingCharacteristics__GTPC_chargingChar_oer_ext_arr_, 0, ChargingCharacteristics__GTPC_chargingChar_oer_p_}; const TTCN_Typedescriptor_t ChargingCharacteristics__GTPC_chargingChar_descr_ = { "@GTPC_Types.ChargingCharacteristics_GTPC.chargingChar", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &ChargingCharacteristics__GTPC_chargingChar_xer_, &OCTETSTRING_json_, &ChargingCharacteristics__GTPC_chargingChar_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ChargingCharacteristics__GTPC_chargingChar_default_coding("RAW"); const TTCN_RAWdescriptor_t ChargingCharacteristics__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for ChargingCharacteristics__GTPC const TTCN_Typedescriptor_t ChargingCharacteristics__GTPC_descr_ = { "@GTPC_Types.ChargingCharacteristics_GTPC", NULL, &ChargingCharacteristics__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ChargingCharacteristics__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING ChargingCharacteristics__List__GTPC_0_default_coding("RAW"); UNIVERSAL_CHARSTRING ChargingCharacteristics__List__GTPC_default_coding("RAW"); const XERdescriptor_t TraceRef_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int TraceRef_type__gtpc_oer_ext_arr_[0] = {}; const int TraceRef_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t TraceRef_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, TraceRef_type__gtpc_oer_ext_arr_, 0, TraceRef_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t TraceRef_type__gtpc_descr_ = { "@GTPC_Types.TraceRef.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &TraceRef_type__gtpc_xer_, &OCTETSTRING_json_, &TraceRef_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TraceRef_type__gtpc_default_coding("RAW"); const XERdescriptor_t TraceRef_trace__ref_xer_ = { {"trace_ref>\n", "trace_ref>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int TraceRef_trace__ref_oer_ext_arr_[0] = {}; const int TraceRef_trace__ref_oer_p_[0] = {}; const TTCN_OERdescriptor_t TraceRef_trace__ref_oer_ = { -1, TRUE, 2, FALSE, 0, 0, TraceRef_trace__ref_oer_ext_arr_, 0, TraceRef_trace__ref_oer_p_}; const TTCN_Typedescriptor_t TraceRef_trace__ref_descr_ = { "@GTPC_Types.TraceRef.trace_ref", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &TraceRef_trace__ref_xer_, &OCTETSTRING_json_, &TraceRef_trace__ref_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TraceRef_trace__ref_default_coding("RAW"); const TTCN_RAWdescriptor_t TraceRef_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for TraceRef const TTCN_Typedescriptor_t TraceRef_descr_ = { "@GTPC_Types.TraceRef", NULL, &TraceRef_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TraceRef_default_coding("RAW"); const XERdescriptor_t GTP__TraceType_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int GTP__TraceType_type__gtpc_oer_ext_arr_[0] = {}; const int GTP__TraceType_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t GTP__TraceType_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GTP__TraceType_type__gtpc_oer_ext_arr_, 0, GTP__TraceType_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t GTP__TraceType_type__gtpc_descr_ = { "@GTPC_Types.GTP_TraceType.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, >P__TraceType_type__gtpc_xer_, &OCTETSTRING_json_, >P__TraceType_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GTP__TraceType_type__gtpc_default_coding("RAW"); const XERdescriptor_t GTP__TraceType_trace__type_xer_ = { {"trace_type>\n", "trace_type>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int GTP__TraceType_trace__type_oer_ext_arr_[0] = {}; const int GTP__TraceType_trace__type_oer_p_[0] = {}; const TTCN_OERdescriptor_t GTP__TraceType_trace__type_oer_ = { -1, TRUE, 2, FALSE, 0, 0, GTP__TraceType_trace__type_oer_ext_arr_, 0, GTP__TraceType_trace__type_oer_p_}; const TTCN_Typedescriptor_t GTP__TraceType_trace__type_descr_ = { "@GTPC_Types.GTP_TraceType.trace_type", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, >P__TraceType_trace__type_xer_, &OCTETSTRING_json_, >P__TraceType_trace__type_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GTP__TraceType_trace__type_default_coding("RAW"); const TTCN_RAWdescriptor_t GTP__TraceType_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for GTP__TraceType const TTCN_Typedescriptor_t GTP__TraceType_descr_ = { "@GTPC_Types.GTP_TraceType", NULL, >P__TraceType_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GTP__TraceType_default_coding("RAW"); const XERdescriptor_t MSNotReachableReason_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MSNotReachableReason_type__gtpc_oer_ext_arr_[0] = {}; const int MSNotReachableReason_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t MSNotReachableReason_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MSNotReachableReason_type__gtpc_oer_ext_arr_, 0, MSNotReachableReason_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t MSNotReachableReason_type__gtpc_descr_ = { "@GTPC_Types.MSNotReachableReason.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MSNotReachableReason_type__gtpc_xer_, &OCTETSTRING_json_, &MSNotReachableReason_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MSNotReachableReason_type__gtpc_default_coding("RAW"); const XERdescriptor_t MSNotReachableReason_reason__for__absence_xer_ = { {"reason_for_absence>\n", "reason_for_absence>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MSNotReachableReason_reason__for__absence_oer_ext_arr_[0] = {}; const int MSNotReachableReason_reason__for__absence_oer_p_[0] = {}; const TTCN_OERdescriptor_t MSNotReachableReason_reason__for__absence_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MSNotReachableReason_reason__for__absence_oer_ext_arr_, 0, MSNotReachableReason_reason__for__absence_oer_p_}; const TTCN_Typedescriptor_t MSNotReachableReason_reason__for__absence_descr_ = { "@GTPC_Types.MSNotReachableReason.reason_for_absence", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MSNotReachableReason_reason__for__absence_xer_, &OCTETSTRING_json_, &MSNotReachableReason_reason__for__absence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MSNotReachableReason_reason__for__absence_default_coding("RAW"); const TTCN_RAWdescriptor_t MSNotReachableReason_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MSNotReachableReason const TTCN_Typedescriptor_t MSNotReachableReason_descr_ = { "@GTPC_Types.MSNotReachableReason", NULL, &MSNotReachableReason_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MSNotReachableReason_default_coding("RAW"); const XERdescriptor_t RadioPriorityLCS_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RadioPriorityLCS_type__gtpc_oer_ext_arr_[0] = {}; const int RadioPriorityLCS_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t RadioPriorityLCS_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RadioPriorityLCS_type__gtpc_oer_ext_arr_, 0, RadioPriorityLCS_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t RadioPriorityLCS_type__gtpc_descr_ = { "@GTPC_Types.RadioPriorityLCS.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RadioPriorityLCS_type__gtpc_xer_, &OCTETSTRING_json_, &RadioPriorityLCS_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RadioPriorityLCS_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t RadioPriorityLCS_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t RadioPriorityLCS_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RadioPriorityLCS_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RadioPriorityLCS_lengthf_descr_ = { "@GTPC_Types.RadioPriorityLCS.lengthf", &INTEGER_ber_, &RadioPriorityLCS_lengthf_raw_, &INTEGER_text_, &RadioPriorityLCS_lengthf_xer_, &INTEGER_json_, &RadioPriorityLCS_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RadioPriorityLCS_lengthf_default_coding("RAW"); const XERdescriptor_t RadioPriorityLCS_radioPriorityLCS_xer_ = { {"radioPriorityLCS>\n", "radioPriorityLCS>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RadioPriorityLCS_radioPriorityLCS_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RadioPriorityLCS_radioPriorityLCS_descr_ = { "@GTPC_Types.RadioPriorityLCS.radioPriorityLCS", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &RadioPriorityLCS_radioPriorityLCS_xer_, &BITSTRING_json_, &RadioPriorityLCS_radioPriorityLCS_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RadioPriorityLCS_radioPriorityLCS_default_coding("RAW"); const XERdescriptor_t RadioPriorityLCS_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 RadioPriorityLCS_reserved_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RadioPriorityLCS_reserved_descr_ = { "@GTPC_Types.RadioPriorityLCS.reserved", &BITSTRING_ber_, &General__Types::BIT5_raw_, NULL, &RadioPriorityLCS_reserved_xer_, &BITSTRING_json_, &RadioPriorityLCS_reserved_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RadioPriorityLCS_reserved_default_coding("RAW"); const TTCN_RAWdescriptor_t RadioPriorityLCS_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RadioPriorityLCS const TTCN_Typedescriptor_t RadioPriorityLCS_descr_ = { "@GTPC_Types.RadioPriorityLCS", NULL, &RadioPriorityLCS_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RadioPriorityLCS_default_coding("RAW"); const XERdescriptor_t ChargingID_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int ChargingID_type__gtpc_oer_ext_arr_[0] = {}; const int ChargingID_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t ChargingID_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChargingID_type__gtpc_oer_ext_arr_, 0, ChargingID_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t ChargingID_type__gtpc_descr_ = { "@GTPC_Types.ChargingID.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &ChargingID_type__gtpc_xer_, &OCTETSTRING_json_, &ChargingID_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ChargingID_type__gtpc_default_coding("RAW"); const XERdescriptor_t ChargingID_chargingID_xer_ = { {"chargingID>\n", "chargingID>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int ChargingID_chargingID_oer_ext_arr_[0] = {}; const int ChargingID_chargingID_oer_p_[0] = {}; const TTCN_OERdescriptor_t ChargingID_chargingID_oer_ = { -1, TRUE, 4, FALSE, 0, 0, ChargingID_chargingID_oer_ext_arr_, 0, ChargingID_chargingID_oer_p_}; const TTCN_Typedescriptor_t ChargingID_chargingID_descr_ = { "@GTPC_Types.ChargingID.chargingID", &OCTETSTRING_ber_, &General__Types::OCT4_raw_, &OCTETSTRING_text_, &ChargingID_chargingID_xer_, &OCTETSTRING_json_, &ChargingID_chargingID_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ChargingID_chargingID_default_coding("RAW"); const TTCN_RAWdescriptor_t ChargingID_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for ChargingID const TTCN_Typedescriptor_t ChargingID_descr_ = { "@GTPC_Types.ChargingID", NULL, &ChargingID_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ChargingID_default_coding("RAW"); const XERdescriptor_t EndUserAddress_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int EndUserAddress_type__gtpc_oer_ext_arr_[0] = {}; const int EndUserAddress_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t EndUserAddress_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, EndUserAddress_type__gtpc_oer_ext_arr_, 0, EndUserAddress_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t EndUserAddress_type__gtpc_descr_ = { "@GTPC_Types.EndUserAddress.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &EndUserAddress_type__gtpc_xer_, &OCTETSTRING_json_, &EndUserAddress_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EndUserAddress_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t EndUserAddress__types_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for EndUserAddress__types const TTCN_Typedescriptor_t EndUserAddress__types_descr_ = { "@GTPC_Types.EndUserAddress_types", NULL, &EndUserAddress__types_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const TTCN_RAWdescriptor_t EndUserAddressIPv4_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t EndUserAddressIPv4_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t EndUserAddressIPv4_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t EndUserAddressIPv4_lengthf_descr_ = { "@GTPC_Types.EndUserAddressIPv4.lengthf", &INTEGER_ber_, &EndUserAddressIPv4_lengthf_raw_, &INTEGER_text_, &EndUserAddressIPv4_lengthf_xer_, &INTEGER_json_, &EndUserAddressIPv4_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EndUserAddressIPv4_lengthf_default_coding("RAW"); const XERdescriptor_t EndUserAddressIPv4_pdp__typeorg_xer_ = { {"pdp_typeorg>\n", "pdp_typeorg>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t EndUserAddressIPv4_pdp__typeorg_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t EndUserAddressIPv4_pdp__typeorg_descr_ = { "@GTPC_Types.EndUserAddressIPv4.pdp_typeorg", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &EndUserAddressIPv4_pdp__typeorg_xer_, &BITSTRING_json_, &EndUserAddressIPv4_pdp__typeorg_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EndUserAddressIPv4_pdp__typeorg_default_coding("RAW"); const XERdescriptor_t EndUserAddressIPv4_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 EndUserAddressIPv4_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t EndUserAddressIPv4_spare_descr_ = { "@GTPC_Types.EndUserAddressIPv4.spare", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &EndUserAddressIPv4_spare_xer_, &BITSTRING_json_, &EndUserAddressIPv4_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EndUserAddressIPv4_spare_default_coding("RAW"); const XERdescriptor_t EndUserAddressIPv4_pdp__typenum_xer_ = { {"pdp_typenum>\n", "pdp_typenum>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int EndUserAddressIPv4_pdp__typenum_oer_ext_arr_[0] = {}; const int EndUserAddressIPv4_pdp__typenum_oer_p_[0] = {}; const TTCN_OERdescriptor_t EndUserAddressIPv4_pdp__typenum_oer_ = { -1, TRUE, 1, FALSE, 0, 0, EndUserAddressIPv4_pdp__typenum_oer_ext_arr_, 0, EndUserAddressIPv4_pdp__typenum_oer_p_}; const TTCN_Typedescriptor_t EndUserAddressIPv4_pdp__typenum_descr_ = { "@GTPC_Types.EndUserAddressIPv4.pdp_typenum", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &EndUserAddressIPv4_pdp__typenum_xer_, &OCTETSTRING_json_, &EndUserAddressIPv4_pdp__typenum_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EndUserAddressIPv4_pdp__typenum_default_coding("RAW"); const TTCN_RAWdescriptor_t EndUserAddressIPv4_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for EndUserAddressIPv4 const TTCN_Typedescriptor_t EndUserAddressIPv4_descr_ = { "@GTPC_Types.EndUserAddressIPv4", NULL, &EndUserAddressIPv4_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t EndUserAddressIPv4_ipv4__address_xer_ = { {"ipv4_address>\n", "ipv4_address>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int EndUserAddressIPv4_ipv4__address_oer_ext_arr_[0] = {}; const int EndUserAddressIPv4_ipv4__address_oer_p_[0] = {}; const TTCN_OERdescriptor_t EndUserAddressIPv4_ipv4__address_oer_ = { -1, TRUE, 4, FALSE, 0, 0, EndUserAddressIPv4_ipv4__address_oer_ext_arr_, 0, EndUserAddressIPv4_ipv4__address_oer_p_}; const TTCN_Typedescriptor_t EndUserAddressIPv4_ipv4__address_descr_ = { "@GTPC_Types.EndUserAddressIPv4.ipv4_address", &OCTETSTRING_ber_, &General__Types::OCT4_raw_, &OCTETSTRING_text_, &EndUserAddressIPv4_ipv4__address_xer_, &OCTETSTRING_json_, &EndUserAddressIPv4_ipv4__address_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EndUserAddressIPv4_ipv4__address_default_coding("RAW"); UNIVERSAL_CHARSTRING EndUserAddressIPv4_default_coding("RAW"); UNIVERSAL_CHARSTRING EndUserAddress__types_endUserAddressIPv4_default_coding("RAW"); const TTCN_RAWdescriptor_t EndUserAddressIPv6_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t EndUserAddressIPv6_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t EndUserAddressIPv6_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t EndUserAddressIPv6_lengthf_descr_ = { "@GTPC_Types.EndUserAddressIPv6.lengthf", &INTEGER_ber_, &EndUserAddressIPv6_lengthf_raw_, &INTEGER_text_, &EndUserAddressIPv6_lengthf_xer_, &INTEGER_json_, &EndUserAddressIPv6_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EndUserAddressIPv6_lengthf_default_coding("RAW"); const XERdescriptor_t EndUserAddressIPv6_pdp__typeorg_xer_ = { {"pdp_typeorg>\n", "pdp_typeorg>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t EndUserAddressIPv6_pdp__typeorg_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t EndUserAddressIPv6_pdp__typeorg_descr_ = { "@GTPC_Types.EndUserAddressIPv6.pdp_typeorg", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &EndUserAddressIPv6_pdp__typeorg_xer_, &BITSTRING_json_, &EndUserAddressIPv6_pdp__typeorg_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EndUserAddressIPv6_pdp__typeorg_default_coding("RAW"); const XERdescriptor_t EndUserAddressIPv6_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 EndUserAddressIPv6_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t EndUserAddressIPv6_spare_descr_ = { "@GTPC_Types.EndUserAddressIPv6.spare", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &EndUserAddressIPv6_spare_xer_, &BITSTRING_json_, &EndUserAddressIPv6_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EndUserAddressIPv6_spare_default_coding("RAW"); const XERdescriptor_t EndUserAddressIPv6_pdp__typenum_xer_ = { {"pdp_typenum>\n", "pdp_typenum>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int EndUserAddressIPv6_pdp__typenum_oer_ext_arr_[0] = {}; const int EndUserAddressIPv6_pdp__typenum_oer_p_[0] = {}; const TTCN_OERdescriptor_t EndUserAddressIPv6_pdp__typenum_oer_ = { -1, TRUE, 1, FALSE, 0, 0, EndUserAddressIPv6_pdp__typenum_oer_ext_arr_, 0, EndUserAddressIPv6_pdp__typenum_oer_p_}; const TTCN_Typedescriptor_t EndUserAddressIPv6_pdp__typenum_descr_ = { "@GTPC_Types.EndUserAddressIPv6.pdp_typenum", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &EndUserAddressIPv6_pdp__typenum_xer_, &OCTETSTRING_json_, &EndUserAddressIPv6_pdp__typenum_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EndUserAddressIPv6_pdp__typenum_default_coding("RAW"); const TTCN_RAWdescriptor_t EndUserAddressIPv6_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for EndUserAddressIPv6 const TTCN_Typedescriptor_t EndUserAddressIPv6_descr_ = { "@GTPC_Types.EndUserAddressIPv6", NULL, &EndUserAddressIPv6_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t EndUserAddressIPv6_ipv6__address_xer_ = { {"ipv6_address>\n", "ipv6_address>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int EndUserAddressIPv6_ipv6__address_oer_ext_arr_[0] = {}; const int EndUserAddressIPv6_ipv6__address_oer_p_[0] = {}; const TTCN_OERdescriptor_t EndUserAddressIPv6_ipv6__address_oer_ = { -1, TRUE, 16, FALSE, 0, 0, EndUserAddressIPv6_ipv6__address_oer_ext_arr_, 0, EndUserAddressIPv6_ipv6__address_oer_p_}; const TTCN_Typedescriptor_t EndUserAddressIPv6_ipv6__address_descr_ = { "@GTPC_Types.EndUserAddressIPv6.ipv6_address", &OCTETSTRING_ber_, &General__Types::OCT16_raw_, &OCTETSTRING_text_, &EndUserAddressIPv6_ipv6__address_xer_, &OCTETSTRING_json_, &EndUserAddressIPv6_ipv6__address_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EndUserAddressIPv6_ipv6__address_default_coding("RAW"); UNIVERSAL_CHARSTRING EndUserAddressIPv6_default_coding("RAW"); UNIVERSAL_CHARSTRING EndUserAddress__types_endUserAddressIPv6_default_coding("RAW"); const TTCN_RAWdescriptor_t EndUserAddressPPP_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t EndUserAddressPPP_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t EndUserAddressPPP_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t EndUserAddressPPP_lengthf_descr_ = { "@GTPC_Types.EndUserAddressPPP.lengthf", &INTEGER_ber_, &EndUserAddressPPP_lengthf_raw_, &INTEGER_text_, &EndUserAddressPPP_lengthf_xer_, &INTEGER_json_, &EndUserAddressPPP_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EndUserAddressPPP_lengthf_default_coding("RAW"); const XERdescriptor_t EndUserAddressPPP_pdp__typeorg_xer_ = { {"pdp_typeorg>\n", "pdp_typeorg>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t EndUserAddressPPP_pdp__typeorg_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t EndUserAddressPPP_pdp__typeorg_descr_ = { "@GTPC_Types.EndUserAddressPPP.pdp_typeorg", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &EndUserAddressPPP_pdp__typeorg_xer_, &BITSTRING_json_, &EndUserAddressPPP_pdp__typeorg_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EndUserAddressPPP_pdp__typeorg_default_coding("RAW"); const XERdescriptor_t EndUserAddressPPP_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 EndUserAddressPPP_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t EndUserAddressPPP_spare_descr_ = { "@GTPC_Types.EndUserAddressPPP.spare", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &EndUserAddressPPP_spare_xer_, &BITSTRING_json_, &EndUserAddressPPP_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EndUserAddressPPP_spare_default_coding("RAW"); const XERdescriptor_t EndUserAddressPPP_pdp__typenum_xer_ = { {"pdp_typenum>\n", "pdp_typenum>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int EndUserAddressPPP_pdp__typenum_oer_ext_arr_[0] = {}; const int EndUserAddressPPP_pdp__typenum_oer_p_[0] = {}; const TTCN_OERdescriptor_t EndUserAddressPPP_pdp__typenum_oer_ = { -1, TRUE, 1, FALSE, 0, 0, EndUserAddressPPP_pdp__typenum_oer_ext_arr_, 0, EndUserAddressPPP_pdp__typenum_oer_p_}; const TTCN_Typedescriptor_t EndUserAddressPPP_pdp__typenum_descr_ = { "@GTPC_Types.EndUserAddressPPP.pdp_typenum", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &EndUserAddressPPP_pdp__typenum_xer_, &OCTETSTRING_json_, &EndUserAddressPPP_pdp__typenum_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EndUserAddressPPP_pdp__typenum_default_coding("RAW"); const TTCN_RAWdescriptor_t EndUserAddressPPP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for EndUserAddressPPP const TTCN_Typedescriptor_t EndUserAddressPPP_descr_ = { "@GTPC_Types.EndUserAddressPPP", NULL, &EndUserAddressPPP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EndUserAddressPPP_default_coding("RAW"); UNIVERSAL_CHARSTRING EndUserAddress__types_endUserAddressPPP_default_coding("RAW"); const TTCN_RAWdescriptor_t EndUserAddressIPv4andIPv6_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t EndUserAddressIPv4andIPv6_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t EndUserAddressIPv4andIPv6_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t EndUserAddressIPv4andIPv6_lengthf_descr_ = { "@GTPC_Types.EndUserAddressIPv4andIPv6.lengthf", &INTEGER_ber_, &EndUserAddressIPv4andIPv6_lengthf_raw_, &INTEGER_text_, &EndUserAddressIPv4andIPv6_lengthf_xer_, &INTEGER_json_, &EndUserAddressIPv4andIPv6_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EndUserAddressIPv4andIPv6_lengthf_default_coding("RAW"); const XERdescriptor_t EndUserAddressIPv4andIPv6_pdp__typeorg_xer_ = { {"pdp_typeorg>\n", "pdp_typeorg>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t EndUserAddressIPv4andIPv6_pdp__typeorg_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t EndUserAddressIPv4andIPv6_pdp__typeorg_descr_ = { "@GTPC_Types.EndUserAddressIPv4andIPv6.pdp_typeorg", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &EndUserAddressIPv4andIPv6_pdp__typeorg_xer_, &BITSTRING_json_, &EndUserAddressIPv4andIPv6_pdp__typeorg_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EndUserAddressIPv4andIPv6_pdp__typeorg_default_coding("RAW"); const XERdescriptor_t EndUserAddressIPv4andIPv6_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 EndUserAddressIPv4andIPv6_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t EndUserAddressIPv4andIPv6_spare_descr_ = { "@GTPC_Types.EndUserAddressIPv4andIPv6.spare", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &EndUserAddressIPv4andIPv6_spare_xer_, &BITSTRING_json_, &EndUserAddressIPv4andIPv6_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EndUserAddressIPv4andIPv6_spare_default_coding("RAW"); const XERdescriptor_t EndUserAddressIPv4andIPv6_pdp__typenum_xer_ = { {"pdp_typenum>\n", "pdp_typenum>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int EndUserAddressIPv4andIPv6_pdp__typenum_oer_ext_arr_[0] = {}; const int EndUserAddressIPv4andIPv6_pdp__typenum_oer_p_[0] = {}; const TTCN_OERdescriptor_t EndUserAddressIPv4andIPv6_pdp__typenum_oer_ = { -1, TRUE, 1, FALSE, 0, 0, EndUserAddressIPv4andIPv6_pdp__typenum_oer_ext_arr_, 0, EndUserAddressIPv4andIPv6_pdp__typenum_oer_p_}; const TTCN_Typedescriptor_t EndUserAddressIPv4andIPv6_pdp__typenum_descr_ = { "@GTPC_Types.EndUserAddressIPv4andIPv6.pdp_typenum", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &EndUserAddressIPv4andIPv6_pdp__typenum_xer_, &OCTETSTRING_json_, &EndUserAddressIPv4andIPv6_pdp__typenum_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EndUserAddressIPv4andIPv6_pdp__typenum_default_coding("RAW"); const TTCN_RAWdescriptor_t EndUserAddressIPv4andIPv6_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for EndUserAddressIPv4andIPv6 const TTCN_Typedescriptor_t EndUserAddressIPv4andIPv6_descr_ = { "@GTPC_Types.EndUserAddressIPv4andIPv6", NULL, &EndUserAddressIPv4andIPv6_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const TTCN_RAWdescriptor_t EndUserAddressIPv4andIPv6_ipv4__address_raw_ = {32,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,4,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t EndUserAddressIPv4andIPv6_ipv4__address_xer_ = { {"ipv4_address>\n", "ipv4_address>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int EndUserAddressIPv4andIPv6_ipv4__address_oer_ext_arr_[0] = {}; const int EndUserAddressIPv4andIPv6_ipv4__address_oer_p_[0] = {}; const TTCN_OERdescriptor_t EndUserAddressIPv4andIPv6_ipv4__address_oer_ = { -1, TRUE, 4, FALSE, 0, 0, EndUserAddressIPv4andIPv6_ipv4__address_oer_ext_arr_, 0, EndUserAddressIPv4andIPv6_ipv4__address_oer_p_}; const TTCN_Typedescriptor_t EndUserAddressIPv4andIPv6_ipv4__address_descr_ = { "@GTPC_Types.EndUserAddressIPv4andIPv6.ipv4_address", &OCTETSTRING_ber_, &EndUserAddressIPv4andIPv6_ipv4__address_raw_, &OCTETSTRING_text_, &EndUserAddressIPv4andIPv6_ipv4__address_xer_, &OCTETSTRING_json_, &EndUserAddressIPv4andIPv6_ipv4__address_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EndUserAddressIPv4andIPv6_ipv4__address_default_coding("RAW"); const TTCN_RAWdescriptor_t EndUserAddressIPv4andIPv6_ipv6__address_raw_ = {128,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,16,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t EndUserAddressIPv4andIPv6_ipv6__address_xer_ = { {"ipv6_address>\n", "ipv6_address>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int EndUserAddressIPv4andIPv6_ipv6__address_oer_ext_arr_[0] = {}; const int EndUserAddressIPv4andIPv6_ipv6__address_oer_p_[0] = {}; const TTCN_OERdescriptor_t EndUserAddressIPv4andIPv6_ipv6__address_oer_ = { -1, TRUE, 16, FALSE, 0, 0, EndUserAddressIPv4andIPv6_ipv6__address_oer_ext_arr_, 0, EndUserAddressIPv4andIPv6_ipv6__address_oer_p_}; const TTCN_Typedescriptor_t EndUserAddressIPv4andIPv6_ipv6__address_descr_ = { "@GTPC_Types.EndUserAddressIPv4andIPv6.ipv6_address", &OCTETSTRING_ber_, &EndUserAddressIPv4andIPv6_ipv6__address_raw_, &OCTETSTRING_text_, &EndUserAddressIPv4andIPv6_ipv6__address_xer_, &OCTETSTRING_json_, &EndUserAddressIPv4andIPv6_ipv6__address_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EndUserAddressIPv4andIPv6_ipv6__address_default_coding("RAW"); UNIVERSAL_CHARSTRING EndUserAddressIPv4andIPv6_default_coding("RAW"); UNIVERSAL_CHARSTRING EndUserAddress__types_endUserAddressIPv4andIPv6_default_coding("RAW"); const TTCN_RAWdescriptor_t EndUserAddressOSPIHOS_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t EndUserAddressOSPIHOS_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t EndUserAddressOSPIHOS_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t EndUserAddressOSPIHOS_lengthf_descr_ = { "@GTPC_Types.EndUserAddressOSPIHOS.lengthf", &INTEGER_ber_, &EndUserAddressOSPIHOS_lengthf_raw_, &INTEGER_text_, &EndUserAddressOSPIHOS_lengthf_xer_, &INTEGER_json_, &EndUserAddressOSPIHOS_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EndUserAddressOSPIHOS_lengthf_default_coding("RAW"); const XERdescriptor_t EndUserAddressOSPIHOS_pdp__typeorg_xer_ = { {"pdp_typeorg>\n", "pdp_typeorg>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t EndUserAddressOSPIHOS_pdp__typeorg_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t EndUserAddressOSPIHOS_pdp__typeorg_descr_ = { "@GTPC_Types.EndUserAddressOSPIHOS.pdp_typeorg", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &EndUserAddressOSPIHOS_pdp__typeorg_xer_, &BITSTRING_json_, &EndUserAddressOSPIHOS_pdp__typeorg_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EndUserAddressOSPIHOS_pdp__typeorg_default_coding("RAW"); const XERdescriptor_t EndUserAddressOSPIHOS_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 EndUserAddressOSPIHOS_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t EndUserAddressOSPIHOS_spare_descr_ = { "@GTPC_Types.EndUserAddressOSPIHOS.spare", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &EndUserAddressOSPIHOS_spare_xer_, &BITSTRING_json_, &EndUserAddressOSPIHOS_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EndUserAddressOSPIHOS_spare_default_coding("RAW"); const XERdescriptor_t EndUserAddressOSPIHOS_pdp__typenum_xer_ = { {"pdp_typenum>\n", "pdp_typenum>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int EndUserAddressOSPIHOS_pdp__typenum_oer_ext_arr_[0] = {}; const int EndUserAddressOSPIHOS_pdp__typenum_oer_p_[0] = {}; const TTCN_OERdescriptor_t EndUserAddressOSPIHOS_pdp__typenum_oer_ = { -1, TRUE, 1, FALSE, 0, 0, EndUserAddressOSPIHOS_pdp__typenum_oer_ext_arr_, 0, EndUserAddressOSPIHOS_pdp__typenum_oer_p_}; const TTCN_Typedescriptor_t EndUserAddressOSPIHOS_pdp__typenum_descr_ = { "@GTPC_Types.EndUserAddressOSPIHOS.pdp_typenum", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &EndUserAddressOSPIHOS_pdp__typenum_xer_, &OCTETSTRING_json_, &EndUserAddressOSPIHOS_pdp__typenum_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EndUserAddressOSPIHOS_pdp__typenum_default_coding("RAW"); const TTCN_RAWdescriptor_t EndUserAddressOSPIHOS_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for EndUserAddressOSPIHOS const TTCN_Typedescriptor_t EndUserAddressOSPIHOS_descr_ = { "@GTPC_Types.EndUserAddressOSPIHOS", NULL, &EndUserAddressOSPIHOS_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EndUserAddressOSPIHOS_default_coding("RAW"); UNIVERSAL_CHARSTRING EndUserAddress__types_endUserAddressOSPIHOS_default_coding("RAW"); UNIVERSAL_CHARSTRING EndUserAddress__types_default_coding("RAW"); UNIVERSAL_CHARSTRING EndUserAddress_endUserAddress_default_coding("RAW"); const TTCN_RAWdescriptor_t EndUserAddress_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for EndUserAddress const TTCN_Typedescriptor_t EndUserAddress_descr_ = { "@GTPC_Types.EndUserAddress", NULL, &EndUserAddress_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EndUserAddress_default_coding("RAW"); const XERdescriptor_t MM__Context_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MM__Context_type__gtpc_oer_ext_arr_[0] = {}; const int MM__Context_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t MM__Context_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MM__Context_type__gtpc_oer_ext_arr_, 0, MM__Context_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t MM__Context_type__gtpc_descr_ = { "@GTPC_Types.MM_Context.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MM__Context_type__gtpc_xer_, &OCTETSTRING_json_, &MM__Context_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__Context_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t MM__ContextU_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MM__ContextU const TTCN_Typedescriptor_t MM__ContextU_descr_ = { "@GTPC_Types.MM_ContextU", NULL, &MM__ContextU_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const TTCN_RAWdescriptor_t MM__ContextGSM_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MM__ContextGSM_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MM__ContextGSM_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MM__ContextGSM_lengthf_descr_ = { "@GTPC_Types.MM_ContextGSM.lengthf", &INTEGER_ber_, &MM__ContextGSM_lengthf_raw_, &INTEGER_text_, &MM__ContextGSM_lengthf_xer_, &INTEGER_json_, &MM__ContextGSM_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextGSM_lengthf_default_coding("RAW"); const XERdescriptor_t MM__ContextGSM_cksn_xer_ = { {"cksn>\n", "cksn>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MM__ContextGSM_cksn_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MM__ContextGSM_cksn_descr_ = { "@GTPC_Types.MM_ContextGSM.cksn", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &MM__ContextGSM_cksn_xer_, &BITSTRING_json_, &MM__ContextGSM_cksn_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextGSM_cksn_default_coding("RAW"); const XERdescriptor_t MM__ContextGSM_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 MM__ContextGSM_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MM__ContextGSM_spare_descr_ = { "@GTPC_Types.MM_ContextGSM.spare", &BITSTRING_ber_, &General__Types::BIT5_raw_, NULL, &MM__ContextGSM_spare_xer_, &BITSTRING_json_, &MM__ContextGSM_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextGSM_spare_default_coding("RAW"); const XERdescriptor_t MM__ContextGSM_usedCipher_xer_ = { {"usedCipher>\n", "usedCipher>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MM__ContextGSM_usedCipher_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MM__ContextGSM_usedCipher_descr_ = { "@GTPC_Types.MM_ContextGSM.usedCipher", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &MM__ContextGSM_usedCipher_xer_, &BITSTRING_json_, &MM__ContextGSM_usedCipher_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextGSM_usedCipher_default_coding("RAW"); const TTCN_RAWdescriptor_t MM__ContextGSM_noofVectors_raw_ = {3,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,224,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MM__ContextGSM_noofVectors_xer_ = { {"noofVectors>\n", "noofVectors>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t MM__ContextGSM_noofVectors_descr_ = { "@GTPC_Types.MM_ContextGSM.noofVectors", &INTEGER_ber_, &MM__ContextGSM_noofVectors_raw_, &INTEGER_text_, &MM__ContextGSM_noofVectors_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextGSM_noofVectors_default_coding("RAW"); const XERdescriptor_t MM__ContextGSM_security_xer_ = { {"security>\n", "security>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MM__ContextGSM_security_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MM__ContextGSM_security_descr_ = { "@GTPC_Types.MM_ContextGSM.security", &BITSTRING_ber_, &General__Types::BIT2_raw_, NULL, &MM__ContextGSM_security_xer_, &BITSTRING_json_, &MM__ContextGSM_security_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextGSM_security_default_coding("RAW"); const XERdescriptor_t MM__ContextGSM_kc_xer_ = { {"kc>\n", "kc>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MM__ContextGSM_kc_oer_ext_arr_[0] = {}; const int MM__ContextGSM_kc_oer_p_[0] = {}; const TTCN_OERdescriptor_t MM__ContextGSM_kc_oer_ = { -1, TRUE, 8, FALSE, 0, 0, MM__ContextGSM_kc_oer_ext_arr_, 0, MM__ContextGSM_kc_oer_p_}; const TTCN_Typedescriptor_t MM__ContextGSM_kc_descr_ = { "@GTPC_Types.MM_ContextGSM.kc", &OCTETSTRING_ber_, &General__Types::OCT8_raw_, &OCTETSTRING_text_, &MM__ContextGSM_kc_xer_, &OCTETSTRING_json_, &MM__ContextGSM_kc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextGSM_kc_default_coding("RAW"); const XERdescriptor_t MM__ContextGSM_triplet_xer_ = { {"triplet>\n", "triplet>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MM__ContextGSM_triplet_oer_ext_arr_[0] = {}; const int MM__ContextGSM_triplet_oer_p_[0] = {}; const TTCN_OERdescriptor_t MM__ContextGSM_triplet_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MM__ContextGSM_triplet_oer_ext_arr_, 0, MM__ContextGSM_triplet_oer_p_}; const TTCN_Typedescriptor_t MM__ContextGSM_triplet_descr_ = { "@GTPC_Types.MM_ContextGSM.triplet", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &MM__ContextGSM_triplet_xer_, &OCTETSTRING_json_, &MM__ContextGSM_triplet_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextGSM_triplet_default_coding("RAW"); const XERdescriptor_t MM__ContextGSM_drx__par_xer_ = { {"drx_par>\n", "drx_par>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MM__ContextGSM_drx__par_oer_ext_arr_[0] = {}; const int MM__ContextGSM_drx__par_oer_p_[0] = {}; const TTCN_OERdescriptor_t MM__ContextGSM_drx__par_oer_ = { -1, TRUE, 2, FALSE, 0, 0, MM__ContextGSM_drx__par_oer_ext_arr_, 0, MM__ContextGSM_drx__par_oer_p_}; const TTCN_Typedescriptor_t MM__ContextGSM_drx__par_descr_ = { "@GTPC_Types.MM_ContextGSM.drx_par", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &MM__ContextGSM_drx__par_xer_, &OCTETSTRING_json_, &MM__ContextGSM_drx__par_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextGSM_drx__par_default_coding("RAW"); const TTCN_RAWdescriptor_t MM__ContextGSM_msNetW__cap__length_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MM__ContextGSM_msNetW__cap__length_xer_ = { {"msNetW_cap_length>\n", "msNetW_cap_length>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t MM__ContextGSM_msNetW__cap__length_descr_ = { "@GTPC_Types.MM_ContextGSM.msNetW_cap_length", &INTEGER_ber_, &MM__ContextGSM_msNetW__cap__length_raw_, &INTEGER_text_, &MM__ContextGSM_msNetW__cap__length_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextGSM_msNetW__cap__length_default_coding("RAW"); const TTCN_RAWdescriptor_t MM__ContextGSM_containerLength_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MM__ContextGSM_containerLength_xer_ = { {"containerLength>\n", "containerLength>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MM__ContextGSM_containerLength_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MM__ContextGSM_containerLength_descr_ = { "@GTPC_Types.MM_ContextGSM.containerLength", &INTEGER_ber_, &MM__ContextGSM_containerLength_raw_, &INTEGER_text_, &MM__ContextGSM_containerLength_xer_, &INTEGER_json_, &MM__ContextGSM_containerLength_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextGSM_containerLength_default_coding("RAW"); const TTCN_RAWdescriptor_t MM__ContextGSM_access__restriction__data__length_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MM__ContextGSM_access__restriction__data__length_xer_ = { {"access_restriction_data_length>\n", "access_restriction_data_length>\n"}, {32, 32}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t MM__ContextGSM_access__restriction__data__length_descr_ = { "@GTPC_Types.MM_ContextGSM.access_restriction_data_length", &INTEGER_ber_, &MM__ContextGSM_access__restriction__data__length_raw_, &INTEGER_text_, &MM__ContextGSM_access__restriction__data__length_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextGSM_access__restriction__data__length_default_coding("RAW"); const TTCN_RAWdescriptor_t MM__ContextGSM_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MM__ContextGSM const TTCN_Typedescriptor_t MM__ContextGSM_descr_ = { "@GTPC_Types.MM_ContextGSM", NULL, &MM__ContextGSM_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t MM__ContextGSM_msNetw__cap_xer_ = { {"msNetw_cap>\n", "msNetw_cap>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MM__ContextGSM_msNetw__cap_oer_ext_arr_[0] = {}; const int MM__ContextGSM_msNetw__cap_oer_p_[0] = {}; const TTCN_OERdescriptor_t MM__ContextGSM_msNetw__cap_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MM__ContextGSM_msNetw__cap_oer_ext_arr_, 0, MM__ContextGSM_msNetw__cap_oer_p_}; const TTCN_Typedescriptor_t MM__ContextGSM_msNetw__cap_descr_ = { "@GTPC_Types.MM_ContextGSM.msNetw_cap", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &MM__ContextGSM_msNetw__cap_xer_, &OCTETSTRING_json_, &MM__ContextGSM_msNetw__cap_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextGSM_msNetw__cap_default_coding("RAW"); const XERdescriptor_t MM__ContextGSM_container_xer_ = { {"container>\n", "container>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MM__ContextGSM_container_oer_ext_arr_[0] = {}; const int MM__ContextGSM_container_oer_p_[0] = {}; const TTCN_OERdescriptor_t MM__ContextGSM_container_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MM__ContextGSM_container_oer_ext_arr_, 0, MM__ContextGSM_container_oer_p_}; const TTCN_Typedescriptor_t MM__ContextGSM_container_descr_ = { "@GTPC_Types.MM_ContextGSM.container", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &MM__ContextGSM_container_xer_, &OCTETSTRING_json_, &MM__ContextGSM_container_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextGSM_container_default_coding("RAW"); const XERdescriptor_t MM__ContextGSM_access__restriction__data_xer_ = { {"access_restriction_data>\n", "access_restriction_data>\n"}, {25, 25}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MM__ContextGSM_access__restriction__data_oer_ext_arr_[0] = {}; const int MM__ContextGSM_access__restriction__data_oer_p_[0] = {}; const TTCN_OERdescriptor_t MM__ContextGSM_access__restriction__data_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MM__ContextGSM_access__restriction__data_oer_ext_arr_, 0, MM__ContextGSM_access__restriction__data_oer_p_}; const TTCN_Typedescriptor_t MM__ContextGSM_access__restriction__data_descr_ = { "@GTPC_Types.MM_ContextGSM.access_restriction_data", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &MM__ContextGSM_access__restriction__data_xer_, &OCTETSTRING_json_, &MM__ContextGSM_access__restriction__data_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextGSM_access__restriction__data_default_coding("RAW"); UNIVERSAL_CHARSTRING MM__ContextGSM_default_coding("RAW"); UNIVERSAL_CHARSTRING MM__ContextU_mmcontGSM_default_coding("RAW"); const TTCN_RAWdescriptor_t MM__ContextUMTS_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MM__ContextUMTS_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MM__ContextUMTS_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MM__ContextUMTS_lengthf_descr_ = { "@GTPC_Types.MM_ContextUMTS.lengthf", &INTEGER_ber_, &MM__ContextUMTS_lengthf_raw_, &INTEGER_text_, &MM__ContextUMTS_lengthf_xer_, &INTEGER_json_, &MM__ContextUMTS_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextUMTS_lengthf_default_coding("RAW"); const XERdescriptor_t MM__ContextUMTS_ksi_xer_ = { {"ksi>\n", "ksi>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MM__ContextUMTS_ksi_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MM__ContextUMTS_ksi_descr_ = { "@GTPC_Types.MM_ContextUMTS.ksi", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &MM__ContextUMTS_ksi_xer_, &BITSTRING_json_, &MM__ContextUMTS_ksi_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextUMTS_ksi_default_coding("RAW"); const XERdescriptor_t MM__ContextUMTS_usedGPRSIntegrityAlgorithm_xer_ = { {"usedGPRSIntegrityAlgorithm>\n", "usedGPRSIntegrityAlgorithm>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MM__ContextUMTS_usedGPRSIntegrityAlgorithm_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MM__ContextUMTS_usedGPRSIntegrityAlgorithm_descr_ = { "@GTPC_Types.MM_ContextUMTS.usedGPRSIntegrityAlgorithm", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &MM__ContextUMTS_usedGPRSIntegrityAlgorithm_xer_, &BITSTRING_json_, &MM__ContextUMTS_usedGPRSIntegrityAlgorithm_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextUMTS_usedGPRSIntegrityAlgorithm_default_coding("RAW"); const XERdescriptor_t MM__ContextUMTS_ugipai_xer_ = { {"ugipai>\n", "ugipai>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MM__ContextUMTS_ugipai_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MM__ContextUMTS_ugipai_descr_ = { "@GTPC_Types.MM_ContextUMTS.ugipai", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &MM__ContextUMTS_ugipai_xer_, &BITSTRING_json_, &MM__ContextUMTS_ugipai_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextUMTS_ugipai_default_coding("RAW"); const XERdescriptor_t MM__ContextUMTS_gupii_xer_ = { {"gupii>\n", "gupii>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MM__ContextUMTS_gupii_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MM__ContextUMTS_gupii_descr_ = { "@GTPC_Types.MM_ContextUMTS.gupii", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &MM__ContextUMTS_gupii_xer_, &BITSTRING_json_, &MM__ContextUMTS_gupii_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextUMTS_gupii_default_coding("RAW"); const XERdescriptor_t MM__ContextUMTS_spare1_xer_ = { {"spare1>\n", "spare1>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MM__ContextUMTS_spare1_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MM__ContextUMTS_spare1_descr_ = { "@GTPC_Types.MM_ContextUMTS.spare1", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &MM__ContextUMTS_spare1_xer_, &BITSTRING_json_, &MM__ContextUMTS_spare1_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextUMTS_spare1_default_coding("RAW"); const TTCN_RAWdescriptor_t MM__ContextUMTS_noofVectors_raw_ = {3,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MM__ContextUMTS_noofVectors_xer_ = { {"noofVectors>\n", "noofVectors>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t MM__ContextUMTS_noofVectors_descr_ = { "@GTPC_Types.MM_ContextUMTS.noofVectors", &INTEGER_ber_, &MM__ContextUMTS_noofVectors_raw_, &INTEGER_text_, &MM__ContextUMTS_noofVectors_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextUMTS_noofVectors_default_coding("RAW"); const XERdescriptor_t MM__ContextUMTS_security_xer_ = { {"security>\n", "security>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MM__ContextUMTS_security_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MM__ContextUMTS_security_descr_ = { "@GTPC_Types.MM_ContextUMTS.security", &BITSTRING_ber_, &General__Types::BIT2_raw_, NULL, &MM__ContextUMTS_security_xer_, &BITSTRING_json_, &MM__ContextUMTS_security_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextUMTS_security_default_coding("RAW"); const XERdescriptor_t MM__ContextUMTS_ck_xer_ = { {"ck>\n", "ck>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MM__ContextUMTS_ck_oer_ext_arr_[0] = {}; const int MM__ContextUMTS_ck_oer_p_[0] = {}; const TTCN_OERdescriptor_t MM__ContextUMTS_ck_oer_ = { -1, TRUE, 16, FALSE, 0, 0, MM__ContextUMTS_ck_oer_ext_arr_, 0, MM__ContextUMTS_ck_oer_p_}; const TTCN_Typedescriptor_t MM__ContextUMTS_ck_descr_ = { "@GTPC_Types.MM_ContextUMTS.ck", &OCTETSTRING_ber_, &General__Types::OCT16_raw_, &OCTETSTRING_text_, &MM__ContextUMTS_ck_xer_, &OCTETSTRING_json_, &MM__ContextUMTS_ck_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextUMTS_ck_default_coding("RAW"); const XERdescriptor_t MM__ContextUMTS_ik_xer_ = { {"ik>\n", "ik>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MM__ContextUMTS_ik_oer_ext_arr_[0] = {}; const int MM__ContextUMTS_ik_oer_p_[0] = {}; const TTCN_OERdescriptor_t MM__ContextUMTS_ik_oer_ = { -1, TRUE, 16, FALSE, 0, 0, MM__ContextUMTS_ik_oer_ext_arr_, 0, MM__ContextUMTS_ik_oer_p_}; const TTCN_Typedescriptor_t MM__ContextUMTS_ik_descr_ = { "@GTPC_Types.MM_ContextUMTS.ik", &OCTETSTRING_ber_, &General__Types::OCT16_raw_, &OCTETSTRING_text_, &MM__ContextUMTS_ik_xer_, &OCTETSTRING_json_, &MM__ContextUMTS_ik_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextUMTS_ik_default_coding("RAW"); const TTCN_RAWdescriptor_t MM__ContextUMTS_quintupletlength_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MM__ContextUMTS_quintupletlength_xer_ = { {"quintupletlength>\n", "quintupletlength>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MM__ContextUMTS_quintupletlength_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MM__ContextUMTS_quintupletlength_descr_ = { "@GTPC_Types.MM_ContextUMTS.quintupletlength", &INTEGER_ber_, &MM__ContextUMTS_quintupletlength_raw_, &INTEGER_text_, &MM__ContextUMTS_quintupletlength_xer_, &INTEGER_json_, &MM__ContextUMTS_quintupletlength_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextUMTS_quintupletlength_default_coding("RAW"); const XERdescriptor_t MM__ContextUMTS_quintuplet_xer_ = { {"quintuplet>\n", "quintuplet>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MM__ContextUMTS_quintuplet_oer_ext_arr_[0] = {}; const int MM__ContextUMTS_quintuplet_oer_p_[0] = {}; const TTCN_OERdescriptor_t MM__ContextUMTS_quintuplet_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MM__ContextUMTS_quintuplet_oer_ext_arr_, 0, MM__ContextUMTS_quintuplet_oer_p_}; const TTCN_Typedescriptor_t MM__ContextUMTS_quintuplet_descr_ = { "@GTPC_Types.MM_ContextUMTS.quintuplet", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &MM__ContextUMTS_quintuplet_xer_, &OCTETSTRING_json_, &MM__ContextUMTS_quintuplet_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextUMTS_quintuplet_default_coding("RAW"); const XERdescriptor_t MM__ContextUMTS_drx__par_xer_ = { {"drx_par>\n", "drx_par>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MM__ContextUMTS_drx__par_oer_ext_arr_[0] = {}; const int MM__ContextUMTS_drx__par_oer_p_[0] = {}; const TTCN_OERdescriptor_t MM__ContextUMTS_drx__par_oer_ = { -1, TRUE, 2, FALSE, 0, 0, MM__ContextUMTS_drx__par_oer_ext_arr_, 0, MM__ContextUMTS_drx__par_oer_p_}; const TTCN_Typedescriptor_t MM__ContextUMTS_drx__par_descr_ = { "@GTPC_Types.MM_ContextUMTS.drx_par", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &MM__ContextUMTS_drx__par_xer_, &OCTETSTRING_json_, &MM__ContextUMTS_drx__par_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextUMTS_drx__par_default_coding("RAW"); const TTCN_RAWdescriptor_t MM__ContextUMTS_msNetW__cap__length_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MM__ContextUMTS_msNetW__cap__length_xer_ = { {"msNetW_cap_length>\n", "msNetW_cap_length>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t MM__ContextUMTS_msNetW__cap__length_descr_ = { "@GTPC_Types.MM_ContextUMTS.msNetW_cap_length", &INTEGER_ber_, &MM__ContextUMTS_msNetW__cap__length_raw_, &INTEGER_text_, &MM__ContextUMTS_msNetW__cap__length_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextUMTS_msNetW__cap__length_default_coding("RAW"); const TTCN_RAWdescriptor_t MM__ContextUMTS_containerLength_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MM__ContextUMTS_containerLength_xer_ = { {"containerLength>\n", "containerLength>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MM__ContextUMTS_containerLength_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MM__ContextUMTS_containerLength_descr_ = { "@GTPC_Types.MM_ContextUMTS.containerLength", &INTEGER_ber_, &MM__ContextUMTS_containerLength_raw_, &INTEGER_text_, &MM__ContextUMTS_containerLength_xer_, &INTEGER_json_, &MM__ContextUMTS_containerLength_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextUMTS_containerLength_default_coding("RAW"); const TTCN_RAWdescriptor_t MM__ContextUMTS_access__restriction__data__length_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MM__ContextUMTS_access__restriction__data__length_xer_ = { {"access_restriction_data_length>\n", "access_restriction_data_length>\n"}, {32, 32}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t MM__ContextUMTS_access__restriction__data__length_descr_ = { "@GTPC_Types.MM_ContextUMTS.access_restriction_data_length", &INTEGER_ber_, &MM__ContextUMTS_access__restriction__data__length_raw_, &INTEGER_text_, &MM__ContextUMTS_access__restriction__data__length_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextUMTS_access__restriction__data__length_default_coding("RAW"); const TTCN_RAWdescriptor_t MM__ContextUMTS_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MM__ContextUMTS const TTCN_Typedescriptor_t MM__ContextUMTS_descr_ = { "@GTPC_Types.MM_ContextUMTS", NULL, &MM__ContextUMTS_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t MM__ContextUMTS_msNetw__cap_xer_ = { {"msNetw_cap>\n", "msNetw_cap>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MM__ContextUMTS_msNetw__cap_oer_ext_arr_[0] = {}; const int MM__ContextUMTS_msNetw__cap_oer_p_[0] = {}; const TTCN_OERdescriptor_t MM__ContextUMTS_msNetw__cap_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MM__ContextUMTS_msNetw__cap_oer_ext_arr_, 0, MM__ContextUMTS_msNetw__cap_oer_p_}; const TTCN_Typedescriptor_t MM__ContextUMTS_msNetw__cap_descr_ = { "@GTPC_Types.MM_ContextUMTS.msNetw_cap", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &MM__ContextUMTS_msNetw__cap_xer_, &OCTETSTRING_json_, &MM__ContextUMTS_msNetw__cap_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextUMTS_msNetw__cap_default_coding("RAW"); const XERdescriptor_t MM__ContextUMTS_container_xer_ = { {"container>\n", "container>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MM__ContextUMTS_container_oer_ext_arr_[0] = {}; const int MM__ContextUMTS_container_oer_p_[0] = {}; const TTCN_OERdescriptor_t MM__ContextUMTS_container_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MM__ContextUMTS_container_oer_ext_arr_, 0, MM__ContextUMTS_container_oer_p_}; const TTCN_Typedescriptor_t MM__ContextUMTS_container_descr_ = { "@GTPC_Types.MM_ContextUMTS.container", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &MM__ContextUMTS_container_xer_, &OCTETSTRING_json_, &MM__ContextUMTS_container_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextUMTS_container_default_coding("RAW"); const XERdescriptor_t MM__ContextUMTS_access__restriction__data_xer_ = { {"access_restriction_data>\n", "access_restriction_data>\n"}, {25, 25}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MM__ContextUMTS_access__restriction__data_oer_ext_arr_[0] = {}; const int MM__ContextUMTS_access__restriction__data_oer_p_[0] = {}; const TTCN_OERdescriptor_t MM__ContextUMTS_access__restriction__data_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MM__ContextUMTS_access__restriction__data_oer_ext_arr_, 0, MM__ContextUMTS_access__restriction__data_oer_p_}; const TTCN_Typedescriptor_t MM__ContextUMTS_access__restriction__data_descr_ = { "@GTPC_Types.MM_ContextUMTS.access_restriction_data", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &MM__ContextUMTS_access__restriction__data_xer_, &OCTETSTRING_json_, &MM__ContextUMTS_access__restriction__data_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextUMTS_access__restriction__data_default_coding("RAW"); UNIVERSAL_CHARSTRING MM__ContextUMTS_default_coding("RAW"); UNIVERSAL_CHARSTRING MM__ContextU_mmcontUMTS_default_coding("RAW"); const TTCN_RAWdescriptor_t MM__ContextGSMUMTS_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MM__ContextGSMUMTS_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MM__ContextGSMUMTS_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MM__ContextGSMUMTS_lengthf_descr_ = { "@GTPC_Types.MM_ContextGSMUMTS.lengthf", &INTEGER_ber_, &MM__ContextGSMUMTS_lengthf_raw_, &INTEGER_text_, &MM__ContextGSMUMTS_lengthf_xer_, &INTEGER_json_, &MM__ContextGSMUMTS_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextGSMUMTS_lengthf_default_coding("RAW"); const XERdescriptor_t MM__ContextGSMUMTS_cksn_xer_ = { {"cksn>\n", "cksn>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MM__ContextGSMUMTS_cksn_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MM__ContextGSMUMTS_cksn_descr_ = { "@GTPC_Types.MM_ContextGSMUMTS.cksn", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &MM__ContextGSMUMTS_cksn_xer_, &BITSTRING_json_, &MM__ContextGSMUMTS_cksn_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextGSMUMTS_cksn_default_coding("RAW"); const XERdescriptor_t MM__ContextGSMUMTS_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 MM__ContextGSMUMTS_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MM__ContextGSMUMTS_spare_descr_ = { "@GTPC_Types.MM_ContextGSMUMTS.spare", &BITSTRING_ber_, &General__Types::BIT5_raw_, NULL, &MM__ContextGSMUMTS_spare_xer_, &BITSTRING_json_, &MM__ContextGSMUMTS_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextGSMUMTS_spare_default_coding("RAW"); const XERdescriptor_t MM__ContextGSMUMTS_usedCipher_xer_ = { {"usedCipher>\n", "usedCipher>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MM__ContextGSMUMTS_usedCipher_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MM__ContextGSMUMTS_usedCipher_descr_ = { "@GTPC_Types.MM_ContextGSMUMTS.usedCipher", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &MM__ContextGSMUMTS_usedCipher_xer_, &BITSTRING_json_, &MM__ContextGSMUMTS_usedCipher_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextGSMUMTS_usedCipher_default_coding("RAW"); const TTCN_RAWdescriptor_t MM__ContextGSMUMTS_noofVectors_raw_ = {3,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MM__ContextGSMUMTS_noofVectors_xer_ = { {"noofVectors>\n", "noofVectors>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t MM__ContextGSMUMTS_noofVectors_descr_ = { "@GTPC_Types.MM_ContextGSMUMTS.noofVectors", &INTEGER_ber_, &MM__ContextGSMUMTS_noofVectors_raw_, &INTEGER_text_, &MM__ContextGSMUMTS_noofVectors_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextGSMUMTS_noofVectors_default_coding("RAW"); const XERdescriptor_t MM__ContextGSMUMTS_security_xer_ = { {"security>\n", "security>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MM__ContextGSMUMTS_security_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MM__ContextGSMUMTS_security_descr_ = { "@GTPC_Types.MM_ContextGSMUMTS.security", &BITSTRING_ber_, &General__Types::BIT2_raw_, NULL, &MM__ContextGSMUMTS_security_xer_, &BITSTRING_json_, &MM__ContextGSMUMTS_security_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextGSMUMTS_security_default_coding("RAW"); const XERdescriptor_t MM__ContextGSMUMTS_kc_xer_ = { {"kc>\n", "kc>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MM__ContextGSMUMTS_kc_oer_ext_arr_[0] = {}; const int MM__ContextGSMUMTS_kc_oer_p_[0] = {}; const TTCN_OERdescriptor_t MM__ContextGSMUMTS_kc_oer_ = { -1, TRUE, 8, FALSE, 0, 0, MM__ContextGSMUMTS_kc_oer_ext_arr_, 0, MM__ContextGSMUMTS_kc_oer_p_}; const TTCN_Typedescriptor_t MM__ContextGSMUMTS_kc_descr_ = { "@GTPC_Types.MM_ContextGSMUMTS.kc", &OCTETSTRING_ber_, &General__Types::OCT8_raw_, &OCTETSTRING_text_, &MM__ContextGSMUMTS_kc_xer_, &OCTETSTRING_json_, &MM__ContextGSMUMTS_kc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextGSMUMTS_kc_default_coding("RAW"); const TTCN_RAWdescriptor_t MM__ContextGSMUMTS_quintupletlength_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MM__ContextGSMUMTS_quintupletlength_xer_ = { {"quintupletlength>\n", "quintupletlength>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MM__ContextGSMUMTS_quintupletlength_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MM__ContextGSMUMTS_quintupletlength_descr_ = { "@GTPC_Types.MM_ContextGSMUMTS.quintupletlength", &INTEGER_ber_, &MM__ContextGSMUMTS_quintupletlength_raw_, &INTEGER_text_, &MM__ContextGSMUMTS_quintupletlength_xer_, &INTEGER_json_, &MM__ContextGSMUMTS_quintupletlength_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextGSMUMTS_quintupletlength_default_coding("RAW"); const XERdescriptor_t MM__ContextGSMUMTS_quintuplet_xer_ = { {"quintuplet>\n", "quintuplet>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MM__ContextGSMUMTS_quintuplet_oer_ext_arr_[0] = {}; const int MM__ContextGSMUMTS_quintuplet_oer_p_[0] = {}; const TTCN_OERdescriptor_t MM__ContextGSMUMTS_quintuplet_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MM__ContextGSMUMTS_quintuplet_oer_ext_arr_, 0, MM__ContextGSMUMTS_quintuplet_oer_p_}; const TTCN_Typedescriptor_t MM__ContextGSMUMTS_quintuplet_descr_ = { "@GTPC_Types.MM_ContextGSMUMTS.quintuplet", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &MM__ContextGSMUMTS_quintuplet_xer_, &OCTETSTRING_json_, &MM__ContextGSMUMTS_quintuplet_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextGSMUMTS_quintuplet_default_coding("RAW"); const XERdescriptor_t MM__ContextGSMUMTS_drx__par_xer_ = { {"drx_par>\n", "drx_par>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MM__ContextGSMUMTS_drx__par_oer_ext_arr_[0] = {}; const int MM__ContextGSMUMTS_drx__par_oer_p_[0] = {}; const TTCN_OERdescriptor_t MM__ContextGSMUMTS_drx__par_oer_ = { -1, TRUE, 2, FALSE, 0, 0, MM__ContextGSMUMTS_drx__par_oer_ext_arr_, 0, MM__ContextGSMUMTS_drx__par_oer_p_}; const TTCN_Typedescriptor_t MM__ContextGSMUMTS_drx__par_descr_ = { "@GTPC_Types.MM_ContextGSMUMTS.drx_par", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &MM__ContextGSMUMTS_drx__par_xer_, &OCTETSTRING_json_, &MM__ContextGSMUMTS_drx__par_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextGSMUMTS_drx__par_default_coding("RAW"); const TTCN_RAWdescriptor_t MM__ContextGSMUMTS_msNetW__cap__length_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MM__ContextGSMUMTS_msNetW__cap__length_xer_ = { {"msNetW_cap_length>\n", "msNetW_cap_length>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t MM__ContextGSMUMTS_msNetW__cap__length_descr_ = { "@GTPC_Types.MM_ContextGSMUMTS.msNetW_cap_length", &INTEGER_ber_, &MM__ContextGSMUMTS_msNetW__cap__length_raw_, &INTEGER_text_, &MM__ContextGSMUMTS_msNetW__cap__length_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextGSMUMTS_msNetW__cap__length_default_coding("RAW"); const TTCN_RAWdescriptor_t MM__ContextGSMUMTS_containerLength_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MM__ContextGSMUMTS_containerLength_xer_ = { {"containerLength>\n", "containerLength>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MM__ContextGSMUMTS_containerLength_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MM__ContextGSMUMTS_containerLength_descr_ = { "@GTPC_Types.MM_ContextGSMUMTS.containerLength", &INTEGER_ber_, &MM__ContextGSMUMTS_containerLength_raw_, &INTEGER_text_, &MM__ContextGSMUMTS_containerLength_xer_, &INTEGER_json_, &MM__ContextGSMUMTS_containerLength_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextGSMUMTS_containerLength_default_coding("RAW"); const TTCN_RAWdescriptor_t MM__ContextGSMUMTS_access__restriction__data__length_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MM__ContextGSMUMTS_access__restriction__data__length_xer_ = { {"access_restriction_data_length>\n", "access_restriction_data_length>\n"}, {32, 32}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t MM__ContextGSMUMTS_access__restriction__data__length_descr_ = { "@GTPC_Types.MM_ContextGSMUMTS.access_restriction_data_length", &INTEGER_ber_, &MM__ContextGSMUMTS_access__restriction__data__length_raw_, &INTEGER_text_, &MM__ContextGSMUMTS_access__restriction__data__length_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextGSMUMTS_access__restriction__data__length_default_coding("RAW"); const TTCN_RAWdescriptor_t MM__ContextGSMUMTS_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MM__ContextGSMUMTS const TTCN_Typedescriptor_t MM__ContextGSMUMTS_descr_ = { "@GTPC_Types.MM_ContextGSMUMTS", NULL, &MM__ContextGSMUMTS_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t MM__ContextGSMUMTS_msNetw__cap_xer_ = { {"msNetw_cap>\n", "msNetw_cap>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MM__ContextGSMUMTS_msNetw__cap_oer_ext_arr_[0] = {}; const int MM__ContextGSMUMTS_msNetw__cap_oer_p_[0] = {}; const TTCN_OERdescriptor_t MM__ContextGSMUMTS_msNetw__cap_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MM__ContextGSMUMTS_msNetw__cap_oer_ext_arr_, 0, MM__ContextGSMUMTS_msNetw__cap_oer_p_}; const TTCN_Typedescriptor_t MM__ContextGSMUMTS_msNetw__cap_descr_ = { "@GTPC_Types.MM_ContextGSMUMTS.msNetw_cap", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &MM__ContextGSMUMTS_msNetw__cap_xer_, &OCTETSTRING_json_, &MM__ContextGSMUMTS_msNetw__cap_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextGSMUMTS_msNetw__cap_default_coding("RAW"); const XERdescriptor_t MM__ContextGSMUMTS_container_xer_ = { {"container>\n", "container>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MM__ContextGSMUMTS_container_oer_ext_arr_[0] = {}; const int MM__ContextGSMUMTS_container_oer_p_[0] = {}; const TTCN_OERdescriptor_t MM__ContextGSMUMTS_container_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MM__ContextGSMUMTS_container_oer_ext_arr_, 0, MM__ContextGSMUMTS_container_oer_p_}; const TTCN_Typedescriptor_t MM__ContextGSMUMTS_container_descr_ = { "@GTPC_Types.MM_ContextGSMUMTS.container", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &MM__ContextGSMUMTS_container_xer_, &OCTETSTRING_json_, &MM__ContextGSMUMTS_container_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextGSMUMTS_container_default_coding("RAW"); const XERdescriptor_t MM__ContextGSMUMTS_access__restriction__data_xer_ = { {"access_restriction_data>\n", "access_restriction_data>\n"}, {25, 25}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MM__ContextGSMUMTS_access__restriction__data_oer_ext_arr_[0] = {}; const int MM__ContextGSMUMTS_access__restriction__data_oer_p_[0] = {}; const TTCN_OERdescriptor_t MM__ContextGSMUMTS_access__restriction__data_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MM__ContextGSMUMTS_access__restriction__data_oer_ext_arr_, 0, MM__ContextGSMUMTS_access__restriction__data_oer_p_}; const TTCN_Typedescriptor_t MM__ContextGSMUMTS_access__restriction__data_descr_ = { "@GTPC_Types.MM_ContextGSMUMTS.access_restriction_data", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &MM__ContextGSMUMTS_access__restriction__data_xer_, &OCTETSTRING_json_, &MM__ContextGSMUMTS_access__restriction__data_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextGSMUMTS_access__restriction__data_default_coding("RAW"); UNIVERSAL_CHARSTRING MM__ContextGSMUMTS_default_coding("RAW"); UNIVERSAL_CHARSTRING MM__ContextU_mmcontGSMUMTS_default_coding("RAW"); const TTCN_RAWdescriptor_t MM__ContextUMTSReceive_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MM__ContextUMTSReceive_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MM__ContextUMTSReceive_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MM__ContextUMTSReceive_lengthf_descr_ = { "@GTPC_Types.MM_ContextUMTSReceive.lengthf", &INTEGER_ber_, &MM__ContextUMTSReceive_lengthf_raw_, &INTEGER_text_, &MM__ContextUMTSReceive_lengthf_xer_, &INTEGER_json_, &MM__ContextUMTSReceive_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextUMTSReceive_lengthf_default_coding("RAW"); const XERdescriptor_t MM__ContextUMTSReceive_ksi_xer_ = { {"ksi>\n", "ksi>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MM__ContextUMTSReceive_ksi_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MM__ContextUMTSReceive_ksi_descr_ = { "@GTPC_Types.MM_ContextUMTSReceive.ksi", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &MM__ContextUMTSReceive_ksi_xer_, &BITSTRING_json_, &MM__ContextUMTSReceive_ksi_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextUMTSReceive_ksi_default_coding("RAW"); const XERdescriptor_t MM__ContextUMTSReceive_usedGPRSIntegrityAlgorithm_xer_ = { {"usedGPRSIntegrityAlgorithm>\n", "usedGPRSIntegrityAlgorithm>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MM__ContextUMTSReceive_usedGPRSIntegrityAlgorithm_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MM__ContextUMTSReceive_usedGPRSIntegrityAlgorithm_descr_ = { "@GTPC_Types.MM_ContextUMTSReceive.usedGPRSIntegrityAlgorithm", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &MM__ContextUMTSReceive_usedGPRSIntegrityAlgorithm_xer_, &BITSTRING_json_, &MM__ContextUMTSReceive_usedGPRSIntegrityAlgorithm_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextUMTSReceive_usedGPRSIntegrityAlgorithm_default_coding("RAW"); const XERdescriptor_t MM__ContextUMTSReceive_ugipai_xer_ = { {"ugipai>\n", "ugipai>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MM__ContextUMTSReceive_ugipai_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MM__ContextUMTSReceive_ugipai_descr_ = { "@GTPC_Types.MM_ContextUMTSReceive.ugipai", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &MM__ContextUMTSReceive_ugipai_xer_, &BITSTRING_json_, &MM__ContextUMTSReceive_ugipai_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextUMTSReceive_ugipai_default_coding("RAW"); const XERdescriptor_t MM__ContextUMTSReceive_gupii_xer_ = { {"gupii>\n", "gupii>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MM__ContextUMTSReceive_gupii_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MM__ContextUMTSReceive_gupii_descr_ = { "@GTPC_Types.MM_ContextUMTSReceive.gupii", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &MM__ContextUMTSReceive_gupii_xer_, &BITSTRING_json_, &MM__ContextUMTSReceive_gupii_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextUMTSReceive_gupii_default_coding("RAW"); const XERdescriptor_t MM__ContextUMTSReceive_usedCipher_xer_ = { {"usedCipher>\n", "usedCipher>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MM__ContextUMTSReceive_usedCipher_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MM__ContextUMTSReceive_usedCipher_descr_ = { "@GTPC_Types.MM_ContextUMTSReceive.usedCipher", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &MM__ContextUMTSReceive_usedCipher_xer_, &BITSTRING_json_, &MM__ContextUMTSReceive_usedCipher_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextUMTSReceive_usedCipher_default_coding("RAW"); const TTCN_RAWdescriptor_t MM__ContextUMTSReceive_noofVectors_raw_ = {3,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MM__ContextUMTSReceive_noofVectors_xer_ = { {"noofVectors>\n", "noofVectors>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t MM__ContextUMTSReceive_noofVectors_descr_ = { "@GTPC_Types.MM_ContextUMTSReceive.noofVectors", &INTEGER_ber_, &MM__ContextUMTSReceive_noofVectors_raw_, &INTEGER_text_, &MM__ContextUMTSReceive_noofVectors_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextUMTSReceive_noofVectors_default_coding("RAW"); const XERdescriptor_t MM__ContextUMTSReceive_security_xer_ = { {"security>\n", "security>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MM__ContextUMTSReceive_security_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MM__ContextUMTSReceive_security_descr_ = { "@GTPC_Types.MM_ContextUMTSReceive.security", &BITSTRING_ber_, &General__Types::BIT2_raw_, NULL, &MM__ContextUMTSReceive_security_xer_, &BITSTRING_json_, &MM__ContextUMTSReceive_security_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextUMTSReceive_security_default_coding("RAW"); const XERdescriptor_t MM__ContextUMTSReceive_ck_xer_ = { {"ck>\n", "ck>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MM__ContextUMTSReceive_ck_oer_ext_arr_[0] = {}; const int MM__ContextUMTSReceive_ck_oer_p_[0] = {}; const TTCN_OERdescriptor_t MM__ContextUMTSReceive_ck_oer_ = { -1, TRUE, 16, FALSE, 0, 0, MM__ContextUMTSReceive_ck_oer_ext_arr_, 0, MM__ContextUMTSReceive_ck_oer_p_}; const TTCN_Typedescriptor_t MM__ContextUMTSReceive_ck_descr_ = { "@GTPC_Types.MM_ContextUMTSReceive.ck", &OCTETSTRING_ber_, &General__Types::OCT16_raw_, &OCTETSTRING_text_, &MM__ContextUMTSReceive_ck_xer_, &OCTETSTRING_json_, &MM__ContextUMTSReceive_ck_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextUMTSReceive_ck_default_coding("RAW"); const XERdescriptor_t MM__ContextUMTSReceive_ik_xer_ = { {"ik>\n", "ik>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MM__ContextUMTSReceive_ik_oer_ext_arr_[0] = {}; const int MM__ContextUMTSReceive_ik_oer_p_[0] = {}; const TTCN_OERdescriptor_t MM__ContextUMTSReceive_ik_oer_ = { -1, TRUE, 16, FALSE, 0, 0, MM__ContextUMTSReceive_ik_oer_ext_arr_, 0, MM__ContextUMTSReceive_ik_oer_p_}; const TTCN_Typedescriptor_t MM__ContextUMTSReceive_ik_descr_ = { "@GTPC_Types.MM_ContextUMTSReceive.ik", &OCTETSTRING_ber_, &General__Types::OCT16_raw_, &OCTETSTRING_text_, &MM__ContextUMTSReceive_ik_xer_, &OCTETSTRING_json_, &MM__ContextUMTSReceive_ik_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextUMTSReceive_ik_default_coding("RAW"); const TTCN_RAWdescriptor_t MM__ContextUMTSReceive_quintupletlength_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MM__ContextUMTSReceive_quintupletlength_xer_ = { {"quintupletlength>\n", "quintupletlength>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MM__ContextUMTSReceive_quintupletlength_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MM__ContextUMTSReceive_quintupletlength_descr_ = { "@GTPC_Types.MM_ContextUMTSReceive.quintupletlength", &INTEGER_ber_, &MM__ContextUMTSReceive_quintupletlength_raw_, &INTEGER_text_, &MM__ContextUMTSReceive_quintupletlength_xer_, &INTEGER_json_, &MM__ContextUMTSReceive_quintupletlength_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextUMTSReceive_quintupletlength_default_coding("RAW"); const XERdescriptor_t MM__ContextUMTSReceive_quintuplet_xer_ = { {"quintuplet>\n", "quintuplet>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MM__ContextUMTSReceive_quintuplet_oer_ext_arr_[0] = {}; const int MM__ContextUMTSReceive_quintuplet_oer_p_[0] = {}; const TTCN_OERdescriptor_t MM__ContextUMTSReceive_quintuplet_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MM__ContextUMTSReceive_quintuplet_oer_ext_arr_, 0, MM__ContextUMTSReceive_quintuplet_oer_p_}; const TTCN_Typedescriptor_t MM__ContextUMTSReceive_quintuplet_descr_ = { "@GTPC_Types.MM_ContextUMTSReceive.quintuplet", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &MM__ContextUMTSReceive_quintuplet_xer_, &OCTETSTRING_json_, &MM__ContextUMTSReceive_quintuplet_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextUMTSReceive_quintuplet_default_coding("RAW"); const XERdescriptor_t MM__ContextUMTSReceive_drx__par_xer_ = { {"drx_par>\n", "drx_par>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MM__ContextUMTSReceive_drx__par_oer_ext_arr_[0] = {}; const int MM__ContextUMTSReceive_drx__par_oer_p_[0] = {}; const TTCN_OERdescriptor_t MM__ContextUMTSReceive_drx__par_oer_ = { -1, TRUE, 2, FALSE, 0, 0, MM__ContextUMTSReceive_drx__par_oer_ext_arr_, 0, MM__ContextUMTSReceive_drx__par_oer_p_}; const TTCN_Typedescriptor_t MM__ContextUMTSReceive_drx__par_descr_ = { "@GTPC_Types.MM_ContextUMTSReceive.drx_par", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &MM__ContextUMTSReceive_drx__par_xer_, &OCTETSTRING_json_, &MM__ContextUMTSReceive_drx__par_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextUMTSReceive_drx__par_default_coding("RAW"); const TTCN_RAWdescriptor_t MM__ContextUMTSReceive_msNetW__cap__length_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MM__ContextUMTSReceive_msNetW__cap__length_xer_ = { {"msNetW_cap_length>\n", "msNetW_cap_length>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t MM__ContextUMTSReceive_msNetW__cap__length_descr_ = { "@GTPC_Types.MM_ContextUMTSReceive.msNetW_cap_length", &INTEGER_ber_, &MM__ContextUMTSReceive_msNetW__cap__length_raw_, &INTEGER_text_, &MM__ContextUMTSReceive_msNetW__cap__length_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextUMTSReceive_msNetW__cap__length_default_coding("RAW"); const TTCN_RAWdescriptor_t MM__ContextUMTSReceive_containerLength_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MM__ContextUMTSReceive_containerLength_xer_ = { {"containerLength>\n", "containerLength>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MM__ContextUMTSReceive_containerLength_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MM__ContextUMTSReceive_containerLength_descr_ = { "@GTPC_Types.MM_ContextUMTSReceive.containerLength", &INTEGER_ber_, &MM__ContextUMTSReceive_containerLength_raw_, &INTEGER_text_, &MM__ContextUMTSReceive_containerLength_xer_, &INTEGER_json_, &MM__ContextUMTSReceive_containerLength_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextUMTSReceive_containerLength_default_coding("RAW"); const TTCN_RAWdescriptor_t MM__ContextUMTSReceive_access__restriction__data__length_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MM__ContextUMTSReceive_access__restriction__data__length_xer_ = { {"access_restriction_data_length>\n", "access_restriction_data_length>\n"}, {32, 32}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t MM__ContextUMTSReceive_access__restriction__data__length_descr_ = { "@GTPC_Types.MM_ContextUMTSReceive.access_restriction_data_length", &INTEGER_ber_, &MM__ContextUMTSReceive_access__restriction__data__length_raw_, &INTEGER_text_, &MM__ContextUMTSReceive_access__restriction__data__length_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextUMTSReceive_access__restriction__data__length_default_coding("RAW"); const TTCN_RAWdescriptor_t MM__ContextUMTSReceive_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MM__ContextUMTSReceive const TTCN_Typedescriptor_t MM__ContextUMTSReceive_descr_ = { "@GTPC_Types.MM_ContextUMTSReceive", NULL, &MM__ContextUMTSReceive_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t MM__ContextUMTSReceive_msNetw__cap_xer_ = { {"msNetw_cap>\n", "msNetw_cap>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MM__ContextUMTSReceive_msNetw__cap_oer_ext_arr_[0] = {}; const int MM__ContextUMTSReceive_msNetw__cap_oer_p_[0] = {}; const TTCN_OERdescriptor_t MM__ContextUMTSReceive_msNetw__cap_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MM__ContextUMTSReceive_msNetw__cap_oer_ext_arr_, 0, MM__ContextUMTSReceive_msNetw__cap_oer_p_}; const TTCN_Typedescriptor_t MM__ContextUMTSReceive_msNetw__cap_descr_ = { "@GTPC_Types.MM_ContextUMTSReceive.msNetw_cap", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &MM__ContextUMTSReceive_msNetw__cap_xer_, &OCTETSTRING_json_, &MM__ContextUMTSReceive_msNetw__cap_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextUMTSReceive_msNetw__cap_default_coding("RAW"); const XERdescriptor_t MM__ContextUMTSReceive_container_xer_ = { {"container>\n", "container>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MM__ContextUMTSReceive_container_oer_ext_arr_[0] = {}; const int MM__ContextUMTSReceive_container_oer_p_[0] = {}; const TTCN_OERdescriptor_t MM__ContextUMTSReceive_container_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MM__ContextUMTSReceive_container_oer_ext_arr_, 0, MM__ContextUMTSReceive_container_oer_p_}; const TTCN_Typedescriptor_t MM__ContextUMTSReceive_container_descr_ = { "@GTPC_Types.MM_ContextUMTSReceive.container", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &MM__ContextUMTSReceive_container_xer_, &OCTETSTRING_json_, &MM__ContextUMTSReceive_container_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextUMTSReceive_container_default_coding("RAW"); const XERdescriptor_t MM__ContextUMTSReceive_access__restriction__data_xer_ = { {"access_restriction_data>\n", "access_restriction_data>\n"}, {25, 25}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MM__ContextUMTSReceive_access__restriction__data_oer_ext_arr_[0] = {}; const int MM__ContextUMTSReceive_access__restriction__data_oer_p_[0] = {}; const TTCN_OERdescriptor_t MM__ContextUMTSReceive_access__restriction__data_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MM__ContextUMTSReceive_access__restriction__data_oer_ext_arr_, 0, MM__ContextUMTSReceive_access__restriction__data_oer_p_}; const TTCN_Typedescriptor_t MM__ContextUMTSReceive_access__restriction__data_descr_ = { "@GTPC_Types.MM_ContextUMTSReceive.access_restriction_data", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &MM__ContextUMTSReceive_access__restriction__data_xer_, &OCTETSTRING_json_, &MM__ContextUMTSReceive_access__restriction__data_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__ContextUMTSReceive_access__restriction__data_default_coding("RAW"); UNIVERSAL_CHARSTRING MM__ContextUMTSReceive_default_coding("RAW"); UNIVERSAL_CHARSTRING MM__ContextU_mmcontUMTSReceive_default_coding("RAW"); UNIVERSAL_CHARSTRING MM__ContextU_default_coding("RAW"); UNIVERSAL_CHARSTRING MM__Context_context_default_coding("RAW"); const TTCN_RAWdescriptor_t MM__Context_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MM__Context const TTCN_Typedescriptor_t MM__Context_descr_ = { "@GTPC_Types.MM_Context", NULL, &MM__Context_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MM__Context_default_coding("RAW"); const XERdescriptor_t GTPC__UENetworkCapabilityV_eEA_xer_ = { {"eEA>\n", "eEA>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t GTPC__UENetworkCapabilityV_eEA_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t GTPC__UENetworkCapabilityV_eEA_descr_ = { "@GTPC_Types.GTPC_UENetworkCapabilityV.eEA", &BITSTRING_ber_, &General__Types::BIT8_raw_, NULL, >PC__UENetworkCapabilityV_eEA_xer_, &BITSTRING_json_, >PC__UENetworkCapabilityV_eEA_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GTPC__UENetworkCapabilityV_eEA_default_coding("RAW"); const XERdescriptor_t GTPC__UENetworkCapabilityV_eIA_xer_ = { {"eIA>\n", "eIA>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t GTPC__UENetworkCapabilityV_eIA_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t GTPC__UENetworkCapabilityV_eIA_descr_ = { "@GTPC_Types.GTPC_UENetworkCapabilityV.eIA", &BITSTRING_ber_, &General__Types::BIT7_raw_, NULL, >PC__UENetworkCapabilityV_eIA_xer_, &BITSTRING_json_, >PC__UENetworkCapabilityV_eIA_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GTPC__UENetworkCapabilityV_eIA_default_coding("RAW"); const XERdescriptor_t GTPC__UENetworkCapabilityV_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 GTPC__UENetworkCapabilityV_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t GTPC__UENetworkCapabilityV_spare_descr_ = { "@GTPC_Types.GTPC_UENetworkCapabilityV.spare", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, >PC__UENetworkCapabilityV_spare_xer_, &BITSTRING_json_, >PC__UENetworkCapabilityV_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GTPC__UENetworkCapabilityV_spare_default_coding("RAW"); const TTCN_RAWdescriptor_t GTPC__UENetworkCapabilityV_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for GTPC__UENetworkCapabilityV const TTCN_Typedescriptor_t GTPC__UENetworkCapabilityV_descr_ = { "@GTPC_Types.GTPC_UENetworkCapabilityV", NULL, >PC__UENetworkCapabilityV_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t GTPC__UENetworkCapabilityV_uEA_xer_ = { {"uEA>\n", "uEA>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t GTPC__UENetworkCapabilityV_uEA_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t GTPC__UENetworkCapabilityV_uEA_descr_ = { "@GTPC_Types.GTPC_UENetworkCapabilityV.uEA", &BITSTRING_ber_, &General__Types::BIT8_raw_, NULL, >PC__UENetworkCapabilityV_uEA_xer_, &BITSTRING_json_, >PC__UENetworkCapabilityV_uEA_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GTPC__UENetworkCapabilityV_uEA_default_coding("RAW"); const XERdescriptor_t GTPC__UENetworkCapabilityV_uIA_xer_ = { {"uIA>\n", "uIA>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t GTPC__UENetworkCapabilityV_uIA_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t GTPC__UENetworkCapabilityV_uIA_descr_ = { "@GTPC_Types.GTPC_UENetworkCapabilityV.uIA", &BITSTRING_ber_, &General__Types::BIT7_raw_, NULL, >PC__UENetworkCapabilityV_uIA_xer_, &BITSTRING_json_, >PC__UENetworkCapabilityV_uIA_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GTPC__UENetworkCapabilityV_uIA_default_coding("RAW"); const XERdescriptor_t GTPC__UENetworkCapabilityV_uCS2_xer_ = { {"uCS2>\n", "uCS2>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t GTPC__UENetworkCapabilityV_uCS2_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t GTPC__UENetworkCapabilityV_uCS2_descr_ = { "@GTPC_Types.GTPC_UENetworkCapabilityV.uCS2", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, >PC__UENetworkCapabilityV_uCS2_xer_, &BITSTRING_json_, >PC__UENetworkCapabilityV_uCS2_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GTPC__UENetworkCapabilityV_uCS2_default_coding("RAW"); const XERdescriptor_t GTPC__UENetworkCapabilityV_spare2_xer_ = { {"spare2>\n", "spare2>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t GTPC__UENetworkCapabilityV_spare2_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t GTPC__UENetworkCapabilityV_spare2_descr_ = { "@GTPC_Types.GTPC_UENetworkCapabilityV.spare2", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, >PC__UENetworkCapabilityV_spare2_xer_, &BITSTRING_json_, >PC__UENetworkCapabilityV_spare2_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GTPC__UENetworkCapabilityV_spare2_default_coding("RAW"); const XERdescriptor_t GTPC__UENetworkCapabilityV_vCC_xer_ = { {"vCC>\n", "vCC>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t GTPC__UENetworkCapabilityV_vCC_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t GTPC__UENetworkCapabilityV_vCC_descr_ = { "@GTPC_Types.GTPC_UENetworkCapabilityV.vCC", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, >PC__UENetworkCapabilityV_vCC_xer_, &BITSTRING_json_, >PC__UENetworkCapabilityV_vCC_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GTPC__UENetworkCapabilityV_vCC_default_coding("RAW"); const XERdescriptor_t GTPC__UENetworkCapabilityV_spare3_xer_ = { {"spare3>\n", "spare3>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t GTPC__UENetworkCapabilityV_spare3_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t GTPC__UENetworkCapabilityV_spare3_descr_ = { "@GTPC_Types.GTPC_UENetworkCapabilityV.spare3", &BITSTRING_ber_, &General__Types::BIT6_raw_, NULL, >PC__UENetworkCapabilityV_spare3_xer_, &BITSTRING_json_, >PC__UENetworkCapabilityV_spare3_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GTPC__UENetworkCapabilityV_spare3_default_coding("RAW"); const XERdescriptor_t GTPC__UENetworkCapabilityV_spare4_xer_ = { {"spare4>\n", "spare4>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int GTPC__UENetworkCapabilityV_spare4_oer_ext_arr_[0] = {}; const int GTPC__UENetworkCapabilityV_spare4_oer_p_[0] = {}; const TTCN_OERdescriptor_t GTPC__UENetworkCapabilityV_spare4_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GTPC__UENetworkCapabilityV_spare4_oer_ext_arr_, 0, GTPC__UENetworkCapabilityV_spare4_oer_p_}; const TTCN_Typedescriptor_t GTPC__UENetworkCapabilityV_spare4_descr_ = { "@GTPC_Types.GTPC_UENetworkCapabilityV.spare4", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, >PC__UENetworkCapabilityV_spare4_xer_, &OCTETSTRING_json_, >PC__UENetworkCapabilityV_spare4_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GTPC__UENetworkCapabilityV_spare4_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__UENetworkCapabilityV_default_coding("RAW"); const TTCN_RAWdescriptor_t PDP__Context__GTPC__List_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for PDP__Context__GTPC__List const TTCN_Typedescriptor_t PDP__Context__GTPC__List_descr_ = { "@GTPC_Types.PDP_Context_GTPC_List", NULL, &PDP__Context__GTPC__List_raw_, NULL, NULL, NULL, NULL, NULL, &PDP__Context__GTPC_descr_, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t PDP__Context__GTPC_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PDP__Context__GTPC_type__gtpc_oer_ext_arr_[0] = {}; const int PDP__Context__GTPC_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t PDP__Context__GTPC_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDP__Context__GTPC_type__gtpc_oer_ext_arr_, 0, PDP__Context__GTPC_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t PDP__Context__GTPC_type__gtpc_descr_ = { "@GTPC_Types.PDP_Context_GTPC.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDP__Context__GTPC_type__gtpc_xer_, &OCTETSTRING_json_, &PDP__Context__GTPC_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDP__Context__GTPC_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t PDP__Context__GTPC_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t PDP__Context__GTPC_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t PDP__Context__GTPC_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t PDP__Context__GTPC_lengthf_descr_ = { "@GTPC_Types.PDP_Context_GTPC.lengthf", &INTEGER_ber_, &PDP__Context__GTPC_lengthf_raw_, &INTEGER_text_, &PDP__Context__GTPC_lengthf_xer_, &INTEGER_json_, &PDP__Context__GTPC_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDP__Context__GTPC_lengthf_default_coding("RAW"); const XERdescriptor_t PDP__Context__GTPC_nsapi_xer_ = { {"nsapi>\n", "nsapi>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t PDP__Context__GTPC_nsapi_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t PDP__Context__GTPC_nsapi_descr_ = { "@GTPC_Types.PDP_Context_GTPC.nsapi", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &PDP__Context__GTPC_nsapi_xer_, &BITSTRING_json_, &PDP__Context__GTPC_nsapi_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDP__Context__GTPC_nsapi_default_coding("RAW"); const XERdescriptor_t PDP__Context__GTPC_order_xer_ = { {"order>\n", "order>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t PDP__Context__GTPC_order_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t PDP__Context__GTPC_order_descr_ = { "@GTPC_Types.PDP_Context_GTPC.order", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &PDP__Context__GTPC_order_xer_, &BITSTRING_json_, &PDP__Context__GTPC_order_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDP__Context__GTPC_order_default_coding("RAW"); const XERdescriptor_t PDP__Context__GTPC_asi_xer_ = { {"asi>\n", "asi>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t PDP__Context__GTPC_asi_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t PDP__Context__GTPC_asi_descr_ = { "@GTPC_Types.PDP_Context_GTPC.asi", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &PDP__Context__GTPC_asi_xer_, &BITSTRING_json_, &PDP__Context__GTPC_asi_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDP__Context__GTPC_asi_default_coding("RAW"); const XERdescriptor_t PDP__Context__GTPC_vaa_xer_ = { {"vaa>\n", "vaa>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t PDP__Context__GTPC_vaa_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t PDP__Context__GTPC_vaa_descr_ = { "@GTPC_Types.PDP_Context_GTPC.vaa", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &PDP__Context__GTPC_vaa_xer_, &BITSTRING_json_, &PDP__Context__GTPC_vaa_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDP__Context__GTPC_vaa_default_coding("RAW"); const XERdescriptor_t PDP__Context__GTPC_ea_xer_ = { {"ea>\n", "ea>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t PDP__Context__GTPC_ea_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t PDP__Context__GTPC_ea_descr_ = { "@GTPC_Types.PDP_Context_GTPC.ea", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &PDP__Context__GTPC_ea_xer_, &BITSTRING_json_, &PDP__Context__GTPC_ea_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDP__Context__GTPC_ea_default_coding("RAW"); const XERdescriptor_t PDP__Context__GTPC_sapi_xer_ = { {"sapi>\n", "sapi>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t PDP__Context__GTPC_sapi_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t PDP__Context__GTPC_sapi_descr_ = { "@GTPC_Types.PDP_Context_GTPC.sapi", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &PDP__Context__GTPC_sapi_xer_, &BITSTRING_json_, &PDP__Context__GTPC_sapi_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDP__Context__GTPC_sapi_default_coding("RAW"); const XERdescriptor_t PDP__Context__GTPC_spare1_xer_ = { {"spare1>\n", "spare1>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t PDP__Context__GTPC_spare1_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t PDP__Context__GTPC_spare1_descr_ = { "@GTPC_Types.PDP_Context_GTPC.spare1", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &PDP__Context__GTPC_spare1_xer_, &BITSTRING_json_, &PDP__Context__GTPC_spare1_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDP__Context__GTPC_spare1_default_coding("RAW"); const TTCN_RAWdescriptor_t PDP__Context__GTPC_qos__subLength_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t PDP__Context__GTPC_qos__subLength_xer_ = { {"qos_subLength>\n", "qos_subLength>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t PDP__Context__GTPC_qos__subLength_descr_ = { "@GTPC_Types.PDP_Context_GTPC.qos_subLength", &INTEGER_ber_, &PDP__Context__GTPC_qos__subLength_raw_, &INTEGER_text_, &PDP__Context__GTPC_qos__subLength_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDP__Context__GTPC_qos__subLength_default_coding("RAW"); const XERdescriptor_t QualityOfServiceProfile__Value_allocRetensionPrio_xer_ = { {"allocRetensionPrio>\n", "allocRetensionPrio>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int QualityOfServiceProfile__Value_allocRetensionPrio_oer_ext_arr_[0] = {}; const int QualityOfServiceProfile__Value_allocRetensionPrio_oer_p_[0] = {}; const TTCN_OERdescriptor_t QualityOfServiceProfile__Value_allocRetensionPrio_oer_ = { -1, TRUE, 1, FALSE, 0, 0, QualityOfServiceProfile__Value_allocRetensionPrio_oer_ext_arr_, 0, QualityOfServiceProfile__Value_allocRetensionPrio_oer_p_}; const TTCN_Typedescriptor_t QualityOfServiceProfile__Value_allocRetensionPrio_descr_ = { "@GTPC_Types.QualityOfServiceProfile_Value.allocRetensionPrio", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &QualityOfServiceProfile__Value_allocRetensionPrio_xer_, &OCTETSTRING_json_, &QualityOfServiceProfile__Value_allocRetensionPrio_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING QualityOfServiceProfile__Value_allocRetensionPrio_default_coding("RAW"); const XERdescriptor_t QoSV__GTPC_reliabilityClass_xer_ = { {"reliabilityClass>\n", "reliabilityClass>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t QoSV__GTPC_reliabilityClass_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t QoSV__GTPC_reliabilityClass_descr_ = { "@GTPC_Types.QoSV_GTPC.reliabilityClass", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &QoSV__GTPC_reliabilityClass_xer_, &BITSTRING_json_, &QoSV__GTPC_reliabilityClass_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING QoSV__GTPC_reliabilityClass_default_coding("RAW"); const XERdescriptor_t QoSV__GTPC_delayClass_xer_ = { {"delayClass>\n", "delayClass>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t QoSV__GTPC_delayClass_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t QoSV__GTPC_delayClass_descr_ = { "@GTPC_Types.QoSV_GTPC.delayClass", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &QoSV__GTPC_delayClass_xer_, &BITSTRING_json_, &QoSV__GTPC_delayClass_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING QoSV__GTPC_delayClass_default_coding("RAW"); const XERdescriptor_t QoSV__GTPC_spare1_xer_ = { {"spare1>\n", "spare1>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t QoSV__GTPC_spare1_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t QoSV__GTPC_spare1_descr_ = { "@GTPC_Types.QoSV_GTPC.spare1", &BITSTRING_ber_, &General__Types::BIT2_raw_, NULL, &QoSV__GTPC_spare1_xer_, &BITSTRING_json_, &QoSV__GTPC_spare1_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING QoSV__GTPC_spare1_default_coding("RAW"); const XERdescriptor_t QoSV__GTPC_precedenceClass_xer_ = { {"precedenceClass>\n", "precedenceClass>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t QoSV__GTPC_precedenceClass_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t QoSV__GTPC_precedenceClass_descr_ = { "@GTPC_Types.QoSV_GTPC.precedenceClass", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &QoSV__GTPC_precedenceClass_xer_, &BITSTRING_json_, &QoSV__GTPC_precedenceClass_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING QoSV__GTPC_precedenceClass_default_coding("RAW"); const XERdescriptor_t QoSV__GTPC_spare2_xer_ = { {"spare2>\n", "spare2>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t QoSV__GTPC_spare2_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t QoSV__GTPC_spare2_descr_ = { "@GTPC_Types.QoSV_GTPC.spare2", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &QoSV__GTPC_spare2_xer_, &BITSTRING_json_, &QoSV__GTPC_spare2_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING QoSV__GTPC_spare2_default_coding("RAW"); const XERdescriptor_t QoSV__GTPC_peakThroughput_xer_ = { {"peakThroughput>\n", "peakThroughput>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t QoSV__GTPC_peakThroughput_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t QoSV__GTPC_peakThroughput_descr_ = { "@GTPC_Types.QoSV_GTPC.peakThroughput", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &QoSV__GTPC_peakThroughput_xer_, &BITSTRING_json_, &QoSV__GTPC_peakThroughput_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING QoSV__GTPC_peakThroughput_default_coding("RAW"); const XERdescriptor_t QoSV__GTPC_meanThroughput_xer_ = { {"meanThroughput>\n", "meanThroughput>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t QoSV__GTPC_meanThroughput_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t QoSV__GTPC_meanThroughput_descr_ = { "@GTPC_Types.QoSV_GTPC.meanThroughput", &BITSTRING_ber_, &General__Types::BIT5_raw_, NULL, &QoSV__GTPC_meanThroughput_xer_, &BITSTRING_json_, &QoSV__GTPC_meanThroughput_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING QoSV__GTPC_meanThroughput_default_coding("RAW"); const XERdescriptor_t QoSV__GTPC_spare3_xer_ = { {"spare3>\n", "spare3>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t QoSV__GTPC_spare3_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t QoSV__GTPC_spare3_descr_ = { "@GTPC_Types.QoSV_GTPC.spare3", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &QoSV__GTPC_spare3_xer_, &BITSTRING_json_, &QoSV__GTPC_spare3_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING QoSV__GTPC_spare3_default_coding("RAW"); const TTCN_RAWdescriptor_t QoSV__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for QoSV__GTPC const TTCN_Typedescriptor_t QoSV__GTPC_descr_ = { "@GTPC_Types.QoSV_GTPC", NULL, &QoSV__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t QoSV__GTPC_deliverErroneusSDU_xer_ = { {"deliverErroneusSDU>\n", "deliverErroneusSDU>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t QoSV__GTPC_deliverErroneusSDU_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t QoSV__GTPC_deliverErroneusSDU_descr_ = { "@GTPC_Types.QoSV_GTPC.deliverErroneusSDU", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &QoSV__GTPC_deliverErroneusSDU_xer_, &BITSTRING_json_, &QoSV__GTPC_deliverErroneusSDU_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING QoSV__GTPC_deliverErroneusSDU_default_coding("RAW"); const XERdescriptor_t QoSV__GTPC_deliveryOrder_xer_ = { {"deliveryOrder>\n", "deliveryOrder>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t QoSV__GTPC_deliveryOrder_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t QoSV__GTPC_deliveryOrder_descr_ = { "@GTPC_Types.QoSV_GTPC.deliveryOrder", &BITSTRING_ber_, &General__Types::BIT2_raw_, NULL, &QoSV__GTPC_deliveryOrder_xer_, &BITSTRING_json_, &QoSV__GTPC_deliveryOrder_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING QoSV__GTPC_deliveryOrder_default_coding("RAW"); const XERdescriptor_t QoSV__GTPC_trafficClass_xer_ = { {"trafficClass>\n", "trafficClass>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t QoSV__GTPC_trafficClass_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t QoSV__GTPC_trafficClass_descr_ = { "@GTPC_Types.QoSV_GTPC.trafficClass", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &QoSV__GTPC_trafficClass_xer_, &BITSTRING_json_, &QoSV__GTPC_trafficClass_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING QoSV__GTPC_trafficClass_default_coding("RAW"); const XERdescriptor_t QoSV__GTPC_maxSDUSize_xer_ = { {"maxSDUSize>\n", "maxSDUSize>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int QoSV__GTPC_maxSDUSize_oer_ext_arr_[0] = {}; const int QoSV__GTPC_maxSDUSize_oer_p_[0] = {}; const TTCN_OERdescriptor_t QoSV__GTPC_maxSDUSize_oer_ = { -1, TRUE, 1, FALSE, 0, 0, QoSV__GTPC_maxSDUSize_oer_ext_arr_, 0, QoSV__GTPC_maxSDUSize_oer_p_}; const TTCN_Typedescriptor_t QoSV__GTPC_maxSDUSize_descr_ = { "@GTPC_Types.QoSV_GTPC.maxSDUSize", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &QoSV__GTPC_maxSDUSize_xer_, &OCTETSTRING_json_, &QoSV__GTPC_maxSDUSize_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING QoSV__GTPC_maxSDUSize_default_coding("RAW"); const XERdescriptor_t QoSV__GTPC_maxBitrateUplink_xer_ = { {"maxBitrateUplink>\n", "maxBitrateUplink>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int QoSV__GTPC_maxBitrateUplink_oer_ext_arr_[0] = {}; const int QoSV__GTPC_maxBitrateUplink_oer_p_[0] = {}; const TTCN_OERdescriptor_t QoSV__GTPC_maxBitrateUplink_oer_ = { -1, TRUE, 1, FALSE, 0, 0, QoSV__GTPC_maxBitrateUplink_oer_ext_arr_, 0, QoSV__GTPC_maxBitrateUplink_oer_p_}; const TTCN_Typedescriptor_t QoSV__GTPC_maxBitrateUplink_descr_ = { "@GTPC_Types.QoSV_GTPC.maxBitrateUplink", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &QoSV__GTPC_maxBitrateUplink_xer_, &OCTETSTRING_json_, &QoSV__GTPC_maxBitrateUplink_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING QoSV__GTPC_maxBitrateUplink_default_coding("RAW"); const XERdescriptor_t QoSV__GTPC_maxBitrateDownlink_xer_ = { {"maxBitrateDownlink>\n", "maxBitrateDownlink>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int QoSV__GTPC_maxBitrateDownlink_oer_ext_arr_[0] = {}; const int QoSV__GTPC_maxBitrateDownlink_oer_p_[0] = {}; const TTCN_OERdescriptor_t QoSV__GTPC_maxBitrateDownlink_oer_ = { -1, TRUE, 1, FALSE, 0, 0, QoSV__GTPC_maxBitrateDownlink_oer_ext_arr_, 0, QoSV__GTPC_maxBitrateDownlink_oer_p_}; const TTCN_Typedescriptor_t QoSV__GTPC_maxBitrateDownlink_descr_ = { "@GTPC_Types.QoSV_GTPC.maxBitrateDownlink", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &QoSV__GTPC_maxBitrateDownlink_xer_, &OCTETSTRING_json_, &QoSV__GTPC_maxBitrateDownlink_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING QoSV__GTPC_maxBitrateDownlink_default_coding("RAW"); const XERdescriptor_t QoSV__GTPC_sduErrorRatio_xer_ = { {"sduErrorRatio>\n", "sduErrorRatio>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t QoSV__GTPC_sduErrorRatio_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t QoSV__GTPC_sduErrorRatio_descr_ = { "@GTPC_Types.QoSV_GTPC.sduErrorRatio", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &QoSV__GTPC_sduErrorRatio_xer_, &BITSTRING_json_, &QoSV__GTPC_sduErrorRatio_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING QoSV__GTPC_sduErrorRatio_default_coding("RAW"); const XERdescriptor_t QoSV__GTPC_residualBER_xer_ = { {"residualBER>\n", "residualBER>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t QoSV__GTPC_residualBER_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t QoSV__GTPC_residualBER_descr_ = { "@GTPC_Types.QoSV_GTPC.residualBER", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &QoSV__GTPC_residualBER_xer_, &BITSTRING_json_, &QoSV__GTPC_residualBER_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING QoSV__GTPC_residualBER_default_coding("RAW"); const XERdescriptor_t QoSV__GTPC_trafficHandlingPriority_xer_ = { {"trafficHandlingPriority>\n", "trafficHandlingPriority>\n"}, {25, 25}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t QoSV__GTPC_trafficHandlingPriority_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t QoSV__GTPC_trafficHandlingPriority_descr_ = { "@GTPC_Types.QoSV_GTPC.trafficHandlingPriority", &BITSTRING_ber_, &General__Types::BIT2_raw_, NULL, &QoSV__GTPC_trafficHandlingPriority_xer_, &BITSTRING_json_, &QoSV__GTPC_trafficHandlingPriority_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING QoSV__GTPC_trafficHandlingPriority_default_coding("RAW"); const XERdescriptor_t QoSV__GTPC_transferDelay_xer_ = { {"transferDelay>\n", "transferDelay>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t QoSV__GTPC_transferDelay_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t QoSV__GTPC_transferDelay_descr_ = { "@GTPC_Types.QoSV_GTPC.transferDelay", &BITSTRING_ber_, &General__Types::BIT6_raw_, NULL, &QoSV__GTPC_transferDelay_xer_, &BITSTRING_json_, &QoSV__GTPC_transferDelay_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING QoSV__GTPC_transferDelay_default_coding("RAW"); const XERdescriptor_t QoSV__GTPC_guaranteedBitRateUplink_xer_ = { {"guaranteedBitRateUplink>\n", "guaranteedBitRateUplink>\n"}, {25, 25}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int QoSV__GTPC_guaranteedBitRateUplink_oer_ext_arr_[0] = {}; const int QoSV__GTPC_guaranteedBitRateUplink_oer_p_[0] = {}; const TTCN_OERdescriptor_t QoSV__GTPC_guaranteedBitRateUplink_oer_ = { -1, TRUE, 1, FALSE, 0, 0, QoSV__GTPC_guaranteedBitRateUplink_oer_ext_arr_, 0, QoSV__GTPC_guaranteedBitRateUplink_oer_p_}; const TTCN_Typedescriptor_t QoSV__GTPC_guaranteedBitRateUplink_descr_ = { "@GTPC_Types.QoSV_GTPC.guaranteedBitRateUplink", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &QoSV__GTPC_guaranteedBitRateUplink_xer_, &OCTETSTRING_json_, &QoSV__GTPC_guaranteedBitRateUplink_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING QoSV__GTPC_guaranteedBitRateUplink_default_coding("RAW"); const XERdescriptor_t QoSV__GTPC_guaranteedBitRateDownlink_xer_ = { {"guaranteedBitRateDownlink>\n", "guaranteedBitRateDownlink>\n"}, {27, 27}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int QoSV__GTPC_guaranteedBitRateDownlink_oer_ext_arr_[0] = {}; const int QoSV__GTPC_guaranteedBitRateDownlink_oer_p_[0] = {}; const TTCN_OERdescriptor_t QoSV__GTPC_guaranteedBitRateDownlink_oer_ = { -1, TRUE, 1, FALSE, 0, 0, QoSV__GTPC_guaranteedBitRateDownlink_oer_ext_arr_, 0, QoSV__GTPC_guaranteedBitRateDownlink_oer_p_}; const TTCN_Typedescriptor_t QoSV__GTPC_guaranteedBitRateDownlink_descr_ = { "@GTPC_Types.QoSV_GTPC.guaranteedBitRateDownlink", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &QoSV__GTPC_guaranteedBitRateDownlink_xer_, &OCTETSTRING_json_, &QoSV__GTPC_guaranteedBitRateDownlink_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING QoSV__GTPC_guaranteedBitRateDownlink_default_coding("RAW"); const XERdescriptor_t QoSV__GTPC_sourceStatisticsDescriptor_xer_ = { {"sourceStatisticsDescriptor>\n", "sourceStatisticsDescriptor>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t QoSV__GTPC_sourceStatisticsDescriptor_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t QoSV__GTPC_sourceStatisticsDescriptor_descr_ = { "@GTPC_Types.QoSV_GTPC.sourceStatisticsDescriptor", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &QoSV__GTPC_sourceStatisticsDescriptor_xer_, &BITSTRING_json_, &QoSV__GTPC_sourceStatisticsDescriptor_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING QoSV__GTPC_sourceStatisticsDescriptor_default_coding("RAW"); const XERdescriptor_t QoSV__GTPC_signallingIndication_xer_ = { {"signallingIndication>\n", "signallingIndication>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t QoSV__GTPC_signallingIndication_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t QoSV__GTPC_signallingIndication_descr_ = { "@GTPC_Types.QoSV_GTPC.signallingIndication", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &QoSV__GTPC_signallingIndication_xer_, &BITSTRING_json_, &QoSV__GTPC_signallingIndication_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING QoSV__GTPC_signallingIndication_default_coding("RAW"); const XERdescriptor_t QoSV__GTPC_spare4_xer_ = { {"spare4>\n", "spare4>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t QoSV__GTPC_spare4_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t QoSV__GTPC_spare4_descr_ = { "@GTPC_Types.QoSV_GTPC.spare4", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &QoSV__GTPC_spare4_xer_, &BITSTRING_json_, &QoSV__GTPC_spare4_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING QoSV__GTPC_spare4_default_coding("RAW"); const XERdescriptor_t QoSV__GTPC_maxBitrateDownlinkExt_xer_ = { {"maxBitrateDownlinkExt>\n", "maxBitrateDownlinkExt>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int QoSV__GTPC_maxBitrateDownlinkExt_oer_ext_arr_[0] = {}; const int QoSV__GTPC_maxBitrateDownlinkExt_oer_p_[0] = {}; const TTCN_OERdescriptor_t QoSV__GTPC_maxBitrateDownlinkExt_oer_ = { -1, TRUE, 1, FALSE, 0, 0, QoSV__GTPC_maxBitrateDownlinkExt_oer_ext_arr_, 0, QoSV__GTPC_maxBitrateDownlinkExt_oer_p_}; const TTCN_Typedescriptor_t QoSV__GTPC_maxBitrateDownlinkExt_descr_ = { "@GTPC_Types.QoSV_GTPC.maxBitrateDownlinkExt", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &QoSV__GTPC_maxBitrateDownlinkExt_xer_, &OCTETSTRING_json_, &QoSV__GTPC_maxBitrateDownlinkExt_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING QoSV__GTPC_maxBitrateDownlinkExt_default_coding("RAW"); const XERdescriptor_t QoSV__GTPC_guaranteedBitRateDownlinkExt_xer_ = { {"guaranteedBitRateDownlinkExt>\n", "guaranteedBitRateDownlinkExt>\n"}, {30, 30}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int QoSV__GTPC_guaranteedBitRateDownlinkExt_oer_ext_arr_[0] = {}; const int QoSV__GTPC_guaranteedBitRateDownlinkExt_oer_p_[0] = {}; const TTCN_OERdescriptor_t QoSV__GTPC_guaranteedBitRateDownlinkExt_oer_ = { -1, TRUE, 1, FALSE, 0, 0, QoSV__GTPC_guaranteedBitRateDownlinkExt_oer_ext_arr_, 0, QoSV__GTPC_guaranteedBitRateDownlinkExt_oer_p_}; const TTCN_Typedescriptor_t QoSV__GTPC_guaranteedBitRateDownlinkExt_descr_ = { "@GTPC_Types.QoSV_GTPC.guaranteedBitRateDownlinkExt", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &QoSV__GTPC_guaranteedBitRateDownlinkExt_xer_, &OCTETSTRING_json_, &QoSV__GTPC_guaranteedBitRateDownlinkExt_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING QoSV__GTPC_guaranteedBitRateDownlinkExt_default_coding("RAW"); const XERdescriptor_t QoSV__GTPC_maxBitrateUplinkExt_xer_ = { {"maxBitrateUplinkExt>\n", "maxBitrateUplinkExt>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int QoSV__GTPC_maxBitrateUplinkExt_oer_ext_arr_[0] = {}; const int QoSV__GTPC_maxBitrateUplinkExt_oer_p_[0] = {}; const TTCN_OERdescriptor_t QoSV__GTPC_maxBitrateUplinkExt_oer_ = { -1, TRUE, 1, FALSE, 0, 0, QoSV__GTPC_maxBitrateUplinkExt_oer_ext_arr_, 0, QoSV__GTPC_maxBitrateUplinkExt_oer_p_}; const TTCN_Typedescriptor_t QoSV__GTPC_maxBitrateUplinkExt_descr_ = { "@GTPC_Types.QoSV_GTPC.maxBitrateUplinkExt", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &QoSV__GTPC_maxBitrateUplinkExt_xer_, &OCTETSTRING_json_, &QoSV__GTPC_maxBitrateUplinkExt_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING QoSV__GTPC_maxBitrateUplinkExt_default_coding("RAW"); const XERdescriptor_t QoSV__GTPC_guaranteedBitRateUplinkExt_xer_ = { {"guaranteedBitRateUplinkExt>\n", "guaranteedBitRateUplinkExt>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int QoSV__GTPC_guaranteedBitRateUplinkExt_oer_ext_arr_[0] = {}; const int QoSV__GTPC_guaranteedBitRateUplinkExt_oer_p_[0] = {}; const TTCN_OERdescriptor_t QoSV__GTPC_guaranteedBitRateUplinkExt_oer_ = { -1, TRUE, 1, FALSE, 0, 0, QoSV__GTPC_guaranteedBitRateUplinkExt_oer_ext_arr_, 0, QoSV__GTPC_guaranteedBitRateUplinkExt_oer_p_}; const TTCN_Typedescriptor_t QoSV__GTPC_guaranteedBitRateUplinkExt_descr_ = { "@GTPC_Types.QoSV_GTPC.guaranteedBitRateUplinkExt", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &QoSV__GTPC_guaranteedBitRateUplinkExt_xer_, &OCTETSTRING_json_, &QoSV__GTPC_guaranteedBitRateUplinkExt_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING QoSV__GTPC_guaranteedBitRateUplinkExt_default_coding("RAW"); UNIVERSAL_CHARSTRING QoSV__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING QualityOfServiceProfile__Value_qos__ProfileValue_default_coding("RAW"); const TTCN_RAWdescriptor_t QualityOfServiceProfile__Value_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for QualityOfServiceProfile__Value const TTCN_Typedescriptor_t QualityOfServiceProfile__Value_descr_ = { "@GTPC_Types.QualityOfServiceProfile_Value", NULL, &QualityOfServiceProfile__Value_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING QualityOfServiceProfile__Value_default_coding("RAW"); UNIVERSAL_CHARSTRING PDP__Context__GTPC_qos__sub_default_coding("RAW"); const TTCN_RAWdescriptor_t PDP__Context__GTPC_qos__reqLength_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t PDP__Context__GTPC_qos__reqLength_xer_ = { {"qos_reqLength>\n", "qos_reqLength>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t PDP__Context__GTPC_qos__reqLength_descr_ = { "@GTPC_Types.PDP_Context_GTPC.qos_reqLength", &INTEGER_ber_, &PDP__Context__GTPC_qos__reqLength_raw_, &INTEGER_text_, &PDP__Context__GTPC_qos__reqLength_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDP__Context__GTPC_qos__reqLength_default_coding("RAW"); UNIVERSAL_CHARSTRING PDP__Context__GTPC_qos__req_default_coding("RAW"); const TTCN_RAWdescriptor_t PDP__Context__GTPC_qos__negLength_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t PDP__Context__GTPC_qos__negLength_xer_ = { {"qos_negLength>\n", "qos_negLength>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t PDP__Context__GTPC_qos__negLength_descr_ = { "@GTPC_Types.PDP_Context_GTPC.qos_negLength", &INTEGER_ber_, &PDP__Context__GTPC_qos__negLength_raw_, &INTEGER_text_, &PDP__Context__GTPC_qos__negLength_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDP__Context__GTPC_qos__negLength_default_coding("RAW"); UNIVERSAL_CHARSTRING PDP__Context__GTPC_qos__neg_default_coding("RAW"); const XERdescriptor_t PDP__Context__GTPC_snd_xer_ = { {"snd>\n", "snd>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PDP__Context__GTPC_snd_oer_ext_arr_[0] = {}; const int PDP__Context__GTPC_snd_oer_p_[0] = {}; const TTCN_OERdescriptor_t PDP__Context__GTPC_snd_oer_ = { -1, TRUE, 2, FALSE, 0, 0, PDP__Context__GTPC_snd_oer_ext_arr_, 0, PDP__Context__GTPC_snd_oer_p_}; const TTCN_Typedescriptor_t PDP__Context__GTPC_snd_descr_ = { "@GTPC_Types.PDP_Context_GTPC.snd", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &PDP__Context__GTPC_snd_xer_, &OCTETSTRING_json_, &PDP__Context__GTPC_snd_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDP__Context__GTPC_snd_default_coding("RAW"); const XERdescriptor_t PDP__Context__GTPC_snu_xer_ = { {"snu>\n", "snu>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PDP__Context__GTPC_snu_oer_ext_arr_[0] = {}; const int PDP__Context__GTPC_snu_oer_p_[0] = {}; const TTCN_OERdescriptor_t PDP__Context__GTPC_snu_oer_ = { -1, TRUE, 2, FALSE, 0, 0, PDP__Context__GTPC_snu_oer_ext_arr_, 0, PDP__Context__GTPC_snu_oer_p_}; const TTCN_Typedescriptor_t PDP__Context__GTPC_snu_descr_ = { "@GTPC_Types.PDP_Context_GTPC.snu", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &PDP__Context__GTPC_snu_xer_, &OCTETSTRING_json_, &PDP__Context__GTPC_snu_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDP__Context__GTPC_snu_default_coding("RAW"); const XERdescriptor_t PDP__Context__GTPC_sendNPDUnum_xer_ = { {"sendNPDUnum>\n", "sendNPDUnum>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PDP__Context__GTPC_sendNPDUnum_oer_ext_arr_[0] = {}; const int PDP__Context__GTPC_sendNPDUnum_oer_p_[0] = {}; const TTCN_OERdescriptor_t PDP__Context__GTPC_sendNPDUnum_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDP__Context__GTPC_sendNPDUnum_oer_ext_arr_, 0, PDP__Context__GTPC_sendNPDUnum_oer_p_}; const TTCN_Typedescriptor_t PDP__Context__GTPC_sendNPDUnum_descr_ = { "@GTPC_Types.PDP_Context_GTPC.sendNPDUnum", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDP__Context__GTPC_sendNPDUnum_xer_, &OCTETSTRING_json_, &PDP__Context__GTPC_sendNPDUnum_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDP__Context__GTPC_sendNPDUnum_default_coding("RAW"); const XERdescriptor_t PDP__Context__GTPC_receiveNPDUnum_xer_ = { {"receiveNPDUnum>\n", "receiveNPDUnum>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PDP__Context__GTPC_receiveNPDUnum_oer_ext_arr_[0] = {}; const int PDP__Context__GTPC_receiveNPDUnum_oer_p_[0] = {}; const TTCN_OERdescriptor_t PDP__Context__GTPC_receiveNPDUnum_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDP__Context__GTPC_receiveNPDUnum_oer_ext_arr_, 0, PDP__Context__GTPC_receiveNPDUnum_oer_p_}; const TTCN_Typedescriptor_t PDP__Context__GTPC_receiveNPDUnum_descr_ = { "@GTPC_Types.PDP_Context_GTPC.receiveNPDUnum", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDP__Context__GTPC_receiveNPDUnum_xer_, &OCTETSTRING_json_, &PDP__Context__GTPC_receiveNPDUnum_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDP__Context__GTPC_receiveNPDUnum_default_coding("RAW"); const XERdescriptor_t PDP__Context__GTPC_uteidControlPlane_xer_ = { {"uteidControlPlane>\n", "uteidControlPlane>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PDP__Context__GTPC_uteidControlPlane_oer_ext_arr_[0] = {}; const int PDP__Context__GTPC_uteidControlPlane_oer_p_[0] = {}; const TTCN_OERdescriptor_t PDP__Context__GTPC_uteidControlPlane_oer_ = { -1, TRUE, 4, FALSE, 0, 0, PDP__Context__GTPC_uteidControlPlane_oer_ext_arr_, 0, PDP__Context__GTPC_uteidControlPlane_oer_p_}; const TTCN_Typedescriptor_t PDP__Context__GTPC_uteidControlPlane_descr_ = { "@GTPC_Types.PDP_Context_GTPC.uteidControlPlane", &OCTETSTRING_ber_, &General__Types::OCT4_raw_, &OCTETSTRING_text_, &PDP__Context__GTPC_uteidControlPlane_xer_, &OCTETSTRING_json_, &PDP__Context__GTPC_uteidControlPlane_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDP__Context__GTPC_uteidControlPlane_default_coding("RAW"); const XERdescriptor_t PDP__Context__GTPC_uteidData1_xer_ = { {"uteidData1>\n", "uteidData1>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PDP__Context__GTPC_uteidData1_oer_ext_arr_[0] = {}; const int PDP__Context__GTPC_uteidData1_oer_p_[0] = {}; const TTCN_OERdescriptor_t PDP__Context__GTPC_uteidData1_oer_ = { -1, TRUE, 4, FALSE, 0, 0, PDP__Context__GTPC_uteidData1_oer_ext_arr_, 0, PDP__Context__GTPC_uteidData1_oer_p_}; const TTCN_Typedescriptor_t PDP__Context__GTPC_uteidData1_descr_ = { "@GTPC_Types.PDP_Context_GTPC.uteidData1", &OCTETSTRING_ber_, &General__Types::OCT4_raw_, &OCTETSTRING_text_, &PDP__Context__GTPC_uteidData1_xer_, &OCTETSTRING_json_, &PDP__Context__GTPC_uteidData1_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDP__Context__GTPC_uteidData1_default_coding("RAW"); const XERdescriptor_t PDP__Context__GTPC_pdpcontext_xer_ = { {"pdpcontext>\n", "pdpcontext>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PDP__Context__GTPC_pdpcontext_oer_ext_arr_[0] = {}; const int PDP__Context__GTPC_pdpcontext_oer_p_[0] = {}; const TTCN_OERdescriptor_t PDP__Context__GTPC_pdpcontext_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDP__Context__GTPC_pdpcontext_oer_ext_arr_, 0, PDP__Context__GTPC_pdpcontext_oer_p_}; const TTCN_Typedescriptor_t PDP__Context__GTPC_pdpcontext_descr_ = { "@GTPC_Types.PDP_Context_GTPC.pdpcontext", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDP__Context__GTPC_pdpcontext_xer_, &OCTETSTRING_json_, &PDP__Context__GTPC_pdpcontext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDP__Context__GTPC_pdpcontext_default_coding("RAW"); const XERdescriptor_t PDP__Context__GTPC_pdp__typeorg_xer_ = { {"pdp_typeorg>\n", "pdp_typeorg>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t PDP__Context__GTPC_pdp__typeorg_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t PDP__Context__GTPC_pdp__typeorg_descr_ = { "@GTPC_Types.PDP_Context_GTPC.pdp_typeorg", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &PDP__Context__GTPC_pdp__typeorg_xer_, &BITSTRING_json_, &PDP__Context__GTPC_pdp__typeorg_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDP__Context__GTPC_pdp__typeorg_default_coding("RAW"); const XERdescriptor_t PDP__Context__GTPC_spare2_xer_ = { {"spare2>\n", "spare2>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t PDP__Context__GTPC_spare2_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t PDP__Context__GTPC_spare2_descr_ = { "@GTPC_Types.PDP_Context_GTPC.spare2", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &PDP__Context__GTPC_spare2_xer_, &BITSTRING_json_, &PDP__Context__GTPC_spare2_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDP__Context__GTPC_spare2_default_coding("RAW"); const XERdescriptor_t PDP__Context__GTPC_pdp__typenum_xer_ = { {"pdp_typenum>\n", "pdp_typenum>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PDP__Context__GTPC_pdp__typenum_oer_ext_arr_[0] = {}; const int PDP__Context__GTPC_pdp__typenum_oer_p_[0] = {}; const TTCN_OERdescriptor_t PDP__Context__GTPC_pdp__typenum_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDP__Context__GTPC_pdp__typenum_oer_ext_arr_, 0, PDP__Context__GTPC_pdp__typenum_oer_p_}; const TTCN_Typedescriptor_t PDP__Context__GTPC_pdp__typenum_descr_ = { "@GTPC_Types.PDP_Context_GTPC.pdp_typenum", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDP__Context__GTPC_pdp__typenum_xer_, &OCTETSTRING_json_, &PDP__Context__GTPC_pdp__typenum_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDP__Context__GTPC_pdp__typenum_default_coding("RAW"); const TTCN_RAWdescriptor_t PDP__Context__GTPC_pdp__addressLength_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t PDP__Context__GTPC_pdp__addressLength_xer_ = { {"pdp_addressLength>\n", "pdp_addressLength>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t PDP__Context__GTPC_pdp__addressLength_descr_ = { "@GTPC_Types.PDP_Context_GTPC.pdp_addressLength", &INTEGER_ber_, &PDP__Context__GTPC_pdp__addressLength_raw_, &INTEGER_text_, &PDP__Context__GTPC_pdp__addressLength_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDP__Context__GTPC_pdp__addressLength_default_coding("RAW"); const XERdescriptor_t PDP__Context__GTPC_pdp__address_xer_ = { {"pdp_address>\n", "pdp_address>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PDP__Context__GTPC_pdp__address_oer_ext_arr_[0] = {}; const int PDP__Context__GTPC_pdp__address_oer_p_[0] = {}; const TTCN_OERdescriptor_t PDP__Context__GTPC_pdp__address_oer_ = { -1, TRUE, -1, FALSE, 0, 0, PDP__Context__GTPC_pdp__address_oer_ext_arr_, 0, PDP__Context__GTPC_pdp__address_oer_p_}; const TTCN_Typedescriptor_t PDP__Context__GTPC_pdp__address_descr_ = { "@GTPC_Types.PDP_Context_GTPC.pdp_address", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &PDP__Context__GTPC_pdp__address_xer_, &OCTETSTRING_json_, &PDP__Context__GTPC_pdp__address_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDP__Context__GTPC_pdp__address_default_coding("RAW"); const TTCN_RAWdescriptor_t PDP__Context__GTPC_ggsn__addressControlPlaneLength_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t PDP__Context__GTPC_ggsn__addressControlPlaneLength_xer_ = { {"ggsn_addressControlPlaneLength>\n", "ggsn_addressControlPlaneLength>\n"}, {32, 32}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t PDP__Context__GTPC_ggsn__addressControlPlaneLength_descr_ = { "@GTPC_Types.PDP_Context_GTPC.ggsn_addressControlPlaneLength", &INTEGER_ber_, &PDP__Context__GTPC_ggsn__addressControlPlaneLength_raw_, &INTEGER_text_, &PDP__Context__GTPC_ggsn__addressControlPlaneLength_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDP__Context__GTPC_ggsn__addressControlPlaneLength_default_coding("RAW"); const XERdescriptor_t PDP__Context__GTPC_ggsn__addressControlPlane_xer_ = { {"ggsn_addressControlPlane>\n", "ggsn_addressControlPlane>\n"}, {26, 26}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PDP__Context__GTPC_ggsn__addressControlPlane_oer_ext_arr_[0] = {}; const int PDP__Context__GTPC_ggsn__addressControlPlane_oer_p_[0] = {}; const TTCN_OERdescriptor_t PDP__Context__GTPC_ggsn__addressControlPlane_oer_ = { -1, TRUE, -1, FALSE, 0, 0, PDP__Context__GTPC_ggsn__addressControlPlane_oer_ext_arr_, 0, PDP__Context__GTPC_ggsn__addressControlPlane_oer_p_}; const TTCN_Typedescriptor_t PDP__Context__GTPC_ggsn__addressControlPlane_descr_ = { "@GTPC_Types.PDP_Context_GTPC.ggsn_addressControlPlane", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &PDP__Context__GTPC_ggsn__addressControlPlane_xer_, &OCTETSTRING_json_, &PDP__Context__GTPC_ggsn__addressControlPlane_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDP__Context__GTPC_ggsn__addressControlPlane_default_coding("RAW"); const TTCN_RAWdescriptor_t PDP__Context__GTPC_ggsn__addressUserPlaneLength_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t PDP__Context__GTPC_ggsn__addressUserPlaneLength_xer_ = { {"ggsn_addressUserPlaneLength>\n", "ggsn_addressUserPlaneLength>\n"}, {29, 29}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t PDP__Context__GTPC_ggsn__addressUserPlaneLength_descr_ = { "@GTPC_Types.PDP_Context_GTPC.ggsn_addressUserPlaneLength", &INTEGER_ber_, &PDP__Context__GTPC_ggsn__addressUserPlaneLength_raw_, &INTEGER_text_, &PDP__Context__GTPC_ggsn__addressUserPlaneLength_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDP__Context__GTPC_ggsn__addressUserPlaneLength_default_coding("RAW"); const XERdescriptor_t PDP__Context__GTPC_ggsn__addressUserPlane_xer_ = { {"ggsn_addressUserPlane>\n", "ggsn_addressUserPlane>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PDP__Context__GTPC_ggsn__addressUserPlane_oer_ext_arr_[0] = {}; const int PDP__Context__GTPC_ggsn__addressUserPlane_oer_p_[0] = {}; const TTCN_OERdescriptor_t PDP__Context__GTPC_ggsn__addressUserPlane_oer_ = { -1, TRUE, -1, FALSE, 0, 0, PDP__Context__GTPC_ggsn__addressUserPlane_oer_ext_arr_, 0, PDP__Context__GTPC_ggsn__addressUserPlane_oer_p_}; const TTCN_Typedescriptor_t PDP__Context__GTPC_ggsn__addressUserPlane_descr_ = { "@GTPC_Types.PDP_Context_GTPC.ggsn_addressUserPlane", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &PDP__Context__GTPC_ggsn__addressUserPlane_xer_, &OCTETSTRING_json_, &PDP__Context__GTPC_ggsn__addressUserPlane_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDP__Context__GTPC_ggsn__addressUserPlane_default_coding("RAW"); const TTCN_RAWdescriptor_t PDP__Context__GTPC_apnLength_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t PDP__Context__GTPC_apnLength_xer_ = { {"apnLength>\n", "apnLength>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t PDP__Context__GTPC_apnLength_descr_ = { "@GTPC_Types.PDP_Context_GTPC.apnLength", &INTEGER_ber_, &PDP__Context__GTPC_apnLength_raw_, &INTEGER_text_, &PDP__Context__GTPC_apnLength_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDP__Context__GTPC_apnLength_default_coding("RAW"); const XERdescriptor_t PDP__Context__GTPC_apn_xer_ = { {"apn>\n", "apn>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PDP__Context__GTPC_apn_oer_ext_arr_[0] = {}; const int PDP__Context__GTPC_apn_oer_p_[0] = {}; const TTCN_OERdescriptor_t PDP__Context__GTPC_apn_oer_ = { -1, TRUE, -1, FALSE, 0, 0, PDP__Context__GTPC_apn_oer_ext_arr_, 0, PDP__Context__GTPC_apn_oer_p_}; const TTCN_Typedescriptor_t PDP__Context__GTPC_apn_descr_ = { "@GTPC_Types.PDP_Context_GTPC.apn", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &PDP__Context__GTPC_apn_xer_, &OCTETSTRING_json_, &PDP__Context__GTPC_apn_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDP__Context__GTPC_apn_default_coding("RAW"); const XERdescriptor_t PDP__Context__GTPC_transactionId_xer_ = { {"transactionId>\n", "transactionId>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t PDP__Context__GTPC_transactionId_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t PDP__Context__GTPC_transactionId_descr_ = { "@GTPC_Types.PDP_Context_GTPC.transactionId", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &PDP__Context__GTPC_transactionId_xer_, &BITSTRING_json_, &PDP__Context__GTPC_transactionId_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDP__Context__GTPC_transactionId_default_coding("RAW"); const XERdescriptor_t PDP__Context__GTPC_spare3_xer_ = { {"spare3>\n", "spare3>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t PDP__Context__GTPC_spare3_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t PDP__Context__GTPC_spare3_descr_ = { "@GTPC_Types.PDP_Context_GTPC.spare3", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &PDP__Context__GTPC_spare3_xer_, &BITSTRING_json_, &PDP__Context__GTPC_spare3_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDP__Context__GTPC_spare3_default_coding("RAW"); const XERdescriptor_t PDP__Context__GTPC_transactionID__cont_xer_ = { {"transactionID_cont>\n", "transactionID_cont>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PDP__Context__GTPC_transactionID__cont_oer_ext_arr_[0] = {}; const int PDP__Context__GTPC_transactionID__cont_oer_p_[0] = {}; const TTCN_OERdescriptor_t PDP__Context__GTPC_transactionID__cont_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDP__Context__GTPC_transactionID__cont_oer_ext_arr_, 0, PDP__Context__GTPC_transactionID__cont_oer_p_}; const TTCN_Typedescriptor_t PDP__Context__GTPC_transactionID__cont_descr_ = { "@GTPC_Types.PDP_Context_GTPC.transactionID_cont", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDP__Context__GTPC_transactionID__cont_xer_, &OCTETSTRING_json_, &PDP__Context__GTPC_transactionID__cont_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDP__Context__GTPC_transactionID__cont_default_coding("RAW"); const TTCN_RAWdescriptor_t PDP__Context__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for PDP__Context__GTPC const TTCN_Typedescriptor_t PDP__Context__GTPC_descr_ = { "@GTPC_Types.PDP_Context_GTPC", NULL, &PDP__Context__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const TTCN_RAWdescriptor_t PDP__Context__GTPC_pdp__typenum2_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t PDP__Context__GTPC_pdp__typenum2_xer_ = { {"pdp_typenum2>\n", "pdp_typenum2>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PDP__Context__GTPC_pdp__typenum2_oer_ext_arr_[0] = {}; const int PDP__Context__GTPC_pdp__typenum2_oer_p_[0] = {}; const TTCN_OERdescriptor_t PDP__Context__GTPC_pdp__typenum2_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDP__Context__GTPC_pdp__typenum2_oer_ext_arr_, 0, PDP__Context__GTPC_pdp__typenum2_oer_p_}; const TTCN_Typedescriptor_t PDP__Context__GTPC_pdp__typenum2_descr_ = { "@GTPC_Types.PDP_Context_GTPC.pdp_typenum2", &OCTETSTRING_ber_, &PDP__Context__GTPC_pdp__typenum2_raw_, &OCTETSTRING_text_, &PDP__Context__GTPC_pdp__typenum2_xer_, &OCTETSTRING_json_, &PDP__Context__GTPC_pdp__typenum2_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDP__Context__GTPC_pdp__typenum2_default_coding("RAW"); const TTCN_RAWdescriptor_t PDP__Context__GTPC_pdp__addresslength2_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t PDP__Context__GTPC_pdp__addresslength2_xer_ = { {"pdp_addresslength2>\n", "pdp_addresslength2>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t PDP__Context__GTPC_pdp__addresslength2_descr_ = { "@GTPC_Types.PDP_Context_GTPC.pdp_addresslength2", &INTEGER_ber_, &PDP__Context__GTPC_pdp__addresslength2_raw_, &INTEGER_text_, &PDP__Context__GTPC_pdp__addresslength2_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDP__Context__GTPC_pdp__addresslength2_default_coding("RAW"); const TTCN_RAWdescriptor_t PDP__Context__GTPC_pdp__Address2_raw_ = {0,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t PDP__Context__GTPC_pdp__Address2_xer_ = { {"pdp_Address2>\n", "pdp_Address2>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PDP__Context__GTPC_pdp__Address2_oer_ext_arr_[0] = {}; const int PDP__Context__GTPC_pdp__Address2_oer_p_[0] = {}; const TTCN_OERdescriptor_t PDP__Context__GTPC_pdp__Address2_oer_ = { -1, TRUE, -1, FALSE, 0, 0, PDP__Context__GTPC_pdp__Address2_oer_ext_arr_, 0, PDP__Context__GTPC_pdp__Address2_oer_p_}; const TTCN_Typedescriptor_t PDP__Context__GTPC_pdp__Address2_descr_ = { "@GTPC_Types.PDP_Context_GTPC.pdp_Address2", &OCTETSTRING_ber_, &PDP__Context__GTPC_pdp__Address2_raw_, &OCTETSTRING_text_, &PDP__Context__GTPC_pdp__Address2_xer_, &OCTETSTRING_json_, &PDP__Context__GTPC_pdp__Address2_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDP__Context__GTPC_pdp__Address2_default_coding("RAW"); UNIVERSAL_CHARSTRING PDP__Context__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING PDP__Context__GTPC__List_0_default_coding("RAW"); UNIVERSAL_CHARSTRING PDP__Context__GTPC__List_default_coding("RAW"); const XERdescriptor_t AccessPointName_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int AccessPointName_type__gtpc_oer_ext_arr_[0] = {}; const int AccessPointName_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t AccessPointName_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, AccessPointName_type__gtpc_oer_ext_arr_, 0, AccessPointName_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t AccessPointName_type__gtpc_descr_ = { "@GTPC_Types.AccessPointName.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &AccessPointName_type__gtpc_xer_, &OCTETSTRING_json_, &AccessPointName_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AccessPointName_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t AccessPointName_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t AccessPointName_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t AccessPointName_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t AccessPointName_lengthf_descr_ = { "@GTPC_Types.AccessPointName.lengthf", &INTEGER_ber_, &AccessPointName_lengthf_raw_, &INTEGER_text_, &AccessPointName_lengthf_xer_, &INTEGER_json_, &AccessPointName_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AccessPointName_lengthf_default_coding("RAW"); const XERdescriptor_t AccessPointName_apn__value_xer_ = { {"apn_value>\n", "apn_value>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int AccessPointName_apn__value_oer_ext_arr_[0] = {}; const int AccessPointName_apn__value_oer_p_[0] = {}; const TTCN_OERdescriptor_t AccessPointName_apn__value_oer_ = { -1, TRUE, -1, FALSE, 0, 0, AccessPointName_apn__value_oer_ext_arr_, 0, AccessPointName_apn__value_oer_p_}; const TTCN_Typedescriptor_t AccessPointName_apn__value_descr_ = { "@GTPC_Types.AccessPointName.apn_value", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &AccessPointName_apn__value_xer_, &OCTETSTRING_json_, &AccessPointName_apn__value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AccessPointName_apn__value_default_coding("RAW"); const TTCN_RAWdescriptor_t AccessPointName_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for AccessPointName const TTCN_Typedescriptor_t AccessPointName_descr_ = { "@GTPC_Types.AccessPointName", NULL, &AccessPointName_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AccessPointName_default_coding("RAW"); const XERdescriptor_t ProtConfigOptions_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int ProtConfigOptions_type__gtpc_oer_ext_arr_[0] = {}; const int ProtConfigOptions_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t ProtConfigOptions_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ProtConfigOptions_type__gtpc_oer_ext_arr_, 0, ProtConfigOptions_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t ProtConfigOptions_type__gtpc_descr_ = { "@GTPC_Types.ProtConfigOptions.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &ProtConfigOptions_type__gtpc_xer_, &OCTETSTRING_json_, &ProtConfigOptions_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ProtConfigOptions_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t ProtConfigOptions_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t ProtConfigOptions_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t ProtConfigOptions_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t ProtConfigOptions_lengthf_descr_ = { "@GTPC_Types.ProtConfigOptions.lengthf", &INTEGER_ber_, &ProtConfigOptions_lengthf_raw_, &INTEGER_text_, &ProtConfigOptions_lengthf_xer_, &INTEGER_json_, &ProtConfigOptions_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ProtConfigOptions_lengthf_default_coding("RAW"); const XERdescriptor_t ProtConfigOptions_configProtocol_xer_ = { {"configProtocol>\n", "configProtocol>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t ProtConfigOptions_configProtocol_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t ProtConfigOptions_configProtocol_descr_ = { "@GTPC_Types.ProtConfigOptions.configProtocol", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &ProtConfigOptions_configProtocol_xer_, &BITSTRING_json_, &ProtConfigOptions_configProtocol_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ProtConfigOptions_configProtocol_default_coding("RAW"); const XERdescriptor_t ProtConfigOptions_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 ProtConfigOptions_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t ProtConfigOptions_spare_descr_ = { "@GTPC_Types.ProtConfigOptions.spare", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &ProtConfigOptions_spare_xer_, &BITSTRING_json_, &ProtConfigOptions_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ProtConfigOptions_spare_default_coding("RAW"); const XERdescriptor_t ProtConfigOptions_extension0_xer_ = { {"extension0>\n", "extension0>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t ProtConfigOptions_extension0_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t ProtConfigOptions_extension0_descr_ = { "@GTPC_Types.ProtConfigOptions.extension0", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &ProtConfigOptions_extension0_xer_, &BITSTRING_json_, &ProtConfigOptions_extension0_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ProtConfigOptions_extension0_default_coding("RAW"); const TTCN_RAWdescriptor_t ProtocolIDList_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for ProtocolIDList const TTCN_Typedescriptor_t ProtocolIDList_descr_ = { "@GTPC_Types.ProtocolIDList", NULL, &ProtocolIDList_raw_, NULL, NULL, NULL, NULL, NULL, &ProtocolElement_descr_, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t ProtocolElement_protocolID_xer_ = { {"protocolID>\n", "protocolID>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int ProtocolElement_protocolID_oer_ext_arr_[0] = {}; const int ProtocolElement_protocolID_oer_p_[0] = {}; const TTCN_OERdescriptor_t ProtocolElement_protocolID_oer_ = { -1, TRUE, 2, FALSE, 0, 0, ProtocolElement_protocolID_oer_ext_arr_, 0, ProtocolElement_protocolID_oer_p_}; const TTCN_Typedescriptor_t ProtocolElement_protocolID_descr_ = { "@GTPC_Types.ProtocolElement.protocolID", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &ProtocolElement_protocolID_xer_, &OCTETSTRING_json_, &ProtocolElement_protocolID_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ProtocolElement_protocolID_default_coding("RAW"); const TTCN_RAWdescriptor_t ProtocolElement_lengthProtoID_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t ProtocolElement_lengthProtoID_xer_ = { {"lengthProtoID>\n", "lengthProtoID>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t ProtocolElement_lengthProtoID_descr_ = { "@GTPC_Types.ProtocolElement.lengthProtoID", &INTEGER_ber_, &ProtocolElement_lengthProtoID_raw_, &INTEGER_text_, &ProtocolElement_lengthProtoID_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ProtocolElement_lengthProtoID_default_coding("RAW"); const XERdescriptor_t ProtocolElement_protoIDContents_xer_ = { {"protoIDContents>\n", "protoIDContents>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int ProtocolElement_protoIDContents_oer_ext_arr_[0] = {}; const int ProtocolElement_protoIDContents_oer_p_[0] = {}; const TTCN_OERdescriptor_t ProtocolElement_protoIDContents_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ProtocolElement_protoIDContents_oer_ext_arr_, 0, ProtocolElement_protoIDContents_oer_p_}; const TTCN_Typedescriptor_t ProtocolElement_protoIDContents_descr_ = { "@GTPC_Types.ProtocolElement.protoIDContents", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &ProtocolElement_protoIDContents_xer_, &OCTETSTRING_json_, &ProtocolElement_protoIDContents_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ProtocolElement_protoIDContents_default_coding("RAW"); const TTCN_RAWdescriptor_t ProtocolElement_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for ProtocolElement const TTCN_Typedescriptor_t ProtocolElement_descr_ = { "@GTPC_Types.ProtocolElement", NULL, &ProtocolElement_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ProtocolElement_default_coding("RAW"); UNIVERSAL_CHARSTRING ProtocolIDList_0_default_coding("RAW"); UNIVERSAL_CHARSTRING ProtocolIDList_default_coding("RAW"); UNIVERSAL_CHARSTRING ProtConfigOptions_protocols_default_coding("RAW"); const TTCN_RAWdescriptor_t ProtConfigOptions_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for ProtConfigOptions const TTCN_Typedescriptor_t ProtConfigOptions_descr_ = { "@GTPC_Types.ProtConfigOptions", NULL, &ProtConfigOptions_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ProtConfigOptions_default_coding("RAW"); const XERdescriptor_t GSN__Address__GTPC_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int GSN__Address__GTPC_type__gtpc_oer_ext_arr_[0] = {}; const int GSN__Address__GTPC_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t GSN__Address__GTPC_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GSN__Address__GTPC_type__gtpc_oer_ext_arr_, 0, GSN__Address__GTPC_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t GSN__Address__GTPC_type__gtpc_descr_ = { "@GTPC_Types.GSN_Address_GTPC.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &GSN__Address__GTPC_type__gtpc_xer_, &OCTETSTRING_json_, &GSN__Address__GTPC_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GSN__Address__GTPC_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t GSN__Address__GTPC_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t GSN__Address__GTPC_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t GSN__Address__GTPC_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t GSN__Address__GTPC_lengthf_descr_ = { "@GTPC_Types.GSN_Address_GTPC.lengthf", &INTEGER_ber_, &GSN__Address__GTPC_lengthf_raw_, &INTEGER_text_, &GSN__Address__GTPC_lengthf_xer_, &INTEGER_json_, &GSN__Address__GTPC_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GSN__Address__GTPC_lengthf_default_coding("RAW"); const XERdescriptor_t GSN__Address__GTPC_addressf_xer_ = { {"addressf>\n", "addressf>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int GSN__Address__GTPC_addressf_oer_ext_arr_[0] = {}; const int GSN__Address__GTPC_addressf_oer_p_[0] = {}; const TTCN_OERdescriptor_t GSN__Address__GTPC_addressf_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GSN__Address__GTPC_addressf_oer_ext_arr_, 0, GSN__Address__GTPC_addressf_oer_p_}; const TTCN_Typedescriptor_t GSN__Address__GTPC_addressf_descr_ = { "@GTPC_Types.GSN_Address_GTPC.addressf", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &GSN__Address__GTPC_addressf_xer_, &OCTETSTRING_json_, &GSN__Address__GTPC_addressf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GSN__Address__GTPC_addressf_default_coding("RAW"); const TTCN_RAWdescriptor_t GSN__Address__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for GSN__Address__GTPC const TTCN_Typedescriptor_t GSN__Address__GTPC_descr_ = { "@GTPC_Types.GSN_Address_GTPC", NULL, &GSN__Address__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GSN__Address__GTPC_default_coding("RAW"); const XERdescriptor_t MSISDN_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MSISDN_type__gtpc_oer_ext_arr_[0] = {}; const int MSISDN_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t MSISDN_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MSISDN_type__gtpc_oer_ext_arr_, 0, MSISDN_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t MSISDN_type__gtpc_descr_ = { "@GTPC_Types.MSISDN.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MSISDN_type__gtpc_xer_, &OCTETSTRING_json_, &MSISDN_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MSISDN_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t MSISDN_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MSISDN_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MSISDN_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MSISDN_lengthf_descr_ = { "@GTPC_Types.MSISDN.lengthf", &INTEGER_ber_, &MSISDN_lengthf_raw_, &INTEGER_text_, &MSISDN_lengthf_xer_, &INTEGER_json_, &MSISDN_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MSISDN_lengthf_default_coding("RAW"); const XERdescriptor_t MSISDN_msisdn_xer_ = { {"msisdn>\n", "msisdn>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MSISDN_msisdn_oer_ext_arr_[0] = {}; const int MSISDN_msisdn_oer_p_[0] = {}; const TTCN_OERdescriptor_t MSISDN_msisdn_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MSISDN_msisdn_oer_ext_arr_, 0, MSISDN_msisdn_oer_p_}; const TTCN_Typedescriptor_t MSISDN_msisdn_descr_ = { "@GTPC_Types.MSISDN.msisdn", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &MSISDN_msisdn_xer_, &OCTETSTRING_json_, &MSISDN_msisdn_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MSISDN_msisdn_default_coding("RAW"); const TTCN_RAWdescriptor_t MSISDN_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MSISDN const TTCN_Typedescriptor_t MSISDN_descr_ = { "@GTPC_Types.MSISDN", NULL, &MSISDN_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MSISDN_default_coding("RAW"); const XERdescriptor_t QualityOfServiceProfile_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int QualityOfServiceProfile_type__gtpc_oer_ext_arr_[0] = {}; const int QualityOfServiceProfile_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t QualityOfServiceProfile_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, QualityOfServiceProfile_type__gtpc_oer_ext_arr_, 0, QualityOfServiceProfile_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t QualityOfServiceProfile_type__gtpc_descr_ = { "@GTPC_Types.QualityOfServiceProfile.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &QualityOfServiceProfile_type__gtpc_xer_, &OCTETSTRING_json_, &QualityOfServiceProfile_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING QualityOfServiceProfile_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t QualityOfServiceProfile_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t QualityOfServiceProfile_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t QualityOfServiceProfile_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t QualityOfServiceProfile_lengthf_descr_ = { "@GTPC_Types.QualityOfServiceProfile.lengthf", &INTEGER_ber_, &QualityOfServiceProfile_lengthf_raw_, &INTEGER_text_, &QualityOfServiceProfile_lengthf_xer_, &INTEGER_json_, &QualityOfServiceProfile_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING QualityOfServiceProfile_lengthf_default_coding("RAW"); const XERdescriptor_t QualityOfServiceProfile_allocRetensionPrio_xer_ = { {"allocRetensionPrio>\n", "allocRetensionPrio>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int QualityOfServiceProfile_allocRetensionPrio_oer_ext_arr_[0] = {}; const int QualityOfServiceProfile_allocRetensionPrio_oer_p_[0] = {}; const TTCN_OERdescriptor_t QualityOfServiceProfile_allocRetensionPrio_oer_ = { -1, TRUE, 1, FALSE, 0, 0, QualityOfServiceProfile_allocRetensionPrio_oer_ext_arr_, 0, QualityOfServiceProfile_allocRetensionPrio_oer_p_}; const TTCN_Typedescriptor_t QualityOfServiceProfile_allocRetensionPrio_descr_ = { "@GTPC_Types.QualityOfServiceProfile.allocRetensionPrio", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &QualityOfServiceProfile_allocRetensionPrio_xer_, &OCTETSTRING_json_, &QualityOfServiceProfile_allocRetensionPrio_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING QualityOfServiceProfile_allocRetensionPrio_default_coding("RAW"); UNIVERSAL_CHARSTRING QualityOfServiceProfile_qos__ProfileValue_default_coding("RAW"); const TTCN_RAWdescriptor_t QualityOfServiceProfile_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for QualityOfServiceProfile const TTCN_Typedescriptor_t QualityOfServiceProfile_descr_ = { "@GTPC_Types.QualityOfServiceProfile", NULL, &QualityOfServiceProfile_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING QualityOfServiceProfile_default_coding("RAW"); const XERdescriptor_t AuthenticationQuintuplet__GTPC_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int AuthenticationQuintuplet__GTPC_type__gtpc_oer_ext_arr_[0] = {}; const int AuthenticationQuintuplet__GTPC_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t AuthenticationQuintuplet__GTPC_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, AuthenticationQuintuplet__GTPC_type__gtpc_oer_ext_arr_, 0, AuthenticationQuintuplet__GTPC_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t AuthenticationQuintuplet__GTPC_type__gtpc_descr_ = { "@GTPC_Types.AuthenticationQuintuplet_GTPC.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &AuthenticationQuintuplet__GTPC_type__gtpc_xer_, &OCTETSTRING_json_, &AuthenticationQuintuplet__GTPC_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AuthenticationQuintuplet__GTPC_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t AuthenticationQuintuplet__GTPC_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t AuthenticationQuintuplet__GTPC_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t AuthenticationQuintuplet__GTPC_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t AuthenticationQuintuplet__GTPC_lengthf_descr_ = { "@GTPC_Types.AuthenticationQuintuplet_GTPC.lengthf", &INTEGER_ber_, &AuthenticationQuintuplet__GTPC_lengthf_raw_, &INTEGER_text_, &AuthenticationQuintuplet__GTPC_lengthf_xer_, &INTEGER_json_, &AuthenticationQuintuplet__GTPC_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AuthenticationQuintuplet__GTPC_lengthf_default_coding("RAW"); const XERdescriptor_t AuthenticationQuintuplet__GTPC_rand_xer_ = { {"rand>\n", "rand>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int AuthenticationQuintuplet__GTPC_rand_oer_ext_arr_[0] = {}; const int AuthenticationQuintuplet__GTPC_rand_oer_p_[0] = {}; const TTCN_OERdescriptor_t AuthenticationQuintuplet__GTPC_rand_oer_ = { -1, TRUE, 16, FALSE, 0, 0, AuthenticationQuintuplet__GTPC_rand_oer_ext_arr_, 0, AuthenticationQuintuplet__GTPC_rand_oer_p_}; const TTCN_Typedescriptor_t AuthenticationQuintuplet__GTPC_rand_descr_ = { "@GTPC_Types.AuthenticationQuintuplet_GTPC.rand", &OCTETSTRING_ber_, &General__Types::OCT16_raw_, &OCTETSTRING_text_, &AuthenticationQuintuplet__GTPC_rand_xer_, &OCTETSTRING_json_, &AuthenticationQuintuplet__GTPC_rand_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AuthenticationQuintuplet__GTPC_rand_default_coding("RAW"); const TTCN_RAWdescriptor_t AuthenticationQuintuplet__GTPC_xresLength_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t AuthenticationQuintuplet__GTPC_xresLength_xer_ = { {"xresLength>\n", "xresLength>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t AuthenticationQuintuplet__GTPC_xresLength_descr_ = { "@GTPC_Types.AuthenticationQuintuplet_GTPC.xresLength", &INTEGER_ber_, &AuthenticationQuintuplet__GTPC_xresLength_raw_, &INTEGER_text_, &AuthenticationQuintuplet__GTPC_xresLength_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AuthenticationQuintuplet__GTPC_xresLength_default_coding("RAW"); const XERdescriptor_t AuthenticationQuintuplet__GTPC_xres_xer_ = { {"xres>\n", "xres>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int AuthenticationQuintuplet__GTPC_xres_oer_ext_arr_[0] = {}; const int AuthenticationQuintuplet__GTPC_xres_oer_p_[0] = {}; const TTCN_OERdescriptor_t AuthenticationQuintuplet__GTPC_xres_oer_ = { -1, TRUE, -1, FALSE, 0, 0, AuthenticationQuintuplet__GTPC_xres_oer_ext_arr_, 0, AuthenticationQuintuplet__GTPC_xres_oer_p_}; const TTCN_Typedescriptor_t AuthenticationQuintuplet__GTPC_xres_descr_ = { "@GTPC_Types.AuthenticationQuintuplet_GTPC.xres", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &AuthenticationQuintuplet__GTPC_xres_xer_, &OCTETSTRING_json_, &AuthenticationQuintuplet__GTPC_xres_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AuthenticationQuintuplet__GTPC_xres_default_coding("RAW"); const XERdescriptor_t AuthenticationQuintuplet__GTPC_ck_xer_ = { {"ck>\n", "ck>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int AuthenticationQuintuplet__GTPC_ck_oer_ext_arr_[0] = {}; const int AuthenticationQuintuplet__GTPC_ck_oer_p_[0] = {}; const TTCN_OERdescriptor_t AuthenticationQuintuplet__GTPC_ck_oer_ = { -1, TRUE, 16, FALSE, 0, 0, AuthenticationQuintuplet__GTPC_ck_oer_ext_arr_, 0, AuthenticationQuintuplet__GTPC_ck_oer_p_}; const TTCN_Typedescriptor_t AuthenticationQuintuplet__GTPC_ck_descr_ = { "@GTPC_Types.AuthenticationQuintuplet_GTPC.ck", &OCTETSTRING_ber_, &General__Types::OCT16_raw_, &OCTETSTRING_text_, &AuthenticationQuintuplet__GTPC_ck_xer_, &OCTETSTRING_json_, &AuthenticationQuintuplet__GTPC_ck_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AuthenticationQuintuplet__GTPC_ck_default_coding("RAW"); const XERdescriptor_t AuthenticationQuintuplet__GTPC_ik_xer_ = { {"ik>\n", "ik>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int AuthenticationQuintuplet__GTPC_ik_oer_ext_arr_[0] = {}; const int AuthenticationQuintuplet__GTPC_ik_oer_p_[0] = {}; const TTCN_OERdescriptor_t AuthenticationQuintuplet__GTPC_ik_oer_ = { -1, TRUE, 16, FALSE, 0, 0, AuthenticationQuintuplet__GTPC_ik_oer_ext_arr_, 0, AuthenticationQuintuplet__GTPC_ik_oer_p_}; const TTCN_Typedescriptor_t AuthenticationQuintuplet__GTPC_ik_descr_ = { "@GTPC_Types.AuthenticationQuintuplet_GTPC.ik", &OCTETSTRING_ber_, &General__Types::OCT16_raw_, &OCTETSTRING_text_, &AuthenticationQuintuplet__GTPC_ik_xer_, &OCTETSTRING_json_, &AuthenticationQuintuplet__GTPC_ik_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AuthenticationQuintuplet__GTPC_ik_default_coding("RAW"); const TTCN_RAWdescriptor_t AuthenticationQuintuplet__GTPC_autnLength_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t AuthenticationQuintuplet__GTPC_autnLength_xer_ = { {"autnLength>\n", "autnLength>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t AuthenticationQuintuplet__GTPC_autnLength_descr_ = { "@GTPC_Types.AuthenticationQuintuplet_GTPC.autnLength", &INTEGER_ber_, &AuthenticationQuintuplet__GTPC_autnLength_raw_, &INTEGER_text_, &AuthenticationQuintuplet__GTPC_autnLength_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AuthenticationQuintuplet__GTPC_autnLength_default_coding("RAW"); const XERdescriptor_t AuthenticationQuintuplet__GTPC_autn_xer_ = { {"autn>\n", "autn>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int AuthenticationQuintuplet__GTPC_autn_oer_ext_arr_[0] = {}; const int AuthenticationQuintuplet__GTPC_autn_oer_p_[0] = {}; const TTCN_OERdescriptor_t AuthenticationQuintuplet__GTPC_autn_oer_ = { -1, TRUE, -1, FALSE, 0, 0, AuthenticationQuintuplet__GTPC_autn_oer_ext_arr_, 0, AuthenticationQuintuplet__GTPC_autn_oer_p_}; const TTCN_Typedescriptor_t AuthenticationQuintuplet__GTPC_autn_descr_ = { "@GTPC_Types.AuthenticationQuintuplet_GTPC.autn", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &AuthenticationQuintuplet__GTPC_autn_xer_, &OCTETSTRING_json_, &AuthenticationQuintuplet__GTPC_autn_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AuthenticationQuintuplet__GTPC_autn_default_coding("RAW"); const TTCN_RAWdescriptor_t AuthenticationQuintuplet__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for AuthenticationQuintuplet__GTPC const TTCN_Typedescriptor_t AuthenticationQuintuplet__GTPC_descr_ = { "@GTPC_Types.AuthenticationQuintuplet_GTPC", NULL, &AuthenticationQuintuplet__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AuthenticationQuintuplet__GTPC_default_coding("RAW"); const XERdescriptor_t TrafficFlowTemplate_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int TrafficFlowTemplate_type__gtpc_oer_ext_arr_[0] = {}; const int TrafficFlowTemplate_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t TrafficFlowTemplate_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, TrafficFlowTemplate_type__gtpc_oer_ext_arr_, 0, TrafficFlowTemplate_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t TrafficFlowTemplate_type__gtpc_descr_ = { "@GTPC_Types.TrafficFlowTemplate.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &TrafficFlowTemplate_type__gtpc_xer_, &OCTETSTRING_json_, &TrafficFlowTemplate_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TrafficFlowTemplate_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t TrafficFlowTemplate_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t TrafficFlowTemplate_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t TrafficFlowTemplate_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t TrafficFlowTemplate_lengthf_descr_ = { "@GTPC_Types.TrafficFlowTemplate.lengthf", &INTEGER_ber_, &TrafficFlowTemplate_lengthf_raw_, &INTEGER_text_, &TrafficFlowTemplate_lengthf_xer_, &INTEGER_json_, &TrafficFlowTemplate_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TrafficFlowTemplate_lengthf_default_coding("RAW"); const TTCN_RAWdescriptor_t TrafficFlowTemplateV__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for TrafficFlowTemplateV__GTPC const TTCN_Typedescriptor_t TrafficFlowTemplateV__GTPC_descr_ = { "@GTPC_Types.TrafficFlowTemplateV_GTPC", NULL, &TrafficFlowTemplateV__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const TTCN_RAWdescriptor_t TrafficFlowTemplateV__CreateAddReplaceTFT__GTPC_numberOfPacketFilters_raw_ = {4,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,-1,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t TrafficFlowTemplateV__CreateAddReplaceTFT__GTPC_numberOfPacketFilters_xer_ = { {"numberOfPacketFilters>\n", "numberOfPacketFilters>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t TrafficFlowTemplateV__CreateAddReplaceTFT__GTPC_numberOfPacketFilters_descr_ = { "@GTPC_Types.TrafficFlowTemplateV_CreateAddReplaceTFT_GTPC.numberOfPacketFilters", &INTEGER_ber_, &TrafficFlowTemplateV__CreateAddReplaceTFT__GTPC_numberOfPacketFilters_raw_, &INTEGER_text_, &TrafficFlowTemplateV__CreateAddReplaceTFT__GTPC_numberOfPacketFilters_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TrafficFlowTemplateV__CreateAddReplaceTFT__GTPC_numberOfPacketFilters_default_coding("RAW"); const XERdescriptor_t TrafficFlowTemplateV__CreateAddReplaceTFT__GTPC_eBIT_xer_ = { {"eBIT>\n", "eBIT>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t TrafficFlowTemplateV__CreateAddReplaceTFT__GTPC_eBIT_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t TrafficFlowTemplateV__CreateAddReplaceTFT__GTPC_eBIT_descr_ = { "@GTPC_Types.TrafficFlowTemplateV_CreateAddReplaceTFT_GTPC.eBIT", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &TrafficFlowTemplateV__CreateAddReplaceTFT__GTPC_eBIT_xer_, &BITSTRING_json_, &TrafficFlowTemplateV__CreateAddReplaceTFT__GTPC_eBIT_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TrafficFlowTemplateV__CreateAddReplaceTFT__GTPC_eBIT_default_coding("RAW"); const XERdescriptor_t TrafficFlowTemplateV__CreateAddReplaceTFT__GTPC_operationCodeTFT_xer_ = { {"operationCodeTFT>\n", "operationCodeTFT>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t TrafficFlowTemplateV__CreateAddReplaceTFT__GTPC_operationCodeTFT_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t TrafficFlowTemplateV__CreateAddReplaceTFT__GTPC_operationCodeTFT_descr_ = { "@GTPC_Types.TrafficFlowTemplateV_CreateAddReplaceTFT_GTPC.operationCodeTFT", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &TrafficFlowTemplateV__CreateAddReplaceTFT__GTPC_operationCodeTFT_xer_, &BITSTRING_json_, &TrafficFlowTemplateV__CreateAddReplaceTFT__GTPC_operationCodeTFT_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TrafficFlowTemplateV__CreateAddReplaceTFT__GTPC_operationCodeTFT_default_coding("RAW"); const TTCN_RAWdescriptor_t PacketFilterList__CreateAddReplaceTFT__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for PacketFilterList__CreateAddReplaceTFT__GTPC const TTCN_Typedescriptor_t PacketFilterList__CreateAddReplaceTFT__GTPC_descr_ = { "@GTPC_Types.PacketFilterList_CreateAddReplaceTFT_GTPC", NULL, &PacketFilterList__CreateAddReplaceTFT__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, &PacketFilter__GTPC_descr_, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t PacketFilterIdentifier__GTPC_xer_ = { {"PacketFilterIdentifier_GTPC>\n", "PacketFilterIdentifier_GTPC>\n"}, {29, 29}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PacketFilterIdentifier__GTPC_oer_ext_arr_[0] = {}; const int PacketFilterIdentifier__GTPC_oer_p_[0] = {}; const TTCN_OERdescriptor_t PacketFilterIdentifier__GTPC_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PacketFilterIdentifier__GTPC_oer_ext_arr_, 0, PacketFilterIdentifier__GTPC_oer_p_}; const TTCN_Typedescriptor_t PacketFilterIdentifier__GTPC_descr_ = { "@GTPC_Types.PacketFilterIdentifier_GTPC", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PacketFilterIdentifier__GTPC_xer_, &OCTETSTRING_json_, &PacketFilterIdentifier__GTPC_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PacketFilterIdentifier__GTPC_default_coding("RAW"); const XERdescriptor_t PacketFilter__GTPC_identifier_xer_ = { {"identifier>\n", "identifier>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PacketFilter__GTPC_identifier_oer_ext_arr_[0] = {}; const int PacketFilter__GTPC_identifier_oer_p_[0] = {}; const TTCN_OERdescriptor_t PacketFilter__GTPC_identifier_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PacketFilter__GTPC_identifier_oer_ext_arr_, 0, PacketFilter__GTPC_identifier_oer_p_}; const TTCN_Typedescriptor_t PacketFilter__GTPC_identifier_descr_ = { "@GTPC_Types.PacketFilter_GTPC.identifier", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PacketFilter__GTPC_identifier_xer_, &OCTETSTRING_json_, &PacketFilter__GTPC_identifier_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PacketFilter__GTPC_identifier_default_coding("RAW"); const XERdescriptor_t PacketFilter__GTPC_evaluationPrecedence_xer_ = { {"evaluationPrecedence>\n", "evaluationPrecedence>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PacketFilter__GTPC_evaluationPrecedence_oer_ext_arr_[0] = {}; const int PacketFilter__GTPC_evaluationPrecedence_oer_p_[0] = {}; const TTCN_OERdescriptor_t PacketFilter__GTPC_evaluationPrecedence_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PacketFilter__GTPC_evaluationPrecedence_oer_ext_arr_, 0, PacketFilter__GTPC_evaluationPrecedence_oer_p_}; const TTCN_Typedescriptor_t PacketFilter__GTPC_evaluationPrecedence_descr_ = { "@GTPC_Types.PacketFilter_GTPC.evaluationPrecedence", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PacketFilter__GTPC_evaluationPrecedence_xer_, &OCTETSTRING_json_, &PacketFilter__GTPC_evaluationPrecedence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PacketFilter__GTPC_evaluationPrecedence_default_coding("RAW"); const TTCN_RAWdescriptor_t PacketFilter__GTPC_lengthIndicator_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t PacketFilter__GTPC_lengthIndicator_xer_ = { {"lengthIndicator>\n", "lengthIndicator>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t PacketFilter__GTPC_lengthIndicator_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t PacketFilter__GTPC_lengthIndicator_descr_ = { "@GTPC_Types.PacketFilter_GTPC.lengthIndicator", &INTEGER_ber_, &PacketFilter__GTPC_lengthIndicator_raw_, &INTEGER_text_, &PacketFilter__GTPC_lengthIndicator_xer_, &INTEGER_json_, &PacketFilter__GTPC_lengthIndicator_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PacketFilter__GTPC_lengthIndicator_default_coding("RAW"); const XERdescriptor_t PacketFilter__GTPC_contents_xer_ = { {"contents>\n", "contents>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PacketFilter__GTPC_contents_oer_ext_arr_[0] = {}; const int PacketFilter__GTPC_contents_oer_p_[0] = {}; const TTCN_OERdescriptor_t PacketFilter__GTPC_contents_oer_ = { -1, TRUE, -1, FALSE, 0, 0, PacketFilter__GTPC_contents_oer_ext_arr_, 0, PacketFilter__GTPC_contents_oer_p_}; const TTCN_Typedescriptor_t PacketFilter__GTPC_contents_descr_ = { "@GTPC_Types.PacketFilter_GTPC.contents", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &PacketFilter__GTPC_contents_xer_, &OCTETSTRING_json_, &PacketFilter__GTPC_contents_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PacketFilter__GTPC_contents_default_coding("RAW"); const TTCN_RAWdescriptor_t PacketFilter__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for PacketFilter__GTPC const TTCN_Typedescriptor_t PacketFilter__GTPC_descr_ = { "@GTPC_Types.PacketFilter_GTPC", NULL, &PacketFilter__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PacketFilter__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING PacketFilterList__CreateAddReplaceTFT__GTPC_0_default_coding("RAW"); UNIVERSAL_CHARSTRING PacketFilterList__CreateAddReplaceTFT__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING TrafficFlowTemplateV__CreateAddReplaceTFT__GTPC_packetFilterList__CreateAddReplaceTFT_default_coding("RAW"); const TTCN_RAWdescriptor_t TrafficFlowTemplateV__CreateAddReplaceTFT__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for TrafficFlowTemplateV__CreateAddReplaceTFT__GTPC const TTCN_Typedescriptor_t TrafficFlowTemplateV__CreateAddReplaceTFT__GTPC_descr_ = { "@GTPC_Types.TrafficFlowTemplateV_CreateAddReplaceTFT_GTPC", NULL, &TrafficFlowTemplateV__CreateAddReplaceTFT__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const TTCN_RAWdescriptor_t ParametersList__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for ParametersList__GTPC const TTCN_Typedescriptor_t ParametersList__GTPC_descr_ = { "@GTPC_Types.ParametersList_GTPC", NULL, &ParametersList__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, &Parameter__GTPC_descr_, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t Parameter__GTPC_parameterIdentifier_xer_ = { {"parameterIdentifier>\n", "parameterIdentifier>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int Parameter__GTPC_parameterIdentifier_oer_ext_arr_[0] = {}; const int Parameter__GTPC_parameterIdentifier_oer_p_[0] = {}; const TTCN_OERdescriptor_t Parameter__GTPC_parameterIdentifier_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Parameter__GTPC_parameterIdentifier_oer_ext_arr_, 0, Parameter__GTPC_parameterIdentifier_oer_p_}; const TTCN_Typedescriptor_t Parameter__GTPC_parameterIdentifier_descr_ = { "@GTPC_Types.Parameter_GTPC.parameterIdentifier", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Parameter__GTPC_parameterIdentifier_xer_, &OCTETSTRING_json_, &Parameter__GTPC_parameterIdentifier_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Parameter__GTPC_parameterIdentifier_default_coding("RAW"); const TTCN_RAWdescriptor_t Parameter__GTPC_lengthIndicator_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t Parameter__GTPC_lengthIndicator_xer_ = { {"lengthIndicator>\n", "lengthIndicator>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t Parameter__GTPC_lengthIndicator_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t Parameter__GTPC_lengthIndicator_descr_ = { "@GTPC_Types.Parameter_GTPC.lengthIndicator", &INTEGER_ber_, &Parameter__GTPC_lengthIndicator_raw_, &INTEGER_text_, &Parameter__GTPC_lengthIndicator_xer_, &INTEGER_json_, &Parameter__GTPC_lengthIndicator_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Parameter__GTPC_lengthIndicator_default_coding("RAW"); const XERdescriptor_t Parameter__GTPC_contents_xer_ = { {"contents>\n", "contents>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int Parameter__GTPC_contents_oer_ext_arr_[0] = {}; const int Parameter__GTPC_contents_oer_p_[0] = {}; const TTCN_OERdescriptor_t Parameter__GTPC_contents_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Parameter__GTPC_contents_oer_ext_arr_, 0, Parameter__GTPC_contents_oer_p_}; const TTCN_Typedescriptor_t Parameter__GTPC_contents_descr_ = { "@GTPC_Types.Parameter_GTPC.contents", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &Parameter__GTPC_contents_xer_, &OCTETSTRING_json_, &Parameter__GTPC_contents_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Parameter__GTPC_contents_default_coding("RAW"); const TTCN_RAWdescriptor_t Parameter__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for Parameter__GTPC const TTCN_Typedescriptor_t Parameter__GTPC_descr_ = { "@GTPC_Types.Parameter_GTPC", NULL, &Parameter__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Parameter__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING ParametersList__GTPC_0_default_coding("RAW"); UNIVERSAL_CHARSTRING ParametersList__GTPC_default_coding("RAW"); const TTCN_RAWdescriptor_t TrafficFlowTemplateV__CreateAddReplaceTFT__GTPC_parametersList_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for TrafficFlowTemplateV__CreateAddReplaceTFT__GTPC_parametersList const TTCN_Typedescriptor_t TrafficFlowTemplateV__CreateAddReplaceTFT__GTPC_parametersList_descr_ = { "@GTPC_Types.TrafficFlowTemplateV_CreateAddReplaceTFT_GTPC.parametersList", NULL, &TrafficFlowTemplateV__CreateAddReplaceTFT__GTPC_parametersList_raw_, NULL, NULL, NULL, NULL, NULL, &Parameter__GTPC_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TrafficFlowTemplateV__CreateAddReplaceTFT__GTPC_parametersList_default_coding("RAW"); UNIVERSAL_CHARSTRING TrafficFlowTemplateV__CreateAddReplaceTFT__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING TrafficFlowTemplateV__GTPC_trafficFlowTemplateV__CreateAddReplaceTFT_default_coding("RAW"); const TTCN_RAWdescriptor_t TrafficFlowTemplateV__DeletePacketFilter__GTPC_numberOfPacketFilters_raw_ = {4,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,-1,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t TrafficFlowTemplateV__DeletePacketFilter__GTPC_numberOfPacketFilters_xer_ = { {"numberOfPacketFilters>\n", "numberOfPacketFilters>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t TrafficFlowTemplateV__DeletePacketFilter__GTPC_numberOfPacketFilters_descr_ = { "@GTPC_Types.TrafficFlowTemplateV_DeletePacketFilter_GTPC.numberOfPacketFilters", &INTEGER_ber_, &TrafficFlowTemplateV__DeletePacketFilter__GTPC_numberOfPacketFilters_raw_, &INTEGER_text_, &TrafficFlowTemplateV__DeletePacketFilter__GTPC_numberOfPacketFilters_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TrafficFlowTemplateV__DeletePacketFilter__GTPC_numberOfPacketFilters_default_coding("RAW"); const XERdescriptor_t TrafficFlowTemplateV__DeletePacketFilter__GTPC_eBIT_xer_ = { {"eBIT>\n", "eBIT>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t TrafficFlowTemplateV__DeletePacketFilter__GTPC_eBIT_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t TrafficFlowTemplateV__DeletePacketFilter__GTPC_eBIT_descr_ = { "@GTPC_Types.TrafficFlowTemplateV_DeletePacketFilter_GTPC.eBIT", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &TrafficFlowTemplateV__DeletePacketFilter__GTPC_eBIT_xer_, &BITSTRING_json_, &TrafficFlowTemplateV__DeletePacketFilter__GTPC_eBIT_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TrafficFlowTemplateV__DeletePacketFilter__GTPC_eBIT_default_coding("RAW"); const XERdescriptor_t TrafficFlowTemplateV__DeletePacketFilter__GTPC_operationCodeTFT_xer_ = { {"operationCodeTFT>\n", "operationCodeTFT>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t TrafficFlowTemplateV__DeletePacketFilter__GTPC_operationCodeTFT_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t TrafficFlowTemplateV__DeletePacketFilter__GTPC_operationCodeTFT_descr_ = { "@GTPC_Types.TrafficFlowTemplateV_DeletePacketFilter_GTPC.operationCodeTFT", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &TrafficFlowTemplateV__DeletePacketFilter__GTPC_operationCodeTFT_xer_, &BITSTRING_json_, &TrafficFlowTemplateV__DeletePacketFilter__GTPC_operationCodeTFT_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TrafficFlowTemplateV__DeletePacketFilter__GTPC_operationCodeTFT_default_coding("RAW"); const TTCN_RAWdescriptor_t PacketFilterList__DeletePacketFilter__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for PacketFilterList__DeletePacketFilter__GTPC const TTCN_Typedescriptor_t PacketFilterList__DeletePacketFilter__GTPC_descr_ = { "@GTPC_Types.PacketFilterList_DeletePacketFilter_GTPC", NULL, &PacketFilterList__DeletePacketFilter__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, &PacketFilterIdentifier__GTPC_descr_, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t PacketFilterList__DeletePacketFilter__GTPC_0_xer_ = { {"PacketFilterIdentifier_GTPC>\n", "PacketFilterIdentifier_GTPC>\n"}, {29, 29}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PacketFilterList__DeletePacketFilter__GTPC_0_oer_ext_arr_[0] = {}; const int PacketFilterList__DeletePacketFilter__GTPC_0_oer_p_[0] = {}; const TTCN_OERdescriptor_t PacketFilterList__DeletePacketFilter__GTPC_0_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PacketFilterList__DeletePacketFilter__GTPC_0_oer_ext_arr_, 0, PacketFilterList__DeletePacketFilter__GTPC_0_oer_p_}; const TTCN_Typedescriptor_t PacketFilterList__DeletePacketFilter__GTPC_0_descr_ = { "@GTPC_Types.PacketFilterList_DeletePacketFilter_GTPC.", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PacketFilterList__DeletePacketFilter__GTPC_0_xer_, &OCTETSTRING_json_, &PacketFilterList__DeletePacketFilter__GTPC_0_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PacketFilterList__DeletePacketFilter__GTPC_0_default_coding("RAW"); UNIVERSAL_CHARSTRING PacketFilterList__DeletePacketFilter__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING TrafficFlowTemplateV__DeletePacketFilter__GTPC_packetFilterList__DeletePacketFilter_default_coding("RAW"); const TTCN_RAWdescriptor_t TrafficFlowTemplateV__DeletePacketFilter__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for TrafficFlowTemplateV__DeletePacketFilter__GTPC const TTCN_Typedescriptor_t TrafficFlowTemplateV__DeletePacketFilter__GTPC_descr_ = { "@GTPC_Types.TrafficFlowTemplateV_DeletePacketFilter_GTPC", NULL, &TrafficFlowTemplateV__DeletePacketFilter__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const TTCN_RAWdescriptor_t TrafficFlowTemplateV__DeletePacketFilter__GTPC_parametersList_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for TrafficFlowTemplateV__DeletePacketFilter__GTPC_parametersList const TTCN_Typedescriptor_t TrafficFlowTemplateV__DeletePacketFilter__GTPC_parametersList_descr_ = { "@GTPC_Types.TrafficFlowTemplateV_DeletePacketFilter_GTPC.parametersList", NULL, &TrafficFlowTemplateV__DeletePacketFilter__GTPC_parametersList_raw_, NULL, NULL, NULL, NULL, NULL, &Parameter__GTPC_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TrafficFlowTemplateV__DeletePacketFilter__GTPC_parametersList_default_coding("RAW"); UNIVERSAL_CHARSTRING TrafficFlowTemplateV__DeletePacketFilter__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING TrafficFlowTemplateV__GTPC_trafficFlowTemplateV__DeletePacketFilter_default_coding("RAW"); const XERdescriptor_t TrafficFlowTemplateV__Delete__Existing__TFT__or__No__TFT__Operation__GTPC_numberOfPacketFilters_xer_ = { {"numberOfPacketFilters>\n", "numberOfPacketFilters>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t TrafficFlowTemplateV__Delete__Existing__TFT__or__No__TFT__Operation__GTPC_numberOfPacketFilters_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t TrafficFlowTemplateV__Delete__Existing__TFT__or__No__TFT__Operation__GTPC_numberOfPacketFilters_descr_ = { "@GTPC_Types.TrafficFlowTemplateV_Delete_Existing_TFT_or_No_TFT_Operation_GTPC.numberOfPacketFilters", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &TrafficFlowTemplateV__Delete__Existing__TFT__or__No__TFT__Operation__GTPC_numberOfPacketFilters_xer_, &BITSTRING_json_, &TrafficFlowTemplateV__Delete__Existing__TFT__or__No__TFT__Operation__GTPC_numberOfPacketFilters_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TrafficFlowTemplateV__Delete__Existing__TFT__or__No__TFT__Operation__GTPC_numberOfPacketFilters_default_coding("RAW"); const XERdescriptor_t TrafficFlowTemplateV__Delete__Existing__TFT__or__No__TFT__Operation__GTPC_eBIT_xer_ = { {"eBIT>\n", "eBIT>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t TrafficFlowTemplateV__Delete__Existing__TFT__or__No__TFT__Operation__GTPC_eBIT_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t TrafficFlowTemplateV__Delete__Existing__TFT__or__No__TFT__Operation__GTPC_eBIT_descr_ = { "@GTPC_Types.TrafficFlowTemplateV_Delete_Existing_TFT_or_No_TFT_Operation_GTPC.eBIT", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &TrafficFlowTemplateV__Delete__Existing__TFT__or__No__TFT__Operation__GTPC_eBIT_xer_, &BITSTRING_json_, &TrafficFlowTemplateV__Delete__Existing__TFT__or__No__TFT__Operation__GTPC_eBIT_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TrafficFlowTemplateV__Delete__Existing__TFT__or__No__TFT__Operation__GTPC_eBIT_default_coding("RAW"); const XERdescriptor_t TrafficFlowTemplateV__Delete__Existing__TFT__or__No__TFT__Operation__GTPC_operationCodeTFT_xer_ = { {"operationCodeTFT>\n", "operationCodeTFT>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t TrafficFlowTemplateV__Delete__Existing__TFT__or__No__TFT__Operation__GTPC_operationCodeTFT_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t TrafficFlowTemplateV__Delete__Existing__TFT__or__No__TFT__Operation__GTPC_operationCodeTFT_descr_ = { "@GTPC_Types.TrafficFlowTemplateV_Delete_Existing_TFT_or_No_TFT_Operation_GTPC.operationCodeTFT", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &TrafficFlowTemplateV__Delete__Existing__TFT__or__No__TFT__Operation__GTPC_operationCodeTFT_xer_, &BITSTRING_json_, &TrafficFlowTemplateV__Delete__Existing__TFT__or__No__TFT__Operation__GTPC_operationCodeTFT_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TrafficFlowTemplateV__Delete__Existing__TFT__or__No__TFT__Operation__GTPC_operationCodeTFT_default_coding("RAW"); const TTCN_RAWdescriptor_t TrafficFlowTemplateV__Delete__Existing__TFT__or__No__TFT__Operation__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for TrafficFlowTemplateV__Delete__Existing__TFT__or__No__TFT__Operation__GTPC const TTCN_Typedescriptor_t TrafficFlowTemplateV__Delete__Existing__TFT__or__No__TFT__Operation__GTPC_descr_ = { "@GTPC_Types.TrafficFlowTemplateV_Delete_Existing_TFT_or_No_TFT_Operation_GTPC", NULL, &TrafficFlowTemplateV__Delete__Existing__TFT__or__No__TFT__Operation__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const TTCN_RAWdescriptor_t TrafficFlowTemplateV__Delete__Existing__TFT__or__No__TFT__Operation__GTPC_parametersList_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for TrafficFlowTemplateV__Delete__Existing__TFT__or__No__TFT__Operation__GTPC_parametersList const TTCN_Typedescriptor_t TrafficFlowTemplateV__Delete__Existing__TFT__or__No__TFT__Operation__GTPC_parametersList_descr_ = { "@GTPC_Types.TrafficFlowTemplateV_Delete_Existing_TFT_or_No_TFT_Operation_GTPC.parametersList", NULL, &TrafficFlowTemplateV__Delete__Existing__TFT__or__No__TFT__Operation__GTPC_parametersList_raw_, NULL, NULL, NULL, NULL, NULL, &Parameter__GTPC_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TrafficFlowTemplateV__Delete__Existing__TFT__or__No__TFT__Operation__GTPC_parametersList_default_coding("RAW"); UNIVERSAL_CHARSTRING TrafficFlowTemplateV__Delete__Existing__TFT__or__No__TFT__Operation__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING TrafficFlowTemplateV__GTPC_trafficFlowTemplateV__Delete__Existing__TFT__or__No__TFT__Operation_default_coding("RAW"); UNIVERSAL_CHARSTRING TrafficFlowTemplateV__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING TrafficFlowTemplate_tft_default_coding("RAW"); const TTCN_RAWdescriptor_t TrafficFlowTemplate_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for TrafficFlowTemplate const TTCN_Typedescriptor_t TrafficFlowTemplate_descr_ = { "@GTPC_Types.TrafficFlowTemplate", NULL, &TrafficFlowTemplate_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TrafficFlowTemplate_default_coding("RAW"); const XERdescriptor_t TargetIdentification_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int TargetIdentification_type__gtpc_oer_ext_arr_[0] = {}; const int TargetIdentification_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t TargetIdentification_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, TargetIdentification_type__gtpc_oer_ext_arr_, 0, TargetIdentification_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t TargetIdentification_type__gtpc_descr_ = { "@GTPC_Types.TargetIdentification.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &TargetIdentification_type__gtpc_xer_, &OCTETSTRING_json_, &TargetIdentification_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TargetIdentification_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t TargetIdentification_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t TargetIdentification_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t TargetIdentification_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t TargetIdentification_lengthf_descr_ = { "@GTPC_Types.TargetIdentification.lengthf", &INTEGER_ber_, &TargetIdentification_lengthf_raw_, &INTEGER_text_, &TargetIdentification_lengthf_xer_, &INTEGER_json_, &TargetIdentification_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TargetIdentification_lengthf_default_coding("RAW"); const TTCN_RAWdescriptor_t TargetIdentification_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for TargetIdentification const TTCN_Typedescriptor_t TargetIdentification_descr_ = { "@GTPC_Types.TargetIdentification", NULL, &TargetIdentification_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t TargetIdentification_mcc1_xer_ = { {"mcc1>\n", "mcc1>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t TargetIdentification_mcc1_descr_ = { "@GTPC_Types.TargetIdentification.mcc1", NULL, &General__Types::HEX1_raw_, NULL, &TargetIdentification_mcc1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TargetIdentification_mcc1_default_coding("RAW"); const XERdescriptor_t TargetIdentification_mcc2_xer_ = { {"mcc2>\n", "mcc2>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t TargetIdentification_mcc2_descr_ = { "@GTPC_Types.TargetIdentification.mcc2", NULL, &General__Types::HEX1_raw_, NULL, &TargetIdentification_mcc2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TargetIdentification_mcc2_default_coding("RAW"); const XERdescriptor_t TargetIdentification_mcc3_xer_ = { {"mcc3>\n", "mcc3>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t TargetIdentification_mcc3_descr_ = { "@GTPC_Types.TargetIdentification.mcc3", NULL, &General__Types::HEX1_raw_, NULL, &TargetIdentification_mcc3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TargetIdentification_mcc3_default_coding("RAW"); const XERdescriptor_t TargetIdentification_mnc3_xer_ = { {"mnc3>\n", "mnc3>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t TargetIdentification_mnc3_descr_ = { "@GTPC_Types.TargetIdentification.mnc3", NULL, &General__Types::HEX1_raw_, NULL, &TargetIdentification_mnc3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TargetIdentification_mnc3_default_coding("RAW"); const XERdescriptor_t TargetIdentification_mnc1_xer_ = { {"mnc1>\n", "mnc1>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t TargetIdentification_mnc1_descr_ = { "@GTPC_Types.TargetIdentification.mnc1", NULL, &General__Types::HEX1_raw_, NULL, &TargetIdentification_mnc1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TargetIdentification_mnc1_default_coding("RAW"); const XERdescriptor_t TargetIdentification_mnc2_xer_ = { {"mnc2>\n", "mnc2>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t TargetIdentification_mnc2_descr_ = { "@GTPC_Types.TargetIdentification.mnc2", NULL, &General__Types::HEX1_raw_, NULL, &TargetIdentification_mnc2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TargetIdentification_mnc2_default_coding("RAW"); const XERdescriptor_t TargetIdentification_lac_xer_ = { {"lac>\n", "lac>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int TargetIdentification_lac_oer_ext_arr_[0] = {}; const int TargetIdentification_lac_oer_p_[0] = {}; const TTCN_OERdescriptor_t TargetIdentification_lac_oer_ = { -1, TRUE, 2, FALSE, 0, 0, TargetIdentification_lac_oer_ext_arr_, 0, TargetIdentification_lac_oer_p_}; const TTCN_Typedescriptor_t TargetIdentification_lac_descr_ = { "@GTPC_Types.TargetIdentification.lac", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &TargetIdentification_lac_xer_, &OCTETSTRING_json_, &TargetIdentification_lac_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TargetIdentification_lac_default_coding("RAW"); const XERdescriptor_t TargetIdentification_rac_xer_ = { {"rac>\n", "rac>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int TargetIdentification_rac_oer_ext_arr_[0] = {}; const int TargetIdentification_rac_oer_p_[0] = {}; const TTCN_OERdescriptor_t TargetIdentification_rac_oer_ = { -1, TRUE, 1, FALSE, 0, 0, TargetIdentification_rac_oer_ext_arr_, 0, TargetIdentification_rac_oer_p_}; const TTCN_Typedescriptor_t TargetIdentification_rac_descr_ = { "@GTPC_Types.TargetIdentification.rac", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &TargetIdentification_rac_xer_, &OCTETSTRING_json_, &TargetIdentification_rac_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TargetIdentification_rac_default_coding("RAW"); const XERdescriptor_t TargetIdentification_rnc__id_xer_ = { {"rnc_id>\n", "rnc_id>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int TargetIdentification_rnc__id_oer_ext_arr_[0] = {}; const int TargetIdentification_rnc__id_oer_p_[0] = {}; const TTCN_OERdescriptor_t TargetIdentification_rnc__id_oer_ = { -1, TRUE, 2, FALSE, 0, 0, TargetIdentification_rnc__id_oer_ext_arr_, 0, TargetIdentification_rnc__id_oer_p_}; const TTCN_Typedescriptor_t TargetIdentification_rnc__id_descr_ = { "@GTPC_Types.TargetIdentification.rnc_id", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &TargetIdentification_rnc__id_xer_, &OCTETSTRING_json_, &TargetIdentification_rnc__id_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TargetIdentification_rnc__id_default_coding("RAW"); const XERdescriptor_t TargetIdentification_extended__rnc__id_xer_ = { {"extended_rnc_id>\n", "extended_rnc_id>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int TargetIdentification_extended__rnc__id_oer_ext_arr_[0] = {}; const int TargetIdentification_extended__rnc__id_oer_p_[0] = {}; const TTCN_OERdescriptor_t TargetIdentification_extended__rnc__id_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TargetIdentification_extended__rnc__id_oer_ext_arr_, 0, TargetIdentification_extended__rnc__id_oer_p_}; const TTCN_Typedescriptor_t TargetIdentification_extended__rnc__id_descr_ = { "@GTPC_Types.TargetIdentification.extended_rnc_id", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &TargetIdentification_extended__rnc__id_xer_, &OCTETSTRING_json_, &TargetIdentification_extended__rnc__id_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TargetIdentification_extended__rnc__id_default_coding("RAW"); UNIVERSAL_CHARSTRING TargetIdentification_default_coding("RAW"); const XERdescriptor_t UTRANTransparentContainer_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int UTRANTransparentContainer_type__gtpc_oer_ext_arr_[0] = {}; const int UTRANTransparentContainer_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t UTRANTransparentContainer_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, UTRANTransparentContainer_type__gtpc_oer_ext_arr_, 0, UTRANTransparentContainer_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t UTRANTransparentContainer_type__gtpc_descr_ = { "@GTPC_Types.UTRANTransparentContainer.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &UTRANTransparentContainer_type__gtpc_xer_, &OCTETSTRING_json_, &UTRANTransparentContainer_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UTRANTransparentContainer_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t UTRANTransparentContainer_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t UTRANTransparentContainer_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t UTRANTransparentContainer_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t UTRANTransparentContainer_lengthf_descr_ = { "@GTPC_Types.UTRANTransparentContainer.lengthf", &INTEGER_ber_, &UTRANTransparentContainer_lengthf_raw_, &INTEGER_text_, &UTRANTransparentContainer_lengthf_xer_, &INTEGER_json_, &UTRANTransparentContainer_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UTRANTransparentContainer_lengthf_default_coding("RAW"); const XERdescriptor_t UTRANTransparentContainer_transparentfield_xer_ = { {"transparentfield>\n", "transparentfield>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int UTRANTransparentContainer_transparentfield_oer_ext_arr_[0] = {}; const int UTRANTransparentContainer_transparentfield_oer_p_[0] = {}; const TTCN_OERdescriptor_t UTRANTransparentContainer_transparentfield_oer_ = { -1, TRUE, -1, FALSE, 0, 0, UTRANTransparentContainer_transparentfield_oer_ext_arr_, 0, UTRANTransparentContainer_transparentfield_oer_p_}; const TTCN_Typedescriptor_t UTRANTransparentContainer_transparentfield_descr_ = { "@GTPC_Types.UTRANTransparentContainer.transparentfield", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &UTRANTransparentContainer_transparentfield_xer_, &OCTETSTRING_json_, &UTRANTransparentContainer_transparentfield_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UTRANTransparentContainer_transparentfield_default_coding("RAW"); const TTCN_RAWdescriptor_t UTRANTransparentContainer_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for UTRANTransparentContainer const TTCN_Typedescriptor_t UTRANTransparentContainer_descr_ = { "@GTPC_Types.UTRANTransparentContainer", NULL, &UTRANTransparentContainer_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UTRANTransparentContainer_default_coding("RAW"); const TTCN_RAWdescriptor_t RABSetupInformation__List_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RABSetupInformation__List const TTCN_Typedescriptor_t RABSetupInformation__List_descr_ = { "@GTPC_Types.RABSetupInformation_List", NULL, &RABSetupInformation__List_raw_, NULL, NULL, NULL, NULL, NULL, &RABSetupInformation_descr_, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t RABSetupInformation_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RABSetupInformation_type__gtpc_oer_ext_arr_[0] = {}; const int RABSetupInformation_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t RABSetupInformation_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RABSetupInformation_type__gtpc_oer_ext_arr_, 0, RABSetupInformation_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t RABSetupInformation_type__gtpc_descr_ = { "@GTPC_Types.RABSetupInformation.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RABSetupInformation_type__gtpc_xer_, &OCTETSTRING_json_, &RABSetupInformation_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RABSetupInformation_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t RABSetupInformation_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t RABSetupInformation_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RABSetupInformation_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RABSetupInformation_lengthf_descr_ = { "@GTPC_Types.RABSetupInformation.lengthf", &INTEGER_ber_, &RABSetupInformation_lengthf_raw_, &INTEGER_text_, &RABSetupInformation_lengthf_xer_, &INTEGER_json_, &RABSetupInformation_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RABSetupInformation_lengthf_default_coding("RAW"); const XERdescriptor_t RABSetupInformation_nsapi_xer_ = { {"nsapi>\n", "nsapi>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RABSetupInformation_nsapi_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RABSetupInformation_nsapi_descr_ = { "@GTPC_Types.RABSetupInformation.nsapi", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &RABSetupInformation_nsapi_xer_, &BITSTRING_json_, &RABSetupInformation_nsapi_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RABSetupInformation_nsapi_default_coding("RAW"); const XERdescriptor_t RABSetupInformation_unused_xer_ = { {"unused>\n", "unused>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RABSetupInformation_unused_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RABSetupInformation_unused_descr_ = { "@GTPC_Types.RABSetupInformation.unused", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &RABSetupInformation_unused_xer_, &BITSTRING_json_, &RABSetupInformation_unused_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RABSetupInformation_unused_default_coding("RAW"); const TTCN_RAWdescriptor_t RABSetupInformation_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RABSetupInformation const TTCN_Typedescriptor_t RABSetupInformation_descr_ = { "@GTPC_Types.RABSetupInformation", NULL, &RABSetupInformation_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t RABSetupInformation_teidData_xer_ = { {"teidData>\n", "teidData>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RABSetupInformation_teidData_oer_ext_arr_[0] = {}; const int RABSetupInformation_teidData_oer_p_[0] = {}; const TTCN_OERdescriptor_t RABSetupInformation_teidData_oer_ = { -1, TRUE, 4, FALSE, 0, 0, RABSetupInformation_teidData_oer_ext_arr_, 0, RABSetupInformation_teidData_oer_p_}; const TTCN_Typedescriptor_t RABSetupInformation_teidData_descr_ = { "@GTPC_Types.RABSetupInformation.teidData", &OCTETSTRING_ber_, &General__Types::OCT4_raw_, &OCTETSTRING_text_, &RABSetupInformation_teidData_xer_, &OCTETSTRING_json_, &RABSetupInformation_teidData_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RABSetupInformation_teidData_default_coding("RAW"); const XERdescriptor_t RABSetupInformation_rncIpAddress_xer_ = { {"rncIpAddress>\n", "rncIpAddress>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RABSetupInformation_rncIpAddress_oer_ext_arr_[0] = {}; const int RABSetupInformation_rncIpAddress_oer_p_[0] = {}; const TTCN_OERdescriptor_t RABSetupInformation_rncIpAddress_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RABSetupInformation_rncIpAddress_oer_ext_arr_, 0, RABSetupInformation_rncIpAddress_oer_p_}; const TTCN_Typedescriptor_t RABSetupInformation_rncIpAddress_descr_ = { "@GTPC_Types.RABSetupInformation.rncIpAddress", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &RABSetupInformation_rncIpAddress_xer_, &OCTETSTRING_json_, &RABSetupInformation_rncIpAddress_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RABSetupInformation_rncIpAddress_default_coding("RAW"); UNIVERSAL_CHARSTRING RABSetupInformation_default_coding("RAW"); UNIVERSAL_CHARSTRING RABSetupInformation__List_0_default_coding("RAW"); UNIVERSAL_CHARSTRING RABSetupInformation__List_default_coding("RAW"); const XERdescriptor_t ExtensionHeaderTypeList__gtpc_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int ExtensionHeaderTypeList__gtpc_type__gtpc_oer_ext_arr_[0] = {}; const int ExtensionHeaderTypeList__gtpc_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t ExtensionHeaderTypeList__gtpc_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExtensionHeaderTypeList__gtpc_type__gtpc_oer_ext_arr_, 0, ExtensionHeaderTypeList__gtpc_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t ExtensionHeaderTypeList__gtpc_type__gtpc_descr_ = { "@GTPC_Types.ExtensionHeaderTypeList_gtpc.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &ExtensionHeaderTypeList__gtpc_type__gtpc_xer_, &OCTETSTRING_json_, &ExtensionHeaderTypeList__gtpc_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ExtensionHeaderTypeList__gtpc_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t ExtensionHeaderTypeList__gtpc_lengthf_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t ExtensionHeaderTypeList__gtpc_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t ExtensionHeaderTypeList__gtpc_lengthf_descr_ = { "@GTPC_Types.ExtensionHeaderTypeList_gtpc.lengthf", &INTEGER_ber_, &ExtensionHeaderTypeList__gtpc_lengthf_raw_, &INTEGER_text_, &ExtensionHeaderTypeList__gtpc_lengthf_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ExtensionHeaderTypeList__gtpc_lengthf_default_coding("RAW"); const XERdescriptor_t ExtensionHeaderTypeList__gtpc_extensionTypesList_xer_ = { {"extensionTypesList>\n", "extensionTypesList>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int ExtensionHeaderTypeList__gtpc_extensionTypesList_oer_ext_arr_[0] = {}; const int ExtensionHeaderTypeList__gtpc_extensionTypesList_oer_p_[0] = {}; const TTCN_OERdescriptor_t ExtensionHeaderTypeList__gtpc_extensionTypesList_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExtensionHeaderTypeList__gtpc_extensionTypesList_oer_ext_arr_, 0, ExtensionHeaderTypeList__gtpc_extensionTypesList_oer_p_}; const TTCN_Typedescriptor_t ExtensionHeaderTypeList__gtpc_extensionTypesList_descr_ = { "@GTPC_Types.ExtensionHeaderTypeList_gtpc.extensionTypesList", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &ExtensionHeaderTypeList__gtpc_extensionTypesList_xer_, &OCTETSTRING_json_, &ExtensionHeaderTypeList__gtpc_extensionTypesList_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ExtensionHeaderTypeList__gtpc_extensionTypesList_default_coding("RAW"); const TTCN_RAWdescriptor_t ExtensionHeaderTypeList__gtpc_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for ExtensionHeaderTypeList__gtpc const TTCN_Typedescriptor_t ExtensionHeaderTypeList__gtpc_descr_ = { "@GTPC_Types.ExtensionHeaderTypeList_gtpc", NULL, &ExtensionHeaderTypeList__gtpc_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ExtensionHeaderTypeList__gtpc_default_coding("RAW"); const XERdescriptor_t GTP__TriggerID_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int GTP__TriggerID_type__gtpc_oer_ext_arr_[0] = {}; const int GTP__TriggerID_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t GTP__TriggerID_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GTP__TriggerID_type__gtpc_oer_ext_arr_, 0, GTP__TriggerID_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t GTP__TriggerID_type__gtpc_descr_ = { "@GTPC_Types.GTP_TriggerID.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, >P__TriggerID_type__gtpc_xer_, &OCTETSTRING_json_, >P__TriggerID_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GTP__TriggerID_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t GTP__TriggerID_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t GTP__TriggerID_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t GTP__TriggerID_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t GTP__TriggerID_lengthf_descr_ = { "@GTPC_Types.GTP_TriggerID.lengthf", &INTEGER_ber_, >P__TriggerID_lengthf_raw_, &INTEGER_text_, >P__TriggerID_lengthf_xer_, &INTEGER_json_, >P__TriggerID_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GTP__TriggerID_lengthf_default_coding("RAW"); const XERdescriptor_t GTP__TriggerID_triggerID_xer_ = { {"triggerID>\n", "triggerID>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int GTP__TriggerID_triggerID_oer_ext_arr_[0] = {}; const int GTP__TriggerID_triggerID_oer_p_[0] = {}; const TTCN_OERdescriptor_t GTP__TriggerID_triggerID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GTP__TriggerID_triggerID_oer_ext_arr_, 0, GTP__TriggerID_triggerID_oer_p_}; const TTCN_Typedescriptor_t GTP__TriggerID_triggerID_descr_ = { "@GTPC_Types.GTP_TriggerID.triggerID", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, >P__TriggerID_triggerID_xer_, &OCTETSTRING_json_, >P__TriggerID_triggerID_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GTP__TriggerID_triggerID_default_coding("RAW"); const TTCN_RAWdescriptor_t GTP__TriggerID_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for GTP__TriggerID const TTCN_Typedescriptor_t GTP__TriggerID_descr_ = { "@GTPC_Types.GTP_TriggerID", NULL, >P__TriggerID_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GTP__TriggerID_default_coding("RAW"); const XERdescriptor_t OMCIdentity_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int OMCIdentity_type__gtpc_oer_ext_arr_[0] = {}; const int OMCIdentity_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t OMCIdentity_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, OMCIdentity_type__gtpc_oer_ext_arr_, 0, OMCIdentity_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t OMCIdentity_type__gtpc_descr_ = { "@GTPC_Types.OMCIdentity.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &OMCIdentity_type__gtpc_xer_, &OCTETSTRING_json_, &OMCIdentity_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING OMCIdentity_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t OMCIdentity_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t OMCIdentity_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t OMCIdentity_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t OMCIdentity_lengthf_descr_ = { "@GTPC_Types.OMCIdentity.lengthf", &INTEGER_ber_, &OMCIdentity_lengthf_raw_, &INTEGER_text_, &OMCIdentity_lengthf_xer_, &INTEGER_json_, &OMCIdentity_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING OMCIdentity_lengthf_default_coding("RAW"); const XERdescriptor_t OMCIdentity_omcID_xer_ = { {"omcID>\n", "omcID>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int OMCIdentity_omcID_oer_ext_arr_[0] = {}; const int OMCIdentity_omcID_oer_p_[0] = {}; const TTCN_OERdescriptor_t OMCIdentity_omcID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, OMCIdentity_omcID_oer_ext_arr_, 0, OMCIdentity_omcID_oer_p_}; const TTCN_Typedescriptor_t OMCIdentity_omcID_descr_ = { "@GTPC_Types.OMCIdentity.omcID", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &OMCIdentity_omcID_xer_, &OCTETSTRING_json_, &OMCIdentity_omcID_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING OMCIdentity_omcID_default_coding("RAW"); const TTCN_RAWdescriptor_t OMCIdentity_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for OMCIdentity const TTCN_Typedescriptor_t OMCIdentity_descr_ = { "@GTPC_Types.OMCIdentity", NULL, &OMCIdentity_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING OMCIdentity_default_coding("RAW"); const TTCN_RAWdescriptor_t LIN2__2a__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for LIN2__2a__GTPC const TTCN_Typedescriptor_t LIN2__2a__GTPC_descr_ = { "@GTPC_Types.LIN2_2a_GTPC", NULL, &LIN2__2a__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const TTCN_RAWdescriptor_t LIN2__2a__GTPC_length1_raw_ = {7,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t LIN2__2a__GTPC_length1_xer_ = { {"length1>\n", "length1>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t LIN2__2a__GTPC_length1_descr_ = { "@GTPC_Types.LIN2_2a_GTPC.length1", &INTEGER_ber_, &LIN2__2a__GTPC_length1_raw_, &INTEGER_text_, &LIN2__2a__GTPC_length1_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LIN2__2a__GTPC_length1_default_coding("RAW"); const TTCN_RAWdescriptor_t LIN2__2a__GTPC_length2_raw_ = {15,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t LIN2__2a__GTPC_length2_xer_ = { {"length2>\n", "length2>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t LIN2__2a__GTPC_length2_descr_ = { "@GTPC_Types.LIN2_2a_GTPC.length2", &INTEGER_ber_, &LIN2__2a__GTPC_length2_raw_, &INTEGER_text_, &LIN2__2a__GTPC_length2_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LIN2__2a__GTPC_length2_default_coding("RAW"); UNIVERSAL_CHARSTRING LIN2__2a__GTPC_default_coding("RAW"); const XERdescriptor_t PDU__in__Error__GTPC_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PDU__in__Error__GTPC_iEI_oer_ext_arr_[0] = {}; const int PDU__in__Error__GTPC_iEI_oer_p_[0] = {}; const TTCN_OERdescriptor_t PDU__in__Error__GTPC_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__in__Error__GTPC_iEI_oer_ext_arr_, 0, PDU__in__Error__GTPC_iEI_oer_p_}; const TTCN_Typedescriptor_t PDU__in__Error__GTPC_iEI_descr_ = { "@GTPC_Types.PDU_in_Error_GTPC.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__in__Error__GTPC_iEI_xer_, &OCTETSTRING_json_, &PDU__in__Error__GTPC_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__in__Error__GTPC_iEI_default_coding("RAW"); const TTCN_RAWdescriptor_t PDU__in__Error__GTPC_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t PDU__in__Error__GTPC_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t PDU__in__Error__GTPC_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t PDU__in__Error__GTPC_ext_descr_ = { "@GTPC_Types.PDU_in_Error_GTPC.ext", &BITSTRING_ber_, &PDU__in__Error__GTPC_ext_raw_, NULL, &PDU__in__Error__GTPC_ext_xer_, &BITSTRING_json_, &PDU__in__Error__GTPC_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__in__Error__GTPC_ext_default_coding("RAW"); const TTCN_RAWdescriptor_t PDU__in__Error__GTPC_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for PDU__in__Error__GTPC_lengthIndicator const TTCN_Typedescriptor_t PDU__in__Error__GTPC_lengthIndicator_descr_ = { "@GTPC_Types.PDU_in_Error_GTPC.lengthIndicator", NULL, &PDU__in__Error__GTPC_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__in__Error__GTPC_lengthIndicator_default_coding("RAW"); const XERdescriptor_t PDU__in__Error__GTPC_erroneous__BSSGP__PDU_xer_ = { {"erroneous_BSSGP_PDU>\n", "erroneous_BSSGP_PDU>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PDU__in__Error__GTPC_erroneous__BSSGP__PDU_oer_ext_arr_[0] = {}; const int PDU__in__Error__GTPC_erroneous__BSSGP__PDU_oer_p_[0] = {}; const TTCN_OERdescriptor_t PDU__in__Error__GTPC_erroneous__BSSGP__PDU_oer_ = { -1, TRUE, -1, FALSE, 0, 0, PDU__in__Error__GTPC_erroneous__BSSGP__PDU_oer_ext_arr_, 0, PDU__in__Error__GTPC_erroneous__BSSGP__PDU_oer_p_}; const TTCN_Typedescriptor_t PDU__in__Error__GTPC_erroneous__BSSGP__PDU_descr_ = { "@GTPC_Types.PDU_in_Error_GTPC.erroneous_BSSGP_PDU", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &PDU__in__Error__GTPC_erroneous__BSSGP__PDU_xer_, &OCTETSTRING_json_, &PDU__in__Error__GTPC_erroneous__BSSGP__PDU_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__in__Error__GTPC_erroneous__BSSGP__PDU_default_coding("RAW"); const TTCN_RAWdescriptor_t PDU__in__Error__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for PDU__in__Error__GTPC const TTCN_Typedescriptor_t PDU__in__Error__GTPC_descr_ = { "@GTPC_Types.PDU_in_Error_GTPC", NULL, &PDU__in__Error__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__in__Error__GTPC_default_coding("RAW"); const XERdescriptor_t Cause__BSSGP__GTPC_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int Cause__BSSGP__GTPC_iEI_oer_ext_arr_[0] = {}; const int Cause__BSSGP__GTPC_iEI_oer_p_[0] = {}; const TTCN_OERdescriptor_t Cause__BSSGP__GTPC_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Cause__BSSGP__GTPC_iEI_oer_ext_arr_, 0, Cause__BSSGP__GTPC_iEI_oer_p_}; const TTCN_Typedescriptor_t Cause__BSSGP__GTPC_iEI_descr_ = { "@GTPC_Types.Cause_BSSGP_GTPC.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Cause__BSSGP__GTPC_iEI_xer_, &OCTETSTRING_json_, &Cause__BSSGP__GTPC_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Cause__BSSGP__GTPC_iEI_default_coding("RAW"); const TTCN_RAWdescriptor_t Cause__BSSGP__GTPC_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t Cause__BSSGP__GTPC_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t Cause__BSSGP__GTPC_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t Cause__BSSGP__GTPC_ext_descr_ = { "@GTPC_Types.Cause_BSSGP_GTPC.ext", &BITSTRING_ber_, &Cause__BSSGP__GTPC_ext_raw_, NULL, &Cause__BSSGP__GTPC_ext_xer_, &BITSTRING_json_, &Cause__BSSGP__GTPC_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Cause__BSSGP__GTPC_ext_default_coding("RAW"); const TTCN_RAWdescriptor_t Cause__BSSGP__GTPC_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for Cause__BSSGP__GTPC_lengthIndicator const TTCN_Typedescriptor_t Cause__BSSGP__GTPC_lengthIndicator_descr_ = { "@GTPC_Types.Cause_BSSGP_GTPC.lengthIndicator", NULL, &Cause__BSSGP__GTPC_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Cause__BSSGP__GTPC_lengthIndicator_default_coding("RAW"); const XERdescriptor_t Cause__BSSGP__GTPC_cause__Value_xer_ = { {"cause_Value>\n", "cause_Value>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int Cause__BSSGP__GTPC_cause__Value_oer_ext_arr_[0] = {}; const int Cause__BSSGP__GTPC_cause__Value_oer_p_[0] = {}; const TTCN_OERdescriptor_t Cause__BSSGP__GTPC_cause__Value_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Cause__BSSGP__GTPC_cause__Value_oer_ext_arr_, 0, Cause__BSSGP__GTPC_cause__Value_oer_p_}; const TTCN_Typedescriptor_t Cause__BSSGP__GTPC_cause__Value_descr_ = { "@GTPC_Types.Cause_BSSGP_GTPC.cause_Value", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Cause__BSSGP__GTPC_cause__Value_xer_, &OCTETSTRING_json_, &Cause__BSSGP__GTPC_cause__Value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Cause__BSSGP__GTPC_cause__Value_default_coding("RAW"); const TTCN_RAWdescriptor_t Cause__BSSGP__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for Cause__BSSGP__GTPC const TTCN_Typedescriptor_t Cause__BSSGP__GTPC_descr_ = { "@GTPC_Types.Cause_BSSGP_GTPC", NULL, &Cause__BSSGP__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Cause__BSSGP__GTPC_default_coding("RAW"); const XERdescriptor_t RIM__Application__Identity__GTPC_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RIM__Application__Identity__GTPC_iEI_oer_ext_arr_[0] = {}; const int RIM__Application__Identity__GTPC_iEI_oer_p_[0] = {}; const TTCN_OERdescriptor_t RIM__Application__Identity__GTPC_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RIM__Application__Identity__GTPC_iEI_oer_ext_arr_, 0, RIM__Application__Identity__GTPC_iEI_oer_p_}; const TTCN_Typedescriptor_t RIM__Application__Identity__GTPC_iEI_descr_ = { "@GTPC_Types.RIM_Application_Identity_GTPC.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RIM__Application__Identity__GTPC_iEI_xer_, &OCTETSTRING_json_, &RIM__Application__Identity__GTPC_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__Application__Identity__GTPC_iEI_default_coding("RAW"); const TTCN_RAWdescriptor_t RIM__Application__Identity__GTPC_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t RIM__Application__Identity__GTPC_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RIM__Application__Identity__GTPC_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RIM__Application__Identity__GTPC_ext_descr_ = { "@GTPC_Types.RIM_Application_Identity_GTPC.ext", &BITSTRING_ber_, &RIM__Application__Identity__GTPC_ext_raw_, NULL, &RIM__Application__Identity__GTPC_ext_xer_, &BITSTRING_json_, &RIM__Application__Identity__GTPC_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__Application__Identity__GTPC_ext_default_coding("RAW"); const TTCN_RAWdescriptor_t RIM__Application__Identity__GTPC_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RIM__Application__Identity__GTPC_lengthIndicator const TTCN_Typedescriptor_t RIM__Application__Identity__GTPC_lengthIndicator_descr_ = { "@GTPC_Types.RIM_Application_Identity_GTPC.lengthIndicator", NULL, &RIM__Application__Identity__GTPC_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__Application__Identity__GTPC_lengthIndicator_default_coding("RAW"); const XERdescriptor_t RIM__Application__Identity__GTPC_rIMApplicationIdentity_xer_ = { {"rIMApplicationIdentity>\n", "rIMApplicationIdentity>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RIM__Application__Identity__GTPC_rIMApplicationIdentity_oer_ext_arr_[0] = {}; const int RIM__Application__Identity__GTPC_rIMApplicationIdentity_oer_p_[0] = {}; const TTCN_OERdescriptor_t RIM__Application__Identity__GTPC_rIMApplicationIdentity_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RIM__Application__Identity__GTPC_rIMApplicationIdentity_oer_ext_arr_, 0, RIM__Application__Identity__GTPC_rIMApplicationIdentity_oer_p_}; const TTCN_Typedescriptor_t RIM__Application__Identity__GTPC_rIMApplicationIdentity_descr_ = { "@GTPC_Types.RIM_Application_Identity_GTPC.rIMApplicationIdentity", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RIM__Application__Identity__GTPC_rIMApplicationIdentity_xer_, &OCTETSTRING_json_, &RIM__Application__Identity__GTPC_rIMApplicationIdentity_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__Application__Identity__GTPC_rIMApplicationIdentity_default_coding("RAW"); const TTCN_RAWdescriptor_t RIM__Application__Identity__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RIM__Application__Identity__GTPC const TTCN_Typedescriptor_t RIM__Application__Identity__GTPC_descr_ = { "@GTPC_Types.RIM_Application_Identity_GTPC", NULL, &RIM__Application__Identity__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__Application__Identity__GTPC_default_coding("RAW"); const XERdescriptor_t RIM__Sequence__Number__GTPC_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RIM__Sequence__Number__GTPC_iEI_oer_ext_arr_[0] = {}; const int RIM__Sequence__Number__GTPC_iEI_oer_p_[0] = {}; const TTCN_OERdescriptor_t RIM__Sequence__Number__GTPC_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RIM__Sequence__Number__GTPC_iEI_oer_ext_arr_, 0, RIM__Sequence__Number__GTPC_iEI_oer_p_}; const TTCN_Typedescriptor_t RIM__Sequence__Number__GTPC_iEI_descr_ = { "@GTPC_Types.RIM_Sequence_Number_GTPC.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RIM__Sequence__Number__GTPC_iEI_xer_, &OCTETSTRING_json_, &RIM__Sequence__Number__GTPC_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__Sequence__Number__GTPC_iEI_default_coding("RAW"); const TTCN_RAWdescriptor_t RIM__Sequence__Number__GTPC_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t RIM__Sequence__Number__GTPC_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RIM__Sequence__Number__GTPC_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RIM__Sequence__Number__GTPC_ext_descr_ = { "@GTPC_Types.RIM_Sequence_Number_GTPC.ext", &BITSTRING_ber_, &RIM__Sequence__Number__GTPC_ext_raw_, NULL, &RIM__Sequence__Number__GTPC_ext_xer_, &BITSTRING_json_, &RIM__Sequence__Number__GTPC_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__Sequence__Number__GTPC_ext_default_coding("RAW"); const TTCN_RAWdescriptor_t RIM__Sequence__Number__GTPC_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RIM__Sequence__Number__GTPC_lengthIndicator const TTCN_Typedescriptor_t RIM__Sequence__Number__GTPC_lengthIndicator_descr_ = { "@GTPC_Types.RIM_Sequence_Number_GTPC.lengthIndicator", NULL, &RIM__Sequence__Number__GTPC_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__Sequence__Number__GTPC_lengthIndicator_default_coding("RAW"); const XERdescriptor_t RIM__Sequence__Number__GTPC_rIMSequenceNumber_xer_ = { {"rIMSequenceNumber>\n", "rIMSequenceNumber>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RIM__Sequence__Number__GTPC_rIMSequenceNumber_oer_ext_arr_[0] = {}; const int RIM__Sequence__Number__GTPC_rIMSequenceNumber_oer_p_[0] = {}; const TTCN_OERdescriptor_t RIM__Sequence__Number__GTPC_rIMSequenceNumber_oer_ = { -1, TRUE, 4, FALSE, 0, 0, RIM__Sequence__Number__GTPC_rIMSequenceNumber_oer_ext_arr_, 0, RIM__Sequence__Number__GTPC_rIMSequenceNumber_oer_p_}; const TTCN_Typedescriptor_t RIM__Sequence__Number__GTPC_rIMSequenceNumber_descr_ = { "@GTPC_Types.RIM_Sequence_Number_GTPC.rIMSequenceNumber", &OCTETSTRING_ber_, &General__Types::OCT4_raw_, &OCTETSTRING_text_, &RIM__Sequence__Number__GTPC_rIMSequenceNumber_xer_, &OCTETSTRING_json_, &RIM__Sequence__Number__GTPC_rIMSequenceNumber_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__Sequence__Number__GTPC_rIMSequenceNumber_default_coding("RAW"); const TTCN_RAWdescriptor_t RIM__Sequence__Number__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RIM__Sequence__Number__GTPC const TTCN_Typedescriptor_t RIM__Sequence__Number__GTPC_descr_ = { "@GTPC_Types.RIM_Sequence_Number_GTPC", NULL, &RIM__Sequence__Number__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__Sequence__Number__GTPC_default_coding("RAW"); const XERdescriptor_t RAN__Information__Request__RIM__Container__GTPC_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RAN__Information__Request__RIM__Container__GTPC_iEI_oer_ext_arr_[0] = {}; const int RAN__Information__Request__RIM__Container__GTPC_iEI_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAN__Information__Request__RIM__Container__GTPC_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RAN__Information__Request__RIM__Container__GTPC_iEI_oer_ext_arr_, 0, RAN__Information__Request__RIM__Container__GTPC_iEI_oer_p_}; const TTCN_Typedescriptor_t RAN__Information__Request__RIM__Container__GTPC_iEI_descr_ = { "@GTPC_Types.RAN_Information_Request_RIM_Container_GTPC.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RAN__Information__Request__RIM__Container__GTPC_iEI_xer_, &OCTETSTRING_json_, &RAN__Information__Request__RIM__Container__GTPC_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Request__RIM__Container__GTPC_iEI_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Request__RIM__Container__GTPC_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t RAN__Information__Request__RIM__Container__GTPC_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RAN__Information__Request__RIM__Container__GTPC_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RAN__Information__Request__RIM__Container__GTPC_ext_descr_ = { "@GTPC_Types.RAN_Information_Request_RIM_Container_GTPC.ext", &BITSTRING_ber_, &RAN__Information__Request__RIM__Container__GTPC_ext_raw_, NULL, &RAN__Information__Request__RIM__Container__GTPC_ext_xer_, &BITSTRING_json_, &RAN__Information__Request__RIM__Container__GTPC_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Request__RIM__Container__GTPC_ext_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Request__RIM__Container__GTPC_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__Request__RIM__Container__GTPC_lengthIndicator const TTCN_Typedescriptor_t RAN__Information__Request__RIM__Container__GTPC_lengthIndicator_descr_ = { "@GTPC_Types.RAN_Information_Request_RIM_Container_GTPC.lengthIndicator", NULL, &RAN__Information__Request__RIM__Container__GTPC_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Request__RIM__Container__GTPC_lengthIndicator_default_coding("RAW"); UNIVERSAL_CHARSTRING RAN__Information__Request__RIM__Container__GTPC_rIM__Application__Identity_default_coding("RAW"); UNIVERSAL_CHARSTRING RAN__Information__Request__RIM__Container__GTPC_rIM__Sequence__Number_default_coding("RAW"); const XERdescriptor_t RIM__PDU__Indications__GTPC_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RIM__PDU__Indications__GTPC_iEI_oer_ext_arr_[0] = {}; const int RIM__PDU__Indications__GTPC_iEI_oer_p_[0] = {}; const TTCN_OERdescriptor_t RIM__PDU__Indications__GTPC_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RIM__PDU__Indications__GTPC_iEI_oer_ext_arr_, 0, RIM__PDU__Indications__GTPC_iEI_oer_p_}; const TTCN_Typedescriptor_t RIM__PDU__Indications__GTPC_iEI_descr_ = { "@GTPC_Types.RIM_PDU_Indications_GTPC.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RIM__PDU__Indications__GTPC_iEI_xer_, &OCTETSTRING_json_, &RIM__PDU__Indications__GTPC_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__PDU__Indications__GTPC_iEI_default_coding("RAW"); const TTCN_RAWdescriptor_t RIM__PDU__Indications__GTPC_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t RIM__PDU__Indications__GTPC_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RIM__PDU__Indications__GTPC_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RIM__PDU__Indications__GTPC_ext_descr_ = { "@GTPC_Types.RIM_PDU_Indications_GTPC.ext", &BITSTRING_ber_, &RIM__PDU__Indications__GTPC_ext_raw_, NULL, &RIM__PDU__Indications__GTPC_ext_xer_, &BITSTRING_json_, &RIM__PDU__Indications__GTPC_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__PDU__Indications__GTPC_ext_default_coding("RAW"); const TTCN_RAWdescriptor_t RIM__PDU__Indications__GTPC_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RIM__PDU__Indications__GTPC_lengthIndicator const TTCN_Typedescriptor_t RIM__PDU__Indications__GTPC_lengthIndicator_descr_ = { "@GTPC_Types.RIM_PDU_Indications_GTPC.lengthIndicator", NULL, &RIM__PDU__Indications__GTPC_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__PDU__Indications__GTPC_lengthIndicator_default_coding("RAW"); const XERdescriptor_t RIM__PDU__Indications__GTPC_ack_xer_ = { {"ack>\n", "ack>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RIM__PDU__Indications__GTPC_ack_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RIM__PDU__Indications__GTPC_ack_descr_ = { "@GTPC_Types.RIM_PDU_Indications_GTPC.ack", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &RIM__PDU__Indications__GTPC_ack_xer_, &BITSTRING_json_, &RIM__PDU__Indications__GTPC_ack_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__PDU__Indications__GTPC_ack_default_coding("RAW"); const XERdescriptor_t RIM__PDU__Indications__GTPC_pDU__Type__Extension_xer_ = { {"pDU_Type_Extension>\n", "pDU_Type_Extension>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RIM__PDU__Indications__GTPC_pDU__Type__Extension_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RIM__PDU__Indications__GTPC_pDU__Type__Extension_descr_ = { "@GTPC_Types.RIM_PDU_Indications_GTPC.pDU_Type_Extension", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &RIM__PDU__Indications__GTPC_pDU__Type__Extension_xer_, &BITSTRING_json_, &RIM__PDU__Indications__GTPC_pDU__Type__Extension_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__PDU__Indications__GTPC_pDU__Type__Extension_default_coding("RAW"); const XERdescriptor_t RIM__PDU__Indications__GTPC_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 RIM__PDU__Indications__GTPC_reserved_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RIM__PDU__Indications__GTPC_reserved_descr_ = { "@GTPC_Types.RIM_PDU_Indications_GTPC.reserved", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &RIM__PDU__Indications__GTPC_reserved_xer_, &BITSTRING_json_, &RIM__PDU__Indications__GTPC_reserved_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__PDU__Indications__GTPC_reserved_default_coding("RAW"); const TTCN_RAWdescriptor_t RIM__PDU__Indications__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RIM__PDU__Indications__GTPC const TTCN_Typedescriptor_t RIM__PDU__Indications__GTPC_descr_ = { "@GTPC_Types.RIM_PDU_Indications_GTPC", NULL, &RIM__PDU__Indications__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__PDU__Indications__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING RAN__Information__Request__RIM__Container__GTPC_rIM__PDU__Indications_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Request__RIM__Container__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__Request__RIM__Container__GTPC const TTCN_Typedescriptor_t RAN__Information__Request__RIM__Container__GTPC_descr_ = { "@GTPC_Types.RAN_Information_Request_RIM_Container_GTPC", NULL, &RAN__Information__Request__RIM__Container__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t RIM__Protocol__Version__Number__GTPC_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RIM__Protocol__Version__Number__GTPC_iEI_oer_ext_arr_[0] = {}; const int RIM__Protocol__Version__Number__GTPC_iEI_oer_p_[0] = {}; const TTCN_OERdescriptor_t RIM__Protocol__Version__Number__GTPC_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RIM__Protocol__Version__Number__GTPC_iEI_oer_ext_arr_, 0, RIM__Protocol__Version__Number__GTPC_iEI_oer_p_}; const TTCN_Typedescriptor_t RIM__Protocol__Version__Number__GTPC_iEI_descr_ = { "@GTPC_Types.RIM_Protocol_Version_Number_GTPC.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RIM__Protocol__Version__Number__GTPC_iEI_xer_, &OCTETSTRING_json_, &RIM__Protocol__Version__Number__GTPC_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__Protocol__Version__Number__GTPC_iEI_default_coding("RAW"); const TTCN_RAWdescriptor_t RIM__Protocol__Version__Number__GTPC_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t RIM__Protocol__Version__Number__GTPC_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RIM__Protocol__Version__Number__GTPC_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RIM__Protocol__Version__Number__GTPC_ext_descr_ = { "@GTPC_Types.RIM_Protocol_Version_Number_GTPC.ext", &BITSTRING_ber_, &RIM__Protocol__Version__Number__GTPC_ext_raw_, NULL, &RIM__Protocol__Version__Number__GTPC_ext_xer_, &BITSTRING_json_, &RIM__Protocol__Version__Number__GTPC_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__Protocol__Version__Number__GTPC_ext_default_coding("RAW"); const TTCN_RAWdescriptor_t RIM__Protocol__Version__Number__GTPC_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RIM__Protocol__Version__Number__GTPC_lengthIndicator const TTCN_Typedescriptor_t RIM__Protocol__Version__Number__GTPC_lengthIndicator_descr_ = { "@GTPC_Types.RIM_Protocol_Version_Number_GTPC.lengthIndicator", NULL, &RIM__Protocol__Version__Number__GTPC_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__Protocol__Version__Number__GTPC_lengthIndicator_default_coding("RAW"); const XERdescriptor_t RIM__Protocol__Version__Number__GTPC_rIMProtocolVersionNumber_xer_ = { {"rIMProtocolVersionNumber>\n", "rIMProtocolVersionNumber>\n"}, {26, 26}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RIM__Protocol__Version__Number__GTPC_rIMProtocolVersionNumber_oer_ext_arr_[0] = {}; const int RIM__Protocol__Version__Number__GTPC_rIMProtocolVersionNumber_oer_p_[0] = {}; const TTCN_OERdescriptor_t RIM__Protocol__Version__Number__GTPC_rIMProtocolVersionNumber_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RIM__Protocol__Version__Number__GTPC_rIMProtocolVersionNumber_oer_ext_arr_, 0, RIM__Protocol__Version__Number__GTPC_rIMProtocolVersionNumber_oer_p_}; const TTCN_Typedescriptor_t RIM__Protocol__Version__Number__GTPC_rIMProtocolVersionNumber_descr_ = { "@GTPC_Types.RIM_Protocol_Version_Number_GTPC.rIMProtocolVersionNumber", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RIM__Protocol__Version__Number__GTPC_rIMProtocolVersionNumber_xer_, &OCTETSTRING_json_, &RIM__Protocol__Version__Number__GTPC_rIMProtocolVersionNumber_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__Protocol__Version__Number__GTPC_rIMProtocolVersionNumber_default_coding("RAW"); const TTCN_RAWdescriptor_t RIM__Protocol__Version__Number__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RIM__Protocol__Version__Number__GTPC const TTCN_Typedescriptor_t RIM__Protocol__Version__Number__GTPC_descr_ = { "@GTPC_Types.RIM_Protocol_Version_Number_GTPC", NULL, &RIM__Protocol__Version__Number__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__Protocol__Version__Number__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING RAN__Information__Request__RIM__Container__GTPC_rIM__Protocol__Version__Number_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Request__Application__Container__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__Request__Application__Container__GTPC const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__GTPC_descr_ = { "@GTPC_Types.RAN_Information_Request_Application_Container_GTPC", NULL, &RAN__Information__Request__Application__Container__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t RAN__Information__Request__Application__Container__NACC__GTPC_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RAN__Information__Request__Application__Container__NACC__GTPC_iEI_oer_ext_arr_[0] = {}; const int RAN__Information__Request__Application__Container__NACC__GTPC_iEI_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAN__Information__Request__Application__Container__NACC__GTPC_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RAN__Information__Request__Application__Container__NACC__GTPC_iEI_oer_ext_arr_, 0, RAN__Information__Request__Application__Container__NACC__GTPC_iEI_oer_p_}; const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__NACC__GTPC_iEI_descr_ = { "@GTPC_Types.RAN_Information_Request_Application_Container_NACC_GTPC.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RAN__Information__Request__Application__Container__NACC__GTPC_iEI_xer_, &OCTETSTRING_json_, &RAN__Information__Request__Application__Container__NACC__GTPC_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__NACC__GTPC_iEI_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Request__Application__Container__NACC__GTPC_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t RAN__Information__Request__Application__Container__NACC__GTPC_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RAN__Information__Request__Application__Container__NACC__GTPC_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__NACC__GTPC_ext_descr_ = { "@GTPC_Types.RAN_Information_Request_Application_Container_NACC_GTPC.ext", &BITSTRING_ber_, &RAN__Information__Request__Application__Container__NACC__GTPC_ext_raw_, NULL, &RAN__Information__Request__Application__Container__NACC__GTPC_ext_xer_, &BITSTRING_json_, &RAN__Information__Request__Application__Container__NACC__GTPC_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__NACC__GTPC_ext_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Request__Application__Container__NACC__GTPC_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__Request__Application__Container__NACC__GTPC_lengthIndicator const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__NACC__GTPC_lengthIndicator_descr_ = { "@GTPC_Types.RAN_Information_Request_Application_Container_NACC_GTPC.lengthIndicator", NULL, &RAN__Information__Request__Application__Container__NACC__GTPC_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__NACC__GTPC_lengthIndicator_default_coding("RAW"); const XERdescriptor_t Cell__Identifier__V__GTPC_mccDigit1_xer_ = { {"mccDigit1>\n", "mccDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t Cell__Identifier__V__GTPC_mccDigit1_descr_ = { "@GTPC_Types.Cell_Identifier_V_GTPC.mccDigit1", NULL, &General__Types::HEX1_raw_, NULL, &Cell__Identifier__V__GTPC_mccDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Cell__Identifier__V__GTPC_mccDigit1_default_coding("RAW"); const XERdescriptor_t Cell__Identifier__V__GTPC_mccDigit2_xer_ = { {"mccDigit2>\n", "mccDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t Cell__Identifier__V__GTPC_mccDigit2_descr_ = { "@GTPC_Types.Cell_Identifier_V_GTPC.mccDigit2", NULL, &General__Types::HEX1_raw_, NULL, &Cell__Identifier__V__GTPC_mccDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Cell__Identifier__V__GTPC_mccDigit2_default_coding("RAW"); const XERdescriptor_t Cell__Identifier__V__GTPC_mccDigit3_xer_ = { {"mccDigit3>\n", "mccDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t Cell__Identifier__V__GTPC_mccDigit3_descr_ = { "@GTPC_Types.Cell_Identifier_V_GTPC.mccDigit3", NULL, &General__Types::HEX1_raw_, NULL, &Cell__Identifier__V__GTPC_mccDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Cell__Identifier__V__GTPC_mccDigit3_default_coding("RAW"); const XERdescriptor_t Cell__Identifier__V__GTPC_mncDigit3_xer_ = { {"mncDigit3>\n", "mncDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t Cell__Identifier__V__GTPC_mncDigit3_descr_ = { "@GTPC_Types.Cell_Identifier_V_GTPC.mncDigit3", NULL, &General__Types::HEX1_raw_, NULL, &Cell__Identifier__V__GTPC_mncDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Cell__Identifier__V__GTPC_mncDigit3_default_coding("RAW"); const XERdescriptor_t Cell__Identifier__V__GTPC_mncDigit1_xer_ = { {"mncDigit1>\n", "mncDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t Cell__Identifier__V__GTPC_mncDigit1_descr_ = { "@GTPC_Types.Cell_Identifier_V_GTPC.mncDigit1", NULL, &General__Types::HEX1_raw_, NULL, &Cell__Identifier__V__GTPC_mncDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Cell__Identifier__V__GTPC_mncDigit1_default_coding("RAW"); const XERdescriptor_t Cell__Identifier__V__GTPC_mncDigit2_xer_ = { {"mncDigit2>\n", "mncDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t Cell__Identifier__V__GTPC_mncDigit2_descr_ = { "@GTPC_Types.Cell_Identifier_V_GTPC.mncDigit2", NULL, &General__Types::HEX1_raw_, NULL, &Cell__Identifier__V__GTPC_mncDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Cell__Identifier__V__GTPC_mncDigit2_default_coding("RAW"); const XERdescriptor_t Cell__Identifier__V__GTPC_lac_xer_ = { {"lac>\n", "lac>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int Cell__Identifier__V__GTPC_lac_oer_ext_arr_[0] = {}; const int Cell__Identifier__V__GTPC_lac_oer_p_[0] = {}; const TTCN_OERdescriptor_t Cell__Identifier__V__GTPC_lac_oer_ = { -1, TRUE, 2, FALSE, 0, 0, Cell__Identifier__V__GTPC_lac_oer_ext_arr_, 0, Cell__Identifier__V__GTPC_lac_oer_p_}; const TTCN_Typedescriptor_t Cell__Identifier__V__GTPC_lac_descr_ = { "@GTPC_Types.Cell_Identifier_V_GTPC.lac", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &Cell__Identifier__V__GTPC_lac_xer_, &OCTETSTRING_json_, &Cell__Identifier__V__GTPC_lac_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Cell__Identifier__V__GTPC_lac_default_coding("RAW"); const XERdescriptor_t Cell__Identifier__V__GTPC_rac_xer_ = { {"rac>\n", "rac>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int Cell__Identifier__V__GTPC_rac_oer_ext_arr_[0] = {}; const int Cell__Identifier__V__GTPC_rac_oer_p_[0] = {}; const TTCN_OERdescriptor_t Cell__Identifier__V__GTPC_rac_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Cell__Identifier__V__GTPC_rac_oer_ext_arr_, 0, Cell__Identifier__V__GTPC_rac_oer_p_}; const TTCN_Typedescriptor_t Cell__Identifier__V__GTPC_rac_descr_ = { "@GTPC_Types.Cell_Identifier_V_GTPC.rac", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Cell__Identifier__V__GTPC_rac_xer_, &OCTETSTRING_json_, &Cell__Identifier__V__GTPC_rac_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Cell__Identifier__V__GTPC_rac_default_coding("RAW"); const XERdescriptor_t Cell__Identifier__V__GTPC_cI__value_xer_ = { {"cI_value>\n", "cI_value>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int Cell__Identifier__V__GTPC_cI__value_oer_ext_arr_[0] = {}; const int Cell__Identifier__V__GTPC_cI__value_oer_p_[0] = {}; const TTCN_OERdescriptor_t Cell__Identifier__V__GTPC_cI__value_oer_ = { -1, TRUE, 2, FALSE, 0, 0, Cell__Identifier__V__GTPC_cI__value_oer_ext_arr_, 0, Cell__Identifier__V__GTPC_cI__value_oer_p_}; const TTCN_Typedescriptor_t Cell__Identifier__V__GTPC_cI__value_descr_ = { "@GTPC_Types.Cell_Identifier_V_GTPC.cI_value", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &Cell__Identifier__V__GTPC_cI__value_xer_, &OCTETSTRING_json_, &Cell__Identifier__V__GTPC_cI__value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Cell__Identifier__V__GTPC_cI__value_default_coding("RAW"); const TTCN_RAWdescriptor_t Cell__Identifier__V__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for Cell__Identifier__V__GTPC const TTCN_Typedescriptor_t Cell__Identifier__V__GTPC_descr_ = { "@GTPC_Types.Cell_Identifier_V_GTPC", NULL, &Cell__Identifier__V__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Cell__Identifier__V__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__NACC__GTPC_reporting__Cell__Identifier_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Request__Application__Container__NACC__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__Request__Application__Container__NACC__GTPC const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__NACC__GTPC_descr_ = { "@GTPC_Types.RAN_Information_Request_Application_Container_NACC_GTPC", NULL, &RAN__Information__Request__Application__Container__NACC__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__NACC__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__GTPC_nacc_default_coding("RAW"); const XERdescriptor_t RAN__Information__Request__Application__Container__SI3__GTPC_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RAN__Information__Request__Application__Container__SI3__GTPC_iEI_oer_ext_arr_[0] = {}; const int RAN__Information__Request__Application__Container__SI3__GTPC_iEI_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAN__Information__Request__Application__Container__SI3__GTPC_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RAN__Information__Request__Application__Container__SI3__GTPC_iEI_oer_ext_arr_, 0, RAN__Information__Request__Application__Container__SI3__GTPC_iEI_oer_p_}; const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__SI3__GTPC_iEI_descr_ = { "@GTPC_Types.RAN_Information_Request_Application_Container_SI3_GTPC.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RAN__Information__Request__Application__Container__SI3__GTPC_iEI_xer_, &OCTETSTRING_json_, &RAN__Information__Request__Application__Container__SI3__GTPC_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__SI3__GTPC_iEI_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Request__Application__Container__SI3__GTPC_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t RAN__Information__Request__Application__Container__SI3__GTPC_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RAN__Information__Request__Application__Container__SI3__GTPC_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__SI3__GTPC_ext_descr_ = { "@GTPC_Types.RAN_Information_Request_Application_Container_SI3_GTPC.ext", &BITSTRING_ber_, &RAN__Information__Request__Application__Container__SI3__GTPC_ext_raw_, NULL, &RAN__Information__Request__Application__Container__SI3__GTPC_ext_xer_, &BITSTRING_json_, &RAN__Information__Request__Application__Container__SI3__GTPC_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__SI3__GTPC_ext_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Request__Application__Container__SI3__GTPC_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__Request__Application__Container__SI3__GTPC_lengthIndicator const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__SI3__GTPC_lengthIndicator_descr_ = { "@GTPC_Types.RAN_Information_Request_Application_Container_SI3_GTPC.lengthIndicator", NULL, &RAN__Information__Request__Application__Container__SI3__GTPC_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__SI3__GTPC_lengthIndicator_default_coding("RAW"); UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__SI3__GTPC_reporting__Cell__Identifier_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Request__Application__Container__SI3__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__Request__Application__Container__SI3__GTPC const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__SI3__GTPC_descr_ = { "@GTPC_Types.RAN_Information_Request_Application_Container_SI3_GTPC", NULL, &RAN__Information__Request__Application__Container__SI3__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__SI3__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__GTPC_si3_default_coding("RAW"); const XERdescriptor_t RAN__Information__Request__Application__Container__MBMS__GTPC_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RAN__Information__Request__Application__Container__MBMS__GTPC_iEI_oer_ext_arr_[0] = {}; const int RAN__Information__Request__Application__Container__MBMS__GTPC_iEI_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAN__Information__Request__Application__Container__MBMS__GTPC_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RAN__Information__Request__Application__Container__MBMS__GTPC_iEI_oer_ext_arr_, 0, RAN__Information__Request__Application__Container__MBMS__GTPC_iEI_oer_p_}; const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__MBMS__GTPC_iEI_descr_ = { "@GTPC_Types.RAN_Information_Request_Application_Container_MBMS_GTPC.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RAN__Information__Request__Application__Container__MBMS__GTPC_iEI_xer_, &OCTETSTRING_json_, &RAN__Information__Request__Application__Container__MBMS__GTPC_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__MBMS__GTPC_iEI_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Request__Application__Container__MBMS__GTPC_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t RAN__Information__Request__Application__Container__MBMS__GTPC_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RAN__Information__Request__Application__Container__MBMS__GTPC_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__MBMS__GTPC_ext_descr_ = { "@GTPC_Types.RAN_Information_Request_Application_Container_MBMS_GTPC.ext", &BITSTRING_ber_, &RAN__Information__Request__Application__Container__MBMS__GTPC_ext_raw_, NULL, &RAN__Information__Request__Application__Container__MBMS__GTPC_ext_xer_, &BITSTRING_json_, &RAN__Information__Request__Application__Container__MBMS__GTPC_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__MBMS__GTPC_ext_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Request__Application__Container__MBMS__GTPC_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__Request__Application__Container__MBMS__GTPC_lengthIndicator const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__MBMS__GTPC_lengthIndicator_descr_ = { "@GTPC_Types.RAN_Information_Request_Application_Container_MBMS_GTPC.lengthIndicator", NULL, &RAN__Information__Request__Application__Container__MBMS__GTPC_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__MBMS__GTPC_lengthIndicator_default_coding("RAW"); UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__MBMS__GTPC_reporting__Cell__Identifier_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Request__Application__Container__MBMS__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__Request__Application__Container__MBMS__GTPC const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__MBMS__GTPC_descr_ = { "@GTPC_Types.RAN_Information_Request_Application_Container_MBMS_GTPC", NULL, &RAN__Information__Request__Application__Container__MBMS__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__MBMS__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__GTPC_mBMS_default_coding("RAW"); const XERdescriptor_t RAN__Information__Request__Application__Container__SON__GTPC_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RAN__Information__Request__Application__Container__SON__GTPC_iEI_oer_ext_arr_[0] = {}; const int RAN__Information__Request__Application__Container__SON__GTPC_iEI_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAN__Information__Request__Application__Container__SON__GTPC_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RAN__Information__Request__Application__Container__SON__GTPC_iEI_oer_ext_arr_, 0, RAN__Information__Request__Application__Container__SON__GTPC_iEI_oer_p_}; const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__SON__GTPC_iEI_descr_ = { "@GTPC_Types.RAN_Information_Request_Application_Container_SON_GTPC.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RAN__Information__Request__Application__Container__SON__GTPC_iEI_xer_, &OCTETSTRING_json_, &RAN__Information__Request__Application__Container__SON__GTPC_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__SON__GTPC_iEI_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Request__Application__Container__SON__GTPC_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t RAN__Information__Request__Application__Container__SON__GTPC_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RAN__Information__Request__Application__Container__SON__GTPC_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__SON__GTPC_ext_descr_ = { "@GTPC_Types.RAN_Information_Request_Application_Container_SON_GTPC.ext", &BITSTRING_ber_, &RAN__Information__Request__Application__Container__SON__GTPC_ext_raw_, NULL, &RAN__Information__Request__Application__Container__SON__GTPC_ext_xer_, &BITSTRING_json_, &RAN__Information__Request__Application__Container__SON__GTPC_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__SON__GTPC_ext_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Request__Application__Container__SON__GTPC_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__Request__Application__Container__SON__GTPC_lengthIndicator const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__SON__GTPC_lengthIndicator_descr_ = { "@GTPC_Types.RAN_Information_Request_Application_Container_SON_GTPC.lengthIndicator", NULL, &RAN__Information__Request__Application__Container__SON__GTPC_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__SON__GTPC_lengthIndicator_default_coding("RAW"); UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__SON__GTPC_reporting__Cell__Identifier_default_coding("RAW"); const XERdescriptor_t RAN__Information__Request__Application__Container__SON__GTPC_sON__TransferRequestContainer_xer_ = { {"sON_TransferRequestContainer>\n", "sON_TransferRequestContainer>\n"}, {30, 30}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RAN__Information__Request__Application__Container__SON__GTPC_sON__TransferRequestContainer_oer_ext_arr_[0] = {}; const int RAN__Information__Request__Application__Container__SON__GTPC_sON__TransferRequestContainer_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAN__Information__Request__Application__Container__SON__GTPC_sON__TransferRequestContainer_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RAN__Information__Request__Application__Container__SON__GTPC_sON__TransferRequestContainer_oer_ext_arr_, 0, RAN__Information__Request__Application__Container__SON__GTPC_sON__TransferRequestContainer_oer_p_}; const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__SON__GTPC_sON__TransferRequestContainer_descr_ = { "@GTPC_Types.RAN_Information_Request_Application_Container_SON_GTPC.sON_TransferRequestContainer", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &RAN__Information__Request__Application__Container__SON__GTPC_sON__TransferRequestContainer_xer_, &OCTETSTRING_json_, &RAN__Information__Request__Application__Container__SON__GTPC_sON__TransferRequestContainer_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__SON__GTPC_sON__TransferRequestContainer_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Request__Application__Container__SON__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__Request__Application__Container__SON__GTPC const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__SON__GTPC_descr_ = { "@GTPC_Types.RAN_Information_Request_Application_Container_SON_GTPC", NULL, &RAN__Information__Request__Application__Container__SON__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__SON__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__GTPC_sON_default_coding("RAW"); const XERdescriptor_t RAN__Information__Request__Application__Container__UTRA__SI__GTPC_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RAN__Information__Request__Application__Container__UTRA__SI__GTPC_iEI_oer_ext_arr_[0] = {}; const int RAN__Information__Request__Application__Container__UTRA__SI__GTPC_iEI_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAN__Information__Request__Application__Container__UTRA__SI__GTPC_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RAN__Information__Request__Application__Container__UTRA__SI__GTPC_iEI_oer_ext_arr_, 0, RAN__Information__Request__Application__Container__UTRA__SI__GTPC_iEI_oer_p_}; const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__UTRA__SI__GTPC_iEI_descr_ = { "@GTPC_Types.RAN_Information_Request_Application_Container_UTRA_SI_GTPC.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RAN__Information__Request__Application__Container__UTRA__SI__GTPC_iEI_xer_, &OCTETSTRING_json_, &RAN__Information__Request__Application__Container__UTRA__SI__GTPC_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__UTRA__SI__GTPC_iEI_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Request__Application__Container__UTRA__SI__GTPC_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t RAN__Information__Request__Application__Container__UTRA__SI__GTPC_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RAN__Information__Request__Application__Container__UTRA__SI__GTPC_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__UTRA__SI__GTPC_ext_descr_ = { "@GTPC_Types.RAN_Information_Request_Application_Container_UTRA_SI_GTPC.ext", &BITSTRING_ber_, &RAN__Information__Request__Application__Container__UTRA__SI__GTPC_ext_raw_, NULL, &RAN__Information__Request__Application__Container__UTRA__SI__GTPC_ext_xer_, &BITSTRING_json_, &RAN__Information__Request__Application__Container__UTRA__SI__GTPC_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__UTRA__SI__GTPC_ext_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Request__Application__Container__UTRA__SI__GTPC_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__Request__Application__Container__UTRA__SI__GTPC_lengthIndicator const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__UTRA__SI__GTPC_lengthIndicator_descr_ = { "@GTPC_Types.RAN_Information_Request_Application_Container_UTRA_SI_GTPC.lengthIndicator", NULL, &RAN__Information__Request__Application__Container__UTRA__SI__GTPC_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__UTRA__SI__GTPC_lengthIndicator_default_coding("RAW"); UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__UTRA__SI__GTPC_reporting__Cell__Identifier_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Request__Application__Container__UTRA__SI__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__Request__Application__Container__UTRA__SI__GTPC const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__UTRA__SI__GTPC_descr_ = { "@GTPC_Types.RAN_Information_Request_Application_Container_UTRA_SI_GTPC", NULL, &RAN__Information__Request__Application__Container__UTRA__SI__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__UTRA__SI__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__GTPC_uTRA__SI_default_coding("RAW"); UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__GTPC_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Request__RIM__Container__GTPC_application__Container_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__Request__RIM__Container__GTPC_application__Container const TTCN_Typedescriptor_t RAN__Information__Request__RIM__Container__GTPC_application__Container_descr_ = { "@GTPC_Types.RAN_Information_Request_RIM_Container_GTPC.application_Container", NULL, &RAN__Information__Request__RIM__Container__GTPC_application__Container_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Request__RIM__Container__GTPC_application__Container_default_coding("RAW"); const XERdescriptor_t SON__TransferApplicationIdentity_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int SON__TransferApplicationIdentity_iEI_oer_ext_arr_[0] = {}; const int SON__TransferApplicationIdentity_iEI_oer_p_[0] = {}; const TTCN_OERdescriptor_t SON__TransferApplicationIdentity_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SON__TransferApplicationIdentity_iEI_oer_ext_arr_, 0, SON__TransferApplicationIdentity_iEI_oer_p_}; const TTCN_Typedescriptor_t SON__TransferApplicationIdentity_iEI_descr_ = { "@GTPC_Types.SON_TransferApplicationIdentity.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &SON__TransferApplicationIdentity_iEI_xer_, &OCTETSTRING_json_, &SON__TransferApplicationIdentity_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SON__TransferApplicationIdentity_iEI_default_coding("RAW"); const XERdescriptor_t SON__TransferApplicationIdentity_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t SON__TransferApplicationIdentity_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t SON__TransferApplicationIdentity_ext_descr_ = { "@GTPC_Types.SON_TransferApplicationIdentity.ext", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &SON__TransferApplicationIdentity_ext_xer_, &BITSTRING_json_, &SON__TransferApplicationIdentity_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SON__TransferApplicationIdentity_ext_default_coding("RAW"); UNIVERSAL_CHARSTRING SON__TransferApplicationIdentity_lengthIndicator_default_coding("RAW"); const XERdescriptor_t SON__TransferApplicationIdentity_sON__TransferApplicationIdentityValue_xer_ = { {"sON_TransferApplicationIdentityValue>\n", "sON_TransferApplicationIdentityValue>\n"}, {38, 38}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int SON__TransferApplicationIdentity_sON__TransferApplicationIdentityValue_oer_ext_arr_[0] = {}; const int SON__TransferApplicationIdentity_sON__TransferApplicationIdentityValue_oer_p_[0] = {}; const TTCN_OERdescriptor_t SON__TransferApplicationIdentity_sON__TransferApplicationIdentityValue_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SON__TransferApplicationIdentity_sON__TransferApplicationIdentityValue_oer_ext_arr_, 0, SON__TransferApplicationIdentity_sON__TransferApplicationIdentityValue_oer_p_}; const TTCN_Typedescriptor_t SON__TransferApplicationIdentity_sON__TransferApplicationIdentityValue_descr_ = { "@GTPC_Types.SON_TransferApplicationIdentity.sON_TransferApplicationIdentityValue", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &SON__TransferApplicationIdentity_sON__TransferApplicationIdentityValue_xer_, &OCTETSTRING_json_, &SON__TransferApplicationIdentity_sON__TransferApplicationIdentityValue_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SON__TransferApplicationIdentity_sON__TransferApplicationIdentityValue_default_coding("RAW"); const TTCN_RAWdescriptor_t SON__TransferApplicationIdentity_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for SON__TransferApplicationIdentity const TTCN_Typedescriptor_t SON__TransferApplicationIdentity_descr_ = { "@GTPC_Types.SON_TransferApplicationIdentity", NULL, &SON__TransferApplicationIdentity_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SON__TransferApplicationIdentity_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Request__RIM__Container__GTPC_sON__TransferApplicationIdentity_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__Request__RIM__Container__GTPC_sON__TransferApplicationIdentity const TTCN_Typedescriptor_t RAN__Information__Request__RIM__Container__GTPC_sON__TransferApplicationIdentity_descr_ = { "@GTPC_Types.RAN_Information_Request_RIM_Container_GTPC.sON_TransferApplicationIdentity", NULL, &RAN__Information__Request__RIM__Container__GTPC_sON__TransferApplicationIdentity_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Request__RIM__Container__GTPC_sON__TransferApplicationIdentity_default_coding("RAW"); UNIVERSAL_CHARSTRING RAN__Information__Request__RIM__Container__GTPC_default_coding("RAW"); const XERdescriptor_t RAN__Information__RIM__Container__GTPC_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RAN__Information__RIM__Container__GTPC_iEI_oer_ext_arr_[0] = {}; const int RAN__Information__RIM__Container__GTPC_iEI_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAN__Information__RIM__Container__GTPC_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RAN__Information__RIM__Container__GTPC_iEI_oer_ext_arr_, 0, RAN__Information__RIM__Container__GTPC_iEI_oer_p_}; const TTCN_Typedescriptor_t RAN__Information__RIM__Container__GTPC_iEI_descr_ = { "@GTPC_Types.RAN_Information_RIM_Container_GTPC.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RAN__Information__RIM__Container__GTPC_iEI_xer_, &OCTETSTRING_json_, &RAN__Information__RIM__Container__GTPC_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__RIM__Container__GTPC_iEI_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__RIM__Container__GTPC_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t RAN__Information__RIM__Container__GTPC_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RAN__Information__RIM__Container__GTPC_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RAN__Information__RIM__Container__GTPC_ext_descr_ = { "@GTPC_Types.RAN_Information_RIM_Container_GTPC.ext", &BITSTRING_ber_, &RAN__Information__RIM__Container__GTPC_ext_raw_, NULL, &RAN__Information__RIM__Container__GTPC_ext_xer_, &BITSTRING_json_, &RAN__Information__RIM__Container__GTPC_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__RIM__Container__GTPC_ext_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__RIM__Container__GTPC_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__RIM__Container__GTPC_lengthIndicator const TTCN_Typedescriptor_t RAN__Information__RIM__Container__GTPC_lengthIndicator_descr_ = { "@GTPC_Types.RAN_Information_RIM_Container_GTPC.lengthIndicator", NULL, &RAN__Information__RIM__Container__GTPC_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__RIM__Container__GTPC_lengthIndicator_default_coding("RAW"); UNIVERSAL_CHARSTRING RAN__Information__RIM__Container__GTPC_rIM__Application__Identity_default_coding("RAW"); UNIVERSAL_CHARSTRING RAN__Information__RIM__Container__GTPC_rIM__Sequence__Number_default_coding("RAW"); UNIVERSAL_CHARSTRING RAN__Information__RIM__Container__GTPC_rIM__PDU__Indications_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__RIM__Container__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__RIM__Container__GTPC const TTCN_Typedescriptor_t RAN__Information__RIM__Container__GTPC_descr_ = { "@GTPC_Types.RAN_Information_RIM_Container_GTPC", NULL, &RAN__Information__RIM__Container__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__RIM__Container__GTPC_rIM__Protocol__Version__Number_default_coding("RAW"); const TTCN_RAWdescriptor_t ApplContainer__or__ApplErrContainer__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for ApplContainer__or__ApplErrContainer__GTPC const TTCN_Typedescriptor_t ApplContainer__or__ApplErrContainer__GTPC_descr_ = { "@GTPC_Types.ApplContainer_or_ApplErrContainer_GTPC", NULL, &ApplContainer__or__ApplErrContainer__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const TTCN_RAWdescriptor_t ApplContainer__or__ApplErrContainer__NACC__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for ApplContainer__or__ApplErrContainer__NACC__GTPC const TTCN_Typedescriptor_t ApplContainer__or__ApplErrContainer__NACC__GTPC_descr_ = { "@GTPC_Types.ApplContainer_or_ApplErrContainer_NACC_GTPC", NULL, &ApplContainer__or__ApplErrContainer__NACC__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t RAN__Information__Application__Container__NACC__GTPC_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RAN__Information__Application__Container__NACC__GTPC_iEI_oer_ext_arr_[0] = {}; const int RAN__Information__Application__Container__NACC__GTPC_iEI_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAN__Information__Application__Container__NACC__GTPC_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RAN__Information__Application__Container__NACC__GTPC_iEI_oer_ext_arr_, 0, RAN__Information__Application__Container__NACC__GTPC_iEI_oer_p_}; const TTCN_Typedescriptor_t RAN__Information__Application__Container__NACC__GTPC_iEI_descr_ = { "@GTPC_Types.RAN_Information_Application_Container_NACC_GTPC.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RAN__Information__Application__Container__NACC__GTPC_iEI_xer_, &OCTETSTRING_json_, &RAN__Information__Application__Container__NACC__GTPC_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Application__Container__NACC__GTPC_iEI_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Application__Container__NACC__GTPC_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t RAN__Information__Application__Container__NACC__GTPC_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RAN__Information__Application__Container__NACC__GTPC_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RAN__Information__Application__Container__NACC__GTPC_ext_descr_ = { "@GTPC_Types.RAN_Information_Application_Container_NACC_GTPC.ext", &BITSTRING_ber_, &RAN__Information__Application__Container__NACC__GTPC_ext_raw_, NULL, &RAN__Information__Application__Container__NACC__GTPC_ext_xer_, &BITSTRING_json_, &RAN__Information__Application__Container__NACC__GTPC_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Application__Container__NACC__GTPC_ext_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Application__Container__NACC__GTPC_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__Application__Container__NACC__GTPC_lengthIndicator const TTCN_Typedescriptor_t RAN__Information__Application__Container__NACC__GTPC_lengthIndicator_descr_ = { "@GTPC_Types.RAN_Information_Application_Container_NACC_GTPC.lengthIndicator", NULL, &RAN__Information__Application__Container__NACC__GTPC_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Application__Container__NACC__GTPC_lengthIndicator_default_coding("RAW"); UNIVERSAL_CHARSTRING RAN__Information__Application__Container__NACC__GTPC_reporting__Cell__Identifier_default_coding("RAW"); const XERdescriptor_t RAN__Information__Application__Container__NACC__GTPC_typeBit_xer_ = { {"typeBit>\n", "typeBit>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RAN__Information__Application__Container__NACC__GTPC_typeBit_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RAN__Information__Application__Container__NACC__GTPC_typeBit_descr_ = { "@GTPC_Types.RAN_Information_Application_Container_NACC_GTPC.typeBit", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &RAN__Information__Application__Container__NACC__GTPC_typeBit_xer_, &BITSTRING_json_, &RAN__Information__Application__Container__NACC__GTPC_typeBit_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Application__Container__NACC__GTPC_typeBit_default_coding("RAW"); const XERdescriptor_t RAN__Information__Application__Container__NACC__GTPC_number__of__SI__PSI_xer_ = { {"number_of_SI_PSI>\n", "number_of_SI_PSI>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RAN__Information__Application__Container__NACC__GTPC_number__of__SI__PSI_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RAN__Information__Application__Container__NACC__GTPC_number__of__SI__PSI_descr_ = { "@GTPC_Types.RAN_Information_Application_Container_NACC_GTPC.number_of_SI_PSI", &BITSTRING_ber_, &General__Types::BIT7_raw_, NULL, &RAN__Information__Application__Container__NACC__GTPC_number__of__SI__PSI_xer_, &BITSTRING_json_, &RAN__Information__Application__Container__NACC__GTPC_number__of__SI__PSI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Application__Container__NACC__GTPC_number__of__SI__PSI_default_coding("RAW"); const XERdescriptor_t RAN__Information__Application__Container__NACC__GTPC_sI__PSI_xer_ = { {"sI_PSI>\n", "sI_PSI>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RAN__Information__Application__Container__NACC__GTPC_sI__PSI_oer_ext_arr_[0] = {}; const int RAN__Information__Application__Container__NACC__GTPC_sI__PSI_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAN__Information__Application__Container__NACC__GTPC_sI__PSI_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RAN__Information__Application__Container__NACC__GTPC_sI__PSI_oer_ext_arr_, 0, RAN__Information__Application__Container__NACC__GTPC_sI__PSI_oer_p_}; const TTCN_Typedescriptor_t RAN__Information__Application__Container__NACC__GTPC_sI__PSI_descr_ = { "@GTPC_Types.RAN_Information_Application_Container_NACC_GTPC.sI_PSI", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &RAN__Information__Application__Container__NACC__GTPC_sI__PSI_xer_, &OCTETSTRING_json_, &RAN__Information__Application__Container__NACC__GTPC_sI__PSI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Application__Container__NACC__GTPC_sI__PSI_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Application__Container__NACC__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__Application__Container__NACC__GTPC const TTCN_Typedescriptor_t RAN__Information__Application__Container__NACC__GTPC_descr_ = { "@GTPC_Types.RAN_Information_Application_Container_NACC_GTPC", NULL, &RAN__Information__Application__Container__NACC__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Application__Container__NACC__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING ApplContainer__or__ApplErrContainer__NACC__GTPC_application__Container_default_coding("RAW"); const XERdescriptor_t Application__Error__Container__NACC__GTPC_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int Application__Error__Container__NACC__GTPC_iEI_oer_ext_arr_[0] = {}; const int Application__Error__Container__NACC__GTPC_iEI_oer_p_[0] = {}; const TTCN_OERdescriptor_t Application__Error__Container__NACC__GTPC_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Application__Error__Container__NACC__GTPC_iEI_oer_ext_arr_, 0, Application__Error__Container__NACC__GTPC_iEI_oer_p_}; const TTCN_Typedescriptor_t Application__Error__Container__NACC__GTPC_iEI_descr_ = { "@GTPC_Types.Application_Error_Container_NACC_GTPC.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Application__Error__Container__NACC__GTPC_iEI_xer_, &OCTETSTRING_json_, &Application__Error__Container__NACC__GTPC_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Application__Error__Container__NACC__GTPC_iEI_default_coding("RAW"); const TTCN_RAWdescriptor_t Application__Error__Container__NACC__GTPC_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t Application__Error__Container__NACC__GTPC_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t Application__Error__Container__NACC__GTPC_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t Application__Error__Container__NACC__GTPC_ext_descr_ = { "@GTPC_Types.Application_Error_Container_NACC_GTPC.ext", &BITSTRING_ber_, &Application__Error__Container__NACC__GTPC_ext_raw_, NULL, &Application__Error__Container__NACC__GTPC_ext_xer_, &BITSTRING_json_, &Application__Error__Container__NACC__GTPC_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Application__Error__Container__NACC__GTPC_ext_default_coding("RAW"); const TTCN_RAWdescriptor_t Application__Error__Container__NACC__GTPC_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for Application__Error__Container__NACC__GTPC_lengthIndicator const TTCN_Typedescriptor_t Application__Error__Container__NACC__GTPC_lengthIndicator_descr_ = { "@GTPC_Types.Application_Error_Container_NACC_GTPC.lengthIndicator", NULL, &Application__Error__Container__NACC__GTPC_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Application__Error__Container__NACC__GTPC_lengthIndicator_default_coding("RAW"); const XERdescriptor_t Application__Error__Container__NACC__GTPC_nACC__cause_xer_ = { {"nACC_cause>\n", "nACC_cause>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int Application__Error__Container__NACC__GTPC_nACC__cause_oer_ext_arr_[0] = {}; const int Application__Error__Container__NACC__GTPC_nACC__cause_oer_p_[0] = {}; const TTCN_OERdescriptor_t Application__Error__Container__NACC__GTPC_nACC__cause_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Application__Error__Container__NACC__GTPC_nACC__cause_oer_ext_arr_, 0, Application__Error__Container__NACC__GTPC_nACC__cause_oer_p_}; const TTCN_Typedescriptor_t Application__Error__Container__NACC__GTPC_nACC__cause_descr_ = { "@GTPC_Types.Application_Error_Container_NACC_GTPC.nACC_cause", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Application__Error__Container__NACC__GTPC_nACC__cause_xer_, &OCTETSTRING_json_, &Application__Error__Container__NACC__GTPC_nACC__cause_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Application__Error__Container__NACC__GTPC_nACC__cause_default_coding("RAW"); const TTCN_RAWdescriptor_t Application__Container__IE__NACC__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for Application__Container__IE__NACC__GTPC const TTCN_Typedescriptor_t Application__Container__IE__NACC__GTPC_descr_ = { "@GTPC_Types.Application_Container_IE_NACC_GTPC", NULL, &Application__Container__IE__NACC__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Application__Container__IE__NACC__GTPC_rAN__Information__Request__Application__Container_default_coding("RAW"); UNIVERSAL_CHARSTRING Application__Container__IE__NACC__GTPC_rAN__Information__Application__Container_default_coding("RAW"); UNIVERSAL_CHARSTRING Application__Container__IE__NACC__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING Application__Error__Container__NACC__GTPC_erroneousApplicationContainer_default_coding("RAW"); const TTCN_RAWdescriptor_t Application__Error__Container__NACC__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for Application__Error__Container__NACC__GTPC const TTCN_Typedescriptor_t Application__Error__Container__NACC__GTPC_descr_ = { "@GTPC_Types.Application_Error_Container_NACC_GTPC", NULL, &Application__Error__Container__NACC__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Application__Error__Container__NACC__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING ApplContainer__or__ApplErrContainer__NACC__GTPC_application__Error__Container_default_coding("RAW"); UNIVERSAL_CHARSTRING ApplContainer__or__ApplErrContainer__NACC__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING ApplContainer__or__ApplErrContainer__GTPC_nacc_default_coding("RAW"); const TTCN_RAWdescriptor_t ApplContainer__or__ApplErrContainer__SI3__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for ApplContainer__or__ApplErrContainer__SI3__GTPC const TTCN_Typedescriptor_t ApplContainer__or__ApplErrContainer__SI3__GTPC_descr_ = { "@GTPC_Types.ApplContainer_or_ApplErrContainer_SI3_GTPC", NULL, &ApplContainer__or__ApplErrContainer__SI3__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t RAN__Information__Application__Container__SI3__GTPC_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RAN__Information__Application__Container__SI3__GTPC_iEI_oer_ext_arr_[0] = {}; const int RAN__Information__Application__Container__SI3__GTPC_iEI_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAN__Information__Application__Container__SI3__GTPC_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RAN__Information__Application__Container__SI3__GTPC_iEI_oer_ext_arr_, 0, RAN__Information__Application__Container__SI3__GTPC_iEI_oer_p_}; const TTCN_Typedescriptor_t RAN__Information__Application__Container__SI3__GTPC_iEI_descr_ = { "@GTPC_Types.RAN_Information_Application_Container_SI3_GTPC.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RAN__Information__Application__Container__SI3__GTPC_iEI_xer_, &OCTETSTRING_json_, &RAN__Information__Application__Container__SI3__GTPC_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Application__Container__SI3__GTPC_iEI_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Application__Container__SI3__GTPC_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t RAN__Information__Application__Container__SI3__GTPC_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RAN__Information__Application__Container__SI3__GTPC_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RAN__Information__Application__Container__SI3__GTPC_ext_descr_ = { "@GTPC_Types.RAN_Information_Application_Container_SI3_GTPC.ext", &BITSTRING_ber_, &RAN__Information__Application__Container__SI3__GTPC_ext_raw_, NULL, &RAN__Information__Application__Container__SI3__GTPC_ext_xer_, &BITSTRING_json_, &RAN__Information__Application__Container__SI3__GTPC_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Application__Container__SI3__GTPC_ext_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Application__Container__SI3__GTPC_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__Application__Container__SI3__GTPC_lengthIndicator const TTCN_Typedescriptor_t RAN__Information__Application__Container__SI3__GTPC_lengthIndicator_descr_ = { "@GTPC_Types.RAN_Information_Application_Container_SI3_GTPC.lengthIndicator", NULL, &RAN__Information__Application__Container__SI3__GTPC_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Application__Container__SI3__GTPC_lengthIndicator_default_coding("RAW"); UNIVERSAL_CHARSTRING RAN__Information__Application__Container__SI3__GTPC_reporting__Cell__Identifier_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Application__Container__SI3__GTPC_sI3_raw_ = {168,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,21,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t RAN__Information__Application__Container__SI3__GTPC_sI3_xer_ = { {"sI3>\n", "sI3>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RAN__Information__Application__Container__SI3__GTPC_sI3_oer_ext_arr_[0] = {}; const int RAN__Information__Application__Container__SI3__GTPC_sI3_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAN__Information__Application__Container__SI3__GTPC_sI3_oer_ = { -1, TRUE, 21, FALSE, 0, 0, RAN__Information__Application__Container__SI3__GTPC_sI3_oer_ext_arr_, 0, RAN__Information__Application__Container__SI3__GTPC_sI3_oer_p_}; const TTCN_Typedescriptor_t RAN__Information__Application__Container__SI3__GTPC_sI3_descr_ = { "@GTPC_Types.RAN_Information_Application_Container_SI3_GTPC.sI3", &OCTETSTRING_ber_, &RAN__Information__Application__Container__SI3__GTPC_sI3_raw_, &OCTETSTRING_text_, &RAN__Information__Application__Container__SI3__GTPC_sI3_xer_, &OCTETSTRING_json_, &RAN__Information__Application__Container__SI3__GTPC_sI3_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Application__Container__SI3__GTPC_sI3_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Application__Container__SI3__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__Application__Container__SI3__GTPC const TTCN_Typedescriptor_t RAN__Information__Application__Container__SI3__GTPC_descr_ = { "@GTPC_Types.RAN_Information_Application_Container_SI3_GTPC", NULL, &RAN__Information__Application__Container__SI3__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Application__Container__SI3__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING ApplContainer__or__ApplErrContainer__SI3__GTPC_application__Container_default_coding("RAW"); const XERdescriptor_t Application__Error__Container__SI3__GTPC_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int Application__Error__Container__SI3__GTPC_iEI_oer_ext_arr_[0] = {}; const int Application__Error__Container__SI3__GTPC_iEI_oer_p_[0] = {}; const TTCN_OERdescriptor_t Application__Error__Container__SI3__GTPC_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Application__Error__Container__SI3__GTPC_iEI_oer_ext_arr_, 0, Application__Error__Container__SI3__GTPC_iEI_oer_p_}; const TTCN_Typedescriptor_t Application__Error__Container__SI3__GTPC_iEI_descr_ = { "@GTPC_Types.Application_Error_Container_SI3_GTPC.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Application__Error__Container__SI3__GTPC_iEI_xer_, &OCTETSTRING_json_, &Application__Error__Container__SI3__GTPC_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Application__Error__Container__SI3__GTPC_iEI_default_coding("RAW"); const TTCN_RAWdescriptor_t Application__Error__Container__SI3__GTPC_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t Application__Error__Container__SI3__GTPC_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t Application__Error__Container__SI3__GTPC_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t Application__Error__Container__SI3__GTPC_ext_descr_ = { "@GTPC_Types.Application_Error_Container_SI3_GTPC.ext", &BITSTRING_ber_, &Application__Error__Container__SI3__GTPC_ext_raw_, NULL, &Application__Error__Container__SI3__GTPC_ext_xer_, &BITSTRING_json_, &Application__Error__Container__SI3__GTPC_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Application__Error__Container__SI3__GTPC_ext_default_coding("RAW"); const TTCN_RAWdescriptor_t Application__Error__Container__SI3__GTPC_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for Application__Error__Container__SI3__GTPC_lengthIndicator const TTCN_Typedescriptor_t Application__Error__Container__SI3__GTPC_lengthIndicator_descr_ = { "@GTPC_Types.Application_Error_Container_SI3_GTPC.lengthIndicator", NULL, &Application__Error__Container__SI3__GTPC_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Application__Error__Container__SI3__GTPC_lengthIndicator_default_coding("RAW"); const XERdescriptor_t Application__Error__Container__SI3__GTPC_sI3__cause_xer_ = { {"sI3_cause>\n", "sI3_cause>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int Application__Error__Container__SI3__GTPC_sI3__cause_oer_ext_arr_[0] = {}; const int Application__Error__Container__SI3__GTPC_sI3__cause_oer_p_[0] = {}; const TTCN_OERdescriptor_t Application__Error__Container__SI3__GTPC_sI3__cause_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Application__Error__Container__SI3__GTPC_sI3__cause_oer_ext_arr_, 0, Application__Error__Container__SI3__GTPC_sI3__cause_oer_p_}; const TTCN_Typedescriptor_t Application__Error__Container__SI3__GTPC_sI3__cause_descr_ = { "@GTPC_Types.Application_Error_Container_SI3_GTPC.sI3_cause", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Application__Error__Container__SI3__GTPC_sI3__cause_xer_, &OCTETSTRING_json_, &Application__Error__Container__SI3__GTPC_sI3__cause_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Application__Error__Container__SI3__GTPC_sI3__cause_default_coding("RAW"); const TTCN_RAWdescriptor_t Application__Container__IE__SI3__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for Application__Container__IE__SI3__GTPC const TTCN_Typedescriptor_t Application__Container__IE__SI3__GTPC_descr_ = { "@GTPC_Types.Application_Container_IE_SI3_GTPC", NULL, &Application__Container__IE__SI3__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Application__Container__IE__SI3__GTPC_rAN__Information__Request__Application__Container_default_coding("RAW"); UNIVERSAL_CHARSTRING Application__Container__IE__SI3__GTPC_rAN__Information__Application__Container_default_coding("RAW"); UNIVERSAL_CHARSTRING Application__Container__IE__SI3__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING Application__Error__Container__SI3__GTPC_erroneousApplicationContainer_default_coding("RAW"); const TTCN_RAWdescriptor_t Application__Error__Container__SI3__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for Application__Error__Container__SI3__GTPC const TTCN_Typedescriptor_t Application__Error__Container__SI3__GTPC_descr_ = { "@GTPC_Types.Application_Error_Container_SI3_GTPC", NULL, &Application__Error__Container__SI3__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Application__Error__Container__SI3__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING ApplContainer__or__ApplErrContainer__SI3__GTPC_application__Error__Container_default_coding("RAW"); UNIVERSAL_CHARSTRING ApplContainer__or__ApplErrContainer__SI3__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING ApplContainer__or__ApplErrContainer__GTPC_si3_default_coding("RAW"); const TTCN_RAWdescriptor_t ApplContainer__or__ApplErrContainer__MBMS__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for ApplContainer__or__ApplErrContainer__MBMS__GTPC const TTCN_Typedescriptor_t ApplContainer__or__ApplErrContainer__MBMS__GTPC_descr_ = { "@GTPC_Types.ApplContainer_or_ApplErrContainer_MBMS_GTPC", NULL, &ApplContainer__or__ApplErrContainer__MBMS__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t RAN__Information__Application__Container__MBMS__GTPC_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RAN__Information__Application__Container__MBMS__GTPC_iEI_oer_ext_arr_[0] = {}; const int RAN__Information__Application__Container__MBMS__GTPC_iEI_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAN__Information__Application__Container__MBMS__GTPC_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RAN__Information__Application__Container__MBMS__GTPC_iEI_oer_ext_arr_, 0, RAN__Information__Application__Container__MBMS__GTPC_iEI_oer_p_}; const TTCN_Typedescriptor_t RAN__Information__Application__Container__MBMS__GTPC_iEI_descr_ = { "@GTPC_Types.RAN_Information_Application_Container_MBMS_GTPC.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RAN__Information__Application__Container__MBMS__GTPC_iEI_xer_, &OCTETSTRING_json_, &RAN__Information__Application__Container__MBMS__GTPC_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Application__Container__MBMS__GTPC_iEI_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Application__Container__MBMS__GTPC_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t RAN__Information__Application__Container__MBMS__GTPC_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RAN__Information__Application__Container__MBMS__GTPC_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RAN__Information__Application__Container__MBMS__GTPC_ext_descr_ = { "@GTPC_Types.RAN_Information_Application_Container_MBMS_GTPC.ext", &BITSTRING_ber_, &RAN__Information__Application__Container__MBMS__GTPC_ext_raw_, NULL, &RAN__Information__Application__Container__MBMS__GTPC_ext_xer_, &BITSTRING_json_, &RAN__Information__Application__Container__MBMS__GTPC_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Application__Container__MBMS__GTPC_ext_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Application__Container__MBMS__GTPC_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__Application__Container__MBMS__GTPC_lengthIndicator const TTCN_Typedescriptor_t RAN__Information__Application__Container__MBMS__GTPC_lengthIndicator_descr_ = { "@GTPC_Types.RAN_Information_Application_Container_MBMS_GTPC.lengthIndicator", NULL, &RAN__Information__Application__Container__MBMS__GTPC_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Application__Container__MBMS__GTPC_lengthIndicator_default_coding("RAW"); UNIVERSAL_CHARSTRING RAN__Information__Application__Container__MBMS__GTPC_reporting__Cell__Identifier_default_coding("RAW"); const XERdescriptor_t RAN__Information__Application__Container__MBMS__GTPC_mBMS__ChannelReport_xer_ = { {"mBMS_ChannelReport>\n", "mBMS_ChannelReport>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RAN__Information__Application__Container__MBMS__GTPC_mBMS__ChannelReport_oer_ext_arr_[0] = {}; const int RAN__Information__Application__Container__MBMS__GTPC_mBMS__ChannelReport_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAN__Information__Application__Container__MBMS__GTPC_mBMS__ChannelReport_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RAN__Information__Application__Container__MBMS__GTPC_mBMS__ChannelReport_oer_ext_arr_, 0, RAN__Information__Application__Container__MBMS__GTPC_mBMS__ChannelReport_oer_p_}; const TTCN_Typedescriptor_t RAN__Information__Application__Container__MBMS__GTPC_mBMS__ChannelReport_descr_ = { "@GTPC_Types.RAN_Information_Application_Container_MBMS_GTPC.mBMS_ChannelReport", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &RAN__Information__Application__Container__MBMS__GTPC_mBMS__ChannelReport_xer_, &OCTETSTRING_json_, &RAN__Information__Application__Container__MBMS__GTPC_mBMS__ChannelReport_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Application__Container__MBMS__GTPC_mBMS__ChannelReport_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Application__Container__MBMS__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__Application__Container__MBMS__GTPC const TTCN_Typedescriptor_t RAN__Information__Application__Container__MBMS__GTPC_descr_ = { "@GTPC_Types.RAN_Information_Application_Container_MBMS_GTPC", NULL, &RAN__Information__Application__Container__MBMS__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Application__Container__MBMS__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING ApplContainer__or__ApplErrContainer__MBMS__GTPC_application__Container_default_coding("RAW"); const XERdescriptor_t Application__Error__Container__MBMS__GTPC_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int Application__Error__Container__MBMS__GTPC_iEI_oer_ext_arr_[0] = {}; const int Application__Error__Container__MBMS__GTPC_iEI_oer_p_[0] = {}; const TTCN_OERdescriptor_t Application__Error__Container__MBMS__GTPC_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Application__Error__Container__MBMS__GTPC_iEI_oer_ext_arr_, 0, Application__Error__Container__MBMS__GTPC_iEI_oer_p_}; const TTCN_Typedescriptor_t Application__Error__Container__MBMS__GTPC_iEI_descr_ = { "@GTPC_Types.Application_Error_Container_MBMS_GTPC.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Application__Error__Container__MBMS__GTPC_iEI_xer_, &OCTETSTRING_json_, &Application__Error__Container__MBMS__GTPC_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Application__Error__Container__MBMS__GTPC_iEI_default_coding("RAW"); const TTCN_RAWdescriptor_t Application__Error__Container__MBMS__GTPC_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t Application__Error__Container__MBMS__GTPC_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t Application__Error__Container__MBMS__GTPC_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t Application__Error__Container__MBMS__GTPC_ext_descr_ = { "@GTPC_Types.Application_Error_Container_MBMS_GTPC.ext", &BITSTRING_ber_, &Application__Error__Container__MBMS__GTPC_ext_raw_, NULL, &Application__Error__Container__MBMS__GTPC_ext_xer_, &BITSTRING_json_, &Application__Error__Container__MBMS__GTPC_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Application__Error__Container__MBMS__GTPC_ext_default_coding("RAW"); const TTCN_RAWdescriptor_t Application__Error__Container__MBMS__GTPC_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for Application__Error__Container__MBMS__GTPC_lengthIndicator const TTCN_Typedescriptor_t Application__Error__Container__MBMS__GTPC_lengthIndicator_descr_ = { "@GTPC_Types.Application_Error_Container_MBMS_GTPC.lengthIndicator", NULL, &Application__Error__Container__MBMS__GTPC_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Application__Error__Container__MBMS__GTPC_lengthIndicator_default_coding("RAW"); const XERdescriptor_t Application__Error__Container__MBMS__GTPC_mBMS__cause_xer_ = { {"mBMS_cause>\n", "mBMS_cause>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int Application__Error__Container__MBMS__GTPC_mBMS__cause_oer_ext_arr_[0] = {}; const int Application__Error__Container__MBMS__GTPC_mBMS__cause_oer_p_[0] = {}; const TTCN_OERdescriptor_t Application__Error__Container__MBMS__GTPC_mBMS__cause_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Application__Error__Container__MBMS__GTPC_mBMS__cause_oer_ext_arr_, 0, Application__Error__Container__MBMS__GTPC_mBMS__cause_oer_p_}; const TTCN_Typedescriptor_t Application__Error__Container__MBMS__GTPC_mBMS__cause_descr_ = { "@GTPC_Types.Application_Error_Container_MBMS_GTPC.mBMS_cause", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Application__Error__Container__MBMS__GTPC_mBMS__cause_xer_, &OCTETSTRING_json_, &Application__Error__Container__MBMS__GTPC_mBMS__cause_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Application__Error__Container__MBMS__GTPC_mBMS__cause_default_coding("RAW"); const TTCN_RAWdescriptor_t Application__Container__IE__MBMS__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for Application__Container__IE__MBMS__GTPC const TTCN_Typedescriptor_t Application__Container__IE__MBMS__GTPC_descr_ = { "@GTPC_Types.Application_Container_IE_MBMS_GTPC", NULL, &Application__Container__IE__MBMS__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Application__Container__IE__MBMS__GTPC_rAN__Information__Request__Application__Container_default_coding("RAW"); UNIVERSAL_CHARSTRING Application__Container__IE__MBMS__GTPC_rAN__Information__Application__Container_default_coding("RAW"); UNIVERSAL_CHARSTRING Application__Container__IE__MBMS__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING Application__Error__Container__MBMS__GTPC_erroneousApplicationContainer_default_coding("RAW"); const TTCN_RAWdescriptor_t Application__Error__Container__MBMS__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for Application__Error__Container__MBMS__GTPC const TTCN_Typedescriptor_t Application__Error__Container__MBMS__GTPC_descr_ = { "@GTPC_Types.Application_Error_Container_MBMS_GTPC", NULL, &Application__Error__Container__MBMS__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Application__Error__Container__MBMS__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING ApplContainer__or__ApplErrContainer__MBMS__GTPC_application__Error__Container_default_coding("RAW"); UNIVERSAL_CHARSTRING ApplContainer__or__ApplErrContainer__MBMS__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING ApplContainer__or__ApplErrContainer__GTPC_mBMS_default_coding("RAW"); const TTCN_RAWdescriptor_t ApplContainer__or__ApplErrContainer__SON__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for ApplContainer__or__ApplErrContainer__SON__GTPC const TTCN_Typedescriptor_t ApplContainer__or__ApplErrContainer__SON__GTPC_descr_ = { "@GTPC_Types.ApplContainer_or_ApplErrContainer_SON_GTPC", NULL, &ApplContainer__or__ApplErrContainer__SON__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t RAN__Information__Application__Container__SON__GTPC_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RAN__Information__Application__Container__SON__GTPC_iEI_oer_ext_arr_[0] = {}; const int RAN__Information__Application__Container__SON__GTPC_iEI_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAN__Information__Application__Container__SON__GTPC_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RAN__Information__Application__Container__SON__GTPC_iEI_oer_ext_arr_, 0, RAN__Information__Application__Container__SON__GTPC_iEI_oer_p_}; const TTCN_Typedescriptor_t RAN__Information__Application__Container__SON__GTPC_iEI_descr_ = { "@GTPC_Types.RAN_Information_Application_Container_SON_GTPC.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RAN__Information__Application__Container__SON__GTPC_iEI_xer_, &OCTETSTRING_json_, &RAN__Information__Application__Container__SON__GTPC_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Application__Container__SON__GTPC_iEI_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Application__Container__SON__GTPC_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t RAN__Information__Application__Container__SON__GTPC_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RAN__Information__Application__Container__SON__GTPC_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RAN__Information__Application__Container__SON__GTPC_ext_descr_ = { "@GTPC_Types.RAN_Information_Application_Container_SON_GTPC.ext", &BITSTRING_ber_, &RAN__Information__Application__Container__SON__GTPC_ext_raw_, NULL, &RAN__Information__Application__Container__SON__GTPC_ext_xer_, &BITSTRING_json_, &RAN__Information__Application__Container__SON__GTPC_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Application__Container__SON__GTPC_ext_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Application__Container__SON__GTPC_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__Application__Container__SON__GTPC_lengthIndicator const TTCN_Typedescriptor_t RAN__Information__Application__Container__SON__GTPC_lengthIndicator_descr_ = { "@GTPC_Types.RAN_Information_Application_Container_SON_GTPC.lengthIndicator", NULL, &RAN__Information__Application__Container__SON__GTPC_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Application__Container__SON__GTPC_lengthIndicator_default_coding("RAW"); UNIVERSAL_CHARSTRING RAN__Information__Application__Container__SON__GTPC_reporting__Cell__Identifier_default_coding("RAW"); const XERdescriptor_t RAN__Information__Application__Container__SON__GTPC_sON__TransferResponseContainer_xer_ = { {"sON_TransferResponseContainer>\n", "sON_TransferResponseContainer>\n"}, {31, 31}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RAN__Information__Application__Container__SON__GTPC_sON__TransferResponseContainer_oer_ext_arr_[0] = {}; const int RAN__Information__Application__Container__SON__GTPC_sON__TransferResponseContainer_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAN__Information__Application__Container__SON__GTPC_sON__TransferResponseContainer_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RAN__Information__Application__Container__SON__GTPC_sON__TransferResponseContainer_oer_ext_arr_, 0, RAN__Information__Application__Container__SON__GTPC_sON__TransferResponseContainer_oer_p_}; const TTCN_Typedescriptor_t RAN__Information__Application__Container__SON__GTPC_sON__TransferResponseContainer_descr_ = { "@GTPC_Types.RAN_Information_Application_Container_SON_GTPC.sON_TransferResponseContainer", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &RAN__Information__Application__Container__SON__GTPC_sON__TransferResponseContainer_xer_, &OCTETSTRING_json_, &RAN__Information__Application__Container__SON__GTPC_sON__TransferResponseContainer_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Application__Container__SON__GTPC_sON__TransferResponseContainer_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Application__Container__SON__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__Application__Container__SON__GTPC const TTCN_Typedescriptor_t RAN__Information__Application__Container__SON__GTPC_descr_ = { "@GTPC_Types.RAN_Information_Application_Container_SON_GTPC", NULL, &RAN__Information__Application__Container__SON__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Application__Container__SON__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING ApplContainer__or__ApplErrContainer__SON__GTPC_application__Container_default_coding("RAW"); const XERdescriptor_t Application__Error__Container__SON__GTPC_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int Application__Error__Container__SON__GTPC_iEI_oer_ext_arr_[0] = {}; const int Application__Error__Container__SON__GTPC_iEI_oer_p_[0] = {}; const TTCN_OERdescriptor_t Application__Error__Container__SON__GTPC_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Application__Error__Container__SON__GTPC_iEI_oer_ext_arr_, 0, Application__Error__Container__SON__GTPC_iEI_oer_p_}; const TTCN_Typedescriptor_t Application__Error__Container__SON__GTPC_iEI_descr_ = { "@GTPC_Types.Application_Error_Container_SON_GTPC.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Application__Error__Container__SON__GTPC_iEI_xer_, &OCTETSTRING_json_, &Application__Error__Container__SON__GTPC_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Application__Error__Container__SON__GTPC_iEI_default_coding("RAW"); const TTCN_RAWdescriptor_t Application__Error__Container__SON__GTPC_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t Application__Error__Container__SON__GTPC_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t Application__Error__Container__SON__GTPC_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t Application__Error__Container__SON__GTPC_ext_descr_ = { "@GTPC_Types.Application_Error_Container_SON_GTPC.ext", &BITSTRING_ber_, &Application__Error__Container__SON__GTPC_ext_raw_, NULL, &Application__Error__Container__SON__GTPC_ext_xer_, &BITSTRING_json_, &Application__Error__Container__SON__GTPC_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Application__Error__Container__SON__GTPC_ext_default_coding("RAW"); const TTCN_RAWdescriptor_t Application__Error__Container__SON__GTPC_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for Application__Error__Container__SON__GTPC_lengthIndicator const TTCN_Typedescriptor_t Application__Error__Container__SON__GTPC_lengthIndicator_descr_ = { "@GTPC_Types.Application_Error_Container_SON_GTPC.lengthIndicator", NULL, &Application__Error__Container__SON__GTPC_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Application__Error__Container__SON__GTPC_lengthIndicator_default_coding("RAW"); const XERdescriptor_t Application__Error__Container__SON__GTPC_sON__cause_xer_ = { {"sON_cause>\n", "sON_cause>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int Application__Error__Container__SON__GTPC_sON__cause_oer_ext_arr_[0] = {}; const int Application__Error__Container__SON__GTPC_sON__cause_oer_p_[0] = {}; const TTCN_OERdescriptor_t Application__Error__Container__SON__GTPC_sON__cause_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Application__Error__Container__SON__GTPC_sON__cause_oer_ext_arr_, 0, Application__Error__Container__SON__GTPC_sON__cause_oer_p_}; const TTCN_Typedescriptor_t Application__Error__Container__SON__GTPC_sON__cause_descr_ = { "@GTPC_Types.Application_Error_Container_SON_GTPC.sON_cause", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Application__Error__Container__SON__GTPC_sON__cause_xer_, &OCTETSTRING_json_, &Application__Error__Container__SON__GTPC_sON__cause_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Application__Error__Container__SON__GTPC_sON__cause_default_coding("RAW"); const TTCN_RAWdescriptor_t Application__Container__IE__SON__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for Application__Container__IE__SON__GTPC const TTCN_Typedescriptor_t Application__Container__IE__SON__GTPC_descr_ = { "@GTPC_Types.Application_Container_IE_SON_GTPC", NULL, &Application__Container__IE__SON__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Application__Container__IE__SON__GTPC_rAN__Information__Request__Application__Container_default_coding("RAW"); UNIVERSAL_CHARSTRING Application__Container__IE__SON__GTPC_rAN__Information__Application__Container_default_coding("RAW"); UNIVERSAL_CHARSTRING Application__Container__IE__SON__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING Application__Error__Container__SON__GTPC_erroneousApplicationContainer_default_coding("RAW"); const TTCN_RAWdescriptor_t Application__Error__Container__SON__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for Application__Error__Container__SON__GTPC const TTCN_Typedescriptor_t Application__Error__Container__SON__GTPC_descr_ = { "@GTPC_Types.Application_Error_Container_SON_GTPC", NULL, &Application__Error__Container__SON__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Application__Error__Container__SON__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING ApplContainer__or__ApplErrContainer__SON__GTPC_application__Error__Container_default_coding("RAW"); UNIVERSAL_CHARSTRING ApplContainer__or__ApplErrContainer__SON__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING ApplContainer__or__ApplErrContainer__GTPC_sON_default_coding("RAW"); const TTCN_RAWdescriptor_t ApplContainer__or__ApplErrContainer__UTRA__SI__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for ApplContainer__or__ApplErrContainer__UTRA__SI__GTPC const TTCN_Typedescriptor_t ApplContainer__or__ApplErrContainer__UTRA__SI__GTPC_descr_ = { "@GTPC_Types.ApplContainer_or_ApplErrContainer_UTRA_SI_GTPC", NULL, &ApplContainer__or__ApplErrContainer__UTRA__SI__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t RAN__Information__Application__Container__UTRA__SI__GTPC_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RAN__Information__Application__Container__UTRA__SI__GTPC_iEI_oer_ext_arr_[0] = {}; const int RAN__Information__Application__Container__UTRA__SI__GTPC_iEI_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAN__Information__Application__Container__UTRA__SI__GTPC_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RAN__Information__Application__Container__UTRA__SI__GTPC_iEI_oer_ext_arr_, 0, RAN__Information__Application__Container__UTRA__SI__GTPC_iEI_oer_p_}; const TTCN_Typedescriptor_t RAN__Information__Application__Container__UTRA__SI__GTPC_iEI_descr_ = { "@GTPC_Types.RAN_Information_Application_Container_UTRA_SI_GTPC.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RAN__Information__Application__Container__UTRA__SI__GTPC_iEI_xer_, &OCTETSTRING_json_, &RAN__Information__Application__Container__UTRA__SI__GTPC_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Application__Container__UTRA__SI__GTPC_iEI_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Application__Container__UTRA__SI__GTPC_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t RAN__Information__Application__Container__UTRA__SI__GTPC_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RAN__Information__Application__Container__UTRA__SI__GTPC_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RAN__Information__Application__Container__UTRA__SI__GTPC_ext_descr_ = { "@GTPC_Types.RAN_Information_Application_Container_UTRA_SI_GTPC.ext", &BITSTRING_ber_, &RAN__Information__Application__Container__UTRA__SI__GTPC_ext_raw_, NULL, &RAN__Information__Application__Container__UTRA__SI__GTPC_ext_xer_, &BITSTRING_json_, &RAN__Information__Application__Container__UTRA__SI__GTPC_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Application__Container__UTRA__SI__GTPC_ext_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Application__Container__UTRA__SI__GTPC_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__Application__Container__UTRA__SI__GTPC_lengthIndicator const TTCN_Typedescriptor_t RAN__Information__Application__Container__UTRA__SI__GTPC_lengthIndicator_descr_ = { "@GTPC_Types.RAN_Information_Application_Container_UTRA_SI_GTPC.lengthIndicator", NULL, &RAN__Information__Application__Container__UTRA__SI__GTPC_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Application__Container__UTRA__SI__GTPC_lengthIndicator_default_coding("RAW"); UNIVERSAL_CHARSTRING RAN__Information__Application__Container__UTRA__SI__GTPC_reporting__Cell__Identifier_default_coding("RAW"); const XERdescriptor_t RAN__Information__Application__Container__UTRA__SI__GTPC_uTRA__SI__Container_xer_ = { {"uTRA_SI_Container>\n", "uTRA_SI_Container>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RAN__Information__Application__Container__UTRA__SI__GTPC_uTRA__SI__Container_oer_ext_arr_[0] = {}; const int RAN__Information__Application__Container__UTRA__SI__GTPC_uTRA__SI__Container_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAN__Information__Application__Container__UTRA__SI__GTPC_uTRA__SI__Container_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RAN__Information__Application__Container__UTRA__SI__GTPC_uTRA__SI__Container_oer_ext_arr_, 0, RAN__Information__Application__Container__UTRA__SI__GTPC_uTRA__SI__Container_oer_p_}; const TTCN_Typedescriptor_t RAN__Information__Application__Container__UTRA__SI__GTPC_uTRA__SI__Container_descr_ = { "@GTPC_Types.RAN_Information_Application_Container_UTRA_SI_GTPC.uTRA_SI_Container", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &RAN__Information__Application__Container__UTRA__SI__GTPC_uTRA__SI__Container_xer_, &OCTETSTRING_json_, &RAN__Information__Application__Container__UTRA__SI__GTPC_uTRA__SI__Container_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Application__Container__UTRA__SI__GTPC_uTRA__SI__Container_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Application__Container__UTRA__SI__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__Application__Container__UTRA__SI__GTPC const TTCN_Typedescriptor_t RAN__Information__Application__Container__UTRA__SI__GTPC_descr_ = { "@GTPC_Types.RAN_Information_Application_Container_UTRA_SI_GTPC", NULL, &RAN__Information__Application__Container__UTRA__SI__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Application__Container__UTRA__SI__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING ApplContainer__or__ApplErrContainer__UTRA__SI__GTPC_application__Container_default_coding("RAW"); const XERdescriptor_t Application__Error__Container__UTRA__SI__GTPC_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int Application__Error__Container__UTRA__SI__GTPC_iEI_oer_ext_arr_[0] = {}; const int Application__Error__Container__UTRA__SI__GTPC_iEI_oer_p_[0] = {}; const TTCN_OERdescriptor_t Application__Error__Container__UTRA__SI__GTPC_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Application__Error__Container__UTRA__SI__GTPC_iEI_oer_ext_arr_, 0, Application__Error__Container__UTRA__SI__GTPC_iEI_oer_p_}; const TTCN_Typedescriptor_t Application__Error__Container__UTRA__SI__GTPC_iEI_descr_ = { "@GTPC_Types.Application_Error_Container_UTRA_SI_GTPC.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Application__Error__Container__UTRA__SI__GTPC_iEI_xer_, &OCTETSTRING_json_, &Application__Error__Container__UTRA__SI__GTPC_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Application__Error__Container__UTRA__SI__GTPC_iEI_default_coding("RAW"); const TTCN_RAWdescriptor_t Application__Error__Container__UTRA__SI__GTPC_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t Application__Error__Container__UTRA__SI__GTPC_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t Application__Error__Container__UTRA__SI__GTPC_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t Application__Error__Container__UTRA__SI__GTPC_ext_descr_ = { "@GTPC_Types.Application_Error_Container_UTRA_SI_GTPC.ext", &BITSTRING_ber_, &Application__Error__Container__UTRA__SI__GTPC_ext_raw_, NULL, &Application__Error__Container__UTRA__SI__GTPC_ext_xer_, &BITSTRING_json_, &Application__Error__Container__UTRA__SI__GTPC_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Application__Error__Container__UTRA__SI__GTPC_ext_default_coding("RAW"); const TTCN_RAWdescriptor_t Application__Error__Container__UTRA__SI__GTPC_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for Application__Error__Container__UTRA__SI__GTPC_lengthIndicator const TTCN_Typedescriptor_t Application__Error__Container__UTRA__SI__GTPC_lengthIndicator_descr_ = { "@GTPC_Types.Application_Error_Container_UTRA_SI_GTPC.lengthIndicator", NULL, &Application__Error__Container__UTRA__SI__GTPC_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Application__Error__Container__UTRA__SI__GTPC_lengthIndicator_default_coding("RAW"); const XERdescriptor_t Application__Error__Container__UTRA__SI__GTPC_uTRA__SI__cause_xer_ = { {"uTRA_SI_cause>\n", "uTRA_SI_cause>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int Application__Error__Container__UTRA__SI__GTPC_uTRA__SI__cause_oer_ext_arr_[0] = {}; const int Application__Error__Container__UTRA__SI__GTPC_uTRA__SI__cause_oer_p_[0] = {}; const TTCN_OERdescriptor_t Application__Error__Container__UTRA__SI__GTPC_uTRA__SI__cause_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Application__Error__Container__UTRA__SI__GTPC_uTRA__SI__cause_oer_ext_arr_, 0, Application__Error__Container__UTRA__SI__GTPC_uTRA__SI__cause_oer_p_}; const TTCN_Typedescriptor_t Application__Error__Container__UTRA__SI__GTPC_uTRA__SI__cause_descr_ = { "@GTPC_Types.Application_Error_Container_UTRA_SI_GTPC.uTRA_SI_cause", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Application__Error__Container__UTRA__SI__GTPC_uTRA__SI__cause_xer_, &OCTETSTRING_json_, &Application__Error__Container__UTRA__SI__GTPC_uTRA__SI__cause_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Application__Error__Container__UTRA__SI__GTPC_uTRA__SI__cause_default_coding("RAW"); UNIVERSAL_CHARSTRING Application__Error__Container__UTRA__SI__GTPC_erroneousApplicationContainer_default_coding("RAW"); const TTCN_RAWdescriptor_t Application__Error__Container__UTRA__SI__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for Application__Error__Container__UTRA__SI__GTPC const TTCN_Typedescriptor_t Application__Error__Container__UTRA__SI__GTPC_descr_ = { "@GTPC_Types.Application_Error_Container_UTRA_SI_GTPC", NULL, &Application__Error__Container__UTRA__SI__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Application__Error__Container__UTRA__SI__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING ApplContainer__or__ApplErrContainer__UTRA__SI__GTPC_application__Error__Container_default_coding("RAW"); UNIVERSAL_CHARSTRING ApplContainer__or__ApplErrContainer__UTRA__SI__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING ApplContainer__or__ApplErrContainer__GTPC_uTRA__SI_default_coding("RAW"); UNIVERSAL_CHARSTRING ApplContainer__or__ApplErrContainer__GTPC_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__RIM__Container__GTPC_applContainer__or__ApplErrContainer_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__RIM__Container__GTPC_applContainer__or__ApplErrContainer const TTCN_Typedescriptor_t RAN__Information__RIM__Container__GTPC_applContainer__or__ApplErrContainer_descr_ = { "@GTPC_Types.RAN_Information_RIM_Container_GTPC.applContainer_or_ApplErrContainer", NULL, &RAN__Information__RIM__Container__GTPC_applContainer__or__ApplErrContainer_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__RIM__Container__GTPC_applContainer__or__ApplErrContainer_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__RIM__Container__GTPC_sON__TransferApplicationIdentity_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__RIM__Container__GTPC_sON__TransferApplicationIdentity const TTCN_Typedescriptor_t RAN__Information__RIM__Container__GTPC_sON__TransferApplicationIdentity_descr_ = { "@GTPC_Types.RAN_Information_RIM_Container_GTPC.sON_TransferApplicationIdentity", NULL, &RAN__Information__RIM__Container__GTPC_sON__TransferApplicationIdentity_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__RIM__Container__GTPC_sON__TransferApplicationIdentity_default_coding("RAW"); UNIVERSAL_CHARSTRING RAN__Information__RIM__Container__GTPC_default_coding("RAW"); const XERdescriptor_t RAN__Information__Ack__RIM__Container__GTPC_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RAN__Information__Ack__RIM__Container__GTPC_iEI_oer_ext_arr_[0] = {}; const int RAN__Information__Ack__RIM__Container__GTPC_iEI_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAN__Information__Ack__RIM__Container__GTPC_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RAN__Information__Ack__RIM__Container__GTPC_iEI_oer_ext_arr_, 0, RAN__Information__Ack__RIM__Container__GTPC_iEI_oer_p_}; const TTCN_Typedescriptor_t RAN__Information__Ack__RIM__Container__GTPC_iEI_descr_ = { "@GTPC_Types.RAN_Information_Ack_RIM_Container_GTPC.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RAN__Information__Ack__RIM__Container__GTPC_iEI_xer_, &OCTETSTRING_json_, &RAN__Information__Ack__RIM__Container__GTPC_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Ack__RIM__Container__GTPC_iEI_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Ack__RIM__Container__GTPC_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t RAN__Information__Ack__RIM__Container__GTPC_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RAN__Information__Ack__RIM__Container__GTPC_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RAN__Information__Ack__RIM__Container__GTPC_ext_descr_ = { "@GTPC_Types.RAN_Information_Ack_RIM_Container_GTPC.ext", &BITSTRING_ber_, &RAN__Information__Ack__RIM__Container__GTPC_ext_raw_, NULL, &RAN__Information__Ack__RIM__Container__GTPC_ext_xer_, &BITSTRING_json_, &RAN__Information__Ack__RIM__Container__GTPC_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Ack__RIM__Container__GTPC_ext_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Ack__RIM__Container__GTPC_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__Ack__RIM__Container__GTPC_lengthIndicator const TTCN_Typedescriptor_t RAN__Information__Ack__RIM__Container__GTPC_lengthIndicator_descr_ = { "@GTPC_Types.RAN_Information_Ack_RIM_Container_GTPC.lengthIndicator", NULL, &RAN__Information__Ack__RIM__Container__GTPC_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Ack__RIM__Container__GTPC_lengthIndicator_default_coding("RAW"); UNIVERSAL_CHARSTRING RAN__Information__Ack__RIM__Container__GTPC_rIM__Application__Identity_default_coding("RAW"); UNIVERSAL_CHARSTRING RAN__Information__Ack__RIM__Container__GTPC_rIM__Sequence__Number_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Ack__RIM__Container__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__Ack__RIM__Container__GTPC const TTCN_Typedescriptor_t RAN__Information__Ack__RIM__Container__GTPC_descr_ = { "@GTPC_Types.RAN_Information_Ack_RIM_Container_GTPC", NULL, &RAN__Information__Ack__RIM__Container__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Ack__RIM__Container__GTPC_rIM__Protocol__Version__Number_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Ack__RIM__Container__GTPC_sON__TransferApplicationIdentity_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__Ack__RIM__Container__GTPC_sON__TransferApplicationIdentity const TTCN_Typedescriptor_t RAN__Information__Ack__RIM__Container__GTPC_sON__TransferApplicationIdentity_descr_ = { "@GTPC_Types.RAN_Information_Ack_RIM_Container_GTPC.sON_TransferApplicationIdentity", NULL, &RAN__Information__Ack__RIM__Container__GTPC_sON__TransferApplicationIdentity_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Ack__RIM__Container__GTPC_sON__TransferApplicationIdentity_default_coding("RAW"); UNIVERSAL_CHARSTRING RAN__Information__Ack__RIM__Container__GTPC_default_coding("RAW"); const XERdescriptor_t RAN__Information__Error__RIM__Container__GTPC_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RAN__Information__Error__RIM__Container__GTPC_iEI_oer_ext_arr_[0] = {}; const int RAN__Information__Error__RIM__Container__GTPC_iEI_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAN__Information__Error__RIM__Container__GTPC_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RAN__Information__Error__RIM__Container__GTPC_iEI_oer_ext_arr_, 0, RAN__Information__Error__RIM__Container__GTPC_iEI_oer_p_}; const TTCN_Typedescriptor_t RAN__Information__Error__RIM__Container__GTPC_iEI_descr_ = { "@GTPC_Types.RAN_Information_Error_RIM_Container_GTPC.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RAN__Information__Error__RIM__Container__GTPC_iEI_xer_, &OCTETSTRING_json_, &RAN__Information__Error__RIM__Container__GTPC_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Error__RIM__Container__GTPC_iEI_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Error__RIM__Container__GTPC_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t RAN__Information__Error__RIM__Container__GTPC_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RAN__Information__Error__RIM__Container__GTPC_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RAN__Information__Error__RIM__Container__GTPC_ext_descr_ = { "@GTPC_Types.RAN_Information_Error_RIM_Container_GTPC.ext", &BITSTRING_ber_, &RAN__Information__Error__RIM__Container__GTPC_ext_raw_, NULL, &RAN__Information__Error__RIM__Container__GTPC_ext_xer_, &BITSTRING_json_, &RAN__Information__Error__RIM__Container__GTPC_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Error__RIM__Container__GTPC_ext_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Error__RIM__Container__GTPC_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__Error__RIM__Container__GTPC_lengthIndicator const TTCN_Typedescriptor_t RAN__Information__Error__RIM__Container__GTPC_lengthIndicator_descr_ = { "@GTPC_Types.RAN_Information_Error_RIM_Container_GTPC.lengthIndicator", NULL, &RAN__Information__Error__RIM__Container__GTPC_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Error__RIM__Container__GTPC_lengthIndicator_default_coding("RAW"); UNIVERSAL_CHARSTRING RAN__Information__Error__RIM__Container__GTPC_rIM__Application__Identity_default_coding("RAW"); UNIVERSAL_CHARSTRING RAN__Information__Error__RIM__Container__GTPC_rIM__cause_default_coding("RAW"); UNIVERSAL_CHARSTRING RAN__Information__Error__RIM__Container__GTPC_pDU__in__Error_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Error__RIM__Container__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__Error__RIM__Container__GTPC const TTCN_Typedescriptor_t RAN__Information__Error__RIM__Container__GTPC_descr_ = { "@GTPC_Types.RAN_Information_Error_RIM_Container_GTPC", NULL, &RAN__Information__Error__RIM__Container__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Error__RIM__Container__GTPC_rIM__Protocol__Version__Number_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Error__RIM__Container__GTPC_sON__TransferApplicationIdentity_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__Error__RIM__Container__GTPC_sON__TransferApplicationIdentity const TTCN_Typedescriptor_t RAN__Information__Error__RIM__Container__GTPC_sON__TransferApplicationIdentity_descr_ = { "@GTPC_Types.RAN_Information_Error_RIM_Container_GTPC.sON_TransferApplicationIdentity", NULL, &RAN__Information__Error__RIM__Container__GTPC_sON__TransferApplicationIdentity_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Error__RIM__Container__GTPC_sON__TransferApplicationIdentity_default_coding("RAW"); UNIVERSAL_CHARSTRING RAN__Information__Error__RIM__Container__GTPC_default_coding("RAW"); const XERdescriptor_t RAN__Information__Application__Error__RIM__Container__GTPC_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RAN__Information__Application__Error__RIM__Container__GTPC_iEI_oer_ext_arr_[0] = {}; const int RAN__Information__Application__Error__RIM__Container__GTPC_iEI_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAN__Information__Application__Error__RIM__Container__GTPC_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RAN__Information__Application__Error__RIM__Container__GTPC_iEI_oer_ext_arr_, 0, RAN__Information__Application__Error__RIM__Container__GTPC_iEI_oer_p_}; const TTCN_Typedescriptor_t RAN__Information__Application__Error__RIM__Container__GTPC_iEI_descr_ = { "@GTPC_Types.RAN_Information_Application_Error_RIM_Container_GTPC.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RAN__Information__Application__Error__RIM__Container__GTPC_iEI_xer_, &OCTETSTRING_json_, &RAN__Information__Application__Error__RIM__Container__GTPC_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Application__Error__RIM__Container__GTPC_iEI_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Application__Error__RIM__Container__GTPC_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t RAN__Information__Application__Error__RIM__Container__GTPC_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RAN__Information__Application__Error__RIM__Container__GTPC_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RAN__Information__Application__Error__RIM__Container__GTPC_ext_descr_ = { "@GTPC_Types.RAN_Information_Application_Error_RIM_Container_GTPC.ext", &BITSTRING_ber_, &RAN__Information__Application__Error__RIM__Container__GTPC_ext_raw_, NULL, &RAN__Information__Application__Error__RIM__Container__GTPC_ext_xer_, &BITSTRING_json_, &RAN__Information__Application__Error__RIM__Container__GTPC_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Application__Error__RIM__Container__GTPC_ext_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Application__Error__RIM__Container__GTPC_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__Application__Error__RIM__Container__GTPC_lengthIndicator const TTCN_Typedescriptor_t RAN__Information__Application__Error__RIM__Container__GTPC_lengthIndicator_descr_ = { "@GTPC_Types.RAN_Information_Application_Error_RIM_Container_GTPC.lengthIndicator", NULL, &RAN__Information__Application__Error__RIM__Container__GTPC_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Application__Error__RIM__Container__GTPC_lengthIndicator_default_coding("RAW"); UNIVERSAL_CHARSTRING RAN__Information__Application__Error__RIM__Container__GTPC_rIM__Application__Identity_default_coding("RAW"); UNIVERSAL_CHARSTRING RAN__Information__Application__Error__RIM__Container__GTPC_rIM__Sequence__Number_default_coding("RAW"); UNIVERSAL_CHARSTRING RAN__Information__Application__Error__RIM__Container__GTPC_rIM__PDU__Indications_default_coding("RAW"); const TTCN_RAWdescriptor_t Application__Error__Container__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for Application__Error__Container__GTPC const TTCN_Typedescriptor_t Application__Error__Container__GTPC_descr_ = { "@GTPC_Types.Application_Error_Container_GTPC", NULL, &Application__Error__Container__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Application__Error__Container__GTPC_nacc_default_coding("RAW"); UNIVERSAL_CHARSTRING Application__Error__Container__GTPC_si3_default_coding("RAW"); UNIVERSAL_CHARSTRING Application__Error__Container__GTPC_mBMS_default_coding("RAW"); UNIVERSAL_CHARSTRING Application__Error__Container__GTPC_sON_default_coding("RAW"); UNIVERSAL_CHARSTRING Application__Error__Container__GTPC_uTRA__SI_default_coding("RAW"); UNIVERSAL_CHARSTRING Application__Error__Container__GTPC_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Application__Error__RIM__Container__GTPC_application__Error__Container_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__Application__Error__RIM__Container__GTPC_application__Error__Container const TTCN_Typedescriptor_t RAN__Information__Application__Error__RIM__Container__GTPC_application__Error__Container_descr_ = { "@GTPC_Types.RAN_Information_Application_Error_RIM_Container_GTPC.application_Error_Container", NULL, &RAN__Information__Application__Error__RIM__Container__GTPC_application__Error__Container_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Application__Error__RIM__Container__GTPC_application__Error__Container_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Application__Error__RIM__Container__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__Application__Error__RIM__Container__GTPC const TTCN_Typedescriptor_t RAN__Information__Application__Error__RIM__Container__GTPC_descr_ = { "@GTPC_Types.RAN_Information_Application_Error_RIM_Container_GTPC", NULL, &RAN__Information__Application__Error__RIM__Container__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Application__Error__RIM__Container__GTPC_rIM__Protocol__Version__Number_default_coding("RAW"); const TTCN_RAWdescriptor_t RAN__Information__Application__Error__RIM__Container__GTPC_sON__TransferApplicationIdentity_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RAN__Information__Application__Error__RIM__Container__GTPC_sON__TransferApplicationIdentity const TTCN_Typedescriptor_t RAN__Information__Application__Error__RIM__Container__GTPC_sON__TransferApplicationIdentity_descr_ = { "@GTPC_Types.RAN_Information_Application_Error_RIM_Container_GTPC.sON_TransferApplicationIdentity", NULL, &RAN__Information__Application__Error__RIM__Container__GTPC_sON__TransferApplicationIdentity_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAN__Information__Application__Error__RIM__Container__GTPC_sON__TransferApplicationIdentity_default_coding("RAW"); UNIVERSAL_CHARSTRING RAN__Information__Application__Error__RIM__Container__GTPC_default_coding("RAW"); const TTCN_RAWdescriptor_t Application__Container__IE__UTRA__SI__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for Application__Container__IE__UTRA__SI__GTPC const TTCN_Typedescriptor_t Application__Container__IE__UTRA__SI__GTPC_descr_ = { "@GTPC_Types.Application_Container_IE_UTRA_SI_GTPC", NULL, &Application__Container__IE__UTRA__SI__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Application__Container__IE__UTRA__SI__GTPC_rAN__Information__Request__Application__Container_default_coding("RAW"); UNIVERSAL_CHARSTRING Application__Container__IE__UTRA__SI__GTPC_rAN__Information__Application__Container_default_coding("RAW"); UNIVERSAL_CHARSTRING Application__Container__IE__UTRA__SI__GTPC_default_coding("RAW"); const XERdescriptor_t RIM__Routing__Information__GTPC_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RIM__Routing__Information__GTPC_iEI_oer_ext_arr_[0] = {}; const int RIM__Routing__Information__GTPC_iEI_oer_p_[0] = {}; const TTCN_OERdescriptor_t RIM__Routing__Information__GTPC_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RIM__Routing__Information__GTPC_iEI_oer_ext_arr_, 0, RIM__Routing__Information__GTPC_iEI_oer_p_}; const TTCN_Typedescriptor_t RIM__Routing__Information__GTPC_iEI_descr_ = { "@GTPC_Types.RIM_Routing_Information_GTPC.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RIM__Routing__Information__GTPC_iEI_xer_, &OCTETSTRING_json_, &RIM__Routing__Information__GTPC_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__Routing__Information__GTPC_iEI_default_coding("RAW"); const TTCN_RAWdescriptor_t RIM__Routing__Information__GTPC_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t RIM__Routing__Information__GTPC_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RIM__Routing__Information__GTPC_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RIM__Routing__Information__GTPC_ext_descr_ = { "@GTPC_Types.RIM_Routing_Information_GTPC.ext", &BITSTRING_ber_, &RIM__Routing__Information__GTPC_ext_raw_, NULL, &RIM__Routing__Information__GTPC_ext_xer_, &BITSTRING_json_, &RIM__Routing__Information__GTPC_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__Routing__Information__GTPC_ext_default_coding("RAW"); const TTCN_RAWdescriptor_t RIM__Routing__Information__GTPC_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RIM__Routing__Information__GTPC_lengthIndicator const TTCN_Typedescriptor_t RIM__Routing__Information__GTPC_lengthIndicator_descr_ = { "@GTPC_Types.RIM_Routing_Information_GTPC.lengthIndicator", NULL, &RIM__Routing__Information__GTPC_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__Routing__Information__GTPC_lengthIndicator_default_coding("RAW"); const XERdescriptor_t RIM__Routing__Information__GTPC_rIMRoutingAddressDiscriminator_xer_ = { {"rIMRoutingAddressDiscriminator>\n", "rIMRoutingAddressDiscriminator>\n"}, {32, 32}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t RIM__Routing__Information__GTPC_rIMRoutingAddressDiscriminator_descr_ = { "@GTPC_Types.RIM_Routing_Information_GTPC.rIMRoutingAddressDiscriminator", NULL, &General__Types::HEX1_raw_, NULL, &RIM__Routing__Information__GTPC_rIMRoutingAddressDiscriminator_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__Routing__Information__GTPC_rIMRoutingAddressDiscriminator_default_coding("RAW"); const XERdescriptor_t RIM__Routing__Information__GTPC_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_Typedescriptor_t RIM__Routing__Information__GTPC_spare_descr_ = { "@GTPC_Types.RIM_Routing_Information_GTPC.spare", NULL, &General__Types::HEX1_raw_, NULL, &RIM__Routing__Information__GTPC_spare_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__Routing__Information__GTPC_spare_default_coding("RAW"); const TTCN_RAWdescriptor_t RIM__Routing__Address__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RIM__Routing__Address__GTPC const TTCN_Typedescriptor_t RIM__Routing__Address__GTPC_descr_ = { "@GTPC_Types.RIM_Routing_Address_GTPC", NULL, &RIM__Routing__Address__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__Routing__Address__GTPC_cell__Identifier_default_coding("RAW"); const XERdescriptor_t RNC__ID__BSSGP__GTPC_mccDigit1_xer_ = { {"mccDigit1>\n", "mccDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t RNC__ID__BSSGP__GTPC_mccDigit1_descr_ = { "@GTPC_Types.RNC_ID_BSSGP_GTPC.mccDigit1", NULL, &General__Types::HEX1_raw_, NULL, &RNC__ID__BSSGP__GTPC_mccDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RNC__ID__BSSGP__GTPC_mccDigit1_default_coding("RAW"); const XERdescriptor_t RNC__ID__BSSGP__GTPC_mccDigit2_xer_ = { {"mccDigit2>\n", "mccDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t RNC__ID__BSSGP__GTPC_mccDigit2_descr_ = { "@GTPC_Types.RNC_ID_BSSGP_GTPC.mccDigit2", NULL, &General__Types::HEX1_raw_, NULL, &RNC__ID__BSSGP__GTPC_mccDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RNC__ID__BSSGP__GTPC_mccDigit2_default_coding("RAW"); const XERdescriptor_t RNC__ID__BSSGP__GTPC_mccDigit3_xer_ = { {"mccDigit3>\n", "mccDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t RNC__ID__BSSGP__GTPC_mccDigit3_descr_ = { "@GTPC_Types.RNC_ID_BSSGP_GTPC.mccDigit3", NULL, &General__Types::HEX1_raw_, NULL, &RNC__ID__BSSGP__GTPC_mccDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RNC__ID__BSSGP__GTPC_mccDigit3_default_coding("RAW"); const XERdescriptor_t RNC__ID__BSSGP__GTPC_mncDigit3_xer_ = { {"mncDigit3>\n", "mncDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t RNC__ID__BSSGP__GTPC_mncDigit3_descr_ = { "@GTPC_Types.RNC_ID_BSSGP_GTPC.mncDigit3", NULL, &General__Types::HEX1_raw_, NULL, &RNC__ID__BSSGP__GTPC_mncDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RNC__ID__BSSGP__GTPC_mncDigit3_default_coding("RAW"); const XERdescriptor_t RNC__ID__BSSGP__GTPC_mncDigit1_xer_ = { {"mncDigit1>\n", "mncDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t RNC__ID__BSSGP__GTPC_mncDigit1_descr_ = { "@GTPC_Types.RNC_ID_BSSGP_GTPC.mncDigit1", NULL, &General__Types::HEX1_raw_, NULL, &RNC__ID__BSSGP__GTPC_mncDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RNC__ID__BSSGP__GTPC_mncDigit1_default_coding("RAW"); const XERdescriptor_t RNC__ID__BSSGP__GTPC_mncDigit2_xer_ = { {"mncDigit2>\n", "mncDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t RNC__ID__BSSGP__GTPC_mncDigit2_descr_ = { "@GTPC_Types.RNC_ID_BSSGP_GTPC.mncDigit2", NULL, &General__Types::HEX1_raw_, NULL, &RNC__ID__BSSGP__GTPC_mncDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RNC__ID__BSSGP__GTPC_mncDigit2_default_coding("RAW"); const XERdescriptor_t RNC__ID__BSSGP__GTPC_lAC_xer_ = { {"lAC>\n", "lAC>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RNC__ID__BSSGP__GTPC_lAC_oer_ext_arr_[0] = {}; const int RNC__ID__BSSGP__GTPC_lAC_oer_p_[0] = {}; const TTCN_OERdescriptor_t RNC__ID__BSSGP__GTPC_lAC_oer_ = { -1, TRUE, 2, FALSE, 0, 0, RNC__ID__BSSGP__GTPC_lAC_oer_ext_arr_, 0, RNC__ID__BSSGP__GTPC_lAC_oer_p_}; const TTCN_Typedescriptor_t RNC__ID__BSSGP__GTPC_lAC_descr_ = { "@GTPC_Types.RNC_ID_BSSGP_GTPC.lAC", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &RNC__ID__BSSGP__GTPC_lAC_xer_, &OCTETSTRING_json_, &RNC__ID__BSSGP__GTPC_lAC_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RNC__ID__BSSGP__GTPC_lAC_default_coding("RAW"); const XERdescriptor_t RNC__ID__BSSGP__GTPC_rAC_xer_ = { {"rAC>\n", "rAC>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RNC__ID__BSSGP__GTPC_rAC_oer_ext_arr_[0] = {}; const int RNC__ID__BSSGP__GTPC_rAC_oer_p_[0] = {}; const TTCN_OERdescriptor_t RNC__ID__BSSGP__GTPC_rAC_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RNC__ID__BSSGP__GTPC_rAC_oer_ext_arr_, 0, RNC__ID__BSSGP__GTPC_rAC_oer_p_}; const TTCN_Typedescriptor_t RNC__ID__BSSGP__GTPC_rAC_descr_ = { "@GTPC_Types.RNC_ID_BSSGP_GTPC.rAC", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RNC__ID__BSSGP__GTPC_rAC_xer_, &OCTETSTRING_json_, &RNC__ID__BSSGP__GTPC_rAC_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RNC__ID__BSSGP__GTPC_rAC_default_coding("RAW"); const TTCN_RAWdescriptor_t RNC__ID__BSSGP__GTPC_spare_raw_ = {4,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t RNC__ID__BSSGP__GTPC_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_Typedescriptor_t RNC__ID__BSSGP__GTPC_spare_descr_ = { "@GTPC_Types.RNC_ID_BSSGP_GTPC.spare", NULL, &RNC__ID__BSSGP__GTPC_spare_raw_, NULL, &RNC__ID__BSSGP__GTPC_spare_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RNC__ID__BSSGP__GTPC_spare_default_coding("RAW"); const TTCN_RAWdescriptor_t RNC__ID__BSSGP__GTPC_rNC__ID_raw_ = {12,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t RNC__ID__BSSGP__GTPC_rNC__ID_xer_ = { {"rNC_ID>\n", "rNC_ID>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t RNC__ID__BSSGP__GTPC_rNC__ID_descr_ = { "@GTPC_Types.RNC_ID_BSSGP_GTPC.rNC_ID", &INTEGER_ber_, &RNC__ID__BSSGP__GTPC_rNC__ID_raw_, &INTEGER_text_, &RNC__ID__BSSGP__GTPC_rNC__ID_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RNC__ID__BSSGP__GTPC_rNC__ID_default_coding("RAW"); const TTCN_RAWdescriptor_t RNC__ID__BSSGP__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RNC__ID__BSSGP__GTPC const TTCN_Typedescriptor_t RNC__ID__BSSGP__GTPC_descr_ = { "@GTPC_Types.RNC_ID_BSSGP_GTPC", NULL, &RNC__ID__BSSGP__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RNC__ID__BSSGP__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING RIM__Routing__Address__GTPC_rNCID_default_coding("RAW"); const XERdescriptor_t ENB__Identifier_mccDigit1_xer_ = { {"mccDigit1>\n", "mccDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t ENB__Identifier_mccDigit1_descr_ = { "@GTPC_Types.ENB_Identifier.mccDigit1", NULL, &General__Types::HEX1_raw_, NULL, &ENB__Identifier_mccDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ENB__Identifier_mccDigit1_default_coding("RAW"); const XERdescriptor_t ENB__Identifier_mccDigit2_xer_ = { {"mccDigit2>\n", "mccDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t ENB__Identifier_mccDigit2_descr_ = { "@GTPC_Types.ENB_Identifier.mccDigit2", NULL, &General__Types::HEX1_raw_, NULL, &ENB__Identifier_mccDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ENB__Identifier_mccDigit2_default_coding("RAW"); const XERdescriptor_t ENB__Identifier_mccDigit3_xer_ = { {"mccDigit3>\n", "mccDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t ENB__Identifier_mccDigit3_descr_ = { "@GTPC_Types.ENB_Identifier.mccDigit3", NULL, &General__Types::HEX1_raw_, NULL, &ENB__Identifier_mccDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ENB__Identifier_mccDigit3_default_coding("RAW"); const XERdescriptor_t ENB__Identifier_mncDigit3_xer_ = { {"mncDigit3>\n", "mncDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t ENB__Identifier_mncDigit3_descr_ = { "@GTPC_Types.ENB_Identifier.mncDigit3", NULL, &General__Types::HEX1_raw_, NULL, &ENB__Identifier_mncDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ENB__Identifier_mncDigit3_default_coding("RAW"); const XERdescriptor_t ENB__Identifier_mncDigit1_xer_ = { {"mncDigit1>\n", "mncDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t ENB__Identifier_mncDigit1_descr_ = { "@GTPC_Types.ENB_Identifier.mncDigit1", NULL, &General__Types::HEX1_raw_, NULL, &ENB__Identifier_mncDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ENB__Identifier_mncDigit1_default_coding("RAW"); const XERdescriptor_t ENB__Identifier_mncDigit2_xer_ = { {"mncDigit2>\n", "mncDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t ENB__Identifier_mncDigit2_descr_ = { "@GTPC_Types.ENB_Identifier.mncDigit2", NULL, &General__Types::HEX1_raw_, NULL, &ENB__Identifier_mncDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ENB__Identifier_mncDigit2_default_coding("RAW"); const XERdescriptor_t ENB__Identifier_tAC_xer_ = { {"tAC>\n", "tAC>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int ENB__Identifier_tAC_oer_ext_arr_[0] = {}; const int ENB__Identifier_tAC_oer_p_[0] = {}; const TTCN_OERdescriptor_t ENB__Identifier_tAC_oer_ = { -1, TRUE, 2, FALSE, 0, 0, ENB__Identifier_tAC_oer_ext_arr_, 0, ENB__Identifier_tAC_oer_p_}; const TTCN_Typedescriptor_t ENB__Identifier_tAC_descr_ = { "@GTPC_Types.ENB_Identifier.tAC", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &ENB__Identifier_tAC_xer_, &OCTETSTRING_json_, &ENB__Identifier_tAC_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ENB__Identifier_tAC_default_coding("RAW"); const XERdescriptor_t ENB__Identifier_globalENB__ID_xer_ = { {"globalENB_ID>\n", "globalENB_ID>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int ENB__Identifier_globalENB__ID_oer_ext_arr_[0] = {}; const int ENB__Identifier_globalENB__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t ENB__Identifier_globalENB__ID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ENB__Identifier_globalENB__ID_oer_ext_arr_, 0, ENB__Identifier_globalENB__ID_oer_p_}; const TTCN_Typedescriptor_t ENB__Identifier_globalENB__ID_descr_ = { "@GTPC_Types.ENB_Identifier.globalENB_ID", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &ENB__Identifier_globalENB__ID_xer_, &OCTETSTRING_json_, &ENB__Identifier_globalENB__ID_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ENB__Identifier_globalENB__ID_default_coding("RAW"); const TTCN_RAWdescriptor_t ENB__Identifier_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for ENB__Identifier const TTCN_Typedescriptor_t ENB__Identifier_descr_ = { "@GTPC_Types.ENB_Identifier", NULL, &ENB__Identifier_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ENB__Identifier_default_coding("RAW"); UNIVERSAL_CHARSTRING RIM__Routing__Address__GTPC_eNB__Identifier_default_coding("RAW"); UNIVERSAL_CHARSTRING RIM__Routing__Address__GTPC_default_coding("RAW"); const TTCN_RAWdescriptor_t RIM__Routing__Information__GTPC_rIM__Routing__Address_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RIM__Routing__Information__GTPC_rIM__Routing__Address const TTCN_Typedescriptor_t RIM__Routing__Information__GTPC_rIM__Routing__Address_descr_ = { "@GTPC_Types.RIM_Routing_Information_GTPC.rIM_Routing_Address", NULL, &RIM__Routing__Information__GTPC_rIM__Routing__Address_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__Routing__Information__GTPC_rIM__Routing__Address_default_coding("RAW"); const TTCN_RAWdescriptor_t RIM__Routing__Information__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RIM__Routing__Information__GTPC const TTCN_Typedescriptor_t RIM__Routing__Information__GTPC_descr_ = { "@GTPC_Types.RIM_Routing_Information_GTPC", NULL, &RIM__Routing__Information__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__Routing__Information__GTPC_default_coding("RAW"); const XERdescriptor_t PDU__BSSGP__RAN__INFORMATION__REQUEST__GTPC_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PDU__BSSGP__RAN__INFORMATION__REQUEST__GTPC_bssgpPduType_oer_ext_arr_[0] = {}; const int PDU__BSSGP__RAN__INFORMATION__REQUEST__GTPC_bssgpPduType_oer_p_[0] = {}; const TTCN_OERdescriptor_t PDU__BSSGP__RAN__INFORMATION__REQUEST__GTPC_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__RAN__INFORMATION__REQUEST__GTPC_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__RAN__INFORMATION__REQUEST__GTPC_bssgpPduType_oer_p_}; const TTCN_Typedescriptor_t PDU__BSSGP__RAN__INFORMATION__REQUEST__GTPC_bssgpPduType_descr_ = { "@GTPC_Types.PDU_BSSGP_RAN_INFORMATION_REQUEST_GTPC.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__RAN__INFORMATION__REQUEST__GTPC_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__RAN__INFORMATION__REQUEST__GTPC_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__REQUEST__GTPC_bssgpPduType_default_coding("RAW"); UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__REQUEST__GTPC_destination__Cell__Identifier_default_coding("RAW"); UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__REQUEST__GTPC_source__Cell__Identifier_default_coding("RAW"); UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__REQUEST__GTPC_rIM__Container_default_coding("RAW"); const TTCN_RAWdescriptor_t PDU__BSSGP__RAN__INFORMATION__REQUEST__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for PDU__BSSGP__RAN__INFORMATION__REQUEST__GTPC const TTCN_Typedescriptor_t PDU__BSSGP__RAN__INFORMATION__REQUEST__GTPC_descr_ = { "@GTPC_Types.PDU_BSSGP_RAN_INFORMATION_REQUEST_GTPC", NULL, &PDU__BSSGP__RAN__INFORMATION__REQUEST__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__REQUEST__GTPC_default_coding("RAW"); const XERdescriptor_t PDU__BSSGP__RAN__INFORMATION__GTPC_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PDU__BSSGP__RAN__INFORMATION__GTPC_bssgpPduType_oer_ext_arr_[0] = {}; const int PDU__BSSGP__RAN__INFORMATION__GTPC_bssgpPduType_oer_p_[0] = {}; const TTCN_OERdescriptor_t PDU__BSSGP__RAN__INFORMATION__GTPC_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__RAN__INFORMATION__GTPC_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__RAN__INFORMATION__GTPC_bssgpPduType_oer_p_}; const TTCN_Typedescriptor_t PDU__BSSGP__RAN__INFORMATION__GTPC_bssgpPduType_descr_ = { "@GTPC_Types.PDU_BSSGP_RAN_INFORMATION_GTPC.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__RAN__INFORMATION__GTPC_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__RAN__INFORMATION__GTPC_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__GTPC_bssgpPduType_default_coding("RAW"); UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__GTPC_destination__Cell__Identifier_default_coding("RAW"); UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__GTPC_source__Cell__Identifier_default_coding("RAW"); UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__GTPC_rIM__Container_default_coding("RAW"); const TTCN_RAWdescriptor_t PDU__BSSGP__RAN__INFORMATION__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for PDU__BSSGP__RAN__INFORMATION__GTPC const TTCN_Typedescriptor_t PDU__BSSGP__RAN__INFORMATION__GTPC_descr_ = { "@GTPC_Types.PDU_BSSGP_RAN_INFORMATION_GTPC", NULL, &PDU__BSSGP__RAN__INFORMATION__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__GTPC_default_coding("RAW"); const XERdescriptor_t PDU__BSSGP__RAN__INFORMATION__ACK__GTPC_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PDU__BSSGP__RAN__INFORMATION__ACK__GTPC_bssgpPduType_oer_ext_arr_[0] = {}; const int PDU__BSSGP__RAN__INFORMATION__ACK__GTPC_bssgpPduType_oer_p_[0] = {}; const TTCN_OERdescriptor_t PDU__BSSGP__RAN__INFORMATION__ACK__GTPC_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__RAN__INFORMATION__ACK__GTPC_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__RAN__INFORMATION__ACK__GTPC_bssgpPduType_oer_p_}; const TTCN_Typedescriptor_t PDU__BSSGP__RAN__INFORMATION__ACK__GTPC_bssgpPduType_descr_ = { "@GTPC_Types.PDU_BSSGP_RAN_INFORMATION_ACK_GTPC.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__RAN__INFORMATION__ACK__GTPC_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__RAN__INFORMATION__ACK__GTPC_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__ACK__GTPC_bssgpPduType_default_coding("RAW"); UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__ACK__GTPC_destination__Cell__Identifier_default_coding("RAW"); UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__ACK__GTPC_source__Cell__Identifier_default_coding("RAW"); UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__ACK__GTPC_rIM__Container_default_coding("RAW"); const TTCN_RAWdescriptor_t PDU__BSSGP__RAN__INFORMATION__ACK__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for PDU__BSSGP__RAN__INFORMATION__ACK__GTPC const TTCN_Typedescriptor_t PDU__BSSGP__RAN__INFORMATION__ACK__GTPC_descr_ = { "@GTPC_Types.PDU_BSSGP_RAN_INFORMATION_ACK_GTPC", NULL, &PDU__BSSGP__RAN__INFORMATION__ACK__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__ACK__GTPC_default_coding("RAW"); const XERdescriptor_t PDU__BSSGP__RAN__INFORMATION__ERROR__GTPC_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PDU__BSSGP__RAN__INFORMATION__ERROR__GTPC_bssgpPduType_oer_ext_arr_[0] = {}; const int PDU__BSSGP__RAN__INFORMATION__ERROR__GTPC_bssgpPduType_oer_p_[0] = {}; const TTCN_OERdescriptor_t PDU__BSSGP__RAN__INFORMATION__ERROR__GTPC_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__RAN__INFORMATION__ERROR__GTPC_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__RAN__INFORMATION__ERROR__GTPC_bssgpPduType_oer_p_}; const TTCN_Typedescriptor_t PDU__BSSGP__RAN__INFORMATION__ERROR__GTPC_bssgpPduType_descr_ = { "@GTPC_Types.PDU_BSSGP_RAN_INFORMATION_ERROR_GTPC.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__RAN__INFORMATION__ERROR__GTPC_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__RAN__INFORMATION__ERROR__GTPC_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__ERROR__GTPC_bssgpPduType_default_coding("RAW"); UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__ERROR__GTPC_destination__Cell__Identifier_default_coding("RAW"); UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__ERROR__GTPC_source__Cell__Identifier_default_coding("RAW"); UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__ERROR__GTPC_rIM__Container_default_coding("RAW"); const TTCN_RAWdescriptor_t PDU__BSSGP__RAN__INFORMATION__ERROR__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for PDU__BSSGP__RAN__INFORMATION__ERROR__GTPC const TTCN_Typedescriptor_t PDU__BSSGP__RAN__INFORMATION__ERROR__GTPC_descr_ = { "@GTPC_Types.PDU_BSSGP_RAN_INFORMATION_ERROR_GTPC", NULL, &PDU__BSSGP__RAN__INFORMATION__ERROR__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__ERROR__GTPC_default_coding("RAW"); const XERdescriptor_t PDU__BSSGP__RAN__INFORMATION__APPLICATION__ERROR__GTPC_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PDU__BSSGP__RAN__INFORMATION__APPLICATION__ERROR__GTPC_bssgpPduType_oer_ext_arr_[0] = {}; const int PDU__BSSGP__RAN__INFORMATION__APPLICATION__ERROR__GTPC_bssgpPduType_oer_p_[0] = {}; const TTCN_OERdescriptor_t PDU__BSSGP__RAN__INFORMATION__APPLICATION__ERROR__GTPC_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__RAN__INFORMATION__APPLICATION__ERROR__GTPC_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__RAN__INFORMATION__APPLICATION__ERROR__GTPC_bssgpPduType_oer_p_}; const TTCN_Typedescriptor_t PDU__BSSGP__RAN__INFORMATION__APPLICATION__ERROR__GTPC_bssgpPduType_descr_ = { "@GTPC_Types.PDU_BSSGP_RAN_INFORMATION_APPLICATION_ERROR_GTPC.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__RAN__INFORMATION__APPLICATION__ERROR__GTPC_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__RAN__INFORMATION__APPLICATION__ERROR__GTPC_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__APPLICATION__ERROR__GTPC_bssgpPduType_default_coding("RAW"); UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__APPLICATION__ERROR__GTPC_destination__Cell__Identifier_default_coding("RAW"); UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__APPLICATION__ERROR__GTPC_source__Cell__Identifier_default_coding("RAW"); UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__APPLICATION__ERROR__GTPC_rIM__Container_default_coding("RAW"); const TTCN_RAWdescriptor_t PDU__BSSGP__RAN__INFORMATION__APPLICATION__ERROR__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for PDU__BSSGP__RAN__INFORMATION__APPLICATION__ERROR__GTPC const TTCN_Typedescriptor_t PDU__BSSGP__RAN__INFORMATION__APPLICATION__ERROR__GTPC_descr_ = { "@GTPC_Types.PDU_BSSGP_RAN_INFORMATION_APPLICATION_ERROR_GTPC", NULL, &PDU__BSSGP__RAN__INFORMATION__APPLICATION__ERROR__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__APPLICATION__ERROR__GTPC_default_coding("RAW"); const TTCN_RAWdescriptor_t RANTransparentContainerField_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RANTransparentContainerField const TTCN_Typedescriptor_t RANTransparentContainerField_descr_ = { "@GTPC_Types.RANTransparentContainerField", NULL, &RANTransparentContainerField_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RANTransparentContainerField_pDU__BSSGP__RAN__INFORMATION__REQUEST_default_coding("RAW"); UNIVERSAL_CHARSTRING RANTransparentContainerField_pDU__BSSGP__RAN__INFORMATION_default_coding("RAW"); UNIVERSAL_CHARSTRING RANTransparentContainerField_pDU__BSSGP__RAN__INFORMATION__ACK_default_coding("RAW"); UNIVERSAL_CHARSTRING RANTransparentContainerField_pDU__BSSGP__RAN__INFORMATION__ERROR_default_coding("RAW"); UNIVERSAL_CHARSTRING RANTransparentContainerField_pDU__BSSGP__RAN__INFORMATION__APPLICATION__ERROR_default_coding("RAW"); UNIVERSAL_CHARSTRING RANTransparentContainerField_default_coding("RAW"); const XERdescriptor_t RANTransparentContainer_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RANTransparentContainer_type__gtpc_oer_ext_arr_[0] = {}; const int RANTransparentContainer_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t RANTransparentContainer_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RANTransparentContainer_type__gtpc_oer_ext_arr_, 0, RANTransparentContainer_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t RANTransparentContainer_type__gtpc_descr_ = { "@GTPC_Types.RANTransparentContainer.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RANTransparentContainer_type__gtpc_xer_, &OCTETSTRING_json_, &RANTransparentContainer_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RANTransparentContainer_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t RANTransparentContainer_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t RANTransparentContainer_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RANTransparentContainer_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RANTransparentContainer_lengthf_descr_ = { "@GTPC_Types.RANTransparentContainer.lengthf", &INTEGER_ber_, &RANTransparentContainer_lengthf_raw_, &INTEGER_text_, &RANTransparentContainer_lengthf_xer_, &INTEGER_json_, &RANTransparentContainer_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RANTransparentContainer_lengthf_default_coding("RAW"); UNIVERSAL_CHARSTRING RANTransparentContainer_rANTransparentContainerField_default_coding("RAW"); const TTCN_RAWdescriptor_t RANTransparentContainer_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RANTransparentContainer const TTCN_Typedescriptor_t RANTransparentContainer_descr_ = { "@GTPC_Types.RANTransparentContainer", NULL, &RANTransparentContainer_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RANTransparentContainer_default_coding("RAW"); const XERdescriptor_t ChargingGatewayAddress_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int ChargingGatewayAddress_type__gtpc_oer_ext_arr_[0] = {}; const int ChargingGatewayAddress_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t ChargingGatewayAddress_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChargingGatewayAddress_type__gtpc_oer_ext_arr_, 0, ChargingGatewayAddress_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t ChargingGatewayAddress_type__gtpc_descr_ = { "@GTPC_Types.ChargingGatewayAddress.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &ChargingGatewayAddress_type__gtpc_xer_, &OCTETSTRING_json_, &ChargingGatewayAddress_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ChargingGatewayAddress_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t ChargingGatewayAddress_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t ChargingGatewayAddress_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t ChargingGatewayAddress_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t ChargingGatewayAddress_lengthf_descr_ = { "@GTPC_Types.ChargingGatewayAddress.lengthf", &INTEGER_ber_, &ChargingGatewayAddress_lengthf_raw_, &INTEGER_text_, &ChargingGatewayAddress_lengthf_xer_, &INTEGER_json_, &ChargingGatewayAddress_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ChargingGatewayAddress_lengthf_default_coding("RAW"); const TTCN_RAWdescriptor_t iPv4__iPv6__Address_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for iPv4__iPv6__Address const TTCN_Typedescriptor_t iPv4__iPv6__Address_descr_ = { "@GTPC_Types.iPv4_iPv6_Address", NULL, &iPv4__iPv6__Address_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t iPv4__iPv6__Address_iPv4__Address_xer_ = { {"iPv4_Address>\n", "iPv4_Address>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int iPv4__iPv6__Address_iPv4__Address_oer_ext_arr_[0] = {}; const int iPv4__iPv6__Address_iPv4__Address_oer_p_[0] = {}; const TTCN_OERdescriptor_t iPv4__iPv6__Address_iPv4__Address_oer_ = { -1, TRUE, 4, FALSE, 0, 0, iPv4__iPv6__Address_iPv4__Address_oer_ext_arr_, 0, iPv4__iPv6__Address_iPv4__Address_oer_p_}; const TTCN_Typedescriptor_t iPv4__iPv6__Address_iPv4__Address_descr_ = { "@GTPC_Types.iPv4_iPv6_Address.iPv4_Address", &OCTETSTRING_ber_, &General__Types::OCT4_raw_, &OCTETSTRING_text_, &iPv4__iPv6__Address_iPv4__Address_xer_, &OCTETSTRING_json_, &iPv4__iPv6__Address_iPv4__Address_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING iPv4__iPv6__Address_iPv4__Address_default_coding("RAW"); const XERdescriptor_t iPv4__iPv6__Address_iPv6__Address_xer_ = { {"iPv6_Address>\n", "iPv6_Address>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int iPv4__iPv6__Address_iPv6__Address_oer_ext_arr_[0] = {}; const int iPv4__iPv6__Address_iPv6__Address_oer_p_[0] = {}; const TTCN_OERdescriptor_t iPv4__iPv6__Address_iPv6__Address_oer_ = { -1, TRUE, 16, FALSE, 0, 0, iPv4__iPv6__Address_iPv6__Address_oer_ext_arr_, 0, iPv4__iPv6__Address_iPv6__Address_oer_p_}; const TTCN_Typedescriptor_t iPv4__iPv6__Address_iPv6__Address_descr_ = { "@GTPC_Types.iPv4_iPv6_Address.iPv6_Address", &OCTETSTRING_ber_, &General__Types::OCT16_raw_, &OCTETSTRING_text_, &iPv4__iPv6__Address_iPv6__Address_xer_, &OCTETSTRING_json_, &iPv4__iPv6__Address_iPv6__Address_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING iPv4__iPv6__Address_iPv6__Address_default_coding("RAW"); UNIVERSAL_CHARSTRING iPv4__iPv6__Address_default_coding("RAW"); UNIVERSAL_CHARSTRING ChargingGatewayAddress_ipv__address_default_coding("RAW"); const TTCN_RAWdescriptor_t ChargingGatewayAddress_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for ChargingGatewayAddress const TTCN_Typedescriptor_t ChargingGatewayAddress_descr_ = { "@GTPC_Types.ChargingGatewayAddress", NULL, &ChargingGatewayAddress_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ChargingGatewayAddress_default_coding("RAW"); const XERdescriptor_t PDPContextPriorization_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PDPContextPriorization_type__gtpc_oer_ext_arr_[0] = {}; const int PDPContextPriorization_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t PDPContextPriorization_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDPContextPriorization_type__gtpc_oer_ext_arr_, 0, PDPContextPriorization_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t PDPContextPriorization_type__gtpc_descr_ = { "@GTPC_Types.PDPContextPriorization.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDPContextPriorization_type__gtpc_xer_, &OCTETSTRING_json_, &PDPContextPriorization_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDPContextPriorization_type__gtpc_default_coding("RAW"); const XERdescriptor_t PDPContextPriorization_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t PDPContextPriorization_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t PDPContextPriorization_lengthf_descr_ = { "@GTPC_Types.PDPContextPriorization.lengthf", &INTEGER_ber_, &General__Types::LIN2__BO__LAST_raw_, &INTEGER_text_, &PDPContextPriorization_lengthf_xer_, &INTEGER_json_, &PDPContextPriorization_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDPContextPriorization_lengthf_default_coding("RAW"); const TTCN_RAWdescriptor_t PDPContextPriorization_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for PDPContextPriorization const TTCN_Typedescriptor_t PDPContextPriorization_descr_ = { "@GTPC_Types.PDPContextPriorization", NULL, &PDPContextPriorization_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDPContextPriorization_default_coding("RAW"); const TTCN_RAWdescriptor_t AdditionalRABSetupInformation__List_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for AdditionalRABSetupInformation__List const TTCN_Typedescriptor_t AdditionalRABSetupInformation__List_descr_ = { "@GTPC_Types.AdditionalRABSetupInformation_List", NULL, &AdditionalRABSetupInformation__List_raw_, NULL, NULL, NULL, NULL, NULL, &AdditionalRABSetupInformation_descr_, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t AdditionalRABSetupInformation_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int AdditionalRABSetupInformation_type__gtpc_oer_ext_arr_[0] = {}; const int AdditionalRABSetupInformation_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t AdditionalRABSetupInformation_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, AdditionalRABSetupInformation_type__gtpc_oer_ext_arr_, 0, AdditionalRABSetupInformation_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t AdditionalRABSetupInformation_type__gtpc_descr_ = { "@GTPC_Types.AdditionalRABSetupInformation.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &AdditionalRABSetupInformation_type__gtpc_xer_, &OCTETSTRING_json_, &AdditionalRABSetupInformation_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AdditionalRABSetupInformation_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t AdditionalRABSetupInformation_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t AdditionalRABSetupInformation_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t AdditionalRABSetupInformation_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t AdditionalRABSetupInformation_lengthf_descr_ = { "@GTPC_Types.AdditionalRABSetupInformation.lengthf", &INTEGER_ber_, &AdditionalRABSetupInformation_lengthf_raw_, &INTEGER_text_, &AdditionalRABSetupInformation_lengthf_xer_, &INTEGER_json_, &AdditionalRABSetupInformation_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AdditionalRABSetupInformation_lengthf_default_coding("RAW"); const XERdescriptor_t AdditionalRABSetupInformation_nsapi_xer_ = { {"nsapi>\n", "nsapi>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t AdditionalRABSetupInformation_nsapi_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t AdditionalRABSetupInformation_nsapi_descr_ = { "@GTPC_Types.AdditionalRABSetupInformation.nsapi", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &AdditionalRABSetupInformation_nsapi_xer_, &BITSTRING_json_, &AdditionalRABSetupInformation_nsapi_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AdditionalRABSetupInformation_nsapi_default_coding("RAW"); const XERdescriptor_t AdditionalRABSetupInformation_unused_xer_ = { {"unused>\n", "unused>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t AdditionalRABSetupInformation_unused_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t AdditionalRABSetupInformation_unused_descr_ = { "@GTPC_Types.AdditionalRABSetupInformation.unused", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &AdditionalRABSetupInformation_unused_xer_, &BITSTRING_json_, &AdditionalRABSetupInformation_unused_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AdditionalRABSetupInformation_unused_default_coding("RAW"); const TTCN_RAWdescriptor_t AdditionalRABSetupInformation_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for AdditionalRABSetupInformation const TTCN_Typedescriptor_t AdditionalRABSetupInformation_descr_ = { "@GTPC_Types.AdditionalRABSetupInformation", NULL, &AdditionalRABSetupInformation_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t AdditionalRABSetupInformation_teidData_xer_ = { {"teidData>\n", "teidData>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int AdditionalRABSetupInformation_teidData_oer_ext_arr_[0] = {}; const int AdditionalRABSetupInformation_teidData_oer_p_[0] = {}; const TTCN_OERdescriptor_t AdditionalRABSetupInformation_teidData_oer_ = { -1, TRUE, 4, FALSE, 0, 0, AdditionalRABSetupInformation_teidData_oer_ext_arr_, 0, AdditionalRABSetupInformation_teidData_oer_p_}; const TTCN_Typedescriptor_t AdditionalRABSetupInformation_teidData_descr_ = { "@GTPC_Types.AdditionalRABSetupInformation.teidData", &OCTETSTRING_ber_, &General__Types::OCT4_raw_, &OCTETSTRING_text_, &AdditionalRABSetupInformation_teidData_xer_, &OCTETSTRING_json_, &AdditionalRABSetupInformation_teidData_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AdditionalRABSetupInformation_teidData_default_coding("RAW"); const XERdescriptor_t AdditionalRABSetupInformation_rncIpAddress_xer_ = { {"rncIpAddress>\n", "rncIpAddress>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int AdditionalRABSetupInformation_rncIpAddress_oer_ext_arr_[0] = {}; const int AdditionalRABSetupInformation_rncIpAddress_oer_p_[0] = {}; const TTCN_OERdescriptor_t AdditionalRABSetupInformation_rncIpAddress_oer_ = { -1, TRUE, -1, FALSE, 0, 0, AdditionalRABSetupInformation_rncIpAddress_oer_ext_arr_, 0, AdditionalRABSetupInformation_rncIpAddress_oer_p_}; const TTCN_Typedescriptor_t AdditionalRABSetupInformation_rncIpAddress_descr_ = { "@GTPC_Types.AdditionalRABSetupInformation.rncIpAddress", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &AdditionalRABSetupInformation_rncIpAddress_xer_, &OCTETSTRING_json_, &AdditionalRABSetupInformation_rncIpAddress_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AdditionalRABSetupInformation_rncIpAddress_default_coding("RAW"); UNIVERSAL_CHARSTRING AdditionalRABSetupInformation_default_coding("RAW"); UNIVERSAL_CHARSTRING AdditionalRABSetupInformation__List_0_default_coding("RAW"); UNIVERSAL_CHARSTRING AdditionalRABSetupInformation__List_default_coding("RAW"); const TTCN_RAWdescriptor_t PrivateExtension__gtpc__List_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for PrivateExtension__gtpc__List const TTCN_Typedescriptor_t PrivateExtension__gtpc__List_descr_ = { "@GTPC_Types.PrivateExtension_gtpc_List", NULL, &PrivateExtension__gtpc__List_raw_, NULL, NULL, NULL, NULL, NULL, &PrivateExtension__gtpc_descr_, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t PrivateExtension__gtpc_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PrivateExtension__gtpc_type__gtpc_oer_ext_arr_[0] = {}; const int PrivateExtension__gtpc_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t PrivateExtension__gtpc_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PrivateExtension__gtpc_type__gtpc_oer_ext_arr_, 0, PrivateExtension__gtpc_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t PrivateExtension__gtpc_type__gtpc_descr_ = { "@GTPC_Types.PrivateExtension_gtpc.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PrivateExtension__gtpc_type__gtpc_xer_, &OCTETSTRING_json_, &PrivateExtension__gtpc_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PrivateExtension__gtpc_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t PrivateExtension__gtpc_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t PrivateExtension__gtpc_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t PrivateExtension__gtpc_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t PrivateExtension__gtpc_lengthf_descr_ = { "@GTPC_Types.PrivateExtension_gtpc.lengthf", &INTEGER_ber_, &PrivateExtension__gtpc_lengthf_raw_, &INTEGER_text_, &PrivateExtension__gtpc_lengthf_xer_, &INTEGER_json_, &PrivateExtension__gtpc_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PrivateExtension__gtpc_lengthf_default_coding("RAW"); const XERdescriptor_t PrivateExtension__gtpc_extensionID_xer_ = { {"extensionID>\n", "extensionID>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PrivateExtension__gtpc_extensionID_oer_ext_arr_[0] = {}; const int PrivateExtension__gtpc_extensionID_oer_p_[0] = {}; const TTCN_OERdescriptor_t PrivateExtension__gtpc_extensionID_oer_ = { -1, TRUE, 2, FALSE, 0, 0, PrivateExtension__gtpc_extensionID_oer_ext_arr_, 0, PrivateExtension__gtpc_extensionID_oer_p_}; const TTCN_Typedescriptor_t PrivateExtension__gtpc_extensionID_descr_ = { "@GTPC_Types.PrivateExtension_gtpc.extensionID", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &PrivateExtension__gtpc_extensionID_xer_, &OCTETSTRING_json_, &PrivateExtension__gtpc_extensionID_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PrivateExtension__gtpc_extensionID_default_coding("RAW"); const XERdescriptor_t PrivateExtension__gtpc_extensionValue_xer_ = { {"extensionValue>\n", "extensionValue>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PrivateExtension__gtpc_extensionValue_oer_ext_arr_[0] = {}; const int PrivateExtension__gtpc_extensionValue_oer_p_[0] = {}; const TTCN_OERdescriptor_t PrivateExtension__gtpc_extensionValue_oer_ = { -1, TRUE, -1, FALSE, 0, 0, PrivateExtension__gtpc_extensionValue_oer_ext_arr_, 0, PrivateExtension__gtpc_extensionValue_oer_p_}; const TTCN_Typedescriptor_t PrivateExtension__gtpc_extensionValue_descr_ = { "@GTPC_Types.PrivateExtension_gtpc.extensionValue", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &PrivateExtension__gtpc_extensionValue_xer_, &OCTETSTRING_json_, &PrivateExtension__gtpc_extensionValue_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PrivateExtension__gtpc_extensionValue_default_coding("RAW"); const TTCN_RAWdescriptor_t PrivateExtension__gtpc_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for PrivateExtension__gtpc const TTCN_Typedescriptor_t PrivateExtension__gtpc_descr_ = { "@GTPC_Types.PrivateExtension_gtpc", NULL, &PrivateExtension__gtpc_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PrivateExtension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING PrivateExtension__gtpc__List_0_default_coding("RAW"); UNIVERSAL_CHARSTRING PrivateExtension__gtpc__List_default_coding("RAW"); const XERdescriptor_t SGSN__Number_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int SGSN__Number_type__gtpc_oer_ext_arr_[0] = {}; const int SGSN__Number_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t SGSN__Number_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SGSN__Number_type__gtpc_oer_ext_arr_, 0, SGSN__Number_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t SGSN__Number_type__gtpc_descr_ = { "@GTPC_Types.SGSN_Number.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &SGSN__Number_type__gtpc_xer_, &OCTETSTRING_json_, &SGSN__Number_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SGSN__Number_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t SGSN__Number_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t SGSN__Number_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t SGSN__Number_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t SGSN__Number_lengthf_descr_ = { "@GTPC_Types.SGSN_Number.lengthf", &INTEGER_ber_, &SGSN__Number_lengthf_raw_, &INTEGER_text_, &SGSN__Number_lengthf_xer_, &INTEGER_json_, &SGSN__Number_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SGSN__Number_lengthf_default_coding("RAW"); const XERdescriptor_t SGSN__Number_sGSN__NumberValue_xer_ = { {"sGSN_NumberValue>\n", "sGSN_NumberValue>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int SGSN__Number_sGSN__NumberValue_oer_ext_arr_[0] = {}; const int SGSN__Number_sGSN__NumberValue_oer_p_[0] = {}; const TTCN_OERdescriptor_t SGSN__Number_sGSN__NumberValue_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SGSN__Number_sGSN__NumberValue_oer_ext_arr_, 0, SGSN__Number_sGSN__NumberValue_oer_p_}; const TTCN_Typedescriptor_t SGSN__Number_sGSN__NumberValue_descr_ = { "@GTPC_Types.SGSN_Number.sGSN_NumberValue", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &SGSN__Number_sGSN__NumberValue_xer_, &OCTETSTRING_json_, &SGSN__Number_sGSN__NumberValue_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SGSN__Number_sGSN__NumberValue_default_coding("RAW"); const TTCN_RAWdescriptor_t SGSN__Number_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for SGSN__Number const TTCN_Typedescriptor_t SGSN__Number_descr_ = { "@GTPC_Types.SGSN_Number", NULL, &SGSN__Number_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SGSN__Number_default_coding("RAW"); const XERdescriptor_t CommonFlags_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int CommonFlags_type__gtpc_oer_ext_arr_[0] = {}; const int CommonFlags_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t CommonFlags_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, CommonFlags_type__gtpc_oer_ext_arr_, 0, CommonFlags_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t CommonFlags_type__gtpc_descr_ = { "@GTPC_Types.CommonFlags.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &CommonFlags_type__gtpc_xer_, &OCTETSTRING_json_, &CommonFlags_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CommonFlags_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t CommonFlags_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t CommonFlags_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t CommonFlags_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t CommonFlags_lengthf_descr_ = { "@GTPC_Types.CommonFlags.lengthf", &INTEGER_ber_, &CommonFlags_lengthf_raw_, &INTEGER_text_, &CommonFlags_lengthf_xer_, &INTEGER_json_, &CommonFlags_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CommonFlags_lengthf_default_coding("RAW"); const XERdescriptor_t CommonFlags_prohibitPayloadCompression_xer_ = { {"prohibitPayloadCompression>\n", "prohibitPayloadCompression>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t CommonFlags_prohibitPayloadCompression_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t CommonFlags_prohibitPayloadCompression_descr_ = { "@GTPC_Types.CommonFlags.prohibitPayloadCompression", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &CommonFlags_prohibitPayloadCompression_xer_, &BITSTRING_json_, &CommonFlags_prohibitPayloadCompression_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CommonFlags_prohibitPayloadCompression_default_coding("RAW"); const XERdescriptor_t CommonFlags_mBMS__ServiceType_xer_ = { {"mBMS_ServiceType>\n", "mBMS_ServiceType>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t CommonFlags_mBMS__ServiceType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t CommonFlags_mBMS__ServiceType_descr_ = { "@GTPC_Types.CommonFlags.mBMS_ServiceType", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &CommonFlags_mBMS__ServiceType_xer_, &BITSTRING_json_, &CommonFlags_mBMS__ServiceType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CommonFlags_mBMS__ServiceType_default_coding("RAW"); const XERdescriptor_t CommonFlags_rAN__ProceduresReady_xer_ = { {"rAN_ProceduresReady>\n", "rAN_ProceduresReady>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t CommonFlags_rAN__ProceduresReady_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t CommonFlags_rAN__ProceduresReady_descr_ = { "@GTPC_Types.CommonFlags.rAN_ProceduresReady", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &CommonFlags_rAN__ProceduresReady_xer_, &BITSTRING_json_, &CommonFlags_rAN__ProceduresReady_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CommonFlags_rAN__ProceduresReady_default_coding("RAW"); const XERdescriptor_t CommonFlags_mBMS__CountingInformation_xer_ = { {"mBMS_CountingInformation>\n", "mBMS_CountingInformation>\n"}, {26, 26}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t CommonFlags_mBMS__CountingInformation_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t CommonFlags_mBMS__CountingInformation_descr_ = { "@GTPC_Types.CommonFlags.mBMS_CountingInformation", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &CommonFlags_mBMS__CountingInformation_xer_, &BITSTRING_json_, &CommonFlags_mBMS__CountingInformation_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CommonFlags_mBMS__CountingInformation_default_coding("RAW"); const XERdescriptor_t CommonFlags_nO__QoS__Negotiation_xer_ = { {"nO_QoS_Negotiation>\n", "nO_QoS_Negotiation>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t CommonFlags_nO__QoS__Negotiation_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t CommonFlags_nO__QoS__Negotiation_descr_ = { "@GTPC_Types.CommonFlags.nO_QoS_Negotiation", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &CommonFlags_nO__QoS__Negotiation_xer_, &BITSTRING_json_, &CommonFlags_nO__QoS__Negotiation_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CommonFlags_nO__QoS__Negotiation_default_coding("RAW"); const XERdescriptor_t CommonFlags_nRSN_xer_ = { {"nRSN>\n", "nRSN>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t CommonFlags_nRSN_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t CommonFlags_nRSN_descr_ = { "@GTPC_Types.CommonFlags.nRSN", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &CommonFlags_nRSN_xer_, &BITSTRING_json_, &CommonFlags_nRSN_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CommonFlags_nRSN_default_coding("RAW"); const XERdescriptor_t CommonFlags_upgradeQoS__Supported_xer_ = { {"upgradeQoS_Supported>\n", "upgradeQoS_Supported>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t CommonFlags_upgradeQoS__Supported_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t CommonFlags_upgradeQoS__Supported_descr_ = { "@GTPC_Types.CommonFlags.upgradeQoS_Supported", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &CommonFlags_upgradeQoS__Supported_xer_, &BITSTRING_json_, &CommonFlags_upgradeQoS__Supported_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CommonFlags_upgradeQoS__Supported_default_coding("RAW"); const XERdescriptor_t CommonFlags_dualAddressBearerFlag_xer_ = { {"dualAddressBearerFlag>\n", "dualAddressBearerFlag>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t CommonFlags_dualAddressBearerFlag_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t CommonFlags_dualAddressBearerFlag_descr_ = { "@GTPC_Types.CommonFlags.dualAddressBearerFlag", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &CommonFlags_dualAddressBearerFlag_xer_, &BITSTRING_json_, &CommonFlags_dualAddressBearerFlag_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CommonFlags_dualAddressBearerFlag_default_coding("RAW"); const TTCN_RAWdescriptor_t CommonFlags_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for CommonFlags const TTCN_Typedescriptor_t CommonFlags_descr_ = { "@GTPC_Types.CommonFlags", NULL, &CommonFlags_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CommonFlags_default_coding("RAW"); const XERdescriptor_t APN__Restriction_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int APN__Restriction_type__gtpc_oer_ext_arr_[0] = {}; const int APN__Restriction_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t APN__Restriction_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, APN__Restriction_type__gtpc_oer_ext_arr_, 0, APN__Restriction_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t APN__Restriction_type__gtpc_descr_ = { "@GTPC_Types.APN_Restriction.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &APN__Restriction_type__gtpc_xer_, &OCTETSTRING_json_, &APN__Restriction_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING APN__Restriction_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t APN__Restriction_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t APN__Restriction_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t APN__Restriction_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t APN__Restriction_lengthf_descr_ = { "@GTPC_Types.APN_Restriction.lengthf", &INTEGER_ber_, &APN__Restriction_lengthf_raw_, &INTEGER_text_, &APN__Restriction_lengthf_xer_, &INTEGER_json_, &APN__Restriction_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING APN__Restriction_lengthf_default_coding("RAW"); const XERdescriptor_t APN__Restriction_restrictionTypeValue_xer_ = { {"restrictionTypeValue>\n", "restrictionTypeValue>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int APN__Restriction_restrictionTypeValue_oer_ext_arr_[0] = {}; const int APN__Restriction_restrictionTypeValue_oer_p_[0] = {}; const TTCN_OERdescriptor_t APN__Restriction_restrictionTypeValue_oer_ = { -1, TRUE, 1, FALSE, 0, 0, APN__Restriction_restrictionTypeValue_oer_ext_arr_, 0, APN__Restriction_restrictionTypeValue_oer_p_}; const TTCN_Typedescriptor_t APN__Restriction_restrictionTypeValue_descr_ = { "@GTPC_Types.APN_Restriction.restrictionTypeValue", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &APN__Restriction_restrictionTypeValue_xer_, &OCTETSTRING_json_, &APN__Restriction_restrictionTypeValue_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING APN__Restriction_restrictionTypeValue_default_coding("RAW"); const TTCN_RAWdescriptor_t APN__Restriction_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for APN__Restriction const TTCN_Typedescriptor_t APN__Restriction_descr_ = { "@GTPC_Types.APN_Restriction", NULL, &APN__Restriction_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING APN__Restriction_default_coding("RAW"); const XERdescriptor_t RATType_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RATType_type__gtpc_oer_ext_arr_[0] = {}; const int RATType_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t RATType_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RATType_type__gtpc_oer_ext_arr_, 0, RATType_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t RATType_type__gtpc_descr_ = { "@GTPC_Types.RATType.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RATType_type__gtpc_xer_, &OCTETSTRING_json_, &RATType_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RATType_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t RATType_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t RATType_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RATType_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RATType_lengthf_descr_ = { "@GTPC_Types.RATType.lengthf", &INTEGER_ber_, &RATType_lengthf_raw_, &INTEGER_text_, &RATType_lengthf_xer_, &INTEGER_json_, &RATType_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RATType_lengthf_default_coding("RAW"); const XERdescriptor_t RATType_ratTypeValue_xer_ = { {"ratTypeValue>\n", "ratTypeValue>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RATType_ratTypeValue_oer_ext_arr_[0] = {}; const int RATType_ratTypeValue_oer_p_[0] = {}; const TTCN_OERdescriptor_t RATType_ratTypeValue_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RATType_ratTypeValue_oer_ext_arr_, 0, RATType_ratTypeValue_oer_p_}; const TTCN_Typedescriptor_t RATType_ratTypeValue_descr_ = { "@GTPC_Types.RATType.ratTypeValue", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RATType_ratTypeValue_xer_, &OCTETSTRING_json_, &RATType_ratTypeValue_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RATType_ratTypeValue_default_coding("RAW"); const TTCN_RAWdescriptor_t RATType_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RATType const TTCN_Typedescriptor_t RATType_descr_ = { "@GTPC_Types.RATType", NULL, &RATType_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RATType_default_coding("RAW"); const XERdescriptor_t UserLocationInformation_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int UserLocationInformation_type__gtpc_oer_ext_arr_[0] = {}; const int UserLocationInformation_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t UserLocationInformation_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, UserLocationInformation_type__gtpc_oer_ext_arr_, 0, UserLocationInformation_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t UserLocationInformation_type__gtpc_descr_ = { "@GTPC_Types.UserLocationInformation.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &UserLocationInformation_type__gtpc_xer_, &OCTETSTRING_json_, &UserLocationInformation_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UserLocationInformation_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t UserLocationInformation_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t UserLocationInformation_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t UserLocationInformation_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t UserLocationInformation_lengthf_descr_ = { "@GTPC_Types.UserLocationInformation.lengthf", &INTEGER_ber_, &UserLocationInformation_lengthf_raw_, &INTEGER_text_, &UserLocationInformation_lengthf_xer_, &INTEGER_json_, &UserLocationInformation_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UserLocationInformation_lengthf_default_coding("RAW"); const XERdescriptor_t UserLocationInformation_geographicLocationType_xer_ = { {"geographicLocationType>\n", "geographicLocationType>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int UserLocationInformation_geographicLocationType_oer_ext_arr_[0] = {}; const int UserLocationInformation_geographicLocationType_oer_p_[0] = {}; const TTCN_OERdescriptor_t UserLocationInformation_geographicLocationType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, UserLocationInformation_geographicLocationType_oer_ext_arr_, 0, UserLocationInformation_geographicLocationType_oer_p_}; const TTCN_Typedescriptor_t UserLocationInformation_geographicLocationType_descr_ = { "@GTPC_Types.UserLocationInformation.geographicLocationType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &UserLocationInformation_geographicLocationType_xer_, &OCTETSTRING_json_, &UserLocationInformation_geographicLocationType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UserLocationInformation_geographicLocationType_default_coding("RAW"); const TTCN_RAWdescriptor_t GeographicLocation__gtpc_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for GeographicLocation__gtpc const TTCN_Typedescriptor_t GeographicLocation__gtpc_descr_ = { "@GTPC_Types.GeographicLocation_gtpc", NULL, &GeographicLocation__gtpc_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t GeographicLocationCGI_mccDigit1_xer_ = { {"mccDigit1>\n", "mccDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t GeographicLocationCGI_mccDigit1_descr_ = { "@GTPC_Types.GeographicLocationCGI.mccDigit1", NULL, &General__Types::HEX1_raw_, NULL, &GeographicLocationCGI_mccDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GeographicLocationCGI_mccDigit1_default_coding("RAW"); const XERdescriptor_t GeographicLocationCGI_mccDigit2_xer_ = { {"mccDigit2>\n", "mccDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t GeographicLocationCGI_mccDigit2_descr_ = { "@GTPC_Types.GeographicLocationCGI.mccDigit2", NULL, &General__Types::HEX1_raw_, NULL, &GeographicLocationCGI_mccDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GeographicLocationCGI_mccDigit2_default_coding("RAW"); const XERdescriptor_t GeographicLocationCGI_mccDigit3_xer_ = { {"mccDigit3>\n", "mccDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t GeographicLocationCGI_mccDigit3_descr_ = { "@GTPC_Types.GeographicLocationCGI.mccDigit3", NULL, &General__Types::HEX1_raw_, NULL, &GeographicLocationCGI_mccDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GeographicLocationCGI_mccDigit3_default_coding("RAW"); const XERdescriptor_t GeographicLocationCGI_mncDigit3_xer_ = { {"mncDigit3>\n", "mncDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t GeographicLocationCGI_mncDigit3_descr_ = { "@GTPC_Types.GeographicLocationCGI.mncDigit3", NULL, &General__Types::HEX1_raw_, NULL, &GeographicLocationCGI_mncDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GeographicLocationCGI_mncDigit3_default_coding("RAW"); const XERdescriptor_t GeographicLocationCGI_mncDigit1_xer_ = { {"mncDigit1>\n", "mncDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t GeographicLocationCGI_mncDigit1_descr_ = { "@GTPC_Types.GeographicLocationCGI.mncDigit1", NULL, &General__Types::HEX1_raw_, NULL, &GeographicLocationCGI_mncDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GeographicLocationCGI_mncDigit1_default_coding("RAW"); const XERdescriptor_t GeographicLocationCGI_mncDigit2_xer_ = { {"mncDigit2>\n", "mncDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t GeographicLocationCGI_mncDigit2_descr_ = { "@GTPC_Types.GeographicLocationCGI.mncDigit2", NULL, &General__Types::HEX1_raw_, NULL, &GeographicLocationCGI_mncDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GeographicLocationCGI_mncDigit2_default_coding("RAW"); const XERdescriptor_t GeographicLocationCGI_lac_xer_ = { {"lac>\n", "lac>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int GeographicLocationCGI_lac_oer_ext_arr_[0] = {}; const int GeographicLocationCGI_lac_oer_p_[0] = {}; const TTCN_OERdescriptor_t GeographicLocationCGI_lac_oer_ = { -1, TRUE, 2, FALSE, 0, 0, GeographicLocationCGI_lac_oer_ext_arr_, 0, GeographicLocationCGI_lac_oer_p_}; const TTCN_Typedescriptor_t GeographicLocationCGI_lac_descr_ = { "@GTPC_Types.GeographicLocationCGI.lac", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &GeographicLocationCGI_lac_xer_, &OCTETSTRING_json_, &GeographicLocationCGI_lac_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GeographicLocationCGI_lac_default_coding("RAW"); const XERdescriptor_t GeographicLocationCGI_cI__value_xer_ = { {"cI_value>\n", "cI_value>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int GeographicLocationCGI_cI__value_oer_ext_arr_[0] = {}; const int GeographicLocationCGI_cI__value_oer_p_[0] = {}; const TTCN_OERdescriptor_t GeographicLocationCGI_cI__value_oer_ = { -1, TRUE, 2, FALSE, 0, 0, GeographicLocationCGI_cI__value_oer_ext_arr_, 0, GeographicLocationCGI_cI__value_oer_p_}; const TTCN_Typedescriptor_t GeographicLocationCGI_cI__value_descr_ = { "@GTPC_Types.GeographicLocationCGI.cI_value", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &GeographicLocationCGI_cI__value_xer_, &OCTETSTRING_json_, &GeographicLocationCGI_cI__value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GeographicLocationCGI_cI__value_default_coding("RAW"); const TTCN_RAWdescriptor_t GeographicLocationCGI_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for GeographicLocationCGI const TTCN_Typedescriptor_t GeographicLocationCGI_descr_ = { "@GTPC_Types.GeographicLocationCGI", NULL, &GeographicLocationCGI_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GeographicLocationCGI_default_coding("RAW"); UNIVERSAL_CHARSTRING GeographicLocation__gtpc_geographicLocationCGI_default_coding("RAW"); const XERdescriptor_t GeographicLocationSAI_mccDigit1_xer_ = { {"mccDigit1>\n", "mccDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t GeographicLocationSAI_mccDigit1_descr_ = { "@GTPC_Types.GeographicLocationSAI.mccDigit1", NULL, &General__Types::HEX1_raw_, NULL, &GeographicLocationSAI_mccDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GeographicLocationSAI_mccDigit1_default_coding("RAW"); const XERdescriptor_t GeographicLocationSAI_mccDigit2_xer_ = { {"mccDigit2>\n", "mccDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t GeographicLocationSAI_mccDigit2_descr_ = { "@GTPC_Types.GeographicLocationSAI.mccDigit2", NULL, &General__Types::HEX1_raw_, NULL, &GeographicLocationSAI_mccDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GeographicLocationSAI_mccDigit2_default_coding("RAW"); const XERdescriptor_t GeographicLocationSAI_mccDigit3_xer_ = { {"mccDigit3>\n", "mccDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t GeographicLocationSAI_mccDigit3_descr_ = { "@GTPC_Types.GeographicLocationSAI.mccDigit3", NULL, &General__Types::HEX1_raw_, NULL, &GeographicLocationSAI_mccDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GeographicLocationSAI_mccDigit3_default_coding("RAW"); const XERdescriptor_t GeographicLocationSAI_mncDigit3_xer_ = { {"mncDigit3>\n", "mncDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t GeographicLocationSAI_mncDigit3_descr_ = { "@GTPC_Types.GeographicLocationSAI.mncDigit3", NULL, &General__Types::HEX1_raw_, NULL, &GeographicLocationSAI_mncDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GeographicLocationSAI_mncDigit3_default_coding("RAW"); const XERdescriptor_t GeographicLocationSAI_mncDigit1_xer_ = { {"mncDigit1>\n", "mncDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t GeographicLocationSAI_mncDigit1_descr_ = { "@GTPC_Types.GeographicLocationSAI.mncDigit1", NULL, &General__Types::HEX1_raw_, NULL, &GeographicLocationSAI_mncDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GeographicLocationSAI_mncDigit1_default_coding("RAW"); const XERdescriptor_t GeographicLocationSAI_mncDigit2_xer_ = { {"mncDigit2>\n", "mncDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t GeographicLocationSAI_mncDigit2_descr_ = { "@GTPC_Types.GeographicLocationSAI.mncDigit2", NULL, &General__Types::HEX1_raw_, NULL, &GeographicLocationSAI_mncDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GeographicLocationSAI_mncDigit2_default_coding("RAW"); const XERdescriptor_t GeographicLocationSAI_lac_xer_ = { {"lac>\n", "lac>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int GeographicLocationSAI_lac_oer_ext_arr_[0] = {}; const int GeographicLocationSAI_lac_oer_p_[0] = {}; const TTCN_OERdescriptor_t GeographicLocationSAI_lac_oer_ = { -1, TRUE, 2, FALSE, 0, 0, GeographicLocationSAI_lac_oer_ext_arr_, 0, GeographicLocationSAI_lac_oer_p_}; const TTCN_Typedescriptor_t GeographicLocationSAI_lac_descr_ = { "@GTPC_Types.GeographicLocationSAI.lac", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &GeographicLocationSAI_lac_xer_, &OCTETSTRING_json_, &GeographicLocationSAI_lac_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GeographicLocationSAI_lac_default_coding("RAW"); const XERdescriptor_t GeographicLocationSAI_sac_xer_ = { {"sac>\n", "sac>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int GeographicLocationSAI_sac_oer_ext_arr_[0] = {}; const int GeographicLocationSAI_sac_oer_p_[0] = {}; const TTCN_OERdescriptor_t GeographicLocationSAI_sac_oer_ = { -1, TRUE, 2, FALSE, 0, 0, GeographicLocationSAI_sac_oer_ext_arr_, 0, GeographicLocationSAI_sac_oer_p_}; const TTCN_Typedescriptor_t GeographicLocationSAI_sac_descr_ = { "@GTPC_Types.GeographicLocationSAI.sac", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &GeographicLocationSAI_sac_xer_, &OCTETSTRING_json_, &GeographicLocationSAI_sac_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GeographicLocationSAI_sac_default_coding("RAW"); const TTCN_RAWdescriptor_t GeographicLocationSAI_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for GeographicLocationSAI const TTCN_Typedescriptor_t GeographicLocationSAI_descr_ = { "@GTPC_Types.GeographicLocationSAI", NULL, &GeographicLocationSAI_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GeographicLocationSAI_default_coding("RAW"); UNIVERSAL_CHARSTRING GeographicLocation__gtpc_geographicLocationSAI_default_coding("RAW"); const XERdescriptor_t GeographicLocationRAI_mccDigit1_xer_ = { {"mccDigit1>\n", "mccDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t GeographicLocationRAI_mccDigit1_descr_ = { "@GTPC_Types.GeographicLocationRAI.mccDigit1", NULL, &General__Types::HEX1_raw_, NULL, &GeographicLocationRAI_mccDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GeographicLocationRAI_mccDigit1_default_coding("RAW"); const XERdescriptor_t GeographicLocationRAI_mccDigit2_xer_ = { {"mccDigit2>\n", "mccDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t GeographicLocationRAI_mccDigit2_descr_ = { "@GTPC_Types.GeographicLocationRAI.mccDigit2", NULL, &General__Types::HEX1_raw_, NULL, &GeographicLocationRAI_mccDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GeographicLocationRAI_mccDigit2_default_coding("RAW"); const XERdescriptor_t GeographicLocationRAI_mccDigit3_xer_ = { {"mccDigit3>\n", "mccDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t GeographicLocationRAI_mccDigit3_descr_ = { "@GTPC_Types.GeographicLocationRAI.mccDigit3", NULL, &General__Types::HEX1_raw_, NULL, &GeographicLocationRAI_mccDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GeographicLocationRAI_mccDigit3_default_coding("RAW"); const XERdescriptor_t GeographicLocationRAI_mncDigit3_xer_ = { {"mncDigit3>\n", "mncDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t GeographicLocationRAI_mncDigit3_descr_ = { "@GTPC_Types.GeographicLocationRAI.mncDigit3", NULL, &General__Types::HEX1_raw_, NULL, &GeographicLocationRAI_mncDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GeographicLocationRAI_mncDigit3_default_coding("RAW"); const XERdescriptor_t GeographicLocationRAI_mncDigit1_xer_ = { {"mncDigit1>\n", "mncDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t GeographicLocationRAI_mncDigit1_descr_ = { "@GTPC_Types.GeographicLocationRAI.mncDigit1", NULL, &General__Types::HEX1_raw_, NULL, &GeographicLocationRAI_mncDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GeographicLocationRAI_mncDigit1_default_coding("RAW"); const XERdescriptor_t GeographicLocationRAI_mncDigit2_xer_ = { {"mncDigit2>\n", "mncDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t GeographicLocationRAI_mncDigit2_descr_ = { "@GTPC_Types.GeographicLocationRAI.mncDigit2", NULL, &General__Types::HEX1_raw_, NULL, &GeographicLocationRAI_mncDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GeographicLocationRAI_mncDigit2_default_coding("RAW"); const XERdescriptor_t GeographicLocationRAI_lac_xer_ = { {"lac>\n", "lac>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int GeographicLocationRAI_lac_oer_ext_arr_[0] = {}; const int GeographicLocationRAI_lac_oer_p_[0] = {}; const TTCN_OERdescriptor_t GeographicLocationRAI_lac_oer_ = { -1, TRUE, 2, FALSE, 0, 0, GeographicLocationRAI_lac_oer_ext_arr_, 0, GeographicLocationRAI_lac_oer_p_}; const TTCN_Typedescriptor_t GeographicLocationRAI_lac_descr_ = { "@GTPC_Types.GeographicLocationRAI.lac", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &GeographicLocationRAI_lac_xer_, &OCTETSTRING_json_, &GeographicLocationRAI_lac_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GeographicLocationRAI_lac_default_coding("RAW"); const XERdescriptor_t GeographicLocationRAI_rac_xer_ = { {"rac>\n", "rac>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int GeographicLocationRAI_rac_oer_ext_arr_[0] = {}; const int GeographicLocationRAI_rac_oer_p_[0] = {}; const TTCN_OERdescriptor_t GeographicLocationRAI_rac_oer_ = { -1, TRUE, 2, FALSE, 0, 0, GeographicLocationRAI_rac_oer_ext_arr_, 0, GeographicLocationRAI_rac_oer_p_}; const TTCN_Typedescriptor_t GeographicLocationRAI_rac_descr_ = { "@GTPC_Types.GeographicLocationRAI.rac", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &GeographicLocationRAI_rac_xer_, &OCTETSTRING_json_, &GeographicLocationRAI_rac_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GeographicLocationRAI_rac_default_coding("RAW"); const TTCN_RAWdescriptor_t GeographicLocationRAI_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for GeographicLocationRAI const TTCN_Typedescriptor_t GeographicLocationRAI_descr_ = { "@GTPC_Types.GeographicLocationRAI", NULL, &GeographicLocationRAI_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GeographicLocationRAI_default_coding("RAW"); UNIVERSAL_CHARSTRING GeographicLocation__gtpc_geographicLocationRAI_default_coding("RAW"); UNIVERSAL_CHARSTRING GeographicLocation__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t UserLocationInformation_geographicLocation_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for UserLocationInformation_geographicLocation const TTCN_Typedescriptor_t UserLocationInformation_geographicLocation_descr_ = { "@GTPC_Types.UserLocationInformation.geographicLocation", NULL, &UserLocationInformation_geographicLocation_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UserLocationInformation_geographicLocation_default_coding("RAW"); const TTCN_RAWdescriptor_t UserLocationInformation_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for UserLocationInformation const TTCN_Typedescriptor_t UserLocationInformation_descr_ = { "@GTPC_Types.UserLocationInformation", NULL, &UserLocationInformation_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UserLocationInformation_default_coding("RAW"); const XERdescriptor_t MS__TimeZone_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MS__TimeZone_type__gtpc_oer_ext_arr_[0] = {}; const int MS__TimeZone_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t MS__TimeZone_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MS__TimeZone_type__gtpc_oer_ext_arr_, 0, MS__TimeZone_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t MS__TimeZone_type__gtpc_descr_ = { "@GTPC_Types.MS_TimeZone.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MS__TimeZone_type__gtpc_xer_, &OCTETSTRING_json_, &MS__TimeZone_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MS__TimeZone_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t MS__TimeZone_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MS__TimeZone_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MS__TimeZone_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MS__TimeZone_lengthf_descr_ = { "@GTPC_Types.MS_TimeZone.lengthf", &INTEGER_ber_, &MS__TimeZone_lengthf_raw_, &INTEGER_text_, &MS__TimeZone_lengthf_xer_, &INTEGER_json_, &MS__TimeZone_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MS__TimeZone_lengthf_default_coding("RAW"); const XERdescriptor_t MS__TimeZone_timeZone_xer_ = { {"timeZone>\n", "timeZone>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MS__TimeZone_timeZone_oer_ext_arr_[0] = {}; const int MS__TimeZone_timeZone_oer_p_[0] = {}; const TTCN_OERdescriptor_t MS__TimeZone_timeZone_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MS__TimeZone_timeZone_oer_ext_arr_, 0, MS__TimeZone_timeZone_oer_p_}; const TTCN_Typedescriptor_t MS__TimeZone_timeZone_descr_ = { "@GTPC_Types.MS_TimeZone.timeZone", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MS__TimeZone_timeZone_xer_, &OCTETSTRING_json_, &MS__TimeZone_timeZone_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MS__TimeZone_timeZone_default_coding("RAW"); const XERdescriptor_t MS__TimeZone_daylightSavingTime_xer_ = { {"daylightSavingTime>\n", "daylightSavingTime>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MS__TimeZone_daylightSavingTime_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MS__TimeZone_daylightSavingTime_descr_ = { "@GTPC_Types.MS_TimeZone.daylightSavingTime", &BITSTRING_ber_, &General__Types::BIT2_raw_, NULL, &MS__TimeZone_daylightSavingTime_xer_, &BITSTRING_json_, &MS__TimeZone_daylightSavingTime_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MS__TimeZone_daylightSavingTime_default_coding("RAW"); const XERdescriptor_t MS__TimeZone_spare1_xer_ = { {"spare1>\n", "spare1>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MS__TimeZone_spare1_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MS__TimeZone_spare1_descr_ = { "@GTPC_Types.MS_TimeZone.spare1", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &MS__TimeZone_spare1_xer_, &BITSTRING_json_, &MS__TimeZone_spare1_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MS__TimeZone_spare1_default_coding("RAW"); const XERdescriptor_t MS__TimeZone_sgsnAttempsToUpdateMS_xer_ = { {"sgsnAttempsToUpdateMS>\n", "sgsnAttempsToUpdateMS>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MS__TimeZone_sgsnAttempsToUpdateMS_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MS__TimeZone_sgsnAttempsToUpdateMS_descr_ = { "@GTPC_Types.MS_TimeZone.sgsnAttempsToUpdateMS", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &MS__TimeZone_sgsnAttempsToUpdateMS_xer_, &BITSTRING_json_, &MS__TimeZone_sgsnAttempsToUpdateMS_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MS__TimeZone_sgsnAttempsToUpdateMS_default_coding("RAW"); const XERdescriptor_t MS__TimeZone_spare2_xer_ = { {"spare2>\n", "spare2>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MS__TimeZone_spare2_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MS__TimeZone_spare2_descr_ = { "@GTPC_Types.MS_TimeZone.spare2", &BITSTRING_ber_, &General__Types::BIT2_raw_, NULL, &MS__TimeZone_spare2_xer_, &BITSTRING_json_, &MS__TimeZone_spare2_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MS__TimeZone_spare2_default_coding("RAW"); const TTCN_RAWdescriptor_t MS__TimeZone_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MS__TimeZone const TTCN_Typedescriptor_t MS__TimeZone_descr_ = { "@GTPC_Types.MS_TimeZone", NULL, &MS__TimeZone_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MS__TimeZone_default_coding("RAW"); const XERdescriptor_t IMEISV__gtpc_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int IMEISV__gtpc_type__gtpc_oer_ext_arr_[0] = {}; const int IMEISV__gtpc_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t IMEISV__gtpc_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, IMEISV__gtpc_type__gtpc_oer_ext_arr_, 0, IMEISV__gtpc_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t IMEISV__gtpc_type__gtpc_descr_ = { "@GTPC_Types.IMEISV_gtpc.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &IMEISV__gtpc_type__gtpc_xer_, &OCTETSTRING_json_, &IMEISV__gtpc_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IMEISV__gtpc_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t IMEISV__gtpc_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t IMEISV__gtpc_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t IMEISV__gtpc_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t IMEISV__gtpc_lengthf_descr_ = { "@GTPC_Types.IMEISV_gtpc.lengthf", &INTEGER_ber_, &IMEISV__gtpc_lengthf_raw_, &INTEGER_text_, &IMEISV__gtpc_lengthf_xer_, &INTEGER_json_, &IMEISV__gtpc_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IMEISV__gtpc_lengthf_default_coding("RAW"); const XERdescriptor_t IMEISV__gtpc_imeisv_xer_ = { {"imeisv>\n", "imeisv>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int IMEISV__gtpc_imeisv_oer_ext_arr_[0] = {}; const int IMEISV__gtpc_imeisv_oer_p_[0] = {}; const TTCN_OERdescriptor_t IMEISV__gtpc_imeisv_oer_ = { -1, TRUE, 8, FALSE, 0, 0, IMEISV__gtpc_imeisv_oer_ext_arr_, 0, IMEISV__gtpc_imeisv_oer_p_}; const TTCN_Typedescriptor_t IMEISV__gtpc_imeisv_descr_ = { "@GTPC_Types.IMEISV_gtpc.imeisv", &OCTETSTRING_ber_, &General__Types::OCT8_raw_, &OCTETSTRING_text_, &IMEISV__gtpc_imeisv_xer_, &OCTETSTRING_json_, &IMEISV__gtpc_imeisv_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IMEISV__gtpc_imeisv_default_coding("RAW"); const TTCN_RAWdescriptor_t IMEISV__gtpc_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for IMEISV__gtpc const TTCN_Typedescriptor_t IMEISV__gtpc_descr_ = { "@GTPC_Types.IMEISV_gtpc", NULL, &IMEISV__gtpc_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IMEISV__gtpc_default_coding("RAW"); const XERdescriptor_t CamelChargingInformationContainer_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int CamelChargingInformationContainer_type__gtpc_oer_ext_arr_[0] = {}; const int CamelChargingInformationContainer_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t CamelChargingInformationContainer_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, CamelChargingInformationContainer_type__gtpc_oer_ext_arr_, 0, CamelChargingInformationContainer_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t CamelChargingInformationContainer_type__gtpc_descr_ = { "@GTPC_Types.CamelChargingInformationContainer.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &CamelChargingInformationContainer_type__gtpc_xer_, &OCTETSTRING_json_, &CamelChargingInformationContainer_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CamelChargingInformationContainer_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t CamelChargingInformationContainer_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t CamelChargingInformationContainer_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t CamelChargingInformationContainer_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t CamelChargingInformationContainer_lengthf_descr_ = { "@GTPC_Types.CamelChargingInformationContainer.lengthf", &INTEGER_ber_, &CamelChargingInformationContainer_lengthf_raw_, &INTEGER_text_, &CamelChargingInformationContainer_lengthf_xer_, &INTEGER_json_, &CamelChargingInformationContainer_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CamelChargingInformationContainer_lengthf_default_coding("RAW"); const XERdescriptor_t CamelChargingInformationContainer_camelInformationPDP__IE_xer_ = { {"camelInformationPDP_IE>\n", "camelInformationPDP_IE>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int CamelChargingInformationContainer_camelInformationPDP__IE_oer_ext_arr_[0] = {}; const int CamelChargingInformationContainer_camelInformationPDP__IE_oer_p_[0] = {}; const TTCN_OERdescriptor_t CamelChargingInformationContainer_camelInformationPDP__IE_oer_ = { -1, TRUE, -1, FALSE, 0, 0, CamelChargingInformationContainer_camelInformationPDP__IE_oer_ext_arr_, 0, CamelChargingInformationContainer_camelInformationPDP__IE_oer_p_}; const TTCN_Typedescriptor_t CamelChargingInformationContainer_camelInformationPDP__IE_descr_ = { "@GTPC_Types.CamelChargingInformationContainer.camelInformationPDP_IE", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &CamelChargingInformationContainer_camelInformationPDP__IE_xer_, &OCTETSTRING_json_, &CamelChargingInformationContainer_camelInformationPDP__IE_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CamelChargingInformationContainer_camelInformationPDP__IE_default_coding("RAW"); const TTCN_RAWdescriptor_t CamelChargingInformationContainer_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for CamelChargingInformationContainer const TTCN_Typedescriptor_t CamelChargingInformationContainer_descr_ = { "@GTPC_Types.CamelChargingInformationContainer", NULL, &CamelChargingInformationContainer_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CamelChargingInformationContainer_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMS__UE__Context__List_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MBMS__UE__Context__List const TTCN_Typedescriptor_t MBMS__UE__Context__List_descr_ = { "@GTPC_Types.MBMS_UE_Context_List", NULL, &MBMS__UE__Context__List_raw_, NULL, NULL, NULL, NULL, NULL, &MBMS__UE__ContextContainer_descr_, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t MBMS__UE__ContextContainer_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MBMS__UE__ContextContainer_type__gtpc_oer_ext_arr_[0] = {}; const int MBMS__UE__ContextContainer_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMS__UE__ContextContainer_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MBMS__UE__ContextContainer_type__gtpc_oer_ext_arr_, 0, MBMS__UE__ContextContainer_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t MBMS__UE__ContextContainer_type__gtpc_descr_ = { "@GTPC_Types.MBMS_UE_ContextContainer.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MBMS__UE__ContextContainer_type__gtpc_xer_, &OCTETSTRING_json_, &MBMS__UE__ContextContainer_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__UE__ContextContainer_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMS__UE__ContextContainer_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MBMS__UE__ContextContainer_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MBMS__UE__ContextContainer_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MBMS__UE__ContextContainer_lengthf_descr_ = { "@GTPC_Types.MBMS_UE_ContextContainer.lengthf", &INTEGER_ber_, &MBMS__UE__ContextContainer_lengthf_raw_, &INTEGER_text_, &MBMS__UE__ContextContainer_lengthf_xer_, &INTEGER_json_, &MBMS__UE__ContextContainer_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__UE__ContextContainer_lengthf_default_coding("RAW"); const XERdescriptor_t MBMS__UE__ContextContainer_spare1_xer_ = { {"spare1>\n", "spare1>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MBMS__UE__ContextContainer_spare1_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MBMS__UE__ContextContainer_spare1_descr_ = { "@GTPC_Types.MBMS_UE_ContextContainer.spare1", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &MBMS__UE__ContextContainer_spare1_xer_, &BITSTRING_json_, &MBMS__UE__ContextContainer_spare1_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__UE__ContextContainer_spare1_default_coding("RAW"); const XERdescriptor_t MBMS__UE__ContextContainer_linkedNSAPI_xer_ = { {"linkedNSAPI>\n", "linkedNSAPI>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MBMS__UE__ContextContainer_linkedNSAPI_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MBMS__UE__ContextContainer_linkedNSAPI_descr_ = { "@GTPC_Types.MBMS_UE_ContextContainer.linkedNSAPI", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &MBMS__UE__ContextContainer_linkedNSAPI_xer_, &BITSTRING_json_, &MBMS__UE__ContextContainer_linkedNSAPI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__UE__ContextContainer_linkedNSAPI_default_coding("RAW"); const XERdescriptor_t MBMS__UE__ContextContainer_uteidControlPlane_xer_ = { {"uteidControlPlane>\n", "uteidControlPlane>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MBMS__UE__ContextContainer_uteidControlPlane_oer_ext_arr_[0] = {}; const int MBMS__UE__ContextContainer_uteidControlPlane_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMS__UE__ContextContainer_uteidControlPlane_oer_ = { -1, TRUE, 4, FALSE, 0, 0, MBMS__UE__ContextContainer_uteidControlPlane_oer_ext_arr_, 0, MBMS__UE__ContextContainer_uteidControlPlane_oer_p_}; const TTCN_Typedescriptor_t MBMS__UE__ContextContainer_uteidControlPlane_descr_ = { "@GTPC_Types.MBMS_UE_ContextContainer.uteidControlPlane", &OCTETSTRING_ber_, &General__Types::OCT4_raw_, &OCTETSTRING_text_, &MBMS__UE__ContextContainer_uteidControlPlane_xer_, &OCTETSTRING_json_, &MBMS__UE__ContextContainer_uteidControlPlane_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__UE__ContextContainer_uteidControlPlane_default_coding("RAW"); const XERdescriptor_t MBMS__UE__ContextContainer_enhancedNSAPI_xer_ = { {"enhancedNSAPI>\n", "enhancedNSAPI>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MBMS__UE__ContextContainer_enhancedNSAPI_oer_ext_arr_[0] = {}; const int MBMS__UE__ContextContainer_enhancedNSAPI_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMS__UE__ContextContainer_enhancedNSAPI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MBMS__UE__ContextContainer_enhancedNSAPI_oer_ext_arr_, 0, MBMS__UE__ContextContainer_enhancedNSAPI_oer_p_}; const TTCN_Typedescriptor_t MBMS__UE__ContextContainer_enhancedNSAPI_descr_ = { "@GTPC_Types.MBMS_UE_ContextContainer.enhancedNSAPI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MBMS__UE__ContextContainer_enhancedNSAPI_xer_, &OCTETSTRING_json_, &MBMS__UE__ContextContainer_enhancedNSAPI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__UE__ContextContainer_enhancedNSAPI_default_coding("RAW"); const XERdescriptor_t MBMS__UE__ContextContainer_pdp__typeorg_xer_ = { {"pdp_typeorg>\n", "pdp_typeorg>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MBMS__UE__ContextContainer_pdp__typeorg_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MBMS__UE__ContextContainer_pdp__typeorg_descr_ = { "@GTPC_Types.MBMS_UE_ContextContainer.pdp_typeorg", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &MBMS__UE__ContextContainer_pdp__typeorg_xer_, &BITSTRING_json_, &MBMS__UE__ContextContainer_pdp__typeorg_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__UE__ContextContainer_pdp__typeorg_default_coding("RAW"); const XERdescriptor_t MBMS__UE__ContextContainer_spare2_xer_ = { {"spare2>\n", "spare2>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MBMS__UE__ContextContainer_spare2_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MBMS__UE__ContextContainer_spare2_descr_ = { "@GTPC_Types.MBMS_UE_ContextContainer.spare2", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &MBMS__UE__ContextContainer_spare2_xer_, &BITSTRING_json_, &MBMS__UE__ContextContainer_spare2_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__UE__ContextContainer_spare2_default_coding("RAW"); const XERdescriptor_t MBMS__UE__ContextContainer_pdp__typenum_xer_ = { {"pdp_typenum>\n", "pdp_typenum>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MBMS__UE__ContextContainer_pdp__typenum_oer_ext_arr_[0] = {}; const int MBMS__UE__ContextContainer_pdp__typenum_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMS__UE__ContextContainer_pdp__typenum_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MBMS__UE__ContextContainer_pdp__typenum_oer_ext_arr_, 0, MBMS__UE__ContextContainer_pdp__typenum_oer_p_}; const TTCN_Typedescriptor_t MBMS__UE__ContextContainer_pdp__typenum_descr_ = { "@GTPC_Types.MBMS_UE_ContextContainer.pdp_typenum", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MBMS__UE__ContextContainer_pdp__typenum_xer_, &OCTETSTRING_json_, &MBMS__UE__ContextContainer_pdp__typenum_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__UE__ContextContainer_pdp__typenum_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMS__UE__ContextContainer_pdp__addressLength_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MBMS__UE__ContextContainer_pdp__addressLength_xer_ = { {"pdp_addressLength>\n", "pdp_addressLength>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t MBMS__UE__ContextContainer_pdp__addressLength_descr_ = { "@GTPC_Types.MBMS_UE_ContextContainer.pdp_addressLength", &INTEGER_ber_, &MBMS__UE__ContextContainer_pdp__addressLength_raw_, &INTEGER_text_, &MBMS__UE__ContextContainer_pdp__addressLength_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__UE__ContextContainer_pdp__addressLength_default_coding("RAW"); const XERdescriptor_t MBMS__UE__ContextContainer_pdp__address_xer_ = { {"pdp_address>\n", "pdp_address>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MBMS__UE__ContextContainer_pdp__address_oer_ext_arr_[0] = {}; const int MBMS__UE__ContextContainer_pdp__address_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMS__UE__ContextContainer_pdp__address_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MBMS__UE__ContextContainer_pdp__address_oer_ext_arr_, 0, MBMS__UE__ContextContainer_pdp__address_oer_p_}; const TTCN_Typedescriptor_t MBMS__UE__ContextContainer_pdp__address_descr_ = { "@GTPC_Types.MBMS_UE_ContextContainer.pdp_address", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &MBMS__UE__ContextContainer_pdp__address_xer_, &OCTETSTRING_json_, &MBMS__UE__ContextContainer_pdp__address_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__UE__ContextContainer_pdp__address_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMS__UE__ContextContainer_ggsn__addressControlPlaneLength_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MBMS__UE__ContextContainer_ggsn__addressControlPlaneLength_xer_ = { {"ggsn_addressControlPlaneLength>\n", "ggsn_addressControlPlaneLength>\n"}, {32, 32}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t MBMS__UE__ContextContainer_ggsn__addressControlPlaneLength_descr_ = { "@GTPC_Types.MBMS_UE_ContextContainer.ggsn_addressControlPlaneLength", &INTEGER_ber_, &MBMS__UE__ContextContainer_ggsn__addressControlPlaneLength_raw_, &INTEGER_text_, &MBMS__UE__ContextContainer_ggsn__addressControlPlaneLength_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__UE__ContextContainer_ggsn__addressControlPlaneLength_default_coding("RAW"); const XERdescriptor_t MBMS__UE__ContextContainer_ggsn__addressControlPlane_xer_ = { {"ggsn_addressControlPlane>\n", "ggsn_addressControlPlane>\n"}, {26, 26}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MBMS__UE__ContextContainer_ggsn__addressControlPlane_oer_ext_arr_[0] = {}; const int MBMS__UE__ContextContainer_ggsn__addressControlPlane_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMS__UE__ContextContainer_ggsn__addressControlPlane_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MBMS__UE__ContextContainer_ggsn__addressControlPlane_oer_ext_arr_, 0, MBMS__UE__ContextContainer_ggsn__addressControlPlane_oer_p_}; const TTCN_Typedescriptor_t MBMS__UE__ContextContainer_ggsn__addressControlPlane_descr_ = { "@GTPC_Types.MBMS_UE_ContextContainer.ggsn_addressControlPlane", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &MBMS__UE__ContextContainer_ggsn__addressControlPlane_xer_, &OCTETSTRING_json_, &MBMS__UE__ContextContainer_ggsn__addressControlPlane_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__UE__ContextContainer_ggsn__addressControlPlane_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMS__UE__ContextContainer_apnLength_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MBMS__UE__ContextContainer_apnLength_xer_ = { {"apnLength>\n", "apnLength>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t MBMS__UE__ContextContainer_apnLength_descr_ = { "@GTPC_Types.MBMS_UE_ContextContainer.apnLength", &INTEGER_ber_, &MBMS__UE__ContextContainer_apnLength_raw_, &INTEGER_text_, &MBMS__UE__ContextContainer_apnLength_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__UE__ContextContainer_apnLength_default_coding("RAW"); const XERdescriptor_t MBMS__UE__ContextContainer_apn_xer_ = { {"apn>\n", "apn>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MBMS__UE__ContextContainer_apn_oer_ext_arr_[0] = {}; const int MBMS__UE__ContextContainer_apn_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMS__UE__ContextContainer_apn_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MBMS__UE__ContextContainer_apn_oer_ext_arr_, 0, MBMS__UE__ContextContainer_apn_oer_p_}; const TTCN_Typedescriptor_t MBMS__UE__ContextContainer_apn_descr_ = { "@GTPC_Types.MBMS_UE_ContextContainer.apn", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &MBMS__UE__ContextContainer_apn_xer_, &OCTETSTRING_json_, &MBMS__UE__ContextContainer_apn_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__UE__ContextContainer_apn_default_coding("RAW"); const XERdescriptor_t MBMS__UE__ContextContainer_transactionId_xer_ = { {"transactionId>\n", "transactionId>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MBMS__UE__ContextContainer_transactionId_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MBMS__UE__ContextContainer_transactionId_descr_ = { "@GTPC_Types.MBMS_UE_ContextContainer.transactionId", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &MBMS__UE__ContextContainer_transactionId_xer_, &BITSTRING_json_, &MBMS__UE__ContextContainer_transactionId_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__UE__ContextContainer_transactionId_default_coding("RAW"); const XERdescriptor_t MBMS__UE__ContextContainer_spare3_xer_ = { {"spare3>\n", "spare3>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MBMS__UE__ContextContainer_spare3_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MBMS__UE__ContextContainer_spare3_descr_ = { "@GTPC_Types.MBMS_UE_ContextContainer.spare3", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &MBMS__UE__ContextContainer_spare3_xer_, &BITSTRING_json_, &MBMS__UE__ContextContainer_spare3_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__UE__ContextContainer_spare3_default_coding("RAW"); const XERdescriptor_t MBMS__UE__ContextContainer_transactionID_xer_ = { {"transactionID>\n", "transactionID>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MBMS__UE__ContextContainer_transactionID_oer_ext_arr_[0] = {}; const int MBMS__UE__ContextContainer_transactionID_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMS__UE__ContextContainer_transactionID_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MBMS__UE__ContextContainer_transactionID_oer_ext_arr_, 0, MBMS__UE__ContextContainer_transactionID_oer_p_}; const TTCN_Typedescriptor_t MBMS__UE__ContextContainer_transactionID_descr_ = { "@GTPC_Types.MBMS_UE_ContextContainer.transactionID", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MBMS__UE__ContextContainer_transactionID_xer_, &OCTETSTRING_json_, &MBMS__UE__ContextContainer_transactionID_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__UE__ContextContainer_transactionID_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMS__UE__ContextContainer_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MBMS__UE__ContextContainer const TTCN_Typedescriptor_t MBMS__UE__ContextContainer_descr_ = { "@GTPC_Types.MBMS_UE_ContextContainer", NULL, &MBMS__UE__ContextContainer_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__UE__ContextContainer_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMS__UE__Context__List_0_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMS__UE__Context__List_default_coding("RAW"); const XERdescriptor_t TMGI__gtpc_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int TMGI__gtpc_type__gtpc_oer_ext_arr_[0] = {}; const int TMGI__gtpc_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t TMGI__gtpc_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, TMGI__gtpc_type__gtpc_oer_ext_arr_, 0, TMGI__gtpc_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t TMGI__gtpc_type__gtpc_descr_ = { "@GTPC_Types.TMGI_gtpc.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &TMGI__gtpc_type__gtpc_xer_, &OCTETSTRING_json_, &TMGI__gtpc_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TMGI__gtpc_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t TMGI__gtpc_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t TMGI__gtpc_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t TMGI__gtpc_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t TMGI__gtpc_lengthf_descr_ = { "@GTPC_Types.TMGI_gtpc.lengthf", &INTEGER_ber_, &TMGI__gtpc_lengthf_raw_, &INTEGER_text_, &TMGI__gtpc_lengthf_xer_, &INTEGER_json_, &TMGI__gtpc_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TMGI__gtpc_lengthf_default_coding("RAW"); const XERdescriptor_t TMGI__gtpc_tMGIValue_xer_ = { {"tMGIValue>\n", "tMGIValue>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int TMGI__gtpc_tMGIValue_oer_ext_arr_[0] = {}; const int TMGI__gtpc_tMGIValue_oer_p_[0] = {}; const TTCN_OERdescriptor_t TMGI__gtpc_tMGIValue_oer_ = { -1, TRUE, 6, FALSE, 0, 0, TMGI__gtpc_tMGIValue_oer_ext_arr_, 0, TMGI__gtpc_tMGIValue_oer_p_}; const TTCN_Typedescriptor_t TMGI__gtpc_tMGIValue_descr_ = { "@GTPC_Types.TMGI_gtpc.tMGIValue", &OCTETSTRING_ber_, &General__Types::OCT6_raw_, &OCTETSTRING_text_, &TMGI__gtpc_tMGIValue_xer_, &OCTETSTRING_json_, &TMGI__gtpc_tMGIValue_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TMGI__gtpc_tMGIValue_default_coding("RAW"); const TTCN_RAWdescriptor_t TMGI__gtpc_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for TMGI__gtpc const TTCN_Typedescriptor_t TMGI__gtpc_descr_ = { "@GTPC_Types.TMGI_gtpc", NULL, &TMGI__gtpc_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TMGI__gtpc_default_coding("RAW"); const XERdescriptor_t RIM__RoutingAddress_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RIM__RoutingAddress_type__gtpc_oer_ext_arr_[0] = {}; const int RIM__RoutingAddress_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t RIM__RoutingAddress_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RIM__RoutingAddress_type__gtpc_oer_ext_arr_, 0, RIM__RoutingAddress_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t RIM__RoutingAddress_type__gtpc_descr_ = { "@GTPC_Types.RIM_RoutingAddress.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RIM__RoutingAddress_type__gtpc_xer_, &OCTETSTRING_json_, &RIM__RoutingAddress_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__RoutingAddress_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t RIM__RoutingAddress_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t RIM__RoutingAddress_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RIM__RoutingAddress_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RIM__RoutingAddress_lengthf_descr_ = { "@GTPC_Types.RIM_RoutingAddress.lengthf", &INTEGER_ber_, &RIM__RoutingAddress_lengthf_raw_, &INTEGER_text_, &RIM__RoutingAddress_lengthf_xer_, &INTEGER_json_, &RIM__RoutingAddress_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__RoutingAddress_lengthf_default_coding("RAW"); const XERdescriptor_t RIM__RoutingAddress_rIM__RoutingAddressValue_xer_ = { {"rIM_RoutingAddressValue>\n", "rIM_RoutingAddressValue>\n"}, {25, 25}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RIM__RoutingAddress_rIM__RoutingAddressValue_oer_ext_arr_[0] = {}; const int RIM__RoutingAddress_rIM__RoutingAddressValue_oer_p_[0] = {}; const TTCN_OERdescriptor_t RIM__RoutingAddress_rIM__RoutingAddressValue_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RIM__RoutingAddress_rIM__RoutingAddressValue_oer_ext_arr_, 0, RIM__RoutingAddress_rIM__RoutingAddressValue_oer_p_}; const TTCN_Typedescriptor_t RIM__RoutingAddress_rIM__RoutingAddressValue_descr_ = { "@GTPC_Types.RIM_RoutingAddress.rIM_RoutingAddressValue", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &RIM__RoutingAddress_rIM__RoutingAddressValue_xer_, &OCTETSTRING_json_, &RIM__RoutingAddress_rIM__RoutingAddressValue_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__RoutingAddress_rIM__RoutingAddressValue_default_coding("RAW"); const TTCN_RAWdescriptor_t RIM__RoutingAddress_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RIM__RoutingAddress const TTCN_Typedescriptor_t RIM__RoutingAddress_descr_ = { "@GTPC_Types.RIM_RoutingAddress", NULL, &RIM__RoutingAddress_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__RoutingAddress_default_coding("RAW"); const XERdescriptor_t MBMS__ProtocolConfigurationOptions_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MBMS__ProtocolConfigurationOptions_type__gtpc_oer_ext_arr_[0] = {}; const int MBMS__ProtocolConfigurationOptions_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMS__ProtocolConfigurationOptions_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MBMS__ProtocolConfigurationOptions_type__gtpc_oer_ext_arr_, 0, MBMS__ProtocolConfigurationOptions_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t MBMS__ProtocolConfigurationOptions_type__gtpc_descr_ = { "@GTPC_Types.MBMS_ProtocolConfigurationOptions.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MBMS__ProtocolConfigurationOptions_type__gtpc_xer_, &OCTETSTRING_json_, &MBMS__ProtocolConfigurationOptions_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__ProtocolConfigurationOptions_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMS__ProtocolConfigurationOptions_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MBMS__ProtocolConfigurationOptions_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MBMS__ProtocolConfigurationOptions_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MBMS__ProtocolConfigurationOptions_lengthf_descr_ = { "@GTPC_Types.MBMS_ProtocolConfigurationOptions.lengthf", &INTEGER_ber_, &MBMS__ProtocolConfigurationOptions_lengthf_raw_, &INTEGER_text_, &MBMS__ProtocolConfigurationOptions_lengthf_xer_, &INTEGER_json_, &MBMS__ProtocolConfigurationOptions_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__ProtocolConfigurationOptions_lengthf_default_coding("RAW"); const XERdescriptor_t MBMS__ProtocolConfigurationOptions_mBMS__ProtocolConfigurationOptions_xer_ = { {"mBMS_ProtocolConfigurationOptions>\n", "mBMS_ProtocolConfigurationOptions>\n"}, {35, 35}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MBMS__ProtocolConfigurationOptions_mBMS__ProtocolConfigurationOptions_oer_ext_arr_[0] = {}; const int MBMS__ProtocolConfigurationOptions_mBMS__ProtocolConfigurationOptions_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMS__ProtocolConfigurationOptions_mBMS__ProtocolConfigurationOptions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MBMS__ProtocolConfigurationOptions_mBMS__ProtocolConfigurationOptions_oer_ext_arr_, 0, MBMS__ProtocolConfigurationOptions_mBMS__ProtocolConfigurationOptions_oer_p_}; const TTCN_Typedescriptor_t MBMS__ProtocolConfigurationOptions_mBMS__ProtocolConfigurationOptions_descr_ = { "@GTPC_Types.MBMS_ProtocolConfigurationOptions.mBMS_ProtocolConfigurationOptions", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &MBMS__ProtocolConfigurationOptions_mBMS__ProtocolConfigurationOptions_xer_, &OCTETSTRING_json_, &MBMS__ProtocolConfigurationOptions_mBMS__ProtocolConfigurationOptions_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__ProtocolConfigurationOptions_mBMS__ProtocolConfigurationOptions_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMS__ProtocolConfigurationOptions_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MBMS__ProtocolConfigurationOptions const TTCN_Typedescriptor_t MBMS__ProtocolConfigurationOptions_descr_ = { "@GTPC_Types.MBMS_ProtocolConfigurationOptions", NULL, &MBMS__ProtocolConfigurationOptions_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__ProtocolConfigurationOptions_default_coding("RAW"); const XERdescriptor_t MBMS__SessionDuration_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MBMS__SessionDuration_type__gtpc_oer_ext_arr_[0] = {}; const int MBMS__SessionDuration_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMS__SessionDuration_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MBMS__SessionDuration_type__gtpc_oer_ext_arr_, 0, MBMS__SessionDuration_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t MBMS__SessionDuration_type__gtpc_descr_ = { "@GTPC_Types.MBMS_SessionDuration.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MBMS__SessionDuration_type__gtpc_xer_, &OCTETSTRING_json_, &MBMS__SessionDuration_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__SessionDuration_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMS__SessionDuration_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MBMS__SessionDuration_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MBMS__SessionDuration_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MBMS__SessionDuration_lengthf_descr_ = { "@GTPC_Types.MBMS_SessionDuration.lengthf", &INTEGER_ber_, &MBMS__SessionDuration_lengthf_raw_, &INTEGER_text_, &MBMS__SessionDuration_lengthf_xer_, &INTEGER_json_, &MBMS__SessionDuration_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__SessionDuration_lengthf_default_coding("RAW"); const XERdescriptor_t MBMS__SessionDuration_mBMS__SessionDurationValue_xer_ = { {"mBMS_SessionDurationValue>\n", "mBMS_SessionDurationValue>\n"}, {27, 27}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MBMS__SessionDuration_mBMS__SessionDurationValue_oer_ext_arr_[0] = {}; const int MBMS__SessionDuration_mBMS__SessionDurationValue_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMS__SessionDuration_mBMS__SessionDurationValue_oer_ = { -1, TRUE, 3, FALSE, 0, 0, MBMS__SessionDuration_mBMS__SessionDurationValue_oer_ext_arr_, 0, MBMS__SessionDuration_mBMS__SessionDurationValue_oer_p_}; const TTCN_Typedescriptor_t MBMS__SessionDuration_mBMS__SessionDurationValue_descr_ = { "@GTPC_Types.MBMS_SessionDuration.mBMS_SessionDurationValue", &OCTETSTRING_ber_, &General__Types::OCT3_raw_, &OCTETSTRING_text_, &MBMS__SessionDuration_mBMS__SessionDurationValue_xer_, &OCTETSTRING_json_, &MBMS__SessionDuration_mBMS__SessionDurationValue_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__SessionDuration_mBMS__SessionDurationValue_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMS__SessionDuration_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MBMS__SessionDuration const TTCN_Typedescriptor_t MBMS__SessionDuration_descr_ = { "@GTPC_Types.MBMS_SessionDuration", NULL, &MBMS__SessionDuration_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__SessionDuration_default_coding("RAW"); const XERdescriptor_t MBMS__ServiceArea_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MBMS__ServiceArea_type__gtpc_oer_ext_arr_[0] = {}; const int MBMS__ServiceArea_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMS__ServiceArea_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MBMS__ServiceArea_type__gtpc_oer_ext_arr_, 0, MBMS__ServiceArea_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t MBMS__ServiceArea_type__gtpc_descr_ = { "@GTPC_Types.MBMS_ServiceArea.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MBMS__ServiceArea_type__gtpc_xer_, &OCTETSTRING_json_, &MBMS__ServiceArea_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__ServiceArea_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMS__ServiceArea_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MBMS__ServiceArea_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MBMS__ServiceArea_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MBMS__ServiceArea_lengthf_descr_ = { "@GTPC_Types.MBMS_ServiceArea.lengthf", &INTEGER_ber_, &MBMS__ServiceArea_lengthf_raw_, &INTEGER_text_, &MBMS__ServiceArea_lengthf_xer_, &INTEGER_json_, &MBMS__ServiceArea_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__ServiceArea_lengthf_default_coding("RAW"); const XERdescriptor_t MBMS__ServiceArea_mBMS__ServiceAreaValue_xer_ = { {"mBMS_ServiceAreaValue>\n", "mBMS_ServiceAreaValue>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MBMS__ServiceArea_mBMS__ServiceAreaValue_oer_ext_arr_[0] = {}; const int MBMS__ServiceArea_mBMS__ServiceAreaValue_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMS__ServiceArea_mBMS__ServiceAreaValue_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MBMS__ServiceArea_mBMS__ServiceAreaValue_oer_ext_arr_, 0, MBMS__ServiceArea_mBMS__ServiceAreaValue_oer_p_}; const TTCN_Typedescriptor_t MBMS__ServiceArea_mBMS__ServiceAreaValue_descr_ = { "@GTPC_Types.MBMS_ServiceArea.mBMS_ServiceAreaValue", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &MBMS__ServiceArea_mBMS__ServiceAreaValue_xer_, &OCTETSTRING_json_, &MBMS__ServiceArea_mBMS__ServiceAreaValue_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__ServiceArea_mBMS__ServiceAreaValue_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMS__ServiceArea_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MBMS__ServiceArea const TTCN_Typedescriptor_t MBMS__ServiceArea_descr_ = { "@GTPC_Types.MBMS_ServiceArea", NULL, &MBMS__ServiceArea_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__ServiceArea_default_coding("RAW"); const XERdescriptor_t SourceRNC__PDCP__ContextInfo_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int SourceRNC__PDCP__ContextInfo_type__gtpc_oer_ext_arr_[0] = {}; const int SourceRNC__PDCP__ContextInfo_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t SourceRNC__PDCP__ContextInfo_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SourceRNC__PDCP__ContextInfo_type__gtpc_oer_ext_arr_, 0, SourceRNC__PDCP__ContextInfo_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t SourceRNC__PDCP__ContextInfo_type__gtpc_descr_ = { "@GTPC_Types.SourceRNC_PDCP_ContextInfo.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &SourceRNC__PDCP__ContextInfo_type__gtpc_xer_, &OCTETSTRING_json_, &SourceRNC__PDCP__ContextInfo_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SourceRNC__PDCP__ContextInfo_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t SourceRNC__PDCP__ContextInfo_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t SourceRNC__PDCP__ContextInfo_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t SourceRNC__PDCP__ContextInfo_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t SourceRNC__PDCP__ContextInfo_lengthf_descr_ = { "@GTPC_Types.SourceRNC_PDCP_ContextInfo.lengthf", &INTEGER_ber_, &SourceRNC__PDCP__ContextInfo_lengthf_raw_, &INTEGER_text_, &SourceRNC__PDCP__ContextInfo_lengthf_xer_, &INTEGER_json_, &SourceRNC__PDCP__ContextInfo_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SourceRNC__PDCP__ContextInfo_lengthf_default_coding("RAW"); const XERdescriptor_t SourceRNC__PDCP__ContextInfo_rRC__Container_xer_ = { {"rRC_Container>\n", "rRC_Container>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int SourceRNC__PDCP__ContextInfo_rRC__Container_oer_ext_arr_[0] = {}; const int SourceRNC__PDCP__ContextInfo_rRC__Container_oer_p_[0] = {}; const TTCN_OERdescriptor_t SourceRNC__PDCP__ContextInfo_rRC__Container_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SourceRNC__PDCP__ContextInfo_rRC__Container_oer_ext_arr_, 0, SourceRNC__PDCP__ContextInfo_rRC__Container_oer_p_}; const TTCN_Typedescriptor_t SourceRNC__PDCP__ContextInfo_rRC__Container_descr_ = { "@GTPC_Types.SourceRNC_PDCP_ContextInfo.rRC_Container", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &SourceRNC__PDCP__ContextInfo_rRC__Container_xer_, &OCTETSTRING_json_, &SourceRNC__PDCP__ContextInfo_rRC__Container_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SourceRNC__PDCP__ContextInfo_rRC__Container_default_coding("RAW"); const TTCN_RAWdescriptor_t SourceRNC__PDCP__ContextInfo_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for SourceRNC__PDCP__ContextInfo const TTCN_Typedescriptor_t SourceRNC__PDCP__ContextInfo_descr_ = { "@GTPC_Types.SourceRNC_PDCP_ContextInfo", NULL, &SourceRNC__PDCP__ContextInfo_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SourceRNC__PDCP__ContextInfo_default_coding("RAW"); const XERdescriptor_t AdditionalTraceInfo_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int AdditionalTraceInfo_type__gtpc_oer_ext_arr_[0] = {}; const int AdditionalTraceInfo_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t AdditionalTraceInfo_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, AdditionalTraceInfo_type__gtpc_oer_ext_arr_, 0, AdditionalTraceInfo_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t AdditionalTraceInfo_type__gtpc_descr_ = { "@GTPC_Types.AdditionalTraceInfo.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &AdditionalTraceInfo_type__gtpc_xer_, &OCTETSTRING_json_, &AdditionalTraceInfo_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AdditionalTraceInfo_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t AdditionalTraceInfo_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t AdditionalTraceInfo_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t AdditionalTraceInfo_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t AdditionalTraceInfo_lengthf_descr_ = { "@GTPC_Types.AdditionalTraceInfo.lengthf", &INTEGER_ber_, &AdditionalTraceInfo_lengthf_raw_, &INTEGER_text_, &AdditionalTraceInfo_lengthf_xer_, &INTEGER_json_, &AdditionalTraceInfo_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AdditionalTraceInfo_lengthf_default_coding("RAW"); const XERdescriptor_t AdditionalTraceInfo_traceReference2_xer_ = { {"traceReference2>\n", "traceReference2>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int AdditionalTraceInfo_traceReference2_oer_ext_arr_[0] = {}; const int AdditionalTraceInfo_traceReference2_oer_p_[0] = {}; const TTCN_OERdescriptor_t AdditionalTraceInfo_traceReference2_oer_ = { -1, TRUE, 3, FALSE, 0, 0, AdditionalTraceInfo_traceReference2_oer_ext_arr_, 0, AdditionalTraceInfo_traceReference2_oer_p_}; const TTCN_Typedescriptor_t AdditionalTraceInfo_traceReference2_descr_ = { "@GTPC_Types.AdditionalTraceInfo.traceReference2", &OCTETSTRING_ber_, &General__Types::OCT3_raw_, &OCTETSTRING_text_, &AdditionalTraceInfo_traceReference2_xer_, &OCTETSTRING_json_, &AdditionalTraceInfo_traceReference2_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AdditionalTraceInfo_traceReference2_default_coding("RAW"); const XERdescriptor_t AdditionalTraceInfo_traceRecordingSessionReference_xer_ = { {"traceRecordingSessionReference>\n", "traceRecordingSessionReference>\n"}, {32, 32}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int AdditionalTraceInfo_traceRecordingSessionReference_oer_ext_arr_[0] = {}; const int AdditionalTraceInfo_traceRecordingSessionReference_oer_p_[0] = {}; const TTCN_OERdescriptor_t AdditionalTraceInfo_traceRecordingSessionReference_oer_ = { -1, TRUE, 2, FALSE, 0, 0, AdditionalTraceInfo_traceRecordingSessionReference_oer_ext_arr_, 0, AdditionalTraceInfo_traceRecordingSessionReference_oer_p_}; const TTCN_Typedescriptor_t AdditionalTraceInfo_traceRecordingSessionReference_descr_ = { "@GTPC_Types.AdditionalTraceInfo.traceRecordingSessionReference", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &AdditionalTraceInfo_traceRecordingSessionReference_xer_, &OCTETSTRING_json_, &AdditionalTraceInfo_traceRecordingSessionReference_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AdditionalTraceInfo_traceRecordingSessionReference_default_coding("RAW"); const XERdescriptor_t AdditionalTraceInfo_triggeringEvents__GGSN_xer_ = { {"triggeringEvents_GGSN>\n", "triggeringEvents_GGSN>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int AdditionalTraceInfo_triggeringEvents__GGSN_oer_ext_arr_[0] = {}; const int AdditionalTraceInfo_triggeringEvents__GGSN_oer_p_[0] = {}; const TTCN_OERdescriptor_t AdditionalTraceInfo_triggeringEvents__GGSN_oer_ = { -1, TRUE, 1, FALSE, 0, 0, AdditionalTraceInfo_triggeringEvents__GGSN_oer_ext_arr_, 0, AdditionalTraceInfo_triggeringEvents__GGSN_oer_p_}; const TTCN_Typedescriptor_t AdditionalTraceInfo_triggeringEvents__GGSN_descr_ = { "@GTPC_Types.AdditionalTraceInfo.triggeringEvents_GGSN", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &AdditionalTraceInfo_triggeringEvents__GGSN_xer_, &OCTETSTRING_json_, &AdditionalTraceInfo_triggeringEvents__GGSN_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AdditionalTraceInfo_triggeringEvents__GGSN_default_coding("RAW"); const XERdescriptor_t AdditionalTraceInfo_traceDepth_xer_ = { {"traceDepth>\n", "traceDepth>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int AdditionalTraceInfo_traceDepth_oer_ext_arr_[0] = {}; const int AdditionalTraceInfo_traceDepth_oer_p_[0] = {}; const TTCN_OERdescriptor_t AdditionalTraceInfo_traceDepth_oer_ = { -1, TRUE, 1, FALSE, 0, 0, AdditionalTraceInfo_traceDepth_oer_ext_arr_, 0, AdditionalTraceInfo_traceDepth_oer_p_}; const TTCN_Typedescriptor_t AdditionalTraceInfo_traceDepth_descr_ = { "@GTPC_Types.AdditionalTraceInfo.traceDepth", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &AdditionalTraceInfo_traceDepth_xer_, &OCTETSTRING_json_, &AdditionalTraceInfo_traceDepth_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AdditionalTraceInfo_traceDepth_default_coding("RAW"); const XERdescriptor_t AdditionalTraceInfo_listOfInterfaces__GGSN_xer_ = { {"listOfInterfaces_GGSN>\n", "listOfInterfaces_GGSN>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int AdditionalTraceInfo_listOfInterfaces__GGSN_oer_ext_arr_[0] = {}; const int AdditionalTraceInfo_listOfInterfaces__GGSN_oer_p_[0] = {}; const TTCN_OERdescriptor_t AdditionalTraceInfo_listOfInterfaces__GGSN_oer_ = { -1, TRUE, 1, FALSE, 0, 0, AdditionalTraceInfo_listOfInterfaces__GGSN_oer_ext_arr_, 0, AdditionalTraceInfo_listOfInterfaces__GGSN_oer_p_}; const TTCN_Typedescriptor_t AdditionalTraceInfo_listOfInterfaces__GGSN_descr_ = { "@GTPC_Types.AdditionalTraceInfo.listOfInterfaces_GGSN", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &AdditionalTraceInfo_listOfInterfaces__GGSN_xer_, &OCTETSTRING_json_, &AdditionalTraceInfo_listOfInterfaces__GGSN_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AdditionalTraceInfo_listOfInterfaces__GGSN_default_coding("RAW"); const XERdescriptor_t AdditionalTraceInfo_traceActivityControl_xer_ = { {"traceActivityControl>\n", "traceActivityControl>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int AdditionalTraceInfo_traceActivityControl_oer_ext_arr_[0] = {}; const int AdditionalTraceInfo_traceActivityControl_oer_p_[0] = {}; const TTCN_OERdescriptor_t AdditionalTraceInfo_traceActivityControl_oer_ = { -1, TRUE, 1, FALSE, 0, 0, AdditionalTraceInfo_traceActivityControl_oer_ext_arr_, 0, AdditionalTraceInfo_traceActivityControl_oer_p_}; const TTCN_Typedescriptor_t AdditionalTraceInfo_traceActivityControl_descr_ = { "@GTPC_Types.AdditionalTraceInfo.traceActivityControl", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &AdditionalTraceInfo_traceActivityControl_xer_, &OCTETSTRING_json_, &AdditionalTraceInfo_traceActivityControl_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AdditionalTraceInfo_traceActivityControl_default_coding("RAW"); const TTCN_RAWdescriptor_t AdditionalTraceInfo_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for AdditionalTraceInfo const TTCN_Typedescriptor_t AdditionalTraceInfo_descr_ = { "@GTPC_Types.AdditionalTraceInfo", NULL, &AdditionalTraceInfo_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AdditionalTraceInfo_default_coding("RAW"); const XERdescriptor_t HopCounter__gtpc_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int HopCounter__gtpc_type__gtpc_oer_ext_arr_[0] = {}; const int HopCounter__gtpc_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t HopCounter__gtpc_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, HopCounter__gtpc_type__gtpc_oer_ext_arr_, 0, HopCounter__gtpc_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t HopCounter__gtpc_type__gtpc_descr_ = { "@GTPC_Types.HopCounter_gtpc.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &HopCounter__gtpc_type__gtpc_xer_, &OCTETSTRING_json_, &HopCounter__gtpc_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING HopCounter__gtpc_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t HopCounter__gtpc_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t HopCounter__gtpc_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t HopCounter__gtpc_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t HopCounter__gtpc_lengthf_descr_ = { "@GTPC_Types.HopCounter_gtpc.lengthf", &INTEGER_ber_, &HopCounter__gtpc_lengthf_raw_, &INTEGER_text_, &HopCounter__gtpc_lengthf_xer_, &INTEGER_json_, &HopCounter__gtpc_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING HopCounter__gtpc_lengthf_default_coding("RAW"); const XERdescriptor_t HopCounter__gtpc_hopCounter_xer_ = { {"hopCounter>\n", "hopCounter>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t HopCounter__gtpc_hopCounter_descr_ = { "@GTPC_Types.HopCounter_gtpc.hopCounter", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &HopCounter__gtpc_hopCounter_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING HopCounter__gtpc_hopCounter_default_coding("RAW"); const TTCN_RAWdescriptor_t HopCounter__gtpc_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for HopCounter__gtpc const TTCN_Typedescriptor_t HopCounter__gtpc_descr_ = { "@GTPC_Types.HopCounter_gtpc", NULL, &HopCounter__gtpc_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING HopCounter__gtpc_default_coding("RAW"); const XERdescriptor_t Selected__PLMN__ID_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int Selected__PLMN__ID_type__gtpc_oer_ext_arr_[0] = {}; const int Selected__PLMN__ID_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t Selected__PLMN__ID_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Selected__PLMN__ID_type__gtpc_oer_ext_arr_, 0, Selected__PLMN__ID_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t Selected__PLMN__ID_type__gtpc_descr_ = { "@GTPC_Types.Selected_PLMN_ID.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Selected__PLMN__ID_type__gtpc_xer_, &OCTETSTRING_json_, &Selected__PLMN__ID_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Selected__PLMN__ID_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t Selected__PLMN__ID_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t Selected__PLMN__ID_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t Selected__PLMN__ID_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t Selected__PLMN__ID_lengthf_descr_ = { "@GTPC_Types.Selected_PLMN_ID.lengthf", &INTEGER_ber_, &Selected__PLMN__ID_lengthf_raw_, &INTEGER_text_, &Selected__PLMN__ID_lengthf_xer_, &INTEGER_json_, &Selected__PLMN__ID_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Selected__PLMN__ID_lengthf_default_coding("RAW"); const XERdescriptor_t Selected__PLMN__ID_selected__PLMN__Identity_xer_ = { {"selected_PLMN_Identity>\n", "selected_PLMN_Identity>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int Selected__PLMN__ID_selected__PLMN__Identity_oer_ext_arr_[0] = {}; const int Selected__PLMN__ID_selected__PLMN__Identity_oer_p_[0] = {}; const TTCN_OERdescriptor_t Selected__PLMN__ID_selected__PLMN__Identity_oer_ = { -1, TRUE, 3, FALSE, 0, 0, Selected__PLMN__ID_selected__PLMN__Identity_oer_ext_arr_, 0, Selected__PLMN__ID_selected__PLMN__Identity_oer_p_}; const TTCN_Typedescriptor_t Selected__PLMN__ID_selected__PLMN__Identity_descr_ = { "@GTPC_Types.Selected_PLMN_ID.selected_PLMN_Identity", &OCTETSTRING_ber_, &General__Types::OCT3_raw_, &OCTETSTRING_text_, &Selected__PLMN__ID_selected__PLMN__Identity_xer_, &OCTETSTRING_json_, &Selected__PLMN__ID_selected__PLMN__Identity_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Selected__PLMN__ID_selected__PLMN__Identity_default_coding("RAW"); const TTCN_RAWdescriptor_t Selected__PLMN__ID_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for Selected__PLMN__ID const TTCN_Typedescriptor_t Selected__PLMN__ID_descr_ = { "@GTPC_Types.Selected_PLMN_ID", NULL, &Selected__PLMN__ID_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Selected__PLMN__ID_default_coding("RAW"); const XERdescriptor_t MBMS__SessionIdentifier_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MBMS__SessionIdentifier_type__gtpc_oer_ext_arr_[0] = {}; const int MBMS__SessionIdentifier_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMS__SessionIdentifier_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MBMS__SessionIdentifier_type__gtpc_oer_ext_arr_, 0, MBMS__SessionIdentifier_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t MBMS__SessionIdentifier_type__gtpc_descr_ = { "@GTPC_Types.MBMS_SessionIdentifier.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MBMS__SessionIdentifier_type__gtpc_xer_, &OCTETSTRING_json_, &MBMS__SessionIdentifier_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__SessionIdentifier_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMS__SessionIdentifier_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MBMS__SessionIdentifier_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MBMS__SessionIdentifier_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MBMS__SessionIdentifier_lengthf_descr_ = { "@GTPC_Types.MBMS_SessionIdentifier.lengthf", &INTEGER_ber_, &MBMS__SessionIdentifier_lengthf_raw_, &INTEGER_text_, &MBMS__SessionIdentifier_lengthf_xer_, &INTEGER_json_, &MBMS__SessionIdentifier_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__SessionIdentifier_lengthf_default_coding("RAW"); const XERdescriptor_t MBMS__SessionIdentifier_mBMS__SessionIdentifier_xer_ = { {"mBMS_SessionIdentifier>\n", "mBMS_SessionIdentifier>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MBMS__SessionIdentifier_mBMS__SessionIdentifier_oer_ext_arr_[0] = {}; const int MBMS__SessionIdentifier_mBMS__SessionIdentifier_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMS__SessionIdentifier_mBMS__SessionIdentifier_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MBMS__SessionIdentifier_mBMS__SessionIdentifier_oer_ext_arr_, 0, MBMS__SessionIdentifier_mBMS__SessionIdentifier_oer_p_}; const TTCN_Typedescriptor_t MBMS__SessionIdentifier_mBMS__SessionIdentifier_descr_ = { "@GTPC_Types.MBMS_SessionIdentifier.mBMS_SessionIdentifier", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MBMS__SessionIdentifier_mBMS__SessionIdentifier_xer_, &OCTETSTRING_json_, &MBMS__SessionIdentifier_mBMS__SessionIdentifier_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__SessionIdentifier_mBMS__SessionIdentifier_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMS__SessionIdentifier_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MBMS__SessionIdentifier const TTCN_Typedescriptor_t MBMS__SessionIdentifier_descr_ = { "@GTPC_Types.MBMS_SessionIdentifier", NULL, &MBMS__SessionIdentifier_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__SessionIdentifier_default_coding("RAW"); const XERdescriptor_t MBMS__2G__3G__Indicator_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MBMS__2G__3G__Indicator_type__gtpc_oer_ext_arr_[0] = {}; const int MBMS__2G__3G__Indicator_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMS__2G__3G__Indicator_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MBMS__2G__3G__Indicator_type__gtpc_oer_ext_arr_, 0, MBMS__2G__3G__Indicator_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t MBMS__2G__3G__Indicator_type__gtpc_descr_ = { "@GTPC_Types.MBMS_2G_3G_Indicator.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MBMS__2G__3G__Indicator_type__gtpc_xer_, &OCTETSTRING_json_, &MBMS__2G__3G__Indicator_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__2G__3G__Indicator_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMS__2G__3G__Indicator_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MBMS__2G__3G__Indicator_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MBMS__2G__3G__Indicator_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MBMS__2G__3G__Indicator_lengthf_descr_ = { "@GTPC_Types.MBMS_2G_3G_Indicator.lengthf", &INTEGER_ber_, &MBMS__2G__3G__Indicator_lengthf_raw_, &INTEGER_text_, &MBMS__2G__3G__Indicator_lengthf_xer_, &INTEGER_json_, &MBMS__2G__3G__Indicator_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__2G__3G__Indicator_lengthf_default_coding("RAW"); const XERdescriptor_t MBMS__2G__3G__Indicator_mBMS__2G__3G__Indicator_xer_ = { {"mBMS_2G_3G_Indicator>\n", "mBMS_2G_3G_Indicator>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MBMS__2G__3G__Indicator_mBMS__2G__3G__Indicator_oer_ext_arr_[0] = {}; const int MBMS__2G__3G__Indicator_mBMS__2G__3G__Indicator_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMS__2G__3G__Indicator_mBMS__2G__3G__Indicator_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MBMS__2G__3G__Indicator_mBMS__2G__3G__Indicator_oer_ext_arr_, 0, MBMS__2G__3G__Indicator_mBMS__2G__3G__Indicator_oer_p_}; const TTCN_Typedescriptor_t MBMS__2G__3G__Indicator_mBMS__2G__3G__Indicator_descr_ = { "@GTPC_Types.MBMS_2G_3G_Indicator.mBMS_2G_3G_Indicator", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MBMS__2G__3G__Indicator_mBMS__2G__3G__Indicator_xer_, &OCTETSTRING_json_, &MBMS__2G__3G__Indicator_mBMS__2G__3G__Indicator_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__2G__3G__Indicator_mBMS__2G__3G__Indicator_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMS__2G__3G__Indicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MBMS__2G__3G__Indicator const TTCN_Typedescriptor_t MBMS__2G__3G__Indicator_descr_ = { "@GTPC_Types.MBMS_2G_3G_Indicator", NULL, &MBMS__2G__3G__Indicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__2G__3G__Indicator_default_coding("RAW"); const XERdescriptor_t Enhanced__NSAPI_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int Enhanced__NSAPI_type__gtpc_oer_ext_arr_[0] = {}; const int Enhanced__NSAPI_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t Enhanced__NSAPI_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Enhanced__NSAPI_type__gtpc_oer_ext_arr_, 0, Enhanced__NSAPI_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t Enhanced__NSAPI_type__gtpc_descr_ = { "@GTPC_Types.Enhanced_NSAPI.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Enhanced__NSAPI_type__gtpc_xer_, &OCTETSTRING_json_, &Enhanced__NSAPI_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Enhanced__NSAPI_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t Enhanced__NSAPI_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t Enhanced__NSAPI_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t Enhanced__NSAPI_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t Enhanced__NSAPI_lengthf_descr_ = { "@GTPC_Types.Enhanced_NSAPI.lengthf", &INTEGER_ber_, &Enhanced__NSAPI_lengthf_raw_, &INTEGER_text_, &Enhanced__NSAPI_lengthf_xer_, &INTEGER_json_, &Enhanced__NSAPI_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Enhanced__NSAPI_lengthf_default_coding("RAW"); const XERdescriptor_t Enhanced__NSAPI_enhanced__NSAPI_xer_ = { {"enhanced_NSAPI>\n", "enhanced_NSAPI>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int Enhanced__NSAPI_enhanced__NSAPI_oer_ext_arr_[0] = {}; const int Enhanced__NSAPI_enhanced__NSAPI_oer_p_[0] = {}; const TTCN_OERdescriptor_t Enhanced__NSAPI_enhanced__NSAPI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Enhanced__NSAPI_enhanced__NSAPI_oer_ext_arr_, 0, Enhanced__NSAPI_enhanced__NSAPI_oer_p_}; const TTCN_Typedescriptor_t Enhanced__NSAPI_enhanced__NSAPI_descr_ = { "@GTPC_Types.Enhanced_NSAPI.enhanced_NSAPI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Enhanced__NSAPI_enhanced__NSAPI_xer_, &OCTETSTRING_json_, &Enhanced__NSAPI_enhanced__NSAPI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Enhanced__NSAPI_enhanced__NSAPI_default_coding("RAW"); const TTCN_RAWdescriptor_t Enhanced__NSAPI_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for Enhanced__NSAPI const TTCN_Typedescriptor_t Enhanced__NSAPI_descr_ = { "@GTPC_Types.Enhanced_NSAPI", NULL, &Enhanced__NSAPI_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Enhanced__NSAPI_default_coding("RAW"); const XERdescriptor_t AdditionalMBMSTraceInfo_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int AdditionalMBMSTraceInfo_type__gtpc_oer_ext_arr_[0] = {}; const int AdditionalMBMSTraceInfo_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t AdditionalMBMSTraceInfo_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, AdditionalMBMSTraceInfo_type__gtpc_oer_ext_arr_, 0, AdditionalMBMSTraceInfo_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t AdditionalMBMSTraceInfo_type__gtpc_descr_ = { "@GTPC_Types.AdditionalMBMSTraceInfo.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &AdditionalMBMSTraceInfo_type__gtpc_xer_, &OCTETSTRING_json_, &AdditionalMBMSTraceInfo_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AdditionalMBMSTraceInfo_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t AdditionalMBMSTraceInfo_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t AdditionalMBMSTraceInfo_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t AdditionalMBMSTraceInfo_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t AdditionalMBMSTraceInfo_lengthf_descr_ = { "@GTPC_Types.AdditionalMBMSTraceInfo.lengthf", &INTEGER_ber_, &AdditionalMBMSTraceInfo_lengthf_raw_, &INTEGER_text_, &AdditionalMBMSTraceInfo_lengthf_xer_, &INTEGER_json_, &AdditionalMBMSTraceInfo_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AdditionalMBMSTraceInfo_lengthf_default_coding("RAW"); const XERdescriptor_t AdditionalMBMSTraceInfo_traceReference2_xer_ = { {"traceReference2>\n", "traceReference2>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int AdditionalMBMSTraceInfo_traceReference2_oer_ext_arr_[0] = {}; const int AdditionalMBMSTraceInfo_traceReference2_oer_p_[0] = {}; const TTCN_OERdescriptor_t AdditionalMBMSTraceInfo_traceReference2_oer_ = { -1, TRUE, 3, FALSE, 0, 0, AdditionalMBMSTraceInfo_traceReference2_oer_ext_arr_, 0, AdditionalMBMSTraceInfo_traceReference2_oer_p_}; const TTCN_Typedescriptor_t AdditionalMBMSTraceInfo_traceReference2_descr_ = { "@GTPC_Types.AdditionalMBMSTraceInfo.traceReference2", &OCTETSTRING_ber_, &General__Types::OCT3_raw_, &OCTETSTRING_text_, &AdditionalMBMSTraceInfo_traceReference2_xer_, &OCTETSTRING_json_, &AdditionalMBMSTraceInfo_traceReference2_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AdditionalMBMSTraceInfo_traceReference2_default_coding("RAW"); const XERdescriptor_t AdditionalMBMSTraceInfo_traceRecordingSessionReference_xer_ = { {"traceRecordingSessionReference>\n", "traceRecordingSessionReference>\n"}, {32, 32}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int AdditionalMBMSTraceInfo_traceRecordingSessionReference_oer_ext_arr_[0] = {}; const int AdditionalMBMSTraceInfo_traceRecordingSessionReference_oer_p_[0] = {}; const TTCN_OERdescriptor_t AdditionalMBMSTraceInfo_traceRecordingSessionReference_oer_ = { -1, TRUE, 2, FALSE, 0, 0, AdditionalMBMSTraceInfo_traceRecordingSessionReference_oer_ext_arr_, 0, AdditionalMBMSTraceInfo_traceRecordingSessionReference_oer_p_}; const TTCN_Typedescriptor_t AdditionalMBMSTraceInfo_traceRecordingSessionReference_descr_ = { "@GTPC_Types.AdditionalMBMSTraceInfo.traceRecordingSessionReference", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &AdditionalMBMSTraceInfo_traceRecordingSessionReference_xer_, &OCTETSTRING_json_, &AdditionalMBMSTraceInfo_traceRecordingSessionReference_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AdditionalMBMSTraceInfo_traceRecordingSessionReference_default_coding("RAW"); const XERdescriptor_t AdditionalMBMSTraceInfo_triggeringEvents__BM__SC_xer_ = { {"triggeringEvents_BM_SC>\n", "triggeringEvents_BM_SC>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int AdditionalMBMSTraceInfo_triggeringEvents__BM__SC_oer_ext_arr_[0] = {}; const int AdditionalMBMSTraceInfo_triggeringEvents__BM__SC_oer_p_[0] = {}; const TTCN_OERdescriptor_t AdditionalMBMSTraceInfo_triggeringEvents__BM__SC_oer_ = { -1, TRUE, 2, FALSE, 0, 0, AdditionalMBMSTraceInfo_triggeringEvents__BM__SC_oer_ext_arr_, 0, AdditionalMBMSTraceInfo_triggeringEvents__BM__SC_oer_p_}; const TTCN_Typedescriptor_t AdditionalMBMSTraceInfo_triggeringEvents__BM__SC_descr_ = { "@GTPC_Types.AdditionalMBMSTraceInfo.triggeringEvents_BM_SC", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &AdditionalMBMSTraceInfo_triggeringEvents__BM__SC_xer_, &OCTETSTRING_json_, &AdditionalMBMSTraceInfo_triggeringEvents__BM__SC_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AdditionalMBMSTraceInfo_triggeringEvents__BM__SC_default_coding("RAW"); const XERdescriptor_t AdditionalMBMSTraceInfo_traceDepth__BM__SC_xer_ = { {"traceDepth_BM_SC>\n", "traceDepth_BM_SC>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int AdditionalMBMSTraceInfo_traceDepth__BM__SC_oer_ext_arr_[0] = {}; const int AdditionalMBMSTraceInfo_traceDepth__BM__SC_oer_p_[0] = {}; const TTCN_OERdescriptor_t AdditionalMBMSTraceInfo_traceDepth__BM__SC_oer_ = { -1, TRUE, 1, FALSE, 0, 0, AdditionalMBMSTraceInfo_traceDepth__BM__SC_oer_ext_arr_, 0, AdditionalMBMSTraceInfo_traceDepth__BM__SC_oer_p_}; const TTCN_Typedescriptor_t AdditionalMBMSTraceInfo_traceDepth__BM__SC_descr_ = { "@GTPC_Types.AdditionalMBMSTraceInfo.traceDepth_BM_SC", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &AdditionalMBMSTraceInfo_traceDepth__BM__SC_xer_, &OCTETSTRING_json_, &AdditionalMBMSTraceInfo_traceDepth__BM__SC_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AdditionalMBMSTraceInfo_traceDepth__BM__SC_default_coding("RAW"); const XERdescriptor_t AdditionalMBMSTraceInfo_listOfInterfaces__BM__SC_xer_ = { {"listOfInterfaces_BM_SC>\n", "listOfInterfaces_BM_SC>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int AdditionalMBMSTraceInfo_listOfInterfaces__BM__SC_oer_ext_arr_[0] = {}; const int AdditionalMBMSTraceInfo_listOfInterfaces__BM__SC_oer_p_[0] = {}; const TTCN_OERdescriptor_t AdditionalMBMSTraceInfo_listOfInterfaces__BM__SC_oer_ = { -1, TRUE, 1, FALSE, 0, 0, AdditionalMBMSTraceInfo_listOfInterfaces__BM__SC_oer_ext_arr_, 0, AdditionalMBMSTraceInfo_listOfInterfaces__BM__SC_oer_p_}; const TTCN_Typedescriptor_t AdditionalMBMSTraceInfo_listOfInterfaces__BM__SC_descr_ = { "@GTPC_Types.AdditionalMBMSTraceInfo.listOfInterfaces_BM_SC", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &AdditionalMBMSTraceInfo_listOfInterfaces__BM__SC_xer_, &OCTETSTRING_json_, &AdditionalMBMSTraceInfo_listOfInterfaces__BM__SC_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AdditionalMBMSTraceInfo_listOfInterfaces__BM__SC_default_coding("RAW"); const XERdescriptor_t AdditionalMBMSTraceInfo_traceActivityControl__BM__SC_xer_ = { {"traceActivityControl_BM_SC>\n", "traceActivityControl_BM_SC>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int AdditionalMBMSTraceInfo_traceActivityControl__BM__SC_oer_ext_arr_[0] = {}; const int AdditionalMBMSTraceInfo_traceActivityControl__BM__SC_oer_p_[0] = {}; const TTCN_OERdescriptor_t AdditionalMBMSTraceInfo_traceActivityControl__BM__SC_oer_ = { -1, TRUE, 1, FALSE, 0, 0, AdditionalMBMSTraceInfo_traceActivityControl__BM__SC_oer_ext_arr_, 0, AdditionalMBMSTraceInfo_traceActivityControl__BM__SC_oer_p_}; const TTCN_Typedescriptor_t AdditionalMBMSTraceInfo_traceActivityControl__BM__SC_descr_ = { "@GTPC_Types.AdditionalMBMSTraceInfo.traceActivityControl_BM_SC", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &AdditionalMBMSTraceInfo_traceActivityControl__BM__SC_xer_, &OCTETSTRING_json_, &AdditionalMBMSTraceInfo_traceActivityControl__BM__SC_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AdditionalMBMSTraceInfo_traceActivityControl__BM__SC_default_coding("RAW"); const TTCN_RAWdescriptor_t AdditionalMBMSTraceInfo_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for AdditionalMBMSTraceInfo const TTCN_Typedescriptor_t AdditionalMBMSTraceInfo_descr_ = { "@GTPC_Types.AdditionalMBMSTraceInfo", NULL, &AdditionalMBMSTraceInfo_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AdditionalMBMSTraceInfo_default_coding("RAW"); const XERdescriptor_t MBMS__SessionRepetitionNumber_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MBMS__SessionRepetitionNumber_type__gtpc_oer_ext_arr_[0] = {}; const int MBMS__SessionRepetitionNumber_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMS__SessionRepetitionNumber_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MBMS__SessionRepetitionNumber_type__gtpc_oer_ext_arr_, 0, MBMS__SessionRepetitionNumber_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t MBMS__SessionRepetitionNumber_type__gtpc_descr_ = { "@GTPC_Types.MBMS_SessionRepetitionNumber.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MBMS__SessionRepetitionNumber_type__gtpc_xer_, &OCTETSTRING_json_, &MBMS__SessionRepetitionNumber_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__SessionRepetitionNumber_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMS__SessionRepetitionNumber_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MBMS__SessionRepetitionNumber_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MBMS__SessionRepetitionNumber_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MBMS__SessionRepetitionNumber_lengthf_descr_ = { "@GTPC_Types.MBMS_SessionRepetitionNumber.lengthf", &INTEGER_ber_, &MBMS__SessionRepetitionNumber_lengthf_raw_, &INTEGER_text_, &MBMS__SessionRepetitionNumber_lengthf_xer_, &INTEGER_json_, &MBMS__SessionRepetitionNumber_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__SessionRepetitionNumber_lengthf_default_coding("RAW"); const XERdescriptor_t MBMS__SessionRepetitionNumber_mBMS__SessionRepetitionNumber_xer_ = { {"mBMS_SessionRepetitionNumber>\n", "mBMS_SessionRepetitionNumber>\n"}, {30, 30}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MBMS__SessionRepetitionNumber_mBMS__SessionRepetitionNumber_oer_ext_arr_[0] = {}; const int MBMS__SessionRepetitionNumber_mBMS__SessionRepetitionNumber_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMS__SessionRepetitionNumber_mBMS__SessionRepetitionNumber_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MBMS__SessionRepetitionNumber_mBMS__SessionRepetitionNumber_oer_ext_arr_, 0, MBMS__SessionRepetitionNumber_mBMS__SessionRepetitionNumber_oer_p_}; const TTCN_Typedescriptor_t MBMS__SessionRepetitionNumber_mBMS__SessionRepetitionNumber_descr_ = { "@GTPC_Types.MBMS_SessionRepetitionNumber.mBMS_SessionRepetitionNumber", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MBMS__SessionRepetitionNumber_mBMS__SessionRepetitionNumber_xer_, &OCTETSTRING_json_, &MBMS__SessionRepetitionNumber_mBMS__SessionRepetitionNumber_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__SessionRepetitionNumber_mBMS__SessionRepetitionNumber_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMS__SessionRepetitionNumber_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MBMS__SessionRepetitionNumber const TTCN_Typedescriptor_t MBMS__SessionRepetitionNumber_descr_ = { "@GTPC_Types.MBMS_SessionRepetitionNumber", NULL, &MBMS__SessionRepetitionNumber_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__SessionRepetitionNumber_default_coding("RAW"); const XERdescriptor_t MBMS__TimeToDataTransfer_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MBMS__TimeToDataTransfer_type__gtpc_oer_ext_arr_[0] = {}; const int MBMS__TimeToDataTransfer_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMS__TimeToDataTransfer_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MBMS__TimeToDataTransfer_type__gtpc_oer_ext_arr_, 0, MBMS__TimeToDataTransfer_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t MBMS__TimeToDataTransfer_type__gtpc_descr_ = { "@GTPC_Types.MBMS_TimeToDataTransfer.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MBMS__TimeToDataTransfer_type__gtpc_xer_, &OCTETSTRING_json_, &MBMS__TimeToDataTransfer_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__TimeToDataTransfer_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMS__TimeToDataTransfer_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MBMS__TimeToDataTransfer_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MBMS__TimeToDataTransfer_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MBMS__TimeToDataTransfer_lengthf_descr_ = { "@GTPC_Types.MBMS_TimeToDataTransfer.lengthf", &INTEGER_ber_, &MBMS__TimeToDataTransfer_lengthf_raw_, &INTEGER_text_, &MBMS__TimeToDataTransfer_lengthf_xer_, &INTEGER_json_, &MBMS__TimeToDataTransfer_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__TimeToDataTransfer_lengthf_default_coding("RAW"); const XERdescriptor_t MBMS__TimeToDataTransfer_mBMS__TimeToDataTransfer_xer_ = { {"mBMS_TimeToDataTransfer>\n", "mBMS_TimeToDataTransfer>\n"}, {25, 25}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MBMS__TimeToDataTransfer_mBMS__TimeToDataTransfer_oer_ext_arr_[0] = {}; const int MBMS__TimeToDataTransfer_mBMS__TimeToDataTransfer_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMS__TimeToDataTransfer_mBMS__TimeToDataTransfer_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MBMS__TimeToDataTransfer_mBMS__TimeToDataTransfer_oer_ext_arr_, 0, MBMS__TimeToDataTransfer_mBMS__TimeToDataTransfer_oer_p_}; const TTCN_Typedescriptor_t MBMS__TimeToDataTransfer_mBMS__TimeToDataTransfer_descr_ = { "@GTPC_Types.MBMS_TimeToDataTransfer.mBMS_TimeToDataTransfer", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MBMS__TimeToDataTransfer_mBMS__TimeToDataTransfer_xer_, &OCTETSTRING_json_, &MBMS__TimeToDataTransfer_mBMS__TimeToDataTransfer_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__TimeToDataTransfer_mBMS__TimeToDataTransfer_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMS__TimeToDataTransfer_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MBMS__TimeToDataTransfer const TTCN_Typedescriptor_t MBMS__TimeToDataTransfer_descr_ = { "@GTPC_Types.MBMS_TimeToDataTransfer", NULL, &MBMS__TimeToDataTransfer_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__TimeToDataTransfer_default_coding("RAW"); const XERdescriptor_t BSS__Container_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int BSS__Container_type__gtpc_oer_ext_arr_[0] = {}; const int BSS__Container_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t BSS__Container_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, BSS__Container_type__gtpc_oer_ext_arr_, 0, BSS__Container_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t BSS__Container_type__gtpc_descr_ = { "@GTPC_Types.BSS_Container.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &BSS__Container_type__gtpc_xer_, &OCTETSTRING_json_, &BSS__Container_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING BSS__Container_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t BSS__Container_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t BSS__Container_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t BSS__Container_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t BSS__Container_lengthf_descr_ = { "@GTPC_Types.BSS_Container.lengthf", &INTEGER_ber_, &BSS__Container_lengthf_raw_, &INTEGER_text_, &BSS__Container_lengthf_xer_, &INTEGER_json_, &BSS__Container_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING BSS__Container_lengthf_default_coding("RAW"); const XERdescriptor_t BSS__Container_bSS__Container_xer_ = { {"bSS_Container>\n", "bSS_Container>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int BSS__Container_bSS__Container_oer_ext_arr_[0] = {}; const int BSS__Container_bSS__Container_oer_p_[0] = {}; const TTCN_OERdescriptor_t BSS__Container_bSS__Container_oer_ = { -1, TRUE, -1, FALSE, 0, 0, BSS__Container_bSS__Container_oer_ext_arr_, 0, BSS__Container_bSS__Container_oer_p_}; const TTCN_Typedescriptor_t BSS__Container_bSS__Container_descr_ = { "@GTPC_Types.BSS_Container.bSS_Container", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &BSS__Container_bSS__Container_xer_, &OCTETSTRING_json_, &BSS__Container_bSS__Container_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING BSS__Container_bSS__Container_default_coding("RAW"); const TTCN_RAWdescriptor_t BSS__Container_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for BSS__Container const TTCN_Typedescriptor_t BSS__Container_descr_ = { "@GTPC_Types.BSS_Container", NULL, &BSS__Container_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING BSS__Container_default_coding("RAW"); const XERdescriptor_t RoutingAreaIdentificationV__gtpc_mccDigit1_xer_ = { {"mccDigit1>\n", "mccDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t RoutingAreaIdentificationV__gtpc_mccDigit1_descr_ = { "@GTPC_Types.RoutingAreaIdentificationV_gtpc.mccDigit1", NULL, &General__Types::HEX1_raw_, NULL, &RoutingAreaIdentificationV__gtpc_mccDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RoutingAreaIdentificationV__gtpc_mccDigit1_default_coding("RAW"); const XERdescriptor_t RoutingAreaIdentificationV__gtpc_mccDigit2_xer_ = { {"mccDigit2>\n", "mccDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t RoutingAreaIdentificationV__gtpc_mccDigit2_descr_ = { "@GTPC_Types.RoutingAreaIdentificationV_gtpc.mccDigit2", NULL, &General__Types::HEX1_raw_, NULL, &RoutingAreaIdentificationV__gtpc_mccDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RoutingAreaIdentificationV__gtpc_mccDigit2_default_coding("RAW"); const XERdescriptor_t RoutingAreaIdentificationV__gtpc_mccDigit3_xer_ = { {"mccDigit3>\n", "mccDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t RoutingAreaIdentificationV__gtpc_mccDigit3_descr_ = { "@GTPC_Types.RoutingAreaIdentificationV_gtpc.mccDigit3", NULL, &General__Types::HEX1_raw_, NULL, &RoutingAreaIdentificationV__gtpc_mccDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RoutingAreaIdentificationV__gtpc_mccDigit3_default_coding("RAW"); const XERdescriptor_t RoutingAreaIdentificationV__gtpc_mncDigit3_xer_ = { {"mncDigit3>\n", "mncDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t RoutingAreaIdentificationV__gtpc_mncDigit3_descr_ = { "@GTPC_Types.RoutingAreaIdentificationV_gtpc.mncDigit3", NULL, &General__Types::HEX1_raw_, NULL, &RoutingAreaIdentificationV__gtpc_mncDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RoutingAreaIdentificationV__gtpc_mncDigit3_default_coding("RAW"); const XERdescriptor_t RoutingAreaIdentificationV__gtpc_mncDigit1_xer_ = { {"mncDigit1>\n", "mncDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t RoutingAreaIdentificationV__gtpc_mncDigit1_descr_ = { "@GTPC_Types.RoutingAreaIdentificationV_gtpc.mncDigit1", NULL, &General__Types::HEX1_raw_, NULL, &RoutingAreaIdentificationV__gtpc_mncDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RoutingAreaIdentificationV__gtpc_mncDigit1_default_coding("RAW"); const XERdescriptor_t RoutingAreaIdentificationV__gtpc_mncDigit2_xer_ = { {"mncDigit2>\n", "mncDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t RoutingAreaIdentificationV__gtpc_mncDigit2_descr_ = { "@GTPC_Types.RoutingAreaIdentificationV_gtpc.mncDigit2", NULL, &General__Types::HEX1_raw_, NULL, &RoutingAreaIdentificationV__gtpc_mncDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RoutingAreaIdentificationV__gtpc_mncDigit2_default_coding("RAW"); const XERdescriptor_t RoutingAreaIdentificationV__gtpc_lac_xer_ = { {"lac>\n", "lac>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RoutingAreaIdentificationV__gtpc_lac_oer_ext_arr_[0] = {}; const int RoutingAreaIdentificationV__gtpc_lac_oer_p_[0] = {}; const TTCN_OERdescriptor_t RoutingAreaIdentificationV__gtpc_lac_oer_ = { -1, TRUE, 2, FALSE, 0, 0, RoutingAreaIdentificationV__gtpc_lac_oer_ext_arr_, 0, RoutingAreaIdentificationV__gtpc_lac_oer_p_}; const TTCN_Typedescriptor_t RoutingAreaIdentificationV__gtpc_lac_descr_ = { "@GTPC_Types.RoutingAreaIdentificationV_gtpc.lac", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &RoutingAreaIdentificationV__gtpc_lac_xer_, &OCTETSTRING_json_, &RoutingAreaIdentificationV__gtpc_lac_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RoutingAreaIdentificationV__gtpc_lac_default_coding("RAW"); const XERdescriptor_t RoutingAreaIdentificationV__gtpc_rac_xer_ = { {"rac>\n", "rac>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RoutingAreaIdentificationV__gtpc_rac_oer_ext_arr_[0] = {}; const int RoutingAreaIdentificationV__gtpc_rac_oer_p_[0] = {}; const TTCN_OERdescriptor_t RoutingAreaIdentificationV__gtpc_rac_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RoutingAreaIdentificationV__gtpc_rac_oer_ext_arr_, 0, RoutingAreaIdentificationV__gtpc_rac_oer_p_}; const TTCN_Typedescriptor_t RoutingAreaIdentificationV__gtpc_rac_descr_ = { "@GTPC_Types.RoutingAreaIdentificationV_gtpc.rac", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RoutingAreaIdentificationV__gtpc_rac_xer_, &OCTETSTRING_json_, &RoutingAreaIdentificationV__gtpc_rac_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RoutingAreaIdentificationV__gtpc_rac_default_coding("RAW"); const TTCN_RAWdescriptor_t RoutingAreaIdentificationV__gtpc_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RoutingAreaIdentificationV__gtpc const TTCN_Typedescriptor_t RoutingAreaIdentificationV__gtpc_descr_ = { "@GTPC_Types.RoutingAreaIdentificationV_gtpc", NULL, &RoutingAreaIdentificationV__gtpc_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RoutingAreaIdentificationV__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING RNC__Identifier__gtpc_routingAreaIdentificationV__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t RNC__Identifier__gtpc_rNC__ID_raw_ = {12,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t RNC__Identifier__gtpc_rNC__ID_xer_ = { {"rNC_ID>\n", "rNC_ID>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t RNC__Identifier__gtpc_rNC__ID_descr_ = { "@GTPC_Types.RNC_Identifier_gtpc.rNC_ID", &INTEGER_ber_, &RNC__Identifier__gtpc_rNC__ID_raw_, &INTEGER_text_, &RNC__Identifier__gtpc_rNC__ID_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RNC__Identifier__gtpc_rNC__ID_default_coding("RAW"); const TTCN_RAWdescriptor_t RNC__Identifier__gtpc_spare_raw_ = {4,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t RNC__Identifier__gtpc_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_Typedescriptor_t RNC__Identifier__gtpc_spare_descr_ = { "@GTPC_Types.RNC_Identifier_gtpc.spare", NULL, &RNC__Identifier__gtpc_spare_raw_, NULL, &RNC__Identifier__gtpc_spare_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RNC__Identifier__gtpc_spare_default_coding("RAW"); const TTCN_RAWdescriptor_t RNC__Identifier__gtpc_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RNC__Identifier__gtpc const TTCN_Typedescriptor_t RNC__Identifier__gtpc_descr_ = { "@GTPC_Types.RNC_Identifier_gtpc", NULL, &RNC__Identifier__gtpc_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RNC__Identifier__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t Cell__ID__or__RNC__ID_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for Cell__ID__or__RNC__ID const TTCN_Typedescriptor_t Cell__ID__or__RNC__ID_descr_ = { "@GTPC_Types.Cell_ID_or_RNC_ID", NULL, &Cell__ID__or__RNC__ID_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Cell__ID__or__RNC__ID_cell__Identifier_default_coding("RAW"); UNIVERSAL_CHARSTRING Cell__ID__or__RNC__ID_rNC__Identifier_default_coding("RAW"); UNIVERSAL_CHARSTRING Cell__ID__or__RNC__ID_default_coding("RAW"); const XERdescriptor_t Cell__Identification__gtpc_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int Cell__Identification__gtpc_type__gtpc_oer_ext_arr_[0] = {}; const int Cell__Identification__gtpc_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t Cell__Identification__gtpc_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Cell__Identification__gtpc_type__gtpc_oer_ext_arr_, 0, Cell__Identification__gtpc_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t Cell__Identification__gtpc_type__gtpc_descr_ = { "@GTPC_Types.Cell_Identification_gtpc.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Cell__Identification__gtpc_type__gtpc_xer_, &OCTETSTRING_json_, &Cell__Identification__gtpc_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Cell__Identification__gtpc_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t Cell__Identification__gtpc_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t Cell__Identification__gtpc_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t Cell__Identification__gtpc_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t Cell__Identification__gtpc_lengthf_descr_ = { "@GTPC_Types.Cell_Identification_gtpc.lengthf", &INTEGER_ber_, &Cell__Identification__gtpc_lengthf_raw_, &INTEGER_text_, &Cell__Identification__gtpc_lengthf_xer_, &INTEGER_json_, &Cell__Identification__gtpc_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Cell__Identification__gtpc_lengthf_default_coding("RAW"); UNIVERSAL_CHARSTRING Cell__Identification__gtpc_targetCell__ID_default_coding("RAW"); const XERdescriptor_t Cell__Identification__gtpc_sourceType_xer_ = { {"sourceType>\n", "sourceType>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int Cell__Identification__gtpc_sourceType_oer_ext_arr_[0] = {}; const int Cell__Identification__gtpc_sourceType_oer_p_[0] = {}; const TTCN_OERdescriptor_t Cell__Identification__gtpc_sourceType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Cell__Identification__gtpc_sourceType_oer_ext_arr_, 0, Cell__Identification__gtpc_sourceType_oer_p_}; const TTCN_Typedescriptor_t Cell__Identification__gtpc_sourceType_descr_ = { "@GTPC_Types.Cell_Identification_gtpc.sourceType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Cell__Identification__gtpc_sourceType_xer_, &OCTETSTRING_json_, &Cell__Identification__gtpc_sourceType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Cell__Identification__gtpc_sourceType_default_coding("RAW"); const TTCN_RAWdescriptor_t Cell__Identification__gtpc_source__Cell__ID__or__RNC__ID_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for Cell__Identification__gtpc_source__Cell__ID__or__RNC__ID const TTCN_Typedescriptor_t Cell__Identification__gtpc_source__Cell__ID__or__RNC__ID_descr_ = { "@GTPC_Types.Cell_Identification_gtpc.source_Cell_ID_or_RNC_ID", NULL, &Cell__Identification__gtpc_source__Cell__ID__or__RNC__ID_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Cell__Identification__gtpc_source__Cell__ID__or__RNC__ID_default_coding("RAW"); const TTCN_RAWdescriptor_t Cell__Identification__gtpc_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for Cell__Identification__gtpc const TTCN_Typedescriptor_t Cell__Identification__gtpc_descr_ = { "@GTPC_Types.Cell_Identification_gtpc", NULL, &Cell__Identification__gtpc_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Cell__Identification__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t PDU__Numbers__List_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for PDU__Numbers__List const TTCN_Typedescriptor_t PDU__Numbers__List_descr_ = { "@GTPC_Types.PDU_Numbers_List", NULL, &PDU__Numbers__List_raw_, NULL, NULL, NULL, NULL, NULL, &PDU__Numbers_descr_, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t PDU__Numbers_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PDU__Numbers_type__gtpc_oer_ext_arr_[0] = {}; const int PDU__Numbers_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t PDU__Numbers_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__Numbers_type__gtpc_oer_ext_arr_, 0, PDU__Numbers_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t PDU__Numbers_type__gtpc_descr_ = { "@GTPC_Types.PDU_Numbers.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__Numbers_type__gtpc_xer_, &OCTETSTRING_json_, &PDU__Numbers_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__Numbers_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t PDU__Numbers_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t PDU__Numbers_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t PDU__Numbers_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t PDU__Numbers_lengthf_descr_ = { "@GTPC_Types.PDU_Numbers.lengthf", &INTEGER_ber_, &PDU__Numbers_lengthf_raw_, &INTEGER_text_, &PDU__Numbers_lengthf_xer_, &INTEGER_json_, &PDU__Numbers_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__Numbers_lengthf_default_coding("RAW"); const XERdescriptor_t PDU__Numbers_nsapi_xer_ = { {"nsapi>\n", "nsapi>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t PDU__Numbers_nsapi_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t PDU__Numbers_nsapi_descr_ = { "@GTPC_Types.PDU_Numbers.nsapi", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &PDU__Numbers_nsapi_xer_, &BITSTRING_json_, &PDU__Numbers_nsapi_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__Numbers_nsapi_default_coding("RAW"); const XERdescriptor_t PDU__Numbers_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 PDU__Numbers_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t PDU__Numbers_spare_descr_ = { "@GTPC_Types.PDU_Numbers.spare", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &PDU__Numbers_spare_xer_, &BITSTRING_json_, &PDU__Numbers_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__Numbers_spare_default_coding("RAW"); const XERdescriptor_t PDU__Numbers_dL__GTPU__SequenceNumber_xer_ = { {"dL_GTPU_SequenceNumber>\n", "dL_GTPU_SequenceNumber>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PDU__Numbers_dL__GTPU__SequenceNumber_oer_ext_arr_[0] = {}; const int PDU__Numbers_dL__GTPU__SequenceNumber_oer_p_[0] = {}; const TTCN_OERdescriptor_t PDU__Numbers_dL__GTPU__SequenceNumber_oer_ = { -1, TRUE, 2, FALSE, 0, 0, PDU__Numbers_dL__GTPU__SequenceNumber_oer_ext_arr_, 0, PDU__Numbers_dL__GTPU__SequenceNumber_oer_p_}; const TTCN_Typedescriptor_t PDU__Numbers_dL__GTPU__SequenceNumber_descr_ = { "@GTPC_Types.PDU_Numbers.dL_GTPU_SequenceNumber", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &PDU__Numbers_dL__GTPU__SequenceNumber_xer_, &OCTETSTRING_json_, &PDU__Numbers_dL__GTPU__SequenceNumber_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__Numbers_dL__GTPU__SequenceNumber_default_coding("RAW"); const XERdescriptor_t PDU__Numbers_uL__GTPU__SequenceNumber_xer_ = { {"uL_GTPU_SequenceNumber>\n", "uL_GTPU_SequenceNumber>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PDU__Numbers_uL__GTPU__SequenceNumber_oer_ext_arr_[0] = {}; const int PDU__Numbers_uL__GTPU__SequenceNumber_oer_p_[0] = {}; const TTCN_OERdescriptor_t PDU__Numbers_uL__GTPU__SequenceNumber_oer_ = { -1, TRUE, 2, FALSE, 0, 0, PDU__Numbers_uL__GTPU__SequenceNumber_oer_ext_arr_, 0, PDU__Numbers_uL__GTPU__SequenceNumber_oer_p_}; const TTCN_Typedescriptor_t PDU__Numbers_uL__GTPU__SequenceNumber_descr_ = { "@GTPC_Types.PDU_Numbers.uL_GTPU_SequenceNumber", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &PDU__Numbers_uL__GTPU__SequenceNumber_xer_, &OCTETSTRING_json_, &PDU__Numbers_uL__GTPU__SequenceNumber_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__Numbers_uL__GTPU__SequenceNumber_default_coding("RAW"); const XERdescriptor_t PDU__Numbers_sendNPDUnum_xer_ = { {"sendNPDUnum>\n", "sendNPDUnum>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PDU__Numbers_sendNPDUnum_oer_ext_arr_[0] = {}; const int PDU__Numbers_sendNPDUnum_oer_p_[0] = {}; const TTCN_OERdescriptor_t PDU__Numbers_sendNPDUnum_oer_ = { -1, TRUE, 2, FALSE, 0, 0, PDU__Numbers_sendNPDUnum_oer_ext_arr_, 0, PDU__Numbers_sendNPDUnum_oer_p_}; const TTCN_Typedescriptor_t PDU__Numbers_sendNPDUnum_descr_ = { "@GTPC_Types.PDU_Numbers.sendNPDUnum", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &PDU__Numbers_sendNPDUnum_xer_, &OCTETSTRING_json_, &PDU__Numbers_sendNPDUnum_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__Numbers_sendNPDUnum_default_coding("RAW"); const XERdescriptor_t PDU__Numbers_receiveNPDUnum_xer_ = { {"receiveNPDUnum>\n", "receiveNPDUnum>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PDU__Numbers_receiveNPDUnum_oer_ext_arr_[0] = {}; const int PDU__Numbers_receiveNPDUnum_oer_p_[0] = {}; const TTCN_OERdescriptor_t PDU__Numbers_receiveNPDUnum_oer_ = { -1, TRUE, 2, FALSE, 0, 0, PDU__Numbers_receiveNPDUnum_oer_ext_arr_, 0, PDU__Numbers_receiveNPDUnum_oer_p_}; const TTCN_Typedescriptor_t PDU__Numbers_receiveNPDUnum_descr_ = { "@GTPC_Types.PDU_Numbers.receiveNPDUnum", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &PDU__Numbers_receiveNPDUnum_xer_, &OCTETSTRING_json_, &PDU__Numbers_receiveNPDUnum_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__Numbers_receiveNPDUnum_default_coding("RAW"); const TTCN_RAWdescriptor_t PDU__Numbers_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for PDU__Numbers const TTCN_Typedescriptor_t PDU__Numbers_descr_ = { "@GTPC_Types.PDU_Numbers", NULL, &PDU__Numbers_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__Numbers_default_coding("RAW"); UNIVERSAL_CHARSTRING PDU__Numbers__List_0_default_coding("RAW"); UNIVERSAL_CHARSTRING PDU__Numbers__List_default_coding("RAW"); const XERdescriptor_t BSSGP__Cause__gtpc_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int BSSGP__Cause__gtpc_type__gtpc_oer_ext_arr_[0] = {}; const int BSSGP__Cause__gtpc_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t BSSGP__Cause__gtpc_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, BSSGP__Cause__gtpc_type__gtpc_oer_ext_arr_, 0, BSSGP__Cause__gtpc_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t BSSGP__Cause__gtpc_type__gtpc_descr_ = { "@GTPC_Types.BSSGP_Cause_gtpc.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &BSSGP__Cause__gtpc_type__gtpc_xer_, &OCTETSTRING_json_, &BSSGP__Cause__gtpc_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING BSSGP__Cause__gtpc_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t BSSGP__Cause__gtpc_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t BSSGP__Cause__gtpc_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t BSSGP__Cause__gtpc_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t BSSGP__Cause__gtpc_lengthf_descr_ = { "@GTPC_Types.BSSGP_Cause_gtpc.lengthf", &INTEGER_ber_, &BSSGP__Cause__gtpc_lengthf_raw_, &INTEGER_text_, &BSSGP__Cause__gtpc_lengthf_xer_, &INTEGER_json_, &BSSGP__Cause__gtpc_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING BSSGP__Cause__gtpc_lengthf_default_coding("RAW"); const XERdescriptor_t BSSGP__Cause__gtpc_bSSGP__Cause_xer_ = { {"bSSGP_Cause>\n", "bSSGP_Cause>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int BSSGP__Cause__gtpc_bSSGP__Cause_oer_ext_arr_[0] = {}; const int BSSGP__Cause__gtpc_bSSGP__Cause_oer_p_[0] = {}; const TTCN_OERdescriptor_t BSSGP__Cause__gtpc_bSSGP__Cause_oer_ = { -1, TRUE, 1, FALSE, 0, 0, BSSGP__Cause__gtpc_bSSGP__Cause_oer_ext_arr_, 0, BSSGP__Cause__gtpc_bSSGP__Cause_oer_p_}; const TTCN_Typedescriptor_t BSSGP__Cause__gtpc_bSSGP__Cause_descr_ = { "@GTPC_Types.BSSGP_Cause_gtpc.bSSGP_Cause", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &BSSGP__Cause__gtpc_bSSGP__Cause_xer_, &OCTETSTRING_json_, &BSSGP__Cause__gtpc_bSSGP__Cause_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING BSSGP__Cause__gtpc_bSSGP__Cause_default_coding("RAW"); const TTCN_RAWdescriptor_t BSSGP__Cause__gtpc_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for BSSGP__Cause__gtpc const TTCN_Typedescriptor_t BSSGP__Cause__gtpc_descr_ = { "@GTPC_Types.BSSGP_Cause_gtpc", NULL, &BSSGP__Cause__gtpc_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING BSSGP__Cause__gtpc_default_coding("RAW"); const XERdescriptor_t RequiredMBMS__BearerCapabilities_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RequiredMBMS__BearerCapabilities_type__gtpc_oer_ext_arr_[0] = {}; const int RequiredMBMS__BearerCapabilities_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t RequiredMBMS__BearerCapabilities_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RequiredMBMS__BearerCapabilities_type__gtpc_oer_ext_arr_, 0, RequiredMBMS__BearerCapabilities_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t RequiredMBMS__BearerCapabilities_type__gtpc_descr_ = { "@GTPC_Types.RequiredMBMS_BearerCapabilities.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RequiredMBMS__BearerCapabilities_type__gtpc_xer_, &OCTETSTRING_json_, &RequiredMBMS__BearerCapabilities_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RequiredMBMS__BearerCapabilities_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t RequiredMBMS__BearerCapabilities_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t RequiredMBMS__BearerCapabilities_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RequiredMBMS__BearerCapabilities_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RequiredMBMS__BearerCapabilities_lengthf_descr_ = { "@GTPC_Types.RequiredMBMS_BearerCapabilities.lengthf", &INTEGER_ber_, &RequiredMBMS__BearerCapabilities_lengthf_raw_, &INTEGER_text_, &RequiredMBMS__BearerCapabilities_lengthf_xer_, &INTEGER_json_, &RequiredMBMS__BearerCapabilities_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RequiredMBMS__BearerCapabilities_lengthf_default_coding("RAW"); const XERdescriptor_t RequiredMBMS__BearerCapabilities_reqMBMS__BearerCapValue_xer_ = { {"reqMBMS_BearerCapValue>\n", "reqMBMS_BearerCapValue>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RequiredMBMS__BearerCapabilities_reqMBMS__BearerCapValue_oer_ext_arr_[0] = {}; const int RequiredMBMS__BearerCapabilities_reqMBMS__BearerCapValue_oer_p_[0] = {}; const TTCN_OERdescriptor_t RequiredMBMS__BearerCapabilities_reqMBMS__BearerCapValue_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RequiredMBMS__BearerCapabilities_reqMBMS__BearerCapValue_oer_ext_arr_, 0, RequiredMBMS__BearerCapabilities_reqMBMS__BearerCapValue_oer_p_}; const TTCN_Typedescriptor_t RequiredMBMS__BearerCapabilities_reqMBMS__BearerCapValue_descr_ = { "@GTPC_Types.RequiredMBMS_BearerCapabilities.reqMBMS_BearerCapValue", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &RequiredMBMS__BearerCapabilities_reqMBMS__BearerCapValue_xer_, &OCTETSTRING_json_, &RequiredMBMS__BearerCapabilities_reqMBMS__BearerCapValue_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RequiredMBMS__BearerCapabilities_reqMBMS__BearerCapValue_default_coding("RAW"); const TTCN_RAWdescriptor_t RequiredMBMS__BearerCapabilities_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RequiredMBMS__BearerCapabilities const TTCN_Typedescriptor_t RequiredMBMS__BearerCapabilities_descr_ = { "@GTPC_Types.RequiredMBMS_BearerCapabilities", NULL, &RequiredMBMS__BearerCapabilities_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RequiredMBMS__BearerCapabilities_default_coding("RAW"); const XERdescriptor_t RIM__RoutingAddress__Discriminator_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RIM__RoutingAddress__Discriminator_type__gtpc_oer_ext_arr_[0] = {}; const int RIM__RoutingAddress__Discriminator_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t RIM__RoutingAddress__Discriminator_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RIM__RoutingAddress__Discriminator_type__gtpc_oer_ext_arr_, 0, RIM__RoutingAddress__Discriminator_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t RIM__RoutingAddress__Discriminator_type__gtpc_descr_ = { "@GTPC_Types.RIM_RoutingAddress_Discriminator.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RIM__RoutingAddress__Discriminator_type__gtpc_xer_, &OCTETSTRING_json_, &RIM__RoutingAddress__Discriminator_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__RoutingAddress__Discriminator_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t RIM__RoutingAddress__Discriminator_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t RIM__RoutingAddress__Discriminator_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RIM__RoutingAddress__Discriminator_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RIM__RoutingAddress__Discriminator_lengthf_descr_ = { "@GTPC_Types.RIM_RoutingAddress_Discriminator.lengthf", &INTEGER_ber_, &RIM__RoutingAddress__Discriminator_lengthf_raw_, &INTEGER_text_, &RIM__RoutingAddress__Discriminator_lengthf_xer_, &INTEGER_json_, &RIM__RoutingAddress__Discriminator_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__RoutingAddress__Discriminator_lengthf_default_coding("RAW"); const XERdescriptor_t RIM__RoutingAddress__Discriminator_rra__discriminator_xer_ = { {"rra_discriminator>\n", "rra_discriminator>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RIM__RoutingAddress__Discriminator_rra__discriminator_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RIM__RoutingAddress__Discriminator_rra__discriminator_descr_ = { "@GTPC_Types.RIM_RoutingAddress_Discriminator.rra_discriminator", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &RIM__RoutingAddress__Discriminator_rra__discriminator_xer_, &BITSTRING_json_, &RIM__RoutingAddress__Discriminator_rra__discriminator_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__RoutingAddress__Discriminator_rra__discriminator_default_coding("RAW"); const XERdescriptor_t RIM__RoutingAddress__Discriminator_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 RIM__RoutingAddress__Discriminator_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RIM__RoutingAddress__Discriminator_spare_descr_ = { "@GTPC_Types.RIM_RoutingAddress_Discriminator.spare", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &RIM__RoutingAddress__Discriminator_spare_xer_, &BITSTRING_json_, &RIM__RoutingAddress__Discriminator_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__RoutingAddress__Discriminator_spare_default_coding("RAW"); const TTCN_RAWdescriptor_t RIM__RoutingAddress__Discriminator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RIM__RoutingAddress__Discriminator const TTCN_Typedescriptor_t RIM__RoutingAddress__Discriminator_descr_ = { "@GTPC_Types.RIM_RoutingAddress_Discriminator", NULL, &RIM__RoutingAddress__Discriminator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__RoutingAddress__Discriminator_default_coding("RAW"); const XERdescriptor_t Single__PFI__gtpc_pFI__Value_xer_ = { {"pFI_Value>\n", "pFI_Value>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t Single__PFI__gtpc_pFI__Value_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t Single__PFI__gtpc_pFI__Value_descr_ = { "@GTPC_Types.Single_PFI_gtpc.pFI_Value", &BITSTRING_ber_, &General__Types::BIT7_raw_, NULL, &Single__PFI__gtpc_pFI__Value_xer_, &BITSTRING_json_, &Single__PFI__gtpc_pFI__Value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Single__PFI__gtpc_pFI__Value_default_coding("RAW"); const XERdescriptor_t Single__PFI__gtpc_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 Single__PFI__gtpc_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t Single__PFI__gtpc_spare_descr_ = { "@GTPC_Types.Single_PFI_gtpc.spare", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &Single__PFI__gtpc_spare_xer_, &BITSTRING_json_, &Single__PFI__gtpc_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Single__PFI__gtpc_spare_default_coding("RAW"); const TTCN_RAWdescriptor_t Single__PFI__gtpc_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for Single__PFI__gtpc const TTCN_Typedescriptor_t Single__PFI__gtpc_descr_ = { "@GTPC_Types.Single_PFI_gtpc", NULL, &Single__PFI__gtpc_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Single__PFI__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t Multiple__PFIs__gtpc_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for Multiple__PFIs__gtpc const TTCN_Typedescriptor_t Multiple__PFIs__gtpc_descr_ = { "@GTPC_Types.Multiple_PFIs_gtpc", NULL, &Multiple__PFIs__gtpc_raw_, NULL, NULL, NULL, NULL, NULL, &Single__PFI__gtpc_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Multiple__PFIs__gtpc_0_default_coding("RAW"); UNIVERSAL_CHARSTRING Multiple__PFIs__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t ListOfSetupPFCsValue__gtpc_number__of__PFCs_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,-1,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t ListOfSetupPFCsValue__gtpc_number__of__PFCs_xer_ = { {"number_of_PFCs>\n", "number_of_PFCs>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t ListOfSetupPFCsValue__gtpc_number__of__PFCs_descr_ = { "@GTPC_Types.ListOfSetupPFCsValue_gtpc.number_of_PFCs", &INTEGER_ber_, &ListOfSetupPFCsValue__gtpc_number__of__PFCs_raw_, &INTEGER_text_, &ListOfSetupPFCsValue__gtpc_number__of__PFCs_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ListOfSetupPFCsValue__gtpc_number__of__PFCs_default_coding("RAW"); UNIVERSAL_CHARSTRING ListOfSetupPFCsValue__gtpc_pFIs_default_coding("RAW"); const TTCN_RAWdescriptor_t ListOfSetupPFCsValue__gtpc_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for ListOfSetupPFCsValue__gtpc const TTCN_Typedescriptor_t ListOfSetupPFCsValue__gtpc_descr_ = { "@GTPC_Types.ListOfSetupPFCsValue_gtpc", NULL, &ListOfSetupPFCsValue__gtpc_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ListOfSetupPFCsValue__gtpc_default_coding("RAW"); const XERdescriptor_t ListOfSetupPFCs__gtpc_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int ListOfSetupPFCs__gtpc_type__gtpc_oer_ext_arr_[0] = {}; const int ListOfSetupPFCs__gtpc_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t ListOfSetupPFCs__gtpc_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ListOfSetupPFCs__gtpc_type__gtpc_oer_ext_arr_, 0, ListOfSetupPFCs__gtpc_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t ListOfSetupPFCs__gtpc_type__gtpc_descr_ = { "@GTPC_Types.ListOfSetupPFCs_gtpc.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &ListOfSetupPFCs__gtpc_type__gtpc_xer_, &OCTETSTRING_json_, &ListOfSetupPFCs__gtpc_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ListOfSetupPFCs__gtpc_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t ListOfSetupPFCs__gtpc_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t ListOfSetupPFCs__gtpc_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t ListOfSetupPFCs__gtpc_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t ListOfSetupPFCs__gtpc_lengthf_descr_ = { "@GTPC_Types.ListOfSetupPFCs_gtpc.lengthf", &INTEGER_ber_, &ListOfSetupPFCs__gtpc_lengthf_raw_, &INTEGER_text_, &ListOfSetupPFCs__gtpc_lengthf_xer_, &INTEGER_json_, &ListOfSetupPFCs__gtpc_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ListOfSetupPFCs__gtpc_lengthf_default_coding("RAW"); UNIVERSAL_CHARSTRING ListOfSetupPFCs__gtpc_listOfSetupPFCs_default_coding("RAW"); const TTCN_RAWdescriptor_t ListOfSetupPFCs__gtpc_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for ListOfSetupPFCs__gtpc const TTCN_Typedescriptor_t ListOfSetupPFCs__gtpc_descr_ = { "@GTPC_Types.ListOfSetupPFCs_gtpc", NULL, &ListOfSetupPFCs__gtpc_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ListOfSetupPFCs__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t PS__HandoverXIDParameters__List_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for PS__HandoverXIDParameters__List const TTCN_Typedescriptor_t PS__HandoverXIDParameters__List_descr_ = { "@GTPC_Types.PS_HandoverXIDParameters_List", NULL, &PS__HandoverXIDParameters__List_raw_, NULL, NULL, NULL, NULL, NULL, &PS__HandoverXIDParameters_descr_, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t PS__HandoverXIDParameters_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PS__HandoverXIDParameters_type__gtpc_oer_ext_arr_[0] = {}; const int PS__HandoverXIDParameters_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t PS__HandoverXIDParameters_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PS__HandoverXIDParameters_type__gtpc_oer_ext_arr_, 0, PS__HandoverXIDParameters_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t PS__HandoverXIDParameters_type__gtpc_descr_ = { "@GTPC_Types.PS_HandoverXIDParameters.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PS__HandoverXIDParameters_type__gtpc_xer_, &OCTETSTRING_json_, &PS__HandoverXIDParameters_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PS__HandoverXIDParameters_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t PS__HandoverXIDParameters_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t PS__HandoverXIDParameters_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t PS__HandoverXIDParameters_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t PS__HandoverXIDParameters_lengthf_descr_ = { "@GTPC_Types.PS_HandoverXIDParameters.lengthf", &INTEGER_ber_, &PS__HandoverXIDParameters_lengthf_raw_, &INTEGER_text_, &PS__HandoverXIDParameters_lengthf_xer_, &INTEGER_json_, &PS__HandoverXIDParameters_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PS__HandoverXIDParameters_lengthf_default_coding("RAW"); const XERdescriptor_t PS__HandoverXIDParameters_sapi_xer_ = { {"sapi>\n", "sapi>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t PS__HandoverXIDParameters_sapi_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t PS__HandoverXIDParameters_sapi_descr_ = { "@GTPC_Types.PS_HandoverXIDParameters.sapi", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &PS__HandoverXIDParameters_sapi_xer_, &BITSTRING_json_, &PS__HandoverXIDParameters_sapi_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PS__HandoverXIDParameters_sapi_default_coding("RAW"); const XERdescriptor_t PS__HandoverXIDParameters_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 PS__HandoverXIDParameters_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t PS__HandoverXIDParameters_spare_descr_ = { "@GTPC_Types.PS_HandoverXIDParameters.spare", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &PS__HandoverXIDParameters_spare_xer_, &BITSTRING_json_, &PS__HandoverXIDParameters_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PS__HandoverXIDParameters_spare_default_coding("RAW"); const TTCN_RAWdescriptor_t PS__HandoverXIDParameters_xID__ParametersLength_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t PS__HandoverXIDParameters_xID__ParametersLength_xer_ = { {"xID_ParametersLength>\n", "xID_ParametersLength>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t PS__HandoverXIDParameters_xID__ParametersLength_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t PS__HandoverXIDParameters_xID__ParametersLength_descr_ = { "@GTPC_Types.PS_HandoverXIDParameters.xID_ParametersLength", &INTEGER_ber_, &PS__HandoverXIDParameters_xID__ParametersLength_raw_, &INTEGER_text_, &PS__HandoverXIDParameters_xID__ParametersLength_xer_, &INTEGER_json_, &PS__HandoverXIDParameters_xID__ParametersLength_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PS__HandoverXIDParameters_xID__ParametersLength_default_coding("RAW"); const TTCN_RAWdescriptor_t PS__HandoverXIDParameters_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for PS__HandoverXIDParameters const TTCN_Typedescriptor_t PS__HandoverXIDParameters_descr_ = { "@GTPC_Types.PS_HandoverXIDParameters", NULL, &PS__HandoverXIDParameters_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const TTCN_RAWdescriptor_t XID__Information__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for XID__Information__GTPC const TTCN_Typedescriptor_t XID__Information__GTPC_descr_ = { "@GTPC_Types.XID_Information_GTPC", NULL, &XID__Information__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, &XID__GTPC_descr_, TTCN_Typedescriptor_t::DONTCARE }; const TTCN_RAWdescriptor_t XID__GTPC_xl_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t XID__GTPC_xl_xer_ = { {"xl>\n", "xl>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t XID__GTPC_xl_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t XID__GTPC_xl_descr_ = { "@GTPC_Types.XID_GTPC.xl", &BITSTRING_ber_, &XID__GTPC_xl_raw_, NULL, &XID__GTPC_xl_xer_, &BITSTRING_json_, &XID__GTPC_xl_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING XID__GTPC_xl_default_coding("RAW"); const TTCN_RAWdescriptor_t XID__GTPC_typefield_raw_ = {5,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,5,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t XID__GTPC_typefield_xer_ = { {"typefield>\n", "typefield>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t XID__GTPC_typefield_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t XID__GTPC_typefield_descr_ = { "@GTPC_Types.XID_GTPC.typefield", &BITSTRING_ber_, &XID__GTPC_typefield_raw_, NULL, &XID__GTPC_typefield_xer_, &BITSTRING_json_, &XID__GTPC_typefield_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING XID__GTPC_typefield_default_coding("RAW"); const TTCN_RAWdescriptor_t XID__length__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for XID__length__GTPC const TTCN_Typedescriptor_t XID__length__GTPC_descr_ = { "@GTPC_Types.XID_length_GTPC", NULL, &XID__length__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const TTCN_RAWdescriptor_t XID__length__GTPC_short__len_raw_ = {2,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t XID__length__GTPC_short__len_xer_ = { {"short_len>\n", "short_len>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t XID__length__GTPC_short__len_descr_ = { "@GTPC_Types.XID_length_GTPC.short_len", &INTEGER_ber_, &XID__length__GTPC_short__len_raw_, &INTEGER_text_, &XID__length__GTPC_short__len_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING XID__length__GTPC_short__len_default_coding("RAW"); const TTCN_RAWdescriptor_t XID__length__GTPC_long__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,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t XID__length__GTPC_long__len_xer_ = { {"long_len>\n", "long_len>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t XID__length__GTPC_long__len_descr_ = { "@GTPC_Types.XID_length_GTPC.long_len", &INTEGER_ber_, &XID__length__GTPC_long__len_raw_, &INTEGER_text_, &XID__length__GTPC_long__len_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING XID__length__GTPC_long__len_default_coding("RAW"); UNIVERSAL_CHARSTRING XID__length__GTPC_default_coding("RAW"); const TTCN_RAWdescriptor_t XID__GTPC_xID__length_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,8,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for XID__GTPC_xID__length const TTCN_Typedescriptor_t XID__GTPC_xID__length_descr_ = { "@GTPC_Types.XID_GTPC.xID_length", NULL, &XID__GTPC_xID__length_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING XID__GTPC_xID__length_default_coding("RAW"); const TTCN_RAWdescriptor_t XID__Data__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for XID__Data__GTPC const TTCN_Typedescriptor_t XID__Data__GTPC_descr_ = { "@GTPC_Types.XID_Data_GTPC", NULL, &XID__Data__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const TTCN_RAWdescriptor_t Version__GTPC_version__value_raw_ = {4,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t Version__GTPC_version__value_xer_ = { {"version_value>\n", "version_value>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t Version__GTPC_version__value_descr_ = { "@GTPC_Types.Version_GTPC.version_value", &INTEGER_ber_, &Version__GTPC_version__value_raw_, &INTEGER_text_, &Version__GTPC_version__value_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Version__GTPC_version__value_default_coding("RAW"); const XERdescriptor_t Version__GTPC_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 Version__GTPC_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t Version__GTPC_spare_descr_ = { "@GTPC_Types.Version_GTPC.spare", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &Version__GTPC_spare_xer_, &BITSTRING_json_, &Version__GTPC_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Version__GTPC_spare_default_coding("RAW"); const TTCN_RAWdescriptor_t Version__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for Version__GTPC const TTCN_Typedescriptor_t Version__GTPC_descr_ = { "@GTPC_Types.Version_GTPC", NULL, &Version__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Version__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING XID__Data__GTPC_version_default_coding("RAW"); const TTCN_RAWdescriptor_t IOV__UI__GTPC_raw_ = {32,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t IOV__UI__GTPC_xer_ = { {"IOV_UI_GTPC>\n", "IOV_UI_GTPC>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int IOV__UI__GTPC_oer_ext_arr_[0] = {}; const int IOV__UI__GTPC_oer_p_[0] = {}; const TTCN_OERdescriptor_t IOV__UI__GTPC_oer_ = { -1, TRUE, 4, FALSE, 0, 0, IOV__UI__GTPC_oer_ext_arr_, 0, IOV__UI__GTPC_oer_p_}; const TTCN_Typedescriptor_t IOV__UI__GTPC_descr_ = { "@GTPC_Types.IOV_UI_GTPC", &OCTETSTRING_ber_, &IOV__UI__GTPC_raw_, &OCTETSTRING_text_, &IOV__UI__GTPC_xer_, &OCTETSTRING_json_, &IOV__UI__GTPC_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IOV__UI__GTPC_default_coding("RAW"); const XERdescriptor_t XID__Data__GTPC_iOV__UI_xer_ = { {"iOV_UI>\n", "iOV_UI>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int XID__Data__GTPC_iOV__UI_oer_ext_arr_[0] = {}; const int XID__Data__GTPC_iOV__UI_oer_p_[0] = {}; const TTCN_OERdescriptor_t XID__Data__GTPC_iOV__UI_oer_ = { -1, TRUE, 4, FALSE, 0, 0, XID__Data__GTPC_iOV__UI_oer_ext_arr_, 0, XID__Data__GTPC_iOV__UI_oer_p_}; const TTCN_Typedescriptor_t XID__Data__GTPC_iOV__UI_descr_ = { "@GTPC_Types.XID_Data_GTPC.iOV_UI", &OCTETSTRING_ber_, &IOV__UI__GTPC_raw_, &OCTETSTRING_text_, &XID__Data__GTPC_iOV__UI_xer_, &OCTETSTRING_json_, &XID__Data__GTPC_iOV__UI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING XID__Data__GTPC_iOV__UI_default_coding("RAW"); const TTCN_RAWdescriptor_t IOV__I__GTPC_raw_ = {32,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t IOV__I__GTPC_xer_ = { {"IOV_I_GTPC>\n", "IOV_I_GTPC>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int IOV__I__GTPC_oer_ext_arr_[0] = {}; const int IOV__I__GTPC_oer_p_[0] = {}; const TTCN_OERdescriptor_t IOV__I__GTPC_oer_ = { -1, TRUE, 4, FALSE, 0, 0, IOV__I__GTPC_oer_ext_arr_, 0, IOV__I__GTPC_oer_p_}; const TTCN_Typedescriptor_t IOV__I__GTPC_descr_ = { "@GTPC_Types.IOV_I_GTPC", &OCTETSTRING_ber_, &IOV__I__GTPC_raw_, &OCTETSTRING_text_, &IOV__I__GTPC_xer_, &OCTETSTRING_json_, &IOV__I__GTPC_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IOV__I__GTPC_default_coding("RAW"); const XERdescriptor_t XID__Data__GTPC_iOV__I_xer_ = { {"iOV_I>\n", "iOV_I>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int XID__Data__GTPC_iOV__I_oer_ext_arr_[0] = {}; const int XID__Data__GTPC_iOV__I_oer_p_[0] = {}; const TTCN_OERdescriptor_t XID__Data__GTPC_iOV__I_oer_ = { -1, TRUE, 4, FALSE, 0, 0, XID__Data__GTPC_iOV__I_oer_ext_arr_, 0, XID__Data__GTPC_iOV__I_oer_p_}; const TTCN_Typedescriptor_t XID__Data__GTPC_iOV__I_descr_ = { "@GTPC_Types.XID_Data_GTPC.iOV_I", &OCTETSTRING_ber_, &IOV__I__GTPC_raw_, &OCTETSTRING_text_, &XID__Data__GTPC_iOV__I_xer_, &OCTETSTRING_json_, &XID__Data__GTPC_iOV__I_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING XID__Data__GTPC_iOV__I_default_coding("RAW"); const TTCN_RAWdescriptor_t T200__GTPC_spare_raw_ = {4,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,4,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t T200__GTPC_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 T200__GTPC_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t T200__GTPC_spare_descr_ = { "@GTPC_Types.T200_GTPC.spare", &BITSTRING_ber_, &T200__GTPC_spare_raw_, NULL, &T200__GTPC_spare_xer_, &BITSTRING_json_, &T200__GTPC_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING T200__GTPC_spare_default_coding("RAW"); const TTCN_RAWdescriptor_t T200__GTPC_t200Value_raw_ = {12,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t T200__GTPC_t200Value_xer_ = { {"t200Value>\n", "t200Value>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t T200__GTPC_t200Value_descr_ = { "@GTPC_Types.T200_GTPC.t200Value", &INTEGER_ber_, &T200__GTPC_t200Value_raw_, &INTEGER_text_, &T200__GTPC_t200Value_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING T200__GTPC_t200Value_default_coding("RAW"); const TTCN_RAWdescriptor_t T200__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for T200__GTPC const TTCN_Typedescriptor_t T200__GTPC_descr_ = { "@GTPC_Types.T200_GTPC", NULL, &T200__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING T200__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING XID__Data__GTPC_t200_default_coding("RAW"); const TTCN_RAWdescriptor_t N200__GTPC_retransmissions_raw_ = {4,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t N200__GTPC_retransmissions_xer_ = { {"retransmissions>\n", "retransmissions>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t N200__GTPC_retransmissions_descr_ = { "@GTPC_Types.N200_GTPC.retransmissions", &INTEGER_ber_, &N200__GTPC_retransmissions_raw_, &INTEGER_text_, &N200__GTPC_retransmissions_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING N200__GTPC_retransmissions_default_coding("RAW"); const XERdescriptor_t N200__GTPC_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 N200__GTPC_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t N200__GTPC_spare_descr_ = { "@GTPC_Types.N200_GTPC.spare", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &N200__GTPC_spare_xer_, &BITSTRING_json_, &N200__GTPC_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING N200__GTPC_spare_default_coding("RAW"); const TTCN_RAWdescriptor_t N200__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for N200__GTPC const TTCN_Typedescriptor_t N200__GTPC_descr_ = { "@GTPC_Types.N200_GTPC", NULL, &N200__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING N200__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING XID__Data__GTPC_n200_default_coding("RAW"); const TTCN_RAWdescriptor_t N201__U__GTPC_spare_raw_ = {5,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,5,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t N201__U__GTPC_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 N201__U__GTPC_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t N201__U__GTPC_spare_descr_ = { "@GTPC_Types.N201_U_GTPC.spare", &BITSTRING_ber_, &N201__U__GTPC_spare_raw_, NULL, &N201__U__GTPC_spare_xer_, &BITSTRING_json_, &N201__U__GTPC_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING N201__U__GTPC_spare_default_coding("RAW"); const TTCN_RAWdescriptor_t N201__U__GTPC_n201UValue_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,NULL,false}; const XERdescriptor_t N201__U__GTPC_n201UValue_xer_ = { {"n201UValue>\n", "n201UValue>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t N201__U__GTPC_n201UValue_descr_ = { "@GTPC_Types.N201_U_GTPC.n201UValue", &INTEGER_ber_, &N201__U__GTPC_n201UValue_raw_, &INTEGER_text_, &N201__U__GTPC_n201UValue_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING N201__U__GTPC_n201UValue_default_coding("RAW"); const TTCN_RAWdescriptor_t N201__U__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for N201__U__GTPC const TTCN_Typedescriptor_t N201__U__GTPC_descr_ = { "@GTPC_Types.N201_U_GTPC", NULL, &N201__U__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING N201__U__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING XID__Data__GTPC_n201__U_default_coding("RAW"); const TTCN_RAWdescriptor_t N201__I__GTPC_spare_raw_ = {5,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,5,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t N201__I__GTPC_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 N201__I__GTPC_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t N201__I__GTPC_spare_descr_ = { "@GTPC_Types.N201_I_GTPC.spare", &BITSTRING_ber_, &N201__I__GTPC_spare_raw_, NULL, &N201__I__GTPC_spare_xer_, &BITSTRING_json_, &N201__I__GTPC_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING N201__I__GTPC_spare_default_coding("RAW"); const TTCN_RAWdescriptor_t N201__I__GTPC_n201IValue_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,NULL,false}; const XERdescriptor_t N201__I__GTPC_n201IValue_xer_ = { {"n201IValue>\n", "n201IValue>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t N201__I__GTPC_n201IValue_descr_ = { "@GTPC_Types.N201_I_GTPC.n201IValue", &INTEGER_ber_, &N201__I__GTPC_n201IValue_raw_, &INTEGER_text_, &N201__I__GTPC_n201IValue_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING N201__I__GTPC_n201IValue_default_coding("RAW"); const TTCN_RAWdescriptor_t N201__I__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for N201__I__GTPC const TTCN_Typedescriptor_t N201__I__GTPC_descr_ = { "@GTPC_Types.N201_I_GTPC", NULL, &N201__I__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING N201__I__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING XID__Data__GTPC_n201__I_default_coding("RAW"); const TTCN_RAWdescriptor_t MD__GTPC_spare_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MD__GTPC_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 MD__GTPC_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MD__GTPC_spare_descr_ = { "@GTPC_Types.MD_GTPC.spare", &BITSTRING_ber_, &MD__GTPC_spare_raw_, NULL, &MD__GTPC_spare_xer_, &BITSTRING_json_, &MD__GTPC_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MD__GTPC_spare_default_coding("RAW"); const TTCN_RAWdescriptor_t MD__GTPC_mDValue_raw_ = {15,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MD__GTPC_mDValue_xer_ = { {"mDValue>\n", "mDValue>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t MD__GTPC_mDValue_descr_ = { "@GTPC_Types.MD_GTPC.mDValue", &INTEGER_ber_, &MD__GTPC_mDValue_raw_, &INTEGER_text_, &MD__GTPC_mDValue_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MD__GTPC_mDValue_default_coding("RAW"); const TTCN_RAWdescriptor_t MD__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MD__GTPC const TTCN_Typedescriptor_t MD__GTPC_descr_ = { "@GTPC_Types.MD_GTPC", NULL, &MD__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MD__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING XID__Data__GTPC_mD_default_coding("RAW"); const TTCN_RAWdescriptor_t MU__GTPC_spare_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MU__GTPC_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 MU__GTPC_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MU__GTPC_spare_descr_ = { "@GTPC_Types.MU_GTPC.spare", &BITSTRING_ber_, &MU__GTPC_spare_raw_, NULL, &MU__GTPC_spare_xer_, &BITSTRING_json_, &MU__GTPC_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MU__GTPC_spare_default_coding("RAW"); const TTCN_RAWdescriptor_t MU__GTPC_mUValue_raw_ = {15,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MU__GTPC_mUValue_xer_ = { {"mUValue>\n", "mUValue>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t MU__GTPC_mUValue_descr_ = { "@GTPC_Types.MU_GTPC.mUValue", &INTEGER_ber_, &MU__GTPC_mUValue_raw_, &INTEGER_text_, &MU__GTPC_mUValue_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MU__GTPC_mUValue_default_coding("RAW"); const TTCN_RAWdescriptor_t MU__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MU__GTPC const TTCN_Typedescriptor_t MU__GTPC_descr_ = { "@GTPC_Types.MU_GTPC", NULL, &MU__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MU__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING XID__Data__GTPC_mU_default_coding("RAW"); const TTCN_RAWdescriptor_t KD__GTPC_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t KD__GTPC_xer_ = { {"KD_GTPC>\n", "KD_GTPC>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t KD__GTPC_descr_ = { "@GTPC_Types.KD_GTPC", &INTEGER_ber_, &KD__GTPC_raw_, &INTEGER_text_, &KD__GTPC_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING KD__GTPC_default_coding("RAW"); const XERdescriptor_t XID__Data__GTPC_kD_xer_ = { {"kD>\n", "kD>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t XID__Data__GTPC_kD_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t XID__Data__GTPC_kD_descr_ = { "@GTPC_Types.XID_Data_GTPC.kD", &INTEGER_ber_, &KD__GTPC_raw_, &INTEGER_text_, &XID__Data__GTPC_kD_xer_, &INTEGER_json_, &XID__Data__GTPC_kD_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING XID__Data__GTPC_kD_default_coding("RAW"); const TTCN_RAWdescriptor_t KU__GTPC_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t KU__GTPC_xer_ = { {"KU_GTPC>\n", "KU_GTPC>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t KU__GTPC_descr_ = { "@GTPC_Types.KU_GTPC", &INTEGER_ber_, &KU__GTPC_raw_, &INTEGER_text_, &KU__GTPC_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING KU__GTPC_default_coding("RAW"); const XERdescriptor_t XID__Data__GTPC_kU_xer_ = { {"kU>\n", "kU>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t XID__Data__GTPC_kU_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t XID__Data__GTPC_kU_descr_ = { "@GTPC_Types.XID_Data_GTPC.kU", &INTEGER_ber_, &KU__GTPC_raw_, &INTEGER_text_, &XID__Data__GTPC_kU_xer_, &INTEGER_json_, &XID__Data__GTPC_kU_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING XID__Data__GTPC_kU_default_coding("RAW"); const XERdescriptor_t L3param__GTPC_xer_ = { {"L3param_GTPC>\n", "L3param_GTPC>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int L3param__GTPC_oer_ext_arr_[0] = {}; const int L3param__GTPC_oer_p_[0] = {}; const TTCN_OERdescriptor_t L3param__GTPC_oer_ = { -1, TRUE, -1, FALSE, 0, 0, L3param__GTPC_oer_ext_arr_, 0, L3param__GTPC_oer_p_}; const TTCN_Typedescriptor_t L3param__GTPC_descr_ = { "@GTPC_Types.L3param_GTPC", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &L3param__GTPC_xer_, &OCTETSTRING_json_, &L3param__GTPC_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING L3param__GTPC_default_coding("RAW"); const XERdescriptor_t XID__Data__GTPC_l3param_xer_ = { {"l3param>\n", "l3param>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int XID__Data__GTPC_l3param_oer_ext_arr_[0] = {}; const int XID__Data__GTPC_l3param_oer_p_[0] = {}; const TTCN_OERdescriptor_t XID__Data__GTPC_l3param_oer_ = { -1, TRUE, -1, FALSE, 0, 0, XID__Data__GTPC_l3param_oer_ext_arr_, 0, XID__Data__GTPC_l3param_oer_p_}; const TTCN_Typedescriptor_t XID__Data__GTPC_l3param_descr_ = { "@GTPC_Types.XID_Data_GTPC.l3param", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &XID__Data__GTPC_l3param_xer_, &OCTETSTRING_json_, &XID__Data__GTPC_l3param_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING XID__Data__GTPC_l3param_default_coding("RAW"); const TTCN_RAWdescriptor_t Reset__LLC__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t Reset__LLC__GTPC_xer_ = { {"Reset_LLC_GTPC>\n", "Reset_LLC_GTPC>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int Reset__LLC__GTPC_oer_ext_arr_[0] = {}; const int Reset__LLC__GTPC_oer_p_[0] = {}; const TTCN_OERdescriptor_t Reset__LLC__GTPC_oer_ = { -1, TRUE, 0, FALSE, 0, 0, Reset__LLC__GTPC_oer_ext_arr_, 0, Reset__LLC__GTPC_oer_p_}; const TTCN_Typedescriptor_t Reset__LLC__GTPC_descr_ = { "@GTPC_Types.Reset_LLC_GTPC", &OCTETSTRING_ber_, &Reset__LLC__GTPC_raw_, &OCTETSTRING_text_, &Reset__LLC__GTPC_xer_, &OCTETSTRING_json_, &Reset__LLC__GTPC_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Reset__LLC__GTPC_default_coding("RAW"); const XERdescriptor_t XID__Data__GTPC_reset_xer_ = { {"reset>\n", "reset>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int XID__Data__GTPC_reset_oer_ext_arr_[0] = {}; const int XID__Data__GTPC_reset_oer_p_[0] = {}; const TTCN_OERdescriptor_t XID__Data__GTPC_reset_oer_ = { -1, TRUE, 0, FALSE, 0, 0, XID__Data__GTPC_reset_oer_ext_arr_, 0, XID__Data__GTPC_reset_oer_p_}; const TTCN_Typedescriptor_t XID__Data__GTPC_reset_descr_ = { "@GTPC_Types.XID_Data_GTPC.reset", &OCTETSTRING_ber_, &Reset__LLC__GTPC_raw_, &OCTETSTRING_text_, &XID__Data__GTPC_reset_xer_, &OCTETSTRING_json_, &XID__Data__GTPC_reset_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING XID__Data__GTPC_reset_default_coding("RAW"); UNIVERSAL_CHARSTRING XID__Data__GTPC_default_coding("RAW"); const TTCN_RAWdescriptor_t XID__GTPC_xID__Data_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for XID__GTPC_xID__Data const TTCN_Typedescriptor_t XID__GTPC_xID__Data_descr_ = { "@GTPC_Types.XID_GTPC.xID_Data", NULL, &XID__GTPC_xID__Data_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING XID__GTPC_xID__Data_default_coding("RAW"); const TTCN_RAWdescriptor_t XID__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for XID__GTPC const TTCN_Typedescriptor_t XID__GTPC_descr_ = { "@GTPC_Types.XID_GTPC", NULL, &XID__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING XID__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING XID__Information__GTPC_0_default_coding("RAW"); UNIVERSAL_CHARSTRING XID__Information__GTPC_default_coding("RAW"); UNIVERSAL_CHARSTRING PS__HandoverXIDParameters_xID__Parameters_default_coding("RAW"); UNIVERSAL_CHARSTRING PS__HandoverXIDParameters_default_coding("RAW"); UNIVERSAL_CHARSTRING PS__HandoverXIDParameters__List_0_default_coding("RAW"); UNIVERSAL_CHARSTRING PS__HandoverXIDParameters__List_default_coding("RAW"); const XERdescriptor_t MS__InfoChangeReportingAction_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MS__InfoChangeReportingAction_type__gtpc_oer_ext_arr_[0] = {}; const int MS__InfoChangeReportingAction_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t MS__InfoChangeReportingAction_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MS__InfoChangeReportingAction_type__gtpc_oer_ext_arr_, 0, MS__InfoChangeReportingAction_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t MS__InfoChangeReportingAction_type__gtpc_descr_ = { "@GTPC_Types.MS_InfoChangeReportingAction.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MS__InfoChangeReportingAction_type__gtpc_xer_, &OCTETSTRING_json_, &MS__InfoChangeReportingAction_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MS__InfoChangeReportingAction_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t MS__InfoChangeReportingAction_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MS__InfoChangeReportingAction_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MS__InfoChangeReportingAction_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MS__InfoChangeReportingAction_lengthf_descr_ = { "@GTPC_Types.MS_InfoChangeReportingAction.lengthf", &INTEGER_ber_, &MS__InfoChangeReportingAction_lengthf_raw_, &INTEGER_text_, &MS__InfoChangeReportingAction_lengthf_xer_, &INTEGER_json_, &MS__InfoChangeReportingAction_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MS__InfoChangeReportingAction_lengthf_default_coding("RAW"); const XERdescriptor_t MS__InfoChangeReportingAction_actionfield_xer_ = { {"actionfield>\n", "actionfield>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MS__InfoChangeReportingAction_actionfield_oer_ext_arr_[0] = {}; const int MS__InfoChangeReportingAction_actionfield_oer_p_[0] = {}; const TTCN_OERdescriptor_t MS__InfoChangeReportingAction_actionfield_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MS__InfoChangeReportingAction_actionfield_oer_ext_arr_, 0, MS__InfoChangeReportingAction_actionfield_oer_p_}; const TTCN_Typedescriptor_t MS__InfoChangeReportingAction_actionfield_descr_ = { "@GTPC_Types.MS_InfoChangeReportingAction.actionfield", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MS__InfoChangeReportingAction_actionfield_xer_, &OCTETSTRING_json_, &MS__InfoChangeReportingAction_actionfield_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MS__InfoChangeReportingAction_actionfield_default_coding("RAW"); const TTCN_RAWdescriptor_t MS__InfoChangeReportingAction_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MS__InfoChangeReportingAction const TTCN_Typedescriptor_t MS__InfoChangeReportingAction_descr_ = { "@GTPC_Types.MS_InfoChangeReportingAction", NULL, &MS__InfoChangeReportingAction_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MS__InfoChangeReportingAction_default_coding("RAW"); const XERdescriptor_t DirectTunnelFlags_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int DirectTunnelFlags_type__gtpc_oer_ext_arr_[0] = {}; const int DirectTunnelFlags_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t DirectTunnelFlags_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, DirectTunnelFlags_type__gtpc_oer_ext_arr_, 0, DirectTunnelFlags_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t DirectTunnelFlags_type__gtpc_descr_ = { "@GTPC_Types.DirectTunnelFlags.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &DirectTunnelFlags_type__gtpc_xer_, &OCTETSTRING_json_, &DirectTunnelFlags_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING DirectTunnelFlags_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t DirectTunnelFlags_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t DirectTunnelFlags_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t DirectTunnelFlags_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t DirectTunnelFlags_lengthf_descr_ = { "@GTPC_Types.DirectTunnelFlags.lengthf", &INTEGER_ber_, &DirectTunnelFlags_lengthf_raw_, &INTEGER_text_, &DirectTunnelFlags_lengthf_xer_, &INTEGER_json_, &DirectTunnelFlags_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING DirectTunnelFlags_lengthf_default_coding("RAW"); const XERdescriptor_t DirectTunnelFlags_dTI_xer_ = { {"dTI>\n", "dTI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t DirectTunnelFlags_dTI_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t DirectTunnelFlags_dTI_descr_ = { "@GTPC_Types.DirectTunnelFlags.dTI", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &DirectTunnelFlags_dTI_xer_, &BITSTRING_json_, &DirectTunnelFlags_dTI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING DirectTunnelFlags_dTI_default_coding("RAW"); const XERdescriptor_t DirectTunnelFlags_gCSI_xer_ = { {"gCSI>\n", "gCSI>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t DirectTunnelFlags_gCSI_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t DirectTunnelFlags_gCSI_descr_ = { "@GTPC_Types.DirectTunnelFlags.gCSI", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &DirectTunnelFlags_gCSI_xer_, &BITSTRING_json_, &DirectTunnelFlags_gCSI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING DirectTunnelFlags_gCSI_default_coding("RAW"); const XERdescriptor_t DirectTunnelFlags_eI_xer_ = { {"eI>\n", "eI>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t DirectTunnelFlags_eI_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t DirectTunnelFlags_eI_descr_ = { "@GTPC_Types.DirectTunnelFlags.eI", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &DirectTunnelFlags_eI_xer_, &BITSTRING_json_, &DirectTunnelFlags_eI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING DirectTunnelFlags_eI_default_coding("RAW"); const XERdescriptor_t DirectTunnelFlags_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 DirectTunnelFlags_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t DirectTunnelFlags_spare_descr_ = { "@GTPC_Types.DirectTunnelFlags.spare", &BITSTRING_ber_, &General__Types::BIT5_raw_, NULL, &DirectTunnelFlags_spare_xer_, &BITSTRING_json_, &DirectTunnelFlags_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING DirectTunnelFlags_spare_default_coding("RAW"); const TTCN_RAWdescriptor_t DirectTunnelFlags_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for DirectTunnelFlags const TTCN_Typedescriptor_t DirectTunnelFlags_descr_ = { "@GTPC_Types.DirectTunnelFlags", NULL, &DirectTunnelFlags_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING DirectTunnelFlags_default_coding("RAW"); const XERdescriptor_t CorrelationID_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int CorrelationID_type__gtpc_oer_ext_arr_[0] = {}; const int CorrelationID_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t CorrelationID_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, CorrelationID_type__gtpc_oer_ext_arr_, 0, CorrelationID_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t CorrelationID_type__gtpc_descr_ = { "@GTPC_Types.CorrelationID.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &CorrelationID_type__gtpc_xer_, &OCTETSTRING_json_, &CorrelationID_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CorrelationID_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t CorrelationID_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t CorrelationID_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t CorrelationID_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t CorrelationID_lengthf_descr_ = { "@GTPC_Types.CorrelationID.lengthf", &INTEGER_ber_, &CorrelationID_lengthf_raw_, &INTEGER_text_, &CorrelationID_lengthf_xer_, &INTEGER_json_, &CorrelationID_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CorrelationID_lengthf_default_coding("RAW"); const XERdescriptor_t CorrelationID_correlationIDValue_xer_ = { {"correlationIDValue>\n", "correlationIDValue>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int CorrelationID_correlationIDValue_oer_ext_arr_[0] = {}; const int CorrelationID_correlationIDValue_oer_p_[0] = {}; const TTCN_OERdescriptor_t CorrelationID_correlationIDValue_oer_ = { -1, TRUE, 1, FALSE, 0, 0, CorrelationID_correlationIDValue_oer_ext_arr_, 0, CorrelationID_correlationIDValue_oer_p_}; const TTCN_Typedescriptor_t CorrelationID_correlationIDValue_descr_ = { "@GTPC_Types.CorrelationID.correlationIDValue", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &CorrelationID_correlationIDValue_xer_, &OCTETSTRING_json_, &CorrelationID_correlationIDValue_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CorrelationID_correlationIDValue_default_coding("RAW"); const TTCN_RAWdescriptor_t CorrelationID_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for CorrelationID const TTCN_Typedescriptor_t CorrelationID_descr_ = { "@GTPC_Types.CorrelationID", NULL, &CorrelationID_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CorrelationID_default_coding("RAW"); const XERdescriptor_t BearerControlMode_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int BearerControlMode_type__gtpc_oer_ext_arr_[0] = {}; const int BearerControlMode_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t BearerControlMode_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, BearerControlMode_type__gtpc_oer_ext_arr_, 0, BearerControlMode_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t BearerControlMode_type__gtpc_descr_ = { "@GTPC_Types.BearerControlMode.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &BearerControlMode_type__gtpc_xer_, &OCTETSTRING_json_, &BearerControlMode_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING BearerControlMode_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t BearerControlMode_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t BearerControlMode_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t BearerControlMode_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t BearerControlMode_lengthf_descr_ = { "@GTPC_Types.BearerControlMode.lengthf", &INTEGER_ber_, &BearerControlMode_lengthf_raw_, &INTEGER_text_, &BearerControlMode_lengthf_xer_, &INTEGER_json_, &BearerControlMode_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING BearerControlMode_lengthf_default_coding("RAW"); const XERdescriptor_t BearerControlMode_bearerControlModeValue_xer_ = { {"bearerControlModeValue>\n", "bearerControlModeValue>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int BearerControlMode_bearerControlModeValue_oer_ext_arr_[0] = {}; const int BearerControlMode_bearerControlModeValue_oer_p_[0] = {}; const TTCN_OERdescriptor_t BearerControlMode_bearerControlModeValue_oer_ = { -1, TRUE, 1, FALSE, 0, 0, BearerControlMode_bearerControlModeValue_oer_ext_arr_, 0, BearerControlMode_bearerControlModeValue_oer_p_}; const TTCN_Typedescriptor_t BearerControlMode_bearerControlModeValue_descr_ = { "@GTPC_Types.BearerControlMode.bearerControlModeValue", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &BearerControlMode_bearerControlModeValue_xer_, &OCTETSTRING_json_, &BearerControlMode_bearerControlModeValue_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING BearerControlMode_bearerControlModeValue_default_coding("RAW"); const TTCN_RAWdescriptor_t BearerControlMode_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for BearerControlMode const TTCN_Typedescriptor_t BearerControlMode_descr_ = { "@GTPC_Types.BearerControlMode", NULL, &BearerControlMode_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING BearerControlMode_default_coding("RAW"); const XERdescriptor_t MBMS__FlowID_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MBMS__FlowID_type__gtpc_oer_ext_arr_[0] = {}; const int MBMS__FlowID_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMS__FlowID_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MBMS__FlowID_type__gtpc_oer_ext_arr_, 0, MBMS__FlowID_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t MBMS__FlowID_type__gtpc_descr_ = { "@GTPC_Types.MBMS_FlowID.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MBMS__FlowID_type__gtpc_xer_, &OCTETSTRING_json_, &MBMS__FlowID_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__FlowID_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMS__FlowID_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MBMS__FlowID_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MBMS__FlowID_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MBMS__FlowID_lengthf_descr_ = { "@GTPC_Types.MBMS_FlowID.lengthf", &INTEGER_ber_, &MBMS__FlowID_lengthf_raw_, &INTEGER_text_, &MBMS__FlowID_lengthf_xer_, &INTEGER_json_, &MBMS__FlowID_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__FlowID_lengthf_default_coding("RAW"); const XERdescriptor_t MBMS__FlowID_mBMS__FlowIDValue_xer_ = { {"mBMS_FlowIDValue>\n", "mBMS_FlowIDValue>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MBMS__FlowID_mBMS__FlowIDValue_oer_ext_arr_[0] = {}; const int MBMS__FlowID_mBMS__FlowIDValue_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMS__FlowID_mBMS__FlowIDValue_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MBMS__FlowID_mBMS__FlowIDValue_oer_ext_arr_, 0, MBMS__FlowID_mBMS__FlowIDValue_oer_p_}; const TTCN_Typedescriptor_t MBMS__FlowID_mBMS__FlowIDValue_descr_ = { "@GTPC_Types.MBMS_FlowID.mBMS_FlowIDValue", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &MBMS__FlowID_mBMS__FlowIDValue_xer_, &OCTETSTRING_json_, &MBMS__FlowID_mBMS__FlowIDValue_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__FlowID_mBMS__FlowIDValue_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMS__FlowID_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MBMS__FlowID const TTCN_Typedescriptor_t MBMS__FlowID_descr_ = { "@GTPC_Types.MBMS_FlowID", NULL, &MBMS__FlowID_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__FlowID_default_coding("RAW"); const XERdescriptor_t MBMS__IPMulticastDistribution_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MBMS__IPMulticastDistribution_type__gtpc_oer_ext_arr_[0] = {}; const int MBMS__IPMulticastDistribution_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMS__IPMulticastDistribution_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MBMS__IPMulticastDistribution_type__gtpc_oer_ext_arr_, 0, MBMS__IPMulticastDistribution_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t MBMS__IPMulticastDistribution_type__gtpc_descr_ = { "@GTPC_Types.MBMS_IPMulticastDistribution.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MBMS__IPMulticastDistribution_type__gtpc_xer_, &OCTETSTRING_json_, &MBMS__IPMulticastDistribution_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__IPMulticastDistribution_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMS__IPMulticastDistribution_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MBMS__IPMulticastDistribution_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MBMS__IPMulticastDistribution_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MBMS__IPMulticastDistribution_lengthf_descr_ = { "@GTPC_Types.MBMS_IPMulticastDistribution.lengthf", &INTEGER_ber_, &MBMS__IPMulticastDistribution_lengthf_raw_, &INTEGER_text_, &MBMS__IPMulticastDistribution_lengthf_xer_, &INTEGER_json_, &MBMS__IPMulticastDistribution_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__IPMulticastDistribution_lengthf_default_coding("RAW"); const XERdescriptor_t MBMS__IPMulticastDistribution_commonTEID_xer_ = { {"commonTEID>\n", "commonTEID>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MBMS__IPMulticastDistribution_commonTEID_oer_ext_arr_[0] = {}; const int MBMS__IPMulticastDistribution_commonTEID_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMS__IPMulticastDistribution_commonTEID_oer_ = { -1, TRUE, 4, FALSE, 0, 0, MBMS__IPMulticastDistribution_commonTEID_oer_ext_arr_, 0, MBMS__IPMulticastDistribution_commonTEID_oer_p_}; const TTCN_Typedescriptor_t MBMS__IPMulticastDistribution_commonTEID_descr_ = { "@GTPC_Types.MBMS_IPMulticastDistribution.commonTEID", &OCTETSTRING_ber_, &General__Types::OCT4_raw_, &OCTETSTRING_text_, &MBMS__IPMulticastDistribution_commonTEID_xer_, &OCTETSTRING_json_, &MBMS__IPMulticastDistribution_commonTEID_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__IPMulticastDistribution_commonTEID_default_coding("RAW"); const TTCN_RAWdescriptor_t GSNAddress_lengthf_raw_ = {6,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t GSNAddress_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t GSNAddress_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t GSNAddress_lengthf_descr_ = { "@GTPC_Types.GSNAddress.lengthf", &INTEGER_ber_, &GSNAddress_lengthf_raw_, &INTEGER_text_, &GSNAddress_lengthf_xer_, &INTEGER_json_, &GSNAddress_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GSNAddress_lengthf_default_coding("RAW"); const XERdescriptor_t GSNAddress_address__type_xer_ = { {"address_type>\n", "address_type>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t GSNAddress_address__type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t GSNAddress_address__type_descr_ = { "@GTPC_Types.GSNAddress.address_type", &BITSTRING_ber_, &General__Types::BIT2_raw_, NULL, &GSNAddress_address__type_xer_, &BITSTRING_json_, &GSNAddress_address__type_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GSNAddress_address__type_default_coding("RAW"); UNIVERSAL_CHARSTRING GSNAddress_ipv__address_default_coding("RAW"); const TTCN_RAWdescriptor_t GSNAddress_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for GSNAddress const TTCN_Typedescriptor_t GSNAddress_descr_ = { "@GTPC_Types.GSNAddress", NULL, &GSNAddress_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GSNAddress_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMS__IPMulticastDistribution_iPmulticastDistributionAddress_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMS__IPMulticastDistribution_iPmulticastSourceAddress_default_coding("RAW"); const XERdescriptor_t MBMS__IPMulticastDistribution_mBMS__HCIndicator_xer_ = { {"mBMS_HCIndicator>\n", "mBMS_HCIndicator>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MBMS__IPMulticastDistribution_mBMS__HCIndicator_oer_ext_arr_[0] = {}; const int MBMS__IPMulticastDistribution_mBMS__HCIndicator_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMS__IPMulticastDistribution_mBMS__HCIndicator_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MBMS__IPMulticastDistribution_mBMS__HCIndicator_oer_ext_arr_, 0, MBMS__IPMulticastDistribution_mBMS__HCIndicator_oer_p_}; const TTCN_Typedescriptor_t MBMS__IPMulticastDistribution_mBMS__HCIndicator_descr_ = { "@GTPC_Types.MBMS_IPMulticastDistribution.mBMS_HCIndicator", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MBMS__IPMulticastDistribution_mBMS__HCIndicator_xer_, &OCTETSTRING_json_, &MBMS__IPMulticastDistribution_mBMS__HCIndicator_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__IPMulticastDistribution_mBMS__HCIndicator_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMS__IPMulticastDistribution_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MBMS__IPMulticastDistribution const TTCN_Typedescriptor_t MBMS__IPMulticastDistribution_descr_ = { "@GTPC_Types.MBMS_IPMulticastDistribution", NULL, &MBMS__IPMulticastDistribution_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__IPMulticastDistribution_default_coding("RAW"); const XERdescriptor_t MBMS__DistributionAcknowledgement_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MBMS__DistributionAcknowledgement_type__gtpc_oer_ext_arr_[0] = {}; const int MBMS__DistributionAcknowledgement_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMS__DistributionAcknowledgement_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MBMS__DistributionAcknowledgement_type__gtpc_oer_ext_arr_, 0, MBMS__DistributionAcknowledgement_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t MBMS__DistributionAcknowledgement_type__gtpc_descr_ = { "@GTPC_Types.MBMS_DistributionAcknowledgement.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MBMS__DistributionAcknowledgement_type__gtpc_xer_, &OCTETSTRING_json_, &MBMS__DistributionAcknowledgement_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__DistributionAcknowledgement_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMS__DistributionAcknowledgement_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MBMS__DistributionAcknowledgement_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MBMS__DistributionAcknowledgement_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MBMS__DistributionAcknowledgement_lengthf_descr_ = { "@GTPC_Types.MBMS_DistributionAcknowledgement.lengthf", &INTEGER_ber_, &MBMS__DistributionAcknowledgement_lengthf_raw_, &INTEGER_text_, &MBMS__DistributionAcknowledgement_lengthf_xer_, &INTEGER_json_, &MBMS__DistributionAcknowledgement_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__DistributionAcknowledgement_lengthf_default_coding("RAW"); const XERdescriptor_t MBMS__DistributionAcknowledgement_distributionIndication_xer_ = { {"distributionIndication>\n", "distributionIndication>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t MBMS__DistributionAcknowledgement_distributionIndication_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MBMS__DistributionAcknowledgement_distributionIndication_descr_ = { "@GTPC_Types.MBMS_DistributionAcknowledgement.distributionIndication", &BITSTRING_ber_, &General__Types::BIT2_raw_, NULL, &MBMS__DistributionAcknowledgement_distributionIndication_xer_, &BITSTRING_json_, &MBMS__DistributionAcknowledgement_distributionIndication_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__DistributionAcknowledgement_distributionIndication_default_coding("RAW"); const XERdescriptor_t MBMS__DistributionAcknowledgement_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 MBMS__DistributionAcknowledgement_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MBMS__DistributionAcknowledgement_spare_descr_ = { "@GTPC_Types.MBMS_DistributionAcknowledgement.spare", &BITSTRING_ber_, &General__Types::BIT6_raw_, NULL, &MBMS__DistributionAcknowledgement_spare_xer_, &BITSTRING_json_, &MBMS__DistributionAcknowledgement_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__DistributionAcknowledgement_spare_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMS__DistributionAcknowledgement_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MBMS__DistributionAcknowledgement const TTCN_Typedescriptor_t MBMS__DistributionAcknowledgement_descr_ = { "@GTPC_Types.MBMS_DistributionAcknowledgement", NULL, &MBMS__DistributionAcknowledgement_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__DistributionAcknowledgement_default_coding("RAW"); const XERdescriptor_t ReliableInterRATHandoverInfo_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int ReliableInterRATHandoverInfo_type__gtpc_oer_ext_arr_[0] = {}; const int ReliableInterRATHandoverInfo_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t ReliableInterRATHandoverInfo_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ReliableInterRATHandoverInfo_type__gtpc_oer_ext_arr_, 0, ReliableInterRATHandoverInfo_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t ReliableInterRATHandoverInfo_type__gtpc_descr_ = { "@GTPC_Types.ReliableInterRATHandoverInfo.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &ReliableInterRATHandoverInfo_type__gtpc_xer_, &OCTETSTRING_json_, &ReliableInterRATHandoverInfo_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ReliableInterRATHandoverInfo_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t ReliableInterRATHandoverInfo_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t ReliableInterRATHandoverInfo_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t ReliableInterRATHandoverInfo_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t ReliableInterRATHandoverInfo_lengthf_descr_ = { "@GTPC_Types.ReliableInterRATHandoverInfo.lengthf", &INTEGER_ber_, &ReliableInterRATHandoverInfo_lengthf_raw_, &INTEGER_text_, &ReliableInterRATHandoverInfo_lengthf_xer_, &INTEGER_json_, &ReliableInterRATHandoverInfo_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ReliableInterRATHandoverInfo_lengthf_default_coding("RAW"); const XERdescriptor_t ReliableInterRATHandoverInfo_reliableInterRATHandoverInfoIndicator_xer_ = { {"reliableInterRATHandoverInfoIndicator>\n", "reliableInterRATHandoverInfoIndicator>\n"}, {39, 39}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t ReliableInterRATHandoverInfo_reliableInterRATHandoverInfoIndicator_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t ReliableInterRATHandoverInfo_reliableInterRATHandoverInfoIndicator_descr_ = { "@GTPC_Types.ReliableInterRATHandoverInfo.reliableInterRATHandoverInfoIndicator", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &ReliableInterRATHandoverInfo_reliableInterRATHandoverInfoIndicator_xer_, &BITSTRING_json_, &ReliableInterRATHandoverInfo_reliableInterRATHandoverInfoIndicator_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ReliableInterRATHandoverInfo_reliableInterRATHandoverInfoIndicator_default_coding("RAW"); const XERdescriptor_t ReliableInterRATHandoverInfo_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 ReliableInterRATHandoverInfo_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t ReliableInterRATHandoverInfo_spare_descr_ = { "@GTPC_Types.ReliableInterRATHandoverInfo.spare", &BITSTRING_ber_, &General__Types::BIT7_raw_, NULL, &ReliableInterRATHandoverInfo_spare_xer_, &BITSTRING_json_, &ReliableInterRATHandoverInfo_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ReliableInterRATHandoverInfo_spare_default_coding("RAW"); const TTCN_RAWdescriptor_t ReliableInterRATHandoverInfo_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for ReliableInterRATHandoverInfo const TTCN_Typedescriptor_t ReliableInterRATHandoverInfo_descr_ = { "@GTPC_Types.ReliableInterRATHandoverInfo", NULL, &ReliableInterRATHandoverInfo_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ReliableInterRATHandoverInfo_default_coding("RAW"); const XERdescriptor_t RFSP__Index_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int RFSP__Index_type__gtpc_oer_ext_arr_[0] = {}; const int RFSP__Index_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t RFSP__Index_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RFSP__Index_type__gtpc_oer_ext_arr_, 0, RFSP__Index_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t RFSP__Index_type__gtpc_descr_ = { "@GTPC_Types.RFSP_Index.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RFSP__Index_type__gtpc_xer_, &OCTETSTRING_json_, &RFSP__Index_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RFSP__Index_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t RFSP__Index_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t RFSP__Index_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RFSP__Index_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RFSP__Index_lengthf_descr_ = { "@GTPC_Types.RFSP_Index.lengthf", &INTEGER_ber_, &RFSP__Index_lengthf_raw_, &INTEGER_text_, &RFSP__Index_lengthf_xer_, &INTEGER_json_, &RFSP__Index_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RFSP__Index_lengthf_default_coding("RAW"); const XERdescriptor_t RFSP__Index_rFSPIndexValue_xer_ = { {"rFSPIndexValue>\n", "rFSPIndexValue>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t RFSP__Index_rFSPIndexValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t RFSP__Index_rFSPIndexValue_descr_ = { "@GTPC_Types.RFSP_Index.rFSPIndexValue", &INTEGER_ber_, &General__Types::LIN2__BO__LAST_raw_, &INTEGER_text_, &RFSP__Index_rFSPIndexValue_xer_, &INTEGER_json_, &RFSP__Index_rFSPIndexValue_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RFSP__Index_rFSPIndexValue_default_coding("RAW"); const TTCN_RAWdescriptor_t RFSP__Index_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RFSP__Index const TTCN_Typedescriptor_t RFSP__Index_descr_ = { "@GTPC_Types.RFSP_Index", NULL, &RFSP__Index_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RFSP__Index_default_coding("RAW"); const TTCN_RAWdescriptor_t FullyQualifiedDomainName__List_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for FullyQualifiedDomainName__List const TTCN_Typedescriptor_t FullyQualifiedDomainName__List_descr_ = { "@GTPC_Types.FullyQualifiedDomainName_List", NULL, &FullyQualifiedDomainName__List_raw_, NULL, NULL, NULL, NULL, NULL, &FullyQualifiedDomainName_descr_, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t FullyQualifiedDomainName_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int FullyQualifiedDomainName_type__gtpc_oer_ext_arr_[0] = {}; const int FullyQualifiedDomainName_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t FullyQualifiedDomainName_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, FullyQualifiedDomainName_type__gtpc_oer_ext_arr_, 0, FullyQualifiedDomainName_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t FullyQualifiedDomainName_type__gtpc_descr_ = { "@GTPC_Types.FullyQualifiedDomainName.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &FullyQualifiedDomainName_type__gtpc_xer_, &OCTETSTRING_json_, &FullyQualifiedDomainName_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING FullyQualifiedDomainName_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t FullyQualifiedDomainName_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t FullyQualifiedDomainName_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t FullyQualifiedDomainName_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t FullyQualifiedDomainName_lengthf_descr_ = { "@GTPC_Types.FullyQualifiedDomainName.lengthf", &INTEGER_ber_, &FullyQualifiedDomainName_lengthf_raw_, &INTEGER_text_, &FullyQualifiedDomainName_lengthf_xer_, &INTEGER_json_, &FullyQualifiedDomainName_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING FullyQualifiedDomainName_lengthf_default_coding("RAW"); const XERdescriptor_t FullyQualifiedDomainName_fQDN__Value_xer_ = { {"fQDN_Value>\n", "fQDN_Value>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int FullyQualifiedDomainName_fQDN__Value_oer_ext_arr_[0] = {}; const int FullyQualifiedDomainName_fQDN__Value_oer_p_[0] = {}; const TTCN_OERdescriptor_t FullyQualifiedDomainName_fQDN__Value_oer_ = { -1, TRUE, -1, FALSE, 0, 0, FullyQualifiedDomainName_fQDN__Value_oer_ext_arr_, 0, FullyQualifiedDomainName_fQDN__Value_oer_p_}; const TTCN_Typedescriptor_t FullyQualifiedDomainName_fQDN__Value_descr_ = { "@GTPC_Types.FullyQualifiedDomainName.fQDN_Value", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &FullyQualifiedDomainName_fQDN__Value_xer_, &OCTETSTRING_json_, &FullyQualifiedDomainName_fQDN__Value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING FullyQualifiedDomainName_fQDN__Value_default_coding("RAW"); const TTCN_RAWdescriptor_t FullyQualifiedDomainName_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for FullyQualifiedDomainName const TTCN_Typedescriptor_t FullyQualifiedDomainName_descr_ = { "@GTPC_Types.FullyQualifiedDomainName", NULL, &FullyQualifiedDomainName_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING FullyQualifiedDomainName_default_coding("RAW"); UNIVERSAL_CHARSTRING FullyQualifiedDomainName__List_0_default_coding("RAW"); UNIVERSAL_CHARSTRING FullyQualifiedDomainName__List_default_coding("RAW"); const XERdescriptor_t EvolvedAllocationRetentionPriorityI_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int EvolvedAllocationRetentionPriorityI_type__gtpc_oer_ext_arr_[0] = {}; const int EvolvedAllocationRetentionPriorityI_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t EvolvedAllocationRetentionPriorityI_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, EvolvedAllocationRetentionPriorityI_type__gtpc_oer_ext_arr_, 0, EvolvedAllocationRetentionPriorityI_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t EvolvedAllocationRetentionPriorityI_type__gtpc_descr_ = { "@GTPC_Types.EvolvedAllocationRetentionPriorityI.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &EvolvedAllocationRetentionPriorityI_type__gtpc_xer_, &OCTETSTRING_json_, &EvolvedAllocationRetentionPriorityI_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EvolvedAllocationRetentionPriorityI_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t EvolvedAllocationRetentionPriorityI_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t EvolvedAllocationRetentionPriorityI_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t EvolvedAllocationRetentionPriorityI_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t EvolvedAllocationRetentionPriorityI_lengthf_descr_ = { "@GTPC_Types.EvolvedAllocationRetentionPriorityI.lengthf", &INTEGER_ber_, &EvolvedAllocationRetentionPriorityI_lengthf_raw_, &INTEGER_text_, &EvolvedAllocationRetentionPriorityI_lengthf_xer_, &INTEGER_json_, &EvolvedAllocationRetentionPriorityI_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EvolvedAllocationRetentionPriorityI_lengthf_default_coding("RAW"); const XERdescriptor_t EvolvedAllocationRetentionPriorityI_pVI_xer_ = { {"pVI>\n", "pVI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t EvolvedAllocationRetentionPriorityI_pVI_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t EvolvedAllocationRetentionPriorityI_pVI_descr_ = { "@GTPC_Types.EvolvedAllocationRetentionPriorityI.pVI", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &EvolvedAllocationRetentionPriorityI_pVI_xer_, &BITSTRING_json_, &EvolvedAllocationRetentionPriorityI_pVI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EvolvedAllocationRetentionPriorityI_pVI_default_coding("RAW"); const XERdescriptor_t EvolvedAllocationRetentionPriorityI_spare1_xer_ = { {"spare1>\n", "spare1>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t EvolvedAllocationRetentionPriorityI_spare1_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t EvolvedAllocationRetentionPriorityI_spare1_descr_ = { "@GTPC_Types.EvolvedAllocationRetentionPriorityI.spare1", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &EvolvedAllocationRetentionPriorityI_spare1_xer_, &BITSTRING_json_, &EvolvedAllocationRetentionPriorityI_spare1_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EvolvedAllocationRetentionPriorityI_spare1_default_coding("RAW"); const TTCN_RAWdescriptor_t EvolvedAllocationRetentionPriorityI_pL_raw_ = {4,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t EvolvedAllocationRetentionPriorityI_pL_xer_ = { {"pL>\n", "pL>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t EvolvedAllocationRetentionPriorityI_pL_descr_ = { "@GTPC_Types.EvolvedAllocationRetentionPriorityI.pL", &INTEGER_ber_, &EvolvedAllocationRetentionPriorityI_pL_raw_, &INTEGER_text_, &EvolvedAllocationRetentionPriorityI_pL_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EvolvedAllocationRetentionPriorityI_pL_default_coding("RAW"); const XERdescriptor_t EvolvedAllocationRetentionPriorityI_pCI_xer_ = { {"pCI>\n", "pCI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t EvolvedAllocationRetentionPriorityI_pCI_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t EvolvedAllocationRetentionPriorityI_pCI_descr_ = { "@GTPC_Types.EvolvedAllocationRetentionPriorityI.pCI", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &EvolvedAllocationRetentionPriorityI_pCI_xer_, &BITSTRING_json_, &EvolvedAllocationRetentionPriorityI_pCI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EvolvedAllocationRetentionPriorityI_pCI_default_coding("RAW"); const XERdescriptor_t EvolvedAllocationRetentionPriorityI_spare2_xer_ = { {"spare2>\n", "spare2>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t EvolvedAllocationRetentionPriorityI_spare2_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t EvolvedAllocationRetentionPriorityI_spare2_descr_ = { "@GTPC_Types.EvolvedAllocationRetentionPriorityI.spare2", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &EvolvedAllocationRetentionPriorityI_spare2_xer_, &BITSTRING_json_, &EvolvedAllocationRetentionPriorityI_spare2_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EvolvedAllocationRetentionPriorityI_spare2_default_coding("RAW"); const TTCN_RAWdescriptor_t EvolvedAllocationRetentionPriorityI_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for EvolvedAllocationRetentionPriorityI const TTCN_Typedescriptor_t EvolvedAllocationRetentionPriorityI_descr_ = { "@GTPC_Types.EvolvedAllocationRetentionPriorityI", NULL, &EvolvedAllocationRetentionPriorityI_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EvolvedAllocationRetentionPriorityI_default_coding("RAW"); const TTCN_RAWdescriptor_t EvolvedAllocationRetentionPriorityII__List_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for EvolvedAllocationRetentionPriorityII__List const TTCN_Typedescriptor_t EvolvedAllocationRetentionPriorityII__List_descr_ = { "@GTPC_Types.EvolvedAllocationRetentionPriorityII_List", NULL, &EvolvedAllocationRetentionPriorityII__List_raw_, NULL, NULL, NULL, NULL, NULL, &EvolvedAllocationRetentionPriorityII_descr_, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t EvolvedAllocationRetentionPriorityII_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int EvolvedAllocationRetentionPriorityII_type__gtpc_oer_ext_arr_[0] = {}; const int EvolvedAllocationRetentionPriorityII_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t EvolvedAllocationRetentionPriorityII_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, EvolvedAllocationRetentionPriorityII_type__gtpc_oer_ext_arr_, 0, EvolvedAllocationRetentionPriorityII_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t EvolvedAllocationRetentionPriorityII_type__gtpc_descr_ = { "@GTPC_Types.EvolvedAllocationRetentionPriorityII.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &EvolvedAllocationRetentionPriorityII_type__gtpc_xer_, &OCTETSTRING_json_, &EvolvedAllocationRetentionPriorityII_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EvolvedAllocationRetentionPriorityII_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t EvolvedAllocationRetentionPriorityII_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t EvolvedAllocationRetentionPriorityII_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t EvolvedAllocationRetentionPriorityII_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t EvolvedAllocationRetentionPriorityII_lengthf_descr_ = { "@GTPC_Types.EvolvedAllocationRetentionPriorityII.lengthf", &INTEGER_ber_, &EvolvedAllocationRetentionPriorityII_lengthf_raw_, &INTEGER_text_, &EvolvedAllocationRetentionPriorityII_lengthf_xer_, &INTEGER_json_, &EvolvedAllocationRetentionPriorityII_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EvolvedAllocationRetentionPriorityII_lengthf_default_coding("RAW"); const XERdescriptor_t EvolvedAllocationRetentionPriorityII_nsapi_xer_ = { {"nsapi>\n", "nsapi>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t EvolvedAllocationRetentionPriorityII_nsapi_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t EvolvedAllocationRetentionPriorityII_nsapi_descr_ = { "@GTPC_Types.EvolvedAllocationRetentionPriorityII.nsapi", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &EvolvedAllocationRetentionPriorityII_nsapi_xer_, &BITSTRING_json_, &EvolvedAllocationRetentionPriorityII_nsapi_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EvolvedAllocationRetentionPriorityII_nsapi_default_coding("RAW"); const XERdescriptor_t EvolvedAllocationRetentionPriorityII_unused_xer_ = { {"unused>\n", "unused>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t EvolvedAllocationRetentionPriorityII_unused_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t EvolvedAllocationRetentionPriorityII_unused_descr_ = { "@GTPC_Types.EvolvedAllocationRetentionPriorityII.unused", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &EvolvedAllocationRetentionPriorityII_unused_xer_, &BITSTRING_json_, &EvolvedAllocationRetentionPriorityII_unused_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EvolvedAllocationRetentionPriorityII_unused_default_coding("RAW"); const XERdescriptor_t EvolvedAllocationRetentionPriorityII_pVI_xer_ = { {"pVI>\n", "pVI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t EvolvedAllocationRetentionPriorityII_pVI_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t EvolvedAllocationRetentionPriorityII_pVI_descr_ = { "@GTPC_Types.EvolvedAllocationRetentionPriorityII.pVI", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &EvolvedAllocationRetentionPriorityII_pVI_xer_, &BITSTRING_json_, &EvolvedAllocationRetentionPriorityII_pVI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EvolvedAllocationRetentionPriorityII_pVI_default_coding("RAW"); const XERdescriptor_t EvolvedAllocationRetentionPriorityII_spare1_xer_ = { {"spare1>\n", "spare1>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t EvolvedAllocationRetentionPriorityII_spare1_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t EvolvedAllocationRetentionPriorityII_spare1_descr_ = { "@GTPC_Types.EvolvedAllocationRetentionPriorityII.spare1", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &EvolvedAllocationRetentionPriorityII_spare1_xer_, &BITSTRING_json_, &EvolvedAllocationRetentionPriorityII_spare1_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EvolvedAllocationRetentionPriorityII_spare1_default_coding("RAW"); const TTCN_RAWdescriptor_t EvolvedAllocationRetentionPriorityII_pL_raw_ = {4,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t EvolvedAllocationRetentionPriorityII_pL_xer_ = { {"pL>\n", "pL>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t EvolvedAllocationRetentionPriorityII_pL_descr_ = { "@GTPC_Types.EvolvedAllocationRetentionPriorityII.pL", &INTEGER_ber_, &EvolvedAllocationRetentionPriorityII_pL_raw_, &INTEGER_text_, &EvolvedAllocationRetentionPriorityII_pL_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EvolvedAllocationRetentionPriorityII_pL_default_coding("RAW"); const XERdescriptor_t EvolvedAllocationRetentionPriorityII_pCI_xer_ = { {"pCI>\n", "pCI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t EvolvedAllocationRetentionPriorityII_pCI_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t EvolvedAllocationRetentionPriorityII_pCI_descr_ = { "@GTPC_Types.EvolvedAllocationRetentionPriorityII.pCI", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &EvolvedAllocationRetentionPriorityII_pCI_xer_, &BITSTRING_json_, &EvolvedAllocationRetentionPriorityII_pCI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EvolvedAllocationRetentionPriorityII_pCI_default_coding("RAW"); const XERdescriptor_t EvolvedAllocationRetentionPriorityII_spare2_xer_ = { {"spare2>\n", "spare2>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t EvolvedAllocationRetentionPriorityII_spare2_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t EvolvedAllocationRetentionPriorityII_spare2_descr_ = { "@GTPC_Types.EvolvedAllocationRetentionPriorityII.spare2", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &EvolvedAllocationRetentionPriorityII_spare2_xer_, &BITSTRING_json_, &EvolvedAllocationRetentionPriorityII_spare2_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EvolvedAllocationRetentionPriorityII_spare2_default_coding("RAW"); const TTCN_RAWdescriptor_t EvolvedAllocationRetentionPriorityII_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for EvolvedAllocationRetentionPriorityII const TTCN_Typedescriptor_t EvolvedAllocationRetentionPriorityII_descr_ = { "@GTPC_Types.EvolvedAllocationRetentionPriorityII", NULL, &EvolvedAllocationRetentionPriorityII_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EvolvedAllocationRetentionPriorityII_default_coding("RAW"); UNIVERSAL_CHARSTRING EvolvedAllocationRetentionPriorityII__List_0_default_coding("RAW"); UNIVERSAL_CHARSTRING EvolvedAllocationRetentionPriorityII__List_default_coding("RAW"); const XERdescriptor_t ExtendedCommonFlags_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int ExtendedCommonFlags_type__gtpc_oer_ext_arr_[0] = {}; const int ExtendedCommonFlags_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t ExtendedCommonFlags_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExtendedCommonFlags_type__gtpc_oer_ext_arr_, 0, ExtendedCommonFlags_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t ExtendedCommonFlags_type__gtpc_descr_ = { "@GTPC_Types.ExtendedCommonFlags.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &ExtendedCommonFlags_type__gtpc_xer_, &OCTETSTRING_json_, &ExtendedCommonFlags_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ExtendedCommonFlags_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t ExtendedCommonFlags_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t ExtendedCommonFlags_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t ExtendedCommonFlags_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t ExtendedCommonFlags_lengthf_descr_ = { "@GTPC_Types.ExtendedCommonFlags.lengthf", &INTEGER_ber_, &ExtendedCommonFlags_lengthf_raw_, &INTEGER_text_, &ExtendedCommonFlags_lengthf_xer_, &INTEGER_json_, &ExtendedCommonFlags_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ExtendedCommonFlags_lengthf_default_coding("RAW"); const XERdescriptor_t ExtendedCommonFlags_unauthenticatedIMSI_xer_ = { {"unauthenticatedIMSI>\n", "unauthenticatedIMSI>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t ExtendedCommonFlags_unauthenticatedIMSI_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t ExtendedCommonFlags_unauthenticatedIMSI_descr_ = { "@GTPC_Types.ExtendedCommonFlags.unauthenticatedIMSI", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &ExtendedCommonFlags_unauthenticatedIMSI_xer_, &BITSTRING_json_, &ExtendedCommonFlags_unauthenticatedIMSI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ExtendedCommonFlags_unauthenticatedIMSI_default_coding("RAW"); const XERdescriptor_t ExtendedCommonFlags_cCRSI_xer_ = { {"cCRSI>\n", "cCRSI>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t ExtendedCommonFlags_cCRSI_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t ExtendedCommonFlags_cCRSI_descr_ = { "@GTPC_Types.ExtendedCommonFlags.cCRSI", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &ExtendedCommonFlags_cCRSI_xer_, &BITSTRING_json_, &ExtendedCommonFlags_cCRSI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ExtendedCommonFlags_cCRSI_default_coding("RAW"); const XERdescriptor_t ExtendedCommonFlags_cPSR_xer_ = { {"cPSR>\n", "cPSR>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t ExtendedCommonFlags_cPSR_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t ExtendedCommonFlags_cPSR_descr_ = { "@GTPC_Types.ExtendedCommonFlags.cPSR", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &ExtendedCommonFlags_cPSR_xer_, &BITSTRING_json_, &ExtendedCommonFlags_cPSR_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ExtendedCommonFlags_cPSR_default_coding("RAW"); const XERdescriptor_t ExtendedCommonFlags_retLoc_xer_ = { {"retLoc>\n", "retLoc>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t ExtendedCommonFlags_retLoc_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t ExtendedCommonFlags_retLoc_descr_ = { "@GTPC_Types.ExtendedCommonFlags.retLoc", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &ExtendedCommonFlags_retLoc_xer_, &BITSTRING_json_, &ExtendedCommonFlags_retLoc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ExtendedCommonFlags_retLoc_default_coding("RAW"); const XERdescriptor_t ExtendedCommonFlags_vB_xer_ = { {"vB>\n", "vB>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t ExtendedCommonFlags_vB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t ExtendedCommonFlags_vB_descr_ = { "@GTPC_Types.ExtendedCommonFlags.vB", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &ExtendedCommonFlags_vB_xer_, &BITSTRING_json_, &ExtendedCommonFlags_vB_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ExtendedCommonFlags_vB_default_coding("RAW"); const XERdescriptor_t ExtendedCommonFlags_pCRI_xer_ = { {"pCRI>\n", "pCRI>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t ExtendedCommonFlags_pCRI_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t ExtendedCommonFlags_pCRI_descr_ = { "@GTPC_Types.ExtendedCommonFlags.pCRI", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &ExtendedCommonFlags_pCRI_xer_, &BITSTRING_json_, &ExtendedCommonFlags_pCRI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ExtendedCommonFlags_pCRI_default_coding("RAW"); const XERdescriptor_t ExtendedCommonFlags_bDWI_xer_ = { {"bDWI>\n", "bDWI>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t ExtendedCommonFlags_bDWI_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t ExtendedCommonFlags_bDWI_descr_ = { "@GTPC_Types.ExtendedCommonFlags.bDWI", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &ExtendedCommonFlags_bDWI_xer_, &BITSTRING_json_, &ExtendedCommonFlags_bDWI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ExtendedCommonFlags_bDWI_default_coding("RAW"); const XERdescriptor_t ExtendedCommonFlags_uASI_xer_ = { {"uASI>\n", "uASI>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t ExtendedCommonFlags_uASI_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t ExtendedCommonFlags_uASI_descr_ = { "@GTPC_Types.ExtendedCommonFlags.uASI", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &ExtendedCommonFlags_uASI_xer_, &BITSTRING_json_, &ExtendedCommonFlags_uASI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ExtendedCommonFlags_uASI_default_coding("RAW"); const TTCN_RAWdescriptor_t ExtendedCommonFlags_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for ExtendedCommonFlags const TTCN_Typedescriptor_t ExtendedCommonFlags_descr_ = { "@GTPC_Types.ExtendedCommonFlags", NULL, &ExtendedCommonFlags_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ExtendedCommonFlags_default_coding("RAW"); const XERdescriptor_t UserCSGInformation_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int UserCSGInformation_type__gtpc_oer_ext_arr_[0] = {}; const int UserCSGInformation_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t UserCSGInformation_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, UserCSGInformation_type__gtpc_oer_ext_arr_, 0, UserCSGInformation_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t UserCSGInformation_type__gtpc_descr_ = { "@GTPC_Types.UserCSGInformation.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &UserCSGInformation_type__gtpc_xer_, &OCTETSTRING_json_, &UserCSGInformation_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UserCSGInformation_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t UserCSGInformation_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t UserCSGInformation_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t UserCSGInformation_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t UserCSGInformation_lengthf_descr_ = { "@GTPC_Types.UserCSGInformation.lengthf", &INTEGER_ber_, &UserCSGInformation_lengthf_raw_, &INTEGER_text_, &UserCSGInformation_lengthf_xer_, &INTEGER_json_, &UserCSGInformation_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UserCSGInformation_lengthf_default_coding("RAW"); const XERdescriptor_t UserCSGInformation_mccDigit1_xer_ = { {"mccDigit1>\n", "mccDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t UserCSGInformation_mccDigit1_descr_ = { "@GTPC_Types.UserCSGInformation.mccDigit1", NULL, &General__Types::HEX1_raw_, NULL, &UserCSGInformation_mccDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UserCSGInformation_mccDigit1_default_coding("RAW"); const XERdescriptor_t UserCSGInformation_mccDigit2_xer_ = { {"mccDigit2>\n", "mccDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t UserCSGInformation_mccDigit2_descr_ = { "@GTPC_Types.UserCSGInformation.mccDigit2", NULL, &General__Types::HEX1_raw_, NULL, &UserCSGInformation_mccDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UserCSGInformation_mccDigit2_default_coding("RAW"); const XERdescriptor_t UserCSGInformation_mccDigit3_xer_ = { {"mccDigit3>\n", "mccDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t UserCSGInformation_mccDigit3_descr_ = { "@GTPC_Types.UserCSGInformation.mccDigit3", NULL, &General__Types::HEX1_raw_, NULL, &UserCSGInformation_mccDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UserCSGInformation_mccDigit3_default_coding("RAW"); const XERdescriptor_t UserCSGInformation_mncDigit3_xer_ = { {"mncDigit3>\n", "mncDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t UserCSGInformation_mncDigit3_descr_ = { "@GTPC_Types.UserCSGInformation.mncDigit3", NULL, &General__Types::HEX1_raw_, NULL, &UserCSGInformation_mncDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UserCSGInformation_mncDigit3_default_coding("RAW"); const XERdescriptor_t UserCSGInformation_mncDigit1_xer_ = { {"mncDigit1>\n", "mncDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t UserCSGInformation_mncDigit1_descr_ = { "@GTPC_Types.UserCSGInformation.mncDigit1", NULL, &General__Types::HEX1_raw_, NULL, &UserCSGInformation_mncDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UserCSGInformation_mncDigit1_default_coding("RAW"); const XERdescriptor_t UserCSGInformation_mncDigit2_xer_ = { {"mncDigit2>\n", "mncDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t UserCSGInformation_mncDigit2_descr_ = { "@GTPC_Types.UserCSGInformation.mncDigit2", NULL, &General__Types::HEX1_raw_, NULL, &UserCSGInformation_mncDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UserCSGInformation_mncDigit2_default_coding("RAW"); const TTCN_RAWdescriptor_t UserCSGInformation_spare1_raw_ = {5,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,5,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t UserCSGInformation_spare1_xer_ = { {"spare1>\n", "spare1>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t UserCSGInformation_spare1_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t UserCSGInformation_spare1_descr_ = { "@GTPC_Types.UserCSGInformation.spare1", &BITSTRING_ber_, &UserCSGInformation_spare1_raw_, NULL, &UserCSGInformation_spare1_xer_, &BITSTRING_json_, &UserCSGInformation_spare1_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UserCSGInformation_spare1_default_coding("RAW"); const TTCN_RAWdescriptor_t UserCSGInformation_cSG__ID_raw_ = {27,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,27,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t UserCSGInformation_cSG__ID_xer_ = { {"cSG_ID>\n", "cSG_ID>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t UserCSGInformation_cSG__ID_descr_ = { "@GTPC_Types.UserCSGInformation.cSG_ID", &BITSTRING_ber_, &UserCSGInformation_cSG__ID_raw_, NULL, &UserCSGInformation_cSG__ID_xer_, &BITSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UserCSGInformation_cSG__ID_default_coding("RAW"); const XERdescriptor_t UserCSGInformation_cMI_xer_ = { {"cMI>\n", "cMI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t UserCSGInformation_cMI_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t UserCSGInformation_cMI_descr_ = { "@GTPC_Types.UserCSGInformation.cMI", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &UserCSGInformation_cMI_xer_, &BITSTRING_json_, &UserCSGInformation_cMI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UserCSGInformation_cMI_default_coding("RAW"); const XERdescriptor_t UserCSGInformation_spare2_xer_ = { {"spare2>\n", "spare2>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t UserCSGInformation_spare2_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t UserCSGInformation_spare2_descr_ = { "@GTPC_Types.UserCSGInformation.spare2", &BITSTRING_ber_, &General__Types::BIT5_raw_, NULL, &UserCSGInformation_spare2_xer_, &BITSTRING_json_, &UserCSGInformation_spare2_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UserCSGInformation_spare2_default_coding("RAW"); const TTCN_RAWdescriptor_t UserCSGInformation_accessMode_raw_ = {2,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t UserCSGInformation_accessMode_xer_ = { {"accessMode>\n", "accessMode>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t UserCSGInformation_accessMode_descr_ = { "@GTPC_Types.UserCSGInformation.accessMode", &INTEGER_ber_, &UserCSGInformation_accessMode_raw_, &INTEGER_text_, &UserCSGInformation_accessMode_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UserCSGInformation_accessMode_default_coding("RAW"); const TTCN_RAWdescriptor_t UserCSGInformation_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for UserCSGInformation const TTCN_Typedescriptor_t UserCSGInformation_descr_ = { "@GTPC_Types.UserCSGInformation", NULL, &UserCSGInformation_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UserCSGInformation_default_coding("RAW"); const XERdescriptor_t CSGInfoReportingAction_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int CSGInfoReportingAction_type__gtpc_oer_ext_arr_[0] = {}; const int CSGInfoReportingAction_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t CSGInfoReportingAction_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, CSGInfoReportingAction_type__gtpc_oer_ext_arr_, 0, CSGInfoReportingAction_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t CSGInfoReportingAction_type__gtpc_descr_ = { "@GTPC_Types.CSGInfoReportingAction.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &CSGInfoReportingAction_type__gtpc_xer_, &OCTETSTRING_json_, &CSGInfoReportingAction_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CSGInfoReportingAction_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t CSGInfoReportingAction_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t CSGInfoReportingAction_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t CSGInfoReportingAction_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t CSGInfoReportingAction_lengthf_descr_ = { "@GTPC_Types.CSGInfoReportingAction.lengthf", &INTEGER_ber_, &CSGInfoReportingAction_lengthf_raw_, &INTEGER_text_, &CSGInfoReportingAction_lengthf_xer_, &INTEGER_json_, &CSGInfoReportingAction_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CSGInfoReportingAction_lengthf_default_coding("RAW"); const XERdescriptor_t CSGInfoReportingAction_uCCSG_xer_ = { {"uCCSG>\n", "uCCSG>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t CSGInfoReportingAction_uCCSG_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t CSGInfoReportingAction_uCCSG_descr_ = { "@GTPC_Types.CSGInfoReportingAction.uCCSG", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &CSGInfoReportingAction_uCCSG_xer_, &BITSTRING_json_, &CSGInfoReportingAction_uCCSG_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CSGInfoReportingAction_uCCSG_default_coding("RAW"); const XERdescriptor_t CSGInfoReportingAction_uCSHC_xer_ = { {"uCSHC>\n", "uCSHC>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t CSGInfoReportingAction_uCSHC_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t CSGInfoReportingAction_uCSHC_descr_ = { "@GTPC_Types.CSGInfoReportingAction.uCSHC", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &CSGInfoReportingAction_uCSHC_xer_, &BITSTRING_json_, &CSGInfoReportingAction_uCSHC_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CSGInfoReportingAction_uCSHC_default_coding("RAW"); const XERdescriptor_t CSGInfoReportingAction_uCUHC_xer_ = { {"uCUHC>\n", "uCUHC>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t CSGInfoReportingAction_uCUHC_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t CSGInfoReportingAction_uCUHC_descr_ = { "@GTPC_Types.CSGInfoReportingAction.uCUHC", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &CSGInfoReportingAction_uCUHC_xer_, &BITSTRING_json_, &CSGInfoReportingAction_uCUHC_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CSGInfoReportingAction_uCUHC_default_coding("RAW"); const XERdescriptor_t CSGInfoReportingAction_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 CSGInfoReportingAction_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t CSGInfoReportingAction_spare_descr_ = { "@GTPC_Types.CSGInfoReportingAction.spare", &BITSTRING_ber_, &General__Types::BIT5_raw_, NULL, &CSGInfoReportingAction_spare_xer_, &BITSTRING_json_, &CSGInfoReportingAction_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CSGInfoReportingAction_spare_default_coding("RAW"); const TTCN_RAWdescriptor_t CSGInfoReportingAction_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for CSGInfoReportingAction const TTCN_Typedescriptor_t CSGInfoReportingAction_descr_ = { "@GTPC_Types.CSGInfoReportingAction", NULL, &CSGInfoReportingAction_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CSGInfoReportingAction_default_coding("RAW"); const XERdescriptor_t CSG__Id_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int CSG__Id_type__gtpc_oer_ext_arr_[0] = {}; const int CSG__Id_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t CSG__Id_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, CSG__Id_type__gtpc_oer_ext_arr_, 0, CSG__Id_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t CSG__Id_type__gtpc_descr_ = { "@GTPC_Types.CSG_Id.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &CSG__Id_type__gtpc_xer_, &OCTETSTRING_json_, &CSG__Id_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CSG__Id_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t CSG__Id_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t CSG__Id_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t CSG__Id_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t CSG__Id_lengthf_descr_ = { "@GTPC_Types.CSG_Id.lengthf", &INTEGER_ber_, &CSG__Id_lengthf_raw_, &INTEGER_text_, &CSG__Id_lengthf_xer_, &INTEGER_json_, &CSG__Id_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CSG__Id_lengthf_default_coding("RAW"); const TTCN_RAWdescriptor_t CSG__Id_spare_raw_ = {5,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,5,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t CSG__Id_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 CSG__Id_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t CSG__Id_spare_descr_ = { "@GTPC_Types.CSG_Id.spare", &BITSTRING_ber_, &CSG__Id_spare_raw_, NULL, &CSG__Id_spare_xer_, &BITSTRING_json_, &CSG__Id_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CSG__Id_spare_default_coding("RAW"); const TTCN_RAWdescriptor_t CSG__Id_cSG__ID_raw_ = {27,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,27,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t CSG__Id_cSG__ID_xer_ = { {"cSG_ID>\n", "cSG_ID>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t CSG__Id_cSG__ID_descr_ = { "@GTPC_Types.CSG_Id.cSG_ID", &BITSTRING_ber_, &CSG__Id_cSG__ID_raw_, NULL, &CSG__Id_cSG__ID_xer_, &BITSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CSG__Id_cSG__ID_default_coding("RAW"); const TTCN_RAWdescriptor_t CSG__Id_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for CSG__Id const TTCN_Typedescriptor_t CSG__Id_descr_ = { "@GTPC_Types.CSG_Id", NULL, &CSG__Id_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CSG__Id_default_coding("RAW"); const XERdescriptor_t CSG__MembershipIndication_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int CSG__MembershipIndication_type__gtpc_oer_ext_arr_[0] = {}; const int CSG__MembershipIndication_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t CSG__MembershipIndication_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, CSG__MembershipIndication_type__gtpc_oer_ext_arr_, 0, CSG__MembershipIndication_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t CSG__MembershipIndication_type__gtpc_descr_ = { "@GTPC_Types.CSG_MembershipIndication.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &CSG__MembershipIndication_type__gtpc_xer_, &OCTETSTRING_json_, &CSG__MembershipIndication_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CSG__MembershipIndication_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t CSG__MembershipIndication_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t CSG__MembershipIndication_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t CSG__MembershipIndication_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t CSG__MembershipIndication_lengthf_descr_ = { "@GTPC_Types.CSG_MembershipIndication.lengthf", &INTEGER_ber_, &CSG__MembershipIndication_lengthf_raw_, &INTEGER_text_, &CSG__MembershipIndication_lengthf_xer_, &INTEGER_json_, &CSG__MembershipIndication_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CSG__MembershipIndication_lengthf_default_coding("RAW"); const XERdescriptor_t CSG__MembershipIndication_cMI__Value_xer_ = { {"cMI_Value>\n", "cMI_Value>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t CSG__MembershipIndication_cMI__Value_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t CSG__MembershipIndication_cMI__Value_descr_ = { "@GTPC_Types.CSG_MembershipIndication.cMI_Value", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &CSG__MembershipIndication_cMI__Value_xer_, &BITSTRING_json_, &CSG__MembershipIndication_cMI__Value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CSG__MembershipIndication_cMI__Value_default_coding("RAW"); const XERdescriptor_t CSG__MembershipIndication_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 CSG__MembershipIndication_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t CSG__MembershipIndication_spare_descr_ = { "@GTPC_Types.CSG_MembershipIndication.spare", &BITSTRING_ber_, &General__Types::BIT7_raw_, NULL, &CSG__MembershipIndication_spare_xer_, &BITSTRING_json_, &CSG__MembershipIndication_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CSG__MembershipIndication_spare_default_coding("RAW"); const TTCN_RAWdescriptor_t CSG__MembershipIndication_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for CSG__MembershipIndication const TTCN_Typedescriptor_t CSG__MembershipIndication_descr_ = { "@GTPC_Types.CSG_MembershipIndication", NULL, &CSG__MembershipIndication_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CSG__MembershipIndication_default_coding("RAW"); const XERdescriptor_t APN__AMBR_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int APN__AMBR_type__gtpc_oer_ext_arr_[0] = {}; const int APN__AMBR_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t APN__AMBR_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, APN__AMBR_type__gtpc_oer_ext_arr_, 0, APN__AMBR_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t APN__AMBR_type__gtpc_descr_ = { "@GTPC_Types.APN_AMBR.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &APN__AMBR_type__gtpc_xer_, &OCTETSTRING_json_, &APN__AMBR_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING APN__AMBR_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t APN__AMBR_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t APN__AMBR_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t APN__AMBR_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t APN__AMBR_lengthf_descr_ = { "@GTPC_Types.APN_AMBR.lengthf", &INTEGER_ber_, &APN__AMBR_lengthf_raw_, &INTEGER_text_, &APN__AMBR_lengthf_xer_, &INTEGER_json_, &APN__AMBR_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING APN__AMBR_lengthf_default_coding("RAW"); const XERdescriptor_t APN__AMBR_aPN__AMBR__Uplink_xer_ = { {"aPN_AMBR_Uplink>\n", "aPN_AMBR_Uplink>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t APN__AMBR_aPN__AMBR__Uplink_descr_ = { "@GTPC_Types.APN_AMBR.aPN_AMBR_Uplink", &INTEGER_ber_, &General__Types::LIN4__BO__LAST_raw_, &INTEGER_text_, &APN__AMBR_aPN__AMBR__Uplink_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING APN__AMBR_aPN__AMBR__Uplink_default_coding("RAW"); const XERdescriptor_t APN__AMBR_aPN__AMBR__Downlink_xer_ = { {"aPN_AMBR_Downlink>\n", "aPN_AMBR_Downlink>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t APN__AMBR_aPN__AMBR__Downlink_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t APN__AMBR_aPN__AMBR__Downlink_descr_ = { "@GTPC_Types.APN_AMBR.aPN_AMBR_Downlink", &INTEGER_ber_, &General__Types::LIN4__BO__LAST_raw_, &INTEGER_text_, &APN__AMBR_aPN__AMBR__Downlink_xer_, &INTEGER_json_, &APN__AMBR_aPN__AMBR__Downlink_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING APN__AMBR_aPN__AMBR__Downlink_default_coding("RAW"); const TTCN_RAWdescriptor_t APN__AMBR_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for APN__AMBR const TTCN_Typedescriptor_t APN__AMBR_descr_ = { "@GTPC_Types.APN_AMBR", NULL, &APN__AMBR_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING APN__AMBR_default_coding("RAW"); const XERdescriptor_t UE__Network__Capability_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int UE__Network__Capability_type__gtpc_oer_ext_arr_[0] = {}; const int UE__Network__Capability_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t UE__Network__Capability_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, UE__Network__Capability_type__gtpc_oer_ext_arr_, 0, UE__Network__Capability_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t UE__Network__Capability_type__gtpc_descr_ = { "@GTPC_Types.UE_Network_Capability.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &UE__Network__Capability_type__gtpc_xer_, &OCTETSTRING_json_, &UE__Network__Capability_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UE__Network__Capability_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t UE__Network__Capability_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t UE__Network__Capability_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t UE__Network__Capability_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t UE__Network__Capability_lengthf_descr_ = { "@GTPC_Types.UE_Network_Capability.lengthf", &INTEGER_ber_, &UE__Network__Capability_lengthf_raw_, &INTEGER_text_, &UE__Network__Capability_lengthf_xer_, &INTEGER_json_, &UE__Network__Capability_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UE__Network__Capability_lengthf_default_coding("RAW"); const XERdescriptor_t UE__Network__Capability_ue__network__capability_xer_ = { {"ue_network_capability>\n", "ue_network_capability>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int UE__Network__Capability_ue__network__capability_oer_ext_arr_[0] = {}; const int UE__Network__Capability_ue__network__capability_oer_p_[0] = {}; const TTCN_OERdescriptor_t UE__Network__Capability_ue__network__capability_oer_ = { -1, TRUE, -1, FALSE, 0, 0, UE__Network__Capability_ue__network__capability_oer_ext_arr_, 0, UE__Network__Capability_ue__network__capability_oer_p_}; const TTCN_Typedescriptor_t UE__Network__Capability_ue__network__capability_descr_ = { "@GTPC_Types.UE_Network_Capability.ue_network_capability", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &UE__Network__Capability_ue__network__capability_xer_, &OCTETSTRING_json_, &UE__Network__Capability_ue__network__capability_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UE__Network__Capability_ue__network__capability_default_coding("RAW"); const TTCN_RAWdescriptor_t UE__Network__Capability_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for UE__Network__Capability const TTCN_Typedescriptor_t UE__Network__Capability_descr_ = { "@GTPC_Types.UE_Network_Capability", NULL, &UE__Network__Capability_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UE__Network__Capability_default_coding("RAW"); const XERdescriptor_t UE__AMBR_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int UE__AMBR_type__gtpc_oer_ext_arr_[0] = {}; const int UE__AMBR_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t UE__AMBR_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, UE__AMBR_type__gtpc_oer_ext_arr_, 0, UE__AMBR_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t UE__AMBR_type__gtpc_descr_ = { "@GTPC_Types.UE_AMBR.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &UE__AMBR_type__gtpc_xer_, &OCTETSTRING_json_, &UE__AMBR_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UE__AMBR_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t UE__AMBR_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t UE__AMBR_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t UE__AMBR_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t UE__AMBR_lengthf_descr_ = { "@GTPC_Types.UE_AMBR.lengthf", &INTEGER_ber_, &UE__AMBR_lengthf_raw_, &INTEGER_text_, &UE__AMBR_lengthf_xer_, &INTEGER_json_, &UE__AMBR_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UE__AMBR_lengthf_default_coding("RAW"); const XERdescriptor_t UE__AMBR_subscribed__ue__ambr__uplink_xer_ = { {"subscribed_ue_ambr_uplink>\n", "subscribed_ue_ambr_uplink>\n"}, {27, 27}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t UE__AMBR_subscribed__ue__ambr__uplink_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t UE__AMBR_subscribed__ue__ambr__uplink_descr_ = { "@GTPC_Types.UE_AMBR.subscribed_ue_ambr_uplink", &INTEGER_ber_, &General__Types::LIN4__BO__LAST_raw_, &INTEGER_text_, &UE__AMBR_subscribed__ue__ambr__uplink_xer_, &INTEGER_json_, &UE__AMBR_subscribed__ue__ambr__uplink_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UE__AMBR_subscribed__ue__ambr__uplink_default_coding("RAW"); const XERdescriptor_t UE__AMBR_subscribed__ue__ambr__downlink_xer_ = { {"subscribed_ue_ambr_downlink>\n", "subscribed_ue_ambr_downlink>\n"}, {29, 29}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t UE__AMBR_subscribed__ue__ambr__downlink_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t UE__AMBR_subscribed__ue__ambr__downlink_descr_ = { "@GTPC_Types.UE_AMBR.subscribed_ue_ambr_downlink", &INTEGER_ber_, &General__Types::LIN4__BO__LAST_raw_, &INTEGER_text_, &UE__AMBR_subscribed__ue__ambr__downlink_xer_, &INTEGER_json_, &UE__AMBR_subscribed__ue__ambr__downlink_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UE__AMBR_subscribed__ue__ambr__downlink_default_coding("RAW"); const TTCN_RAWdescriptor_t UE__AMBR_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for UE__AMBR const TTCN_Typedescriptor_t UE__AMBR_descr_ = { "@GTPC_Types.UE_AMBR", NULL, &UE__AMBR_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t UE__AMBR_authorized__ue__ambr__uplink_xer_ = { {"authorized_ue_ambr_uplink>\n", "authorized_ue_ambr_uplink>\n"}, {27, 27}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t UE__AMBR_authorized__ue__ambr__uplink_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t UE__AMBR_authorized__ue__ambr__uplink_descr_ = { "@GTPC_Types.UE_AMBR.authorized_ue_ambr_uplink", &INTEGER_ber_, &General__Types::LIN4__BO__LAST_raw_, &INTEGER_text_, &UE__AMBR_authorized__ue__ambr__uplink_xer_, &INTEGER_json_, &UE__AMBR_authorized__ue__ambr__uplink_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UE__AMBR_authorized__ue__ambr__uplink_default_coding("RAW"); const XERdescriptor_t UE__AMBR_authorized__ue__ambr__downlink_xer_ = { {"authorized_ue_ambr_downlink>\n", "authorized_ue_ambr_downlink>\n"}, {29, 29}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t UE__AMBR_authorized__ue__ambr__downlink_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t UE__AMBR_authorized__ue__ambr__downlink_descr_ = { "@GTPC_Types.UE_AMBR.authorized_ue_ambr_downlink", &INTEGER_ber_, &General__Types::LIN4__BO__LAST_raw_, &INTEGER_text_, &UE__AMBR_authorized__ue__ambr__downlink_xer_, &INTEGER_json_, &UE__AMBR_authorized__ue__ambr__downlink_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UE__AMBR_authorized__ue__ambr__downlink_default_coding("RAW"); UNIVERSAL_CHARSTRING UE__AMBR_default_coding("RAW"); const XERdescriptor_t APN__AMBR__NSAPI_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int APN__AMBR__NSAPI_type__gtpc_oer_ext_arr_[0] = {}; const int APN__AMBR__NSAPI_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t APN__AMBR__NSAPI_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, APN__AMBR__NSAPI_type__gtpc_oer_ext_arr_, 0, APN__AMBR__NSAPI_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t APN__AMBR__NSAPI_type__gtpc_descr_ = { "@GTPC_Types.APN_AMBR_NSAPI.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &APN__AMBR__NSAPI_type__gtpc_xer_, &OCTETSTRING_json_, &APN__AMBR__NSAPI_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING APN__AMBR__NSAPI_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t APN__AMBR__NSAPI_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t APN__AMBR__NSAPI_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t APN__AMBR__NSAPI_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t APN__AMBR__NSAPI_lengthf_descr_ = { "@GTPC_Types.APN_AMBR_NSAPI.lengthf", &INTEGER_ber_, &APN__AMBR__NSAPI_lengthf_raw_, &INTEGER_text_, &APN__AMBR__NSAPI_lengthf_xer_, &INTEGER_json_, &APN__AMBR__NSAPI_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING APN__AMBR__NSAPI_lengthf_default_coding("RAW"); const XERdescriptor_t APN__AMBR__NSAPI_nsapi_xer_ = { {"nsapi>\n", "nsapi>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t APN__AMBR__NSAPI_nsapi_descr_ = { "@GTPC_Types.APN_AMBR_NSAPI.nsapi", NULL, &General__Types::HEX1_raw_, NULL, &APN__AMBR__NSAPI_nsapi_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING APN__AMBR__NSAPI_nsapi_default_coding("RAW"); const XERdescriptor_t APN__AMBR__NSAPI_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_Typedescriptor_t APN__AMBR__NSAPI_spare_descr_ = { "@GTPC_Types.APN_AMBR_NSAPI.spare", NULL, &General__Types::HEX1_raw_, NULL, &APN__AMBR__NSAPI_spare_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING APN__AMBR__NSAPI_spare_default_coding("RAW"); const XERdescriptor_t APN__AMBR__NSAPI_authorized__apn__ambr__uplink_xer_ = { {"authorized_apn_ambr_uplink>\n", "authorized_apn_ambr_uplink>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t APN__AMBR__NSAPI_authorized__apn__ambr__uplink_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t APN__AMBR__NSAPI_authorized__apn__ambr__uplink_descr_ = { "@GTPC_Types.APN_AMBR_NSAPI.authorized_apn_ambr_uplink", &INTEGER_ber_, &General__Types::LIN4__BO__LAST_raw_, &INTEGER_text_, &APN__AMBR__NSAPI_authorized__apn__ambr__uplink_xer_, &INTEGER_json_, &APN__AMBR__NSAPI_authorized__apn__ambr__uplink_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING APN__AMBR__NSAPI_authorized__apn__ambr__uplink_default_coding("RAW"); const XERdescriptor_t APN__AMBR__NSAPI_authorized__apn__ambr__downlink_xer_ = { {"authorized_apn_ambr_downlink>\n", "authorized_apn_ambr_downlink>\n"}, {30, 30}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t APN__AMBR__NSAPI_authorized__apn__ambr__downlink_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t APN__AMBR__NSAPI_authorized__apn__ambr__downlink_descr_ = { "@GTPC_Types.APN_AMBR_NSAPI.authorized_apn_ambr_downlink", &INTEGER_ber_, &General__Types::LIN4__BO__LAST_raw_, &INTEGER_text_, &APN__AMBR__NSAPI_authorized__apn__ambr__downlink_xer_, &INTEGER_json_, &APN__AMBR__NSAPI_authorized__apn__ambr__downlink_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING APN__AMBR__NSAPI_authorized__apn__ambr__downlink_default_coding("RAW"); const TTCN_RAWdescriptor_t APN__AMBR__NSAPI_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for APN__AMBR__NSAPI const TTCN_Typedescriptor_t APN__AMBR__NSAPI_descr_ = { "@GTPC_Types.APN_AMBR_NSAPI", NULL, &APN__AMBR__NSAPI_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING APN__AMBR__NSAPI_default_coding("RAW"); const XERdescriptor_t GGSN__BackOffTime_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int GGSN__BackOffTime_type__gtpc_oer_ext_arr_[0] = {}; const int GGSN__BackOffTime_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t GGSN__BackOffTime_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GGSN__BackOffTime_type__gtpc_oer_ext_arr_, 0, GGSN__BackOffTime_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t GGSN__BackOffTime_type__gtpc_descr_ = { "@GTPC_Types.GGSN_BackOffTime.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &GGSN__BackOffTime_type__gtpc_xer_, &OCTETSTRING_json_, &GGSN__BackOffTime_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GGSN__BackOffTime_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t GGSN__BackOffTime_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t GGSN__BackOffTime_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t GGSN__BackOffTime_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t GGSN__BackOffTime_lengthf_descr_ = { "@GTPC_Types.GGSN_BackOffTime.lengthf", &INTEGER_ber_, &GGSN__BackOffTime_lengthf_raw_, &INTEGER_text_, &GGSN__BackOffTime_lengthf_xer_, &INTEGER_json_, &GGSN__BackOffTime_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GGSN__BackOffTime_lengthf_default_coding("RAW"); const XERdescriptor_t GGSN__BackOffTime_timerValue_xer_ = { {"timerValue>\n", "timerValue>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t GGSN__BackOffTime_timerValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t GGSN__BackOffTime_timerValue_descr_ = { "@GTPC_Types.GGSN_BackOffTime.timerValue", &BITSTRING_ber_, &General__Types::BIT5_raw_, NULL, &GGSN__BackOffTime_timerValue_xer_, &BITSTRING_json_, &GGSN__BackOffTime_timerValue_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GGSN__BackOffTime_timerValue_default_coding("RAW"); const XERdescriptor_t GGSN__BackOffTime_timerUnit_xer_ = { {"timerUnit>\n", "timerUnit>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t GGSN__BackOffTime_timerUnit_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t GGSN__BackOffTime_timerUnit_descr_ = { "@GTPC_Types.GGSN_BackOffTime.timerUnit", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &GGSN__BackOffTime_timerUnit_xer_, &BITSTRING_json_, &GGSN__BackOffTime_timerUnit_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GGSN__BackOffTime_timerUnit_default_coding("RAW"); const TTCN_RAWdescriptor_t GGSN__BackOffTime_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for GGSN__BackOffTime const TTCN_Typedescriptor_t GGSN__BackOffTime_descr_ = { "@GTPC_Types.GGSN_BackOffTime", NULL, &GGSN__BackOffTime_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t GGSN__BackOffTime_explicitly__specified_xer_ = { {"explicitly_specified>\n", "explicitly_specified>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int GGSN__BackOffTime_explicitly__specified_oer_ext_arr_[0] = {}; const int GGSN__BackOffTime_explicitly__specified_oer_p_[0] = {}; const TTCN_OERdescriptor_t GGSN__BackOffTime_explicitly__specified_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GGSN__BackOffTime_explicitly__specified_oer_ext_arr_, 0, GGSN__BackOffTime_explicitly__specified_oer_p_}; const TTCN_Typedescriptor_t GGSN__BackOffTime_explicitly__specified_descr_ = { "@GTPC_Types.GGSN_BackOffTime.explicitly_specified", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &GGSN__BackOffTime_explicitly__specified_xer_, &OCTETSTRING_json_, &GGSN__BackOffTime_explicitly__specified_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GGSN__BackOffTime_explicitly__specified_default_coding("RAW"); UNIVERSAL_CHARSTRING GGSN__BackOffTime_default_coding("RAW"); const XERdescriptor_t SignallingPriorityIndication_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int SignallingPriorityIndication_type__gtpc_oer_ext_arr_[0] = {}; const int SignallingPriorityIndication_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t SignallingPriorityIndication_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SignallingPriorityIndication_type__gtpc_oer_ext_arr_, 0, SignallingPriorityIndication_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t SignallingPriorityIndication_type__gtpc_descr_ = { "@GTPC_Types.SignallingPriorityIndication.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &SignallingPriorityIndication_type__gtpc_xer_, &OCTETSTRING_json_, &SignallingPriorityIndication_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SignallingPriorityIndication_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t SignallingPriorityIndication_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t SignallingPriorityIndication_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t SignallingPriorityIndication_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t SignallingPriorityIndication_lengthf_descr_ = { "@GTPC_Types.SignallingPriorityIndication.lengthf", &INTEGER_ber_, &SignallingPriorityIndication_lengthf_raw_, &INTEGER_text_, &SignallingPriorityIndication_lengthf_xer_, &INTEGER_json_, &SignallingPriorityIndication_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SignallingPriorityIndication_lengthf_default_coding("RAW"); const XERdescriptor_t SignallingPriorityIndication_lapi_xer_ = { {"lapi>\n", "lapi>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t SignallingPriorityIndication_lapi_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t SignallingPriorityIndication_lapi_descr_ = { "@GTPC_Types.SignallingPriorityIndication.lapi", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &SignallingPriorityIndication_lapi_xer_, &BITSTRING_json_, &SignallingPriorityIndication_lapi_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SignallingPriorityIndication_lapi_default_coding("RAW"); const XERdescriptor_t SignallingPriorityIndication_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 SignallingPriorityIndication_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t SignallingPriorityIndication_spare_descr_ = { "@GTPC_Types.SignallingPriorityIndication.spare", &BITSTRING_ber_, &General__Types::BIT7_raw_, NULL, &SignallingPriorityIndication_spare_xer_, &BITSTRING_json_, &SignallingPriorityIndication_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SignallingPriorityIndication_spare_default_coding("RAW"); const TTCN_RAWdescriptor_t SignallingPriorityIndication_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for SignallingPriorityIndication const TTCN_Typedescriptor_t SignallingPriorityIndication_descr_ = { "@GTPC_Types.SignallingPriorityIndication", NULL, &SignallingPriorityIndication_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t SignallingPriorityIndication_explicitly__specified_xer_ = { {"explicitly_specified>\n", "explicitly_specified>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int SignallingPriorityIndication_explicitly__specified_oer_ext_arr_[0] = {}; const int SignallingPriorityIndication_explicitly__specified_oer_p_[0] = {}; const TTCN_OERdescriptor_t SignallingPriorityIndication_explicitly__specified_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SignallingPriorityIndication_explicitly__specified_oer_ext_arr_, 0, SignallingPriorityIndication_explicitly__specified_oer_p_}; const TTCN_Typedescriptor_t SignallingPriorityIndication_explicitly__specified_descr_ = { "@GTPC_Types.SignallingPriorityIndication.explicitly_specified", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &SignallingPriorityIndication_explicitly__specified_xer_, &OCTETSTRING_json_, &SignallingPriorityIndication_explicitly__specified_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SignallingPriorityIndication_explicitly__specified_default_coding("RAW"); UNIVERSAL_CHARSTRING SignallingPriorityIndication_default_coding("RAW"); const XERdescriptor_t SignallingPriorityIndication__NSAPI_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int SignallingPriorityIndication__NSAPI_type__gtpc_oer_ext_arr_[0] = {}; const int SignallingPriorityIndication__NSAPI_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t SignallingPriorityIndication__NSAPI_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SignallingPriorityIndication__NSAPI_type__gtpc_oer_ext_arr_, 0, SignallingPriorityIndication__NSAPI_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t SignallingPriorityIndication__NSAPI_type__gtpc_descr_ = { "@GTPC_Types.SignallingPriorityIndication_NSAPI.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &SignallingPriorityIndication__NSAPI_type__gtpc_xer_, &OCTETSTRING_json_, &SignallingPriorityIndication__NSAPI_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SignallingPriorityIndication__NSAPI_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t SignallingPriorityIndication__NSAPI_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t SignallingPriorityIndication__NSAPI_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t SignallingPriorityIndication__NSAPI_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t SignallingPriorityIndication__NSAPI_lengthf_descr_ = { "@GTPC_Types.SignallingPriorityIndication_NSAPI.lengthf", &INTEGER_ber_, &SignallingPriorityIndication__NSAPI_lengthf_raw_, &INTEGER_text_, &SignallingPriorityIndication__NSAPI_lengthf_xer_, &INTEGER_json_, &SignallingPriorityIndication__NSAPI_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SignallingPriorityIndication__NSAPI_lengthf_default_coding("RAW"); const XERdescriptor_t SignallingPriorityIndication__NSAPI_nsapi_xer_ = { {"nsapi>\n", "nsapi>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t SignallingPriorityIndication__NSAPI_nsapi_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t SignallingPriorityIndication__NSAPI_nsapi_descr_ = { "@GTPC_Types.SignallingPriorityIndication_NSAPI.nsapi", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &SignallingPriorityIndication__NSAPI_nsapi_xer_, &BITSTRING_json_, &SignallingPriorityIndication__NSAPI_nsapi_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SignallingPriorityIndication__NSAPI_nsapi_default_coding("RAW"); const XERdescriptor_t SignallingPriorityIndication__NSAPI_spare1_xer_ = { {"spare1>\n", "spare1>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t SignallingPriorityIndication__NSAPI_spare1_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t SignallingPriorityIndication__NSAPI_spare1_descr_ = { "@GTPC_Types.SignallingPriorityIndication_NSAPI.spare1", &BITSTRING_ber_, &General__Types::BIT7_raw_, NULL, &SignallingPriorityIndication__NSAPI_spare1_xer_, &BITSTRING_json_, &SignallingPriorityIndication__NSAPI_spare1_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SignallingPriorityIndication__NSAPI_spare1_default_coding("RAW"); const XERdescriptor_t SignallingPriorityIndication__NSAPI_lapi_xer_ = { {"lapi>\n", "lapi>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t SignallingPriorityIndication__NSAPI_lapi_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t SignallingPriorityIndication__NSAPI_lapi_descr_ = { "@GTPC_Types.SignallingPriorityIndication_NSAPI.lapi", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &SignallingPriorityIndication__NSAPI_lapi_xer_, &BITSTRING_json_, &SignallingPriorityIndication__NSAPI_lapi_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SignallingPriorityIndication__NSAPI_lapi_default_coding("RAW"); const XERdescriptor_t SignallingPriorityIndication__NSAPI_spare2_xer_ = { {"spare2>\n", "spare2>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t SignallingPriorityIndication__NSAPI_spare2_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t SignallingPriorityIndication__NSAPI_spare2_descr_ = { "@GTPC_Types.SignallingPriorityIndication_NSAPI.spare2", &BITSTRING_ber_, &General__Types::BIT7_raw_, NULL, &SignallingPriorityIndication__NSAPI_spare2_xer_, &BITSTRING_json_, &SignallingPriorityIndication__NSAPI_spare2_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SignallingPriorityIndication__NSAPI_spare2_default_coding("RAW"); const TTCN_RAWdescriptor_t SignallingPriorityIndication__NSAPI_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for SignallingPriorityIndication__NSAPI const TTCN_Typedescriptor_t SignallingPriorityIndication__NSAPI_descr_ = { "@GTPC_Types.SignallingPriorityIndication_NSAPI", NULL, &SignallingPriorityIndication__NSAPI_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t SignallingPriorityIndication__NSAPI_explicitly__specified_xer_ = { {"explicitly_specified>\n", "explicitly_specified>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int SignallingPriorityIndication__NSAPI_explicitly__specified_oer_ext_arr_[0] = {}; const int SignallingPriorityIndication__NSAPI_explicitly__specified_oer_p_[0] = {}; const TTCN_OERdescriptor_t SignallingPriorityIndication__NSAPI_explicitly__specified_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SignallingPriorityIndication__NSAPI_explicitly__specified_oer_ext_arr_, 0, SignallingPriorityIndication__NSAPI_explicitly__specified_oer_p_}; const TTCN_Typedescriptor_t SignallingPriorityIndication__NSAPI_explicitly__specified_descr_ = { "@GTPC_Types.SignallingPriorityIndication_NSAPI.explicitly_specified", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &SignallingPriorityIndication__NSAPI_explicitly__specified_xer_, &OCTETSTRING_json_, &SignallingPriorityIndication__NSAPI_explicitly__specified_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SignallingPriorityIndication__NSAPI_explicitly__specified_default_coding("RAW"); UNIVERSAL_CHARSTRING SignallingPriorityIndication__NSAPI_default_coding("RAW"); const XERdescriptor_t Higher__Bitrates__Than__16Mbps__Flag_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int Higher__Bitrates__Than__16Mbps__Flag_type__gtpc_oer_ext_arr_[0] = {}; const int Higher__Bitrates__Than__16Mbps__Flag_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t Higher__Bitrates__Than__16Mbps__Flag_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Higher__Bitrates__Than__16Mbps__Flag_type__gtpc_oer_ext_arr_, 0, Higher__Bitrates__Than__16Mbps__Flag_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t Higher__Bitrates__Than__16Mbps__Flag_type__gtpc_descr_ = { "@GTPC_Types.Higher_Bitrates_Than_16Mbps_Flag.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Higher__Bitrates__Than__16Mbps__Flag_type__gtpc_xer_, &OCTETSTRING_json_, &Higher__Bitrates__Than__16Mbps__Flag_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Higher__Bitrates__Than__16Mbps__Flag_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t Higher__Bitrates__Than__16Mbps__Flag_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t Higher__Bitrates__Than__16Mbps__Flag_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t Higher__Bitrates__Than__16Mbps__Flag_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t Higher__Bitrates__Than__16Mbps__Flag_lengthf_descr_ = { "@GTPC_Types.Higher_Bitrates_Than_16Mbps_Flag.lengthf", &INTEGER_ber_, &Higher__Bitrates__Than__16Mbps__Flag_lengthf_raw_, &INTEGER_text_, &Higher__Bitrates__Than__16Mbps__Flag_lengthf_xer_, &INTEGER_json_, &Higher__Bitrates__Than__16Mbps__Flag_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Higher__Bitrates__Than__16Mbps__Flag_lengthf_default_coding("RAW"); const XERdescriptor_t Higher__Bitrates__Than__16Mbps__Flag_flag_xer_ = { {"flag>\n", "flag>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t Higher__Bitrates__Than__16Mbps__Flag_flag_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t Higher__Bitrates__Than__16Mbps__Flag_flag_descr_ = { "@GTPC_Types.Higher_Bitrates_Than_16Mbps_Flag.flag", &INTEGER_ber_, &General__Types::LIN1_raw_, &INTEGER_text_, &Higher__Bitrates__Than__16Mbps__Flag_flag_xer_, &INTEGER_json_, &Higher__Bitrates__Than__16Mbps__Flag_flag_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Higher__Bitrates__Than__16Mbps__Flag_flag_default_coding("RAW"); const TTCN_RAWdescriptor_t Higher__Bitrates__Than__16Mbps__Flag_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for Higher__Bitrates__Than__16Mbps__Flag const TTCN_Typedescriptor_t Higher__Bitrates__Than__16Mbps__Flag_descr_ = { "@GTPC_Types.Higher_Bitrates_Than_16Mbps_Flag", NULL, &Higher__Bitrates__Than__16Mbps__Flag_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Higher__Bitrates__Than__16Mbps__Flag_default_coding("RAW"); const XERdescriptor_t SRVCC__MM__Context_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int SRVCC__MM__Context_type__gtpc_oer_ext_arr_[0] = {}; const int SRVCC__MM__Context_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t SRVCC__MM__Context_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SRVCC__MM__Context_type__gtpc_oer_ext_arr_, 0, SRVCC__MM__Context_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t SRVCC__MM__Context_type__gtpc_descr_ = { "@GTPC_Types.SRVCC_MM_Context.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &SRVCC__MM__Context_type__gtpc_xer_, &OCTETSTRING_json_, &SRVCC__MM__Context_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SRVCC__MM__Context_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t SRVCC__MM__Context_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t SRVCC__MM__Context_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t SRVCC__MM__Context_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t SRVCC__MM__Context_lengthf_descr_ = { "@GTPC_Types.SRVCC_MM_Context.lengthf", &INTEGER_ber_, &SRVCC__MM__Context_lengthf_raw_, &INTEGER_text_, &SRVCC__MM__Context_lengthf_xer_, &INTEGER_json_, &SRVCC__MM__Context_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SRVCC__MM__Context_lengthf_default_coding("RAW"); const TTCN_RAWdescriptor_t SRVCC__MM__Context_mobile__station__classmark2__len_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t SRVCC__MM__Context_mobile__station__classmark2__len_xer_ = { {"mobile_station_classmark2_len>\n", "mobile_station_classmark2_len>\n"}, {31, 31}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t SRVCC__MM__Context_mobile__station__classmark2__len_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t SRVCC__MM__Context_mobile__station__classmark2__len_descr_ = { "@GTPC_Types.SRVCC_MM_Context.mobile_station_classmark2_len", &INTEGER_ber_, &SRVCC__MM__Context_mobile__station__classmark2__len_raw_, &INTEGER_text_, &SRVCC__MM__Context_mobile__station__classmark2__len_xer_, &INTEGER_json_, &SRVCC__MM__Context_mobile__station__classmark2__len_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SRVCC__MM__Context_mobile__station__classmark2__len_default_coding("RAW"); const XERdescriptor_t SRVCC__MM__Context_mobile__station__classmark2_xer_ = { {"mobile_station_classmark2>\n", "mobile_station_classmark2>\n"}, {27, 27}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int SRVCC__MM__Context_mobile__station__classmark2_oer_ext_arr_[0] = {}; const int SRVCC__MM__Context_mobile__station__classmark2_oer_p_[0] = {}; const TTCN_OERdescriptor_t SRVCC__MM__Context_mobile__station__classmark2_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SRVCC__MM__Context_mobile__station__classmark2_oer_ext_arr_, 0, SRVCC__MM__Context_mobile__station__classmark2_oer_p_}; const TTCN_Typedescriptor_t SRVCC__MM__Context_mobile__station__classmark2_descr_ = { "@GTPC_Types.SRVCC_MM_Context.mobile_station_classmark2", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &SRVCC__MM__Context_mobile__station__classmark2_xer_, &OCTETSTRING_json_, &SRVCC__MM__Context_mobile__station__classmark2_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SRVCC__MM__Context_mobile__station__classmark2_default_coding("RAW"); const TTCN_RAWdescriptor_t SRVCC__MM__Context_mobile__station__classmark3__len_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t SRVCC__MM__Context_mobile__station__classmark3__len_xer_ = { {"mobile_station_classmark3_len>\n", "mobile_station_classmark3_len>\n"}, {31, 31}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t SRVCC__MM__Context_mobile__station__classmark3__len_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t SRVCC__MM__Context_mobile__station__classmark3__len_descr_ = { "@GTPC_Types.SRVCC_MM_Context.mobile_station_classmark3_len", &INTEGER_ber_, &SRVCC__MM__Context_mobile__station__classmark3__len_raw_, &INTEGER_text_, &SRVCC__MM__Context_mobile__station__classmark3__len_xer_, &INTEGER_json_, &SRVCC__MM__Context_mobile__station__classmark3__len_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SRVCC__MM__Context_mobile__station__classmark3__len_default_coding("RAW"); const XERdescriptor_t SRVCC__MM__Context_mobile__station__classmark3_xer_ = { {"mobile_station_classmark3>\n", "mobile_station_classmark3>\n"}, {27, 27}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int SRVCC__MM__Context_mobile__station__classmark3_oer_ext_arr_[0] = {}; const int SRVCC__MM__Context_mobile__station__classmark3_oer_p_[0] = {}; const TTCN_OERdescriptor_t SRVCC__MM__Context_mobile__station__classmark3_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SRVCC__MM__Context_mobile__station__classmark3_oer_ext_arr_, 0, SRVCC__MM__Context_mobile__station__classmark3_oer_p_}; const TTCN_Typedescriptor_t SRVCC__MM__Context_mobile__station__classmark3_descr_ = { "@GTPC_Types.SRVCC_MM_Context.mobile_station_classmark3", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &SRVCC__MM__Context_mobile__station__classmark3_xer_, &OCTETSTRING_json_, &SRVCC__MM__Context_mobile__station__classmark3_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SRVCC__MM__Context_mobile__station__classmark3_default_coding("RAW"); const TTCN_RAWdescriptor_t SRVCC__MM__Context_supported__codec__list__len_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t SRVCC__MM__Context_supported__codec__list__len_xer_ = { {"supported_codec_list_len>\n", "supported_codec_list_len>\n"}, {26, 26}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t SRVCC__MM__Context_supported__codec__list__len_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t SRVCC__MM__Context_supported__codec__list__len_descr_ = { "@GTPC_Types.SRVCC_MM_Context.supported_codec_list_len", &INTEGER_ber_, &SRVCC__MM__Context_supported__codec__list__len_raw_, &INTEGER_text_, &SRVCC__MM__Context_supported__codec__list__len_xer_, &INTEGER_json_, &SRVCC__MM__Context_supported__codec__list__len_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SRVCC__MM__Context_supported__codec__list__len_default_coding("RAW"); const XERdescriptor_t SRVCC__MM__Context_supported__codec__list_xer_ = { {"supported_codec_list>\n", "supported_codec_list>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int SRVCC__MM__Context_supported__codec__list_oer_ext_arr_[0] = {}; const int SRVCC__MM__Context_supported__codec__list_oer_p_[0] = {}; const TTCN_OERdescriptor_t SRVCC__MM__Context_supported__codec__list_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SRVCC__MM__Context_supported__codec__list_oer_ext_arr_, 0, SRVCC__MM__Context_supported__codec__list_oer_p_}; const TTCN_Typedescriptor_t SRVCC__MM__Context_supported__codec__list_descr_ = { "@GTPC_Types.SRVCC_MM_Context.supported_codec_list", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &SRVCC__MM__Context_supported__codec__list_xer_, &OCTETSTRING_json_, &SRVCC__MM__Context_supported__codec__list_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SRVCC__MM__Context_supported__codec__list_default_coding("RAW"); const TTCN_RAWdescriptor_t SRVCC__MM__Context_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for SRVCC__MM__Context const TTCN_Typedescriptor_t SRVCC__MM__Context_descr_ = { "@GTPC_Types.SRVCC_MM_Context", NULL, &SRVCC__MM__Context_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t SRVCC__MM__Context_explicitly__specified_xer_ = { {"explicitly_specified>\n", "explicitly_specified>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int SRVCC__MM__Context_explicitly__specified_oer_ext_arr_[0] = {}; const int SRVCC__MM__Context_explicitly__specified_oer_p_[0] = {}; const TTCN_OERdescriptor_t SRVCC__MM__Context_explicitly__specified_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SRVCC__MM__Context_explicitly__specified_oer_ext_arr_, 0, SRVCC__MM__Context_explicitly__specified_oer_p_}; const TTCN_Typedescriptor_t SRVCC__MM__Context_explicitly__specified_descr_ = { "@GTPC_Types.SRVCC_MM_Context.explicitly_specified", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &SRVCC__MM__Context_explicitly__specified_xer_, &OCTETSTRING_json_, &SRVCC__MM__Context_explicitly__specified_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SRVCC__MM__Context_explicitly__specified_default_coding("RAW"); UNIVERSAL_CHARSTRING SRVCC__MM__Context_default_coding("RAW"); const XERdescriptor_t SRVCC__Flags_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int SRVCC__Flags_type__gtpc_oer_ext_arr_[0] = {}; const int SRVCC__Flags_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t SRVCC__Flags_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SRVCC__Flags_type__gtpc_oer_ext_arr_, 0, SRVCC__Flags_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t SRVCC__Flags_type__gtpc_descr_ = { "@GTPC_Types.SRVCC_Flags.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &SRVCC__Flags_type__gtpc_xer_, &OCTETSTRING_json_, &SRVCC__Flags_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SRVCC__Flags_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t SRVCC__Flags_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t SRVCC__Flags_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t SRVCC__Flags_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t SRVCC__Flags_lengthf_descr_ = { "@GTPC_Types.SRVCC_Flags.lengthf", &INTEGER_ber_, &SRVCC__Flags_lengthf_raw_, &INTEGER_text_, &SRVCC__Flags_lengthf_xer_, &INTEGER_json_, &SRVCC__Flags_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SRVCC__Flags_lengthf_default_coding("RAW"); const XERdescriptor_t SRVCC__Flags_ics_xer_ = { {"ics>\n", "ics>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t SRVCC__Flags_ics_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t SRVCC__Flags_ics_descr_ = { "@GTPC_Types.SRVCC_Flags.ics", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &SRVCC__Flags_ics_xer_, &BITSTRING_json_, &SRVCC__Flags_ics_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SRVCC__Flags_ics_default_coding("RAW"); const XERdescriptor_t SRVCC__Flags_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 SRVCC__Flags_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t SRVCC__Flags_spare_descr_ = { "@GTPC_Types.SRVCC_Flags.spare", &BITSTRING_ber_, &General__Types::BIT7_raw_, NULL, &SRVCC__Flags_spare_xer_, &BITSTRING_json_, &SRVCC__Flags_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SRVCC__Flags_spare_default_coding("RAW"); const TTCN_RAWdescriptor_t SRVCC__Flags_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for SRVCC__Flags const TTCN_Typedescriptor_t SRVCC__Flags_descr_ = { "@GTPC_Types.SRVCC_Flags", NULL, &SRVCC__Flags_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t SRVCC__Flags_explicitly__specified_xer_ = { {"explicitly_specified>\n", "explicitly_specified>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int SRVCC__Flags_explicitly__specified_oer_ext_arr_[0] = {}; const int SRVCC__Flags_explicitly__specified_oer_p_[0] = {}; const TTCN_OERdescriptor_t SRVCC__Flags_explicitly__specified_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SRVCC__Flags_explicitly__specified_oer_ext_arr_, 0, SRVCC__Flags_explicitly__specified_oer_p_}; const TTCN_Typedescriptor_t SRVCC__Flags_explicitly__specified_descr_ = { "@GTPC_Types.SRVCC_Flags.explicitly_specified", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &SRVCC__Flags_explicitly__specified_xer_, &OCTETSTRING_json_, &SRVCC__Flags_explicitly__specified_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SRVCC__Flags_explicitly__specified_default_coding("RAW"); UNIVERSAL_CHARSTRING SRVCC__Flags_default_coding("RAW"); const XERdescriptor_t STN__SR_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int STN__SR_type__gtpc_oer_ext_arr_[0] = {}; const int STN__SR_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t STN__SR_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, STN__SR_type__gtpc_oer_ext_arr_, 0, STN__SR_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t STN__SR_type__gtpc_descr_ = { "@GTPC_Types.STN_SR.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &STN__SR_type__gtpc_xer_, &OCTETSTRING_json_, &STN__SR_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING STN__SR_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t STN__SR_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t STN__SR_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t STN__SR_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t STN__SR_lengthf_descr_ = { "@GTPC_Types.STN_SR.lengthf", &INTEGER_ber_, &STN__SR_lengthf_raw_, &INTEGER_text_, &STN__SR_lengthf_xer_, &INTEGER_json_, &STN__SR_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING STN__SR_lengthf_default_coding("RAW"); const XERdescriptor_t STN__SR_nanpi_xer_ = { {"nanpi>\n", "nanpi>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int STN__SR_nanpi_oer_ext_arr_[0] = {}; const int STN__SR_nanpi_oer_p_[0] = {}; const TTCN_OERdescriptor_t STN__SR_nanpi_oer_ = { -1, TRUE, 1, FALSE, 0, 0, STN__SR_nanpi_oer_ext_arr_, 0, STN__SR_nanpi_oer_p_}; const TTCN_Typedescriptor_t STN__SR_nanpi_descr_ = { "@GTPC_Types.STN_SR.nanpi", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &STN__SR_nanpi_xer_, &OCTETSTRING_json_, &STN__SR_nanpi_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING STN__SR_nanpi_default_coding("RAW"); const TTCN_RAWdescriptor_t Digits_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for Digits const TTCN_Typedescriptor_t Digits_descr_ = { "@GTPC_Types.Digits", NULL, &Digits_raw_, NULL, NULL, NULL, NULL, NULL, &General__Types::HEX1_descr_, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t Digits_0_xer_ = { {"HEX1>\n", "HEX1>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t Digits_0_descr_ = { "@GTPC_Types.Digits.", NULL, &General__Types::HEX1_raw_, NULL, &Digits_0_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Digits_0_default_coding("RAW"); UNIVERSAL_CHARSTRING Digits_default_coding("RAW"); UNIVERSAL_CHARSTRING STN__SR_digits_default_coding("RAW"); const TTCN_RAWdescriptor_t STN__SR_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for STN__SR const TTCN_Typedescriptor_t STN__SR_descr_ = { "@GTPC_Types.STN_SR", NULL, &STN__SR_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING STN__SR_default_coding("RAW"); const XERdescriptor_t C__MSISDN_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int C__MSISDN_type__gtpc_oer_ext_arr_[0] = {}; const int C__MSISDN_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t C__MSISDN_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, C__MSISDN_type__gtpc_oer_ext_arr_, 0, C__MSISDN_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t C__MSISDN_type__gtpc_descr_ = { "@GTPC_Types.C_MSISDN.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &C__MSISDN_type__gtpc_xer_, &OCTETSTRING_json_, &C__MSISDN_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING C__MSISDN_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t C__MSISDN_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t C__MSISDN_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t C__MSISDN_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t C__MSISDN_lengthf_descr_ = { "@GTPC_Types.C_MSISDN.lengthf", &INTEGER_ber_, &C__MSISDN_lengthf_raw_, &INTEGER_text_, &C__MSISDN_lengthf_xer_, &INTEGER_json_, &C__MSISDN_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING C__MSISDN_lengthf_default_coding("RAW"); const XERdescriptor_t C__MSISDN_msisdn_xer_ = { {"msisdn>\n", "msisdn>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int C__MSISDN_msisdn_oer_ext_arr_[0] = {}; const int C__MSISDN_msisdn_oer_p_[0] = {}; const TTCN_OERdescriptor_t C__MSISDN_msisdn_oer_ = { -1, TRUE, -1, FALSE, 0, 0, C__MSISDN_msisdn_oer_ext_arr_, 0, C__MSISDN_msisdn_oer_p_}; const TTCN_Typedescriptor_t C__MSISDN_msisdn_descr_ = { "@GTPC_Types.C_MSISDN.msisdn", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &C__MSISDN_msisdn_xer_, &OCTETSTRING_json_, &C__MSISDN_msisdn_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING C__MSISDN_msisdn_default_coding("RAW"); const TTCN_RAWdescriptor_t C__MSISDN_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for C__MSISDN const TTCN_Typedescriptor_t C__MSISDN_descr_ = { "@GTPC_Types.C_MSISDN", NULL, &C__MSISDN_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING C__MSISDN_default_coding("RAW"); const XERdescriptor_t Extended__RANAP__Cause_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int Extended__RANAP__Cause_type__gtpc_oer_ext_arr_[0] = {}; const int Extended__RANAP__Cause_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t Extended__RANAP__Cause_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Extended__RANAP__Cause_type__gtpc_oer_ext_arr_, 0, Extended__RANAP__Cause_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t Extended__RANAP__Cause_type__gtpc_descr_ = { "@GTPC_Types.Extended_RANAP_Cause.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Extended__RANAP__Cause_type__gtpc_xer_, &OCTETSTRING_json_, &Extended__RANAP__Cause_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Extended__RANAP__Cause_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t Extended__RANAP__Cause_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t Extended__RANAP__Cause_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t Extended__RANAP__Cause_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t Extended__RANAP__Cause_lengthf_descr_ = { "@GTPC_Types.Extended_RANAP_Cause.lengthf", &INTEGER_ber_, &Extended__RANAP__Cause_lengthf_raw_, &INTEGER_text_, &Extended__RANAP__Cause_lengthf_xer_, &INTEGER_json_, &Extended__RANAP__Cause_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Extended__RANAP__Cause_lengthf_default_coding("RAW"); const TTCN_RAWdescriptor_t Extended__RANAP__Cause_extended__ranap__cause_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t Extended__RANAP__Cause_extended__ranap__cause_xer_ = { {"extended_ranap_cause>\n", "extended_ranap_cause>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t Extended__RANAP__Cause_extended__ranap__cause_descr_ = { "@GTPC_Types.Extended_RANAP_Cause.extended_ranap_cause", &INTEGER_ber_, &Extended__RANAP__Cause_extended__ranap__cause_raw_, &INTEGER_text_, &Extended__RANAP__Cause_extended__ranap__cause_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Extended__RANAP__Cause_extended__ranap__cause_default_coding("RAW"); const TTCN_RAWdescriptor_t Extended__RANAP__Cause_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for Extended__RANAP__Cause const TTCN_Typedescriptor_t Extended__RANAP__Cause_descr_ = { "@GTPC_Types.Extended_RANAP_Cause", NULL, &Extended__RANAP__Cause_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t Extended__RANAP__Cause_explicitly__specified_xer_ = { {"explicitly_specified>\n", "explicitly_specified>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int Extended__RANAP__Cause_explicitly__specified_oer_ext_arr_[0] = {}; const int Extended__RANAP__Cause_explicitly__specified_oer_p_[0] = {}; const TTCN_OERdescriptor_t Extended__RANAP__Cause_explicitly__specified_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Extended__RANAP__Cause_explicitly__specified_oer_ext_arr_, 0, Extended__RANAP__Cause_explicitly__specified_oer_p_}; const TTCN_Typedescriptor_t Extended__RANAP__Cause_explicitly__specified_descr_ = { "@GTPC_Types.Extended_RANAP_Cause.explicitly_specified", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &Extended__RANAP__Cause_explicitly__specified_xer_, &OCTETSTRING_json_, &Extended__RANAP__Cause_explicitly__specified_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Extended__RANAP__Cause_explicitly__specified_default_coding("RAW"); UNIVERSAL_CHARSTRING Extended__RANAP__Cause_default_coding("RAW"); const XERdescriptor_t ENodeB__ID_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int ENodeB__ID_type__gtpc_oer_ext_arr_[0] = {}; const int ENodeB__ID_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t ENodeB__ID_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ENodeB__ID_type__gtpc_oer_ext_arr_, 0, ENodeB__ID_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t ENodeB__ID_type__gtpc_descr_ = { "@GTPC_Types.ENodeB_ID.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &ENodeB__ID_type__gtpc_xer_, &OCTETSTRING_json_, &ENodeB__ID_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ENodeB__ID_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t ENodeB__ID_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t ENodeB__ID_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t ENodeB__ID_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t ENodeB__ID_lengthf_descr_ = { "@GTPC_Types.ENodeB_ID.lengthf", &INTEGER_ber_, &ENodeB__ID_lengthf_raw_, &INTEGER_text_, &ENodeB__ID_lengthf_xer_, &INTEGER_json_, &ENodeB__ID_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ENodeB__ID_lengthf_default_coding("RAW"); const XERdescriptor_t ENodeB__ID_eNodeB__type_xer_ = { {"eNodeB_type>\n", "eNodeB_type>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int ENodeB__ID_eNodeB__type_oer_ext_arr_[0] = {}; const int ENodeB__ID_eNodeB__type_oer_p_[0] = {}; const TTCN_OERdescriptor_t ENodeB__ID_eNodeB__type_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ENodeB__ID_eNodeB__type_oer_ext_arr_, 0, ENodeB__ID_eNodeB__type_oer_p_}; const TTCN_Typedescriptor_t ENodeB__ID_eNodeB__type_descr_ = { "@GTPC_Types.ENodeB_ID.eNodeB_type", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &ENodeB__ID_eNodeB__type_xer_, &OCTETSTRING_json_, &ENodeB__ID_eNodeB__type_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ENodeB__ID_eNodeB__type_default_coding("RAW"); const TTCN_RAWdescriptor_t ENodeB__IDs_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for ENodeB__IDs const TTCN_Typedescriptor_t ENodeB__IDs_descr_ = { "@GTPC_Types.ENodeB_IDs", NULL, &ENodeB__IDs_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t HomeENodeB__ID_mcc1_xer_ = { {"mcc1>\n", "mcc1>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t HomeENodeB__ID_mcc1_descr_ = { "@GTPC_Types.HomeENodeB_ID.mcc1", NULL, &General__Types::HEX1_raw_, NULL, &HomeENodeB__ID_mcc1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING HomeENodeB__ID_mcc1_default_coding("RAW"); const XERdescriptor_t HomeENodeB__ID_mcc2_xer_ = { {"mcc2>\n", "mcc2>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t HomeENodeB__ID_mcc2_descr_ = { "@GTPC_Types.HomeENodeB_ID.mcc2", NULL, &General__Types::HEX1_raw_, NULL, &HomeENodeB__ID_mcc2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING HomeENodeB__ID_mcc2_default_coding("RAW"); const XERdescriptor_t HomeENodeB__ID_mcc3_xer_ = { {"mcc3>\n", "mcc3>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t HomeENodeB__ID_mcc3_descr_ = { "@GTPC_Types.HomeENodeB_ID.mcc3", NULL, &General__Types::HEX1_raw_, NULL, &HomeENodeB__ID_mcc3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING HomeENodeB__ID_mcc3_default_coding("RAW"); const XERdescriptor_t HomeENodeB__ID_mnc3_xer_ = { {"mnc3>\n", "mnc3>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t HomeENodeB__ID_mnc3_descr_ = { "@GTPC_Types.HomeENodeB_ID.mnc3", NULL, &General__Types::HEX1_raw_, NULL, &HomeENodeB__ID_mnc3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING HomeENodeB__ID_mnc3_default_coding("RAW"); const XERdescriptor_t HomeENodeB__ID_mnc1_xer_ = { {"mnc1>\n", "mnc1>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t HomeENodeB__ID_mnc1_descr_ = { "@GTPC_Types.HomeENodeB_ID.mnc1", NULL, &General__Types::HEX1_raw_, NULL, &HomeENodeB__ID_mnc1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING HomeENodeB__ID_mnc1_default_coding("RAW"); const XERdescriptor_t HomeENodeB__ID_mnc2_xer_ = { {"mnc2>\n", "mnc2>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t HomeENodeB__ID_mnc2_descr_ = { "@GTPC_Types.HomeENodeB_ID.mnc2", NULL, &General__Types::HEX1_raw_, NULL, &HomeENodeB__ID_mnc2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING HomeENodeB__ID_mnc2_default_coding("RAW"); const TTCN_RAWdescriptor_t HomeENodeB__ID_spare_raw_ = {4,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,4,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t HomeENodeB__ID_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 HomeENodeB__ID_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t HomeENodeB__ID_spare_descr_ = { "@GTPC_Types.HomeENodeB_ID.spare", &BITSTRING_ber_, &HomeENodeB__ID_spare_raw_, NULL, &HomeENodeB__ID_spare_xer_, &BITSTRING_json_, &HomeENodeB__ID_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING HomeENodeB__ID_spare_default_coding("RAW"); const TTCN_RAWdescriptor_t HomeENodeB__ID_homeENodeB__ID_raw_ = {28,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,28,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t HomeENodeB__ID_homeENodeB__ID_xer_ = { {"homeENodeB_ID>\n", "homeENodeB_ID>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t HomeENodeB__ID_homeENodeB__ID_descr_ = { "@GTPC_Types.HomeENodeB_ID.homeENodeB_ID", &BITSTRING_ber_, &HomeENodeB__ID_homeENodeB__ID_raw_, NULL, &HomeENodeB__ID_homeENodeB__ID_xer_, &BITSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING HomeENodeB__ID_homeENodeB__ID_default_coding("RAW"); const XERdescriptor_t HomeENodeB__ID_tac_xer_ = { {"tac>\n", "tac>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int HomeENodeB__ID_tac_oer_ext_arr_[0] = {}; const int HomeENodeB__ID_tac_oer_p_[0] = {}; const TTCN_OERdescriptor_t HomeENodeB__ID_tac_oer_ = { -1, TRUE, 2, FALSE, 0, 0, HomeENodeB__ID_tac_oer_ext_arr_, 0, HomeENodeB__ID_tac_oer_p_}; const TTCN_Typedescriptor_t HomeENodeB__ID_tac_descr_ = { "@GTPC_Types.HomeENodeB_ID.tac", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &HomeENodeB__ID_tac_xer_, &OCTETSTRING_json_, &HomeENodeB__ID_tac_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING HomeENodeB__ID_tac_default_coding("RAW"); const TTCN_RAWdescriptor_t HomeENodeB__ID_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for HomeENodeB__ID const TTCN_Typedescriptor_t HomeENodeB__ID_descr_ = { "@GTPC_Types.HomeENodeB_ID", NULL, &HomeENodeB__ID_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING HomeENodeB__ID_default_coding("RAW"); UNIVERSAL_CHARSTRING ENodeB__IDs_homeENodeB__ID_default_coding("RAW"); const XERdescriptor_t MacroENodeB__ID_mcc1_xer_ = { {"mcc1>\n", "mcc1>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t MacroENodeB__ID_mcc1_descr_ = { "@GTPC_Types.MacroENodeB_ID.mcc1", NULL, &General__Types::HEX1_raw_, NULL, &MacroENodeB__ID_mcc1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MacroENodeB__ID_mcc1_default_coding("RAW"); const XERdescriptor_t MacroENodeB__ID_mcc2_xer_ = { {"mcc2>\n", "mcc2>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t MacroENodeB__ID_mcc2_descr_ = { "@GTPC_Types.MacroENodeB_ID.mcc2", NULL, &General__Types::HEX1_raw_, NULL, &MacroENodeB__ID_mcc2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MacroENodeB__ID_mcc2_default_coding("RAW"); const XERdescriptor_t MacroENodeB__ID_mcc3_xer_ = { {"mcc3>\n", "mcc3>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t MacroENodeB__ID_mcc3_descr_ = { "@GTPC_Types.MacroENodeB_ID.mcc3", NULL, &General__Types::HEX1_raw_, NULL, &MacroENodeB__ID_mcc3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MacroENodeB__ID_mcc3_default_coding("RAW"); const XERdescriptor_t MacroENodeB__ID_mnc3_xer_ = { {"mnc3>\n", "mnc3>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t MacroENodeB__ID_mnc3_descr_ = { "@GTPC_Types.MacroENodeB_ID.mnc3", NULL, &General__Types::HEX1_raw_, NULL, &MacroENodeB__ID_mnc3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MacroENodeB__ID_mnc3_default_coding("RAW"); const XERdescriptor_t MacroENodeB__ID_mnc1_xer_ = { {"mnc1>\n", "mnc1>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t MacroENodeB__ID_mnc1_descr_ = { "@GTPC_Types.MacroENodeB_ID.mnc1", NULL, &General__Types::HEX1_raw_, NULL, &MacroENodeB__ID_mnc1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MacroENodeB__ID_mnc1_default_coding("RAW"); const XERdescriptor_t MacroENodeB__ID_mnc2_xer_ = { {"mnc2>\n", "mnc2>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t MacroENodeB__ID_mnc2_descr_ = { "@GTPC_Types.MacroENodeB_ID.mnc2", NULL, &General__Types::HEX1_raw_, NULL, &MacroENodeB__ID_mnc2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MacroENodeB__ID_mnc2_default_coding("RAW"); const TTCN_RAWdescriptor_t MacroENodeB__ID_spare_raw_ = {4,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,4,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MacroENodeB__ID_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 MacroENodeB__ID_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t MacroENodeB__ID_spare_descr_ = { "@GTPC_Types.MacroENodeB_ID.spare", &BITSTRING_ber_, &MacroENodeB__ID_spare_raw_, NULL, &MacroENodeB__ID_spare_xer_, &BITSTRING_json_, &MacroENodeB__ID_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MacroENodeB__ID_spare_default_coding("RAW"); const TTCN_RAWdescriptor_t MacroENodeB__ID_macroENodeB__ID_raw_ = {20,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,20,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t MacroENodeB__ID_macroENodeB__ID_xer_ = { {"macroENodeB_ID>\n", "macroENodeB_ID>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t MacroENodeB__ID_macroENodeB__ID_descr_ = { "@GTPC_Types.MacroENodeB_ID.macroENodeB_ID", &BITSTRING_ber_, &MacroENodeB__ID_macroENodeB__ID_raw_, NULL, &MacroENodeB__ID_macroENodeB__ID_xer_, &BITSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MacroENodeB__ID_macroENodeB__ID_default_coding("RAW"); const XERdescriptor_t MacroENodeB__ID_tac_xer_ = { {"tac>\n", "tac>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MacroENodeB__ID_tac_oer_ext_arr_[0] = {}; const int MacroENodeB__ID_tac_oer_p_[0] = {}; const TTCN_OERdescriptor_t MacroENodeB__ID_tac_oer_ = { -1, TRUE, 2, FALSE, 0, 0, MacroENodeB__ID_tac_oer_ext_arr_, 0, MacroENodeB__ID_tac_oer_p_}; const TTCN_Typedescriptor_t MacroENodeB__ID_tac_descr_ = { "@GTPC_Types.MacroENodeB_ID.tac", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &MacroENodeB__ID_tac_xer_, &OCTETSTRING_json_, &MacroENodeB__ID_tac_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MacroENodeB__ID_tac_default_coding("RAW"); const TTCN_RAWdescriptor_t MacroENodeB__ID_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MacroENodeB__ID const TTCN_Typedescriptor_t MacroENodeB__ID_descr_ = { "@GTPC_Types.MacroENodeB_ID", NULL, &MacroENodeB__ID_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MacroENodeB__ID_default_coding("RAW"); UNIVERSAL_CHARSTRING ENodeB__IDs_macroENodeB__ID_default_coding("RAW"); UNIVERSAL_CHARSTRING ENodeB__IDs_default_coding("RAW"); UNIVERSAL_CHARSTRING ENodeB__ID_eNodeB__ID_default_coding("RAW"); const TTCN_RAWdescriptor_t ENodeB__ID_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for ENodeB__ID const TTCN_Typedescriptor_t ENodeB__ID_descr_ = { "@GTPC_Types.ENodeB_ID", NULL, &ENodeB__ID_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ENodeB__ID_default_coding("RAW"); const XERdescriptor_t SelectionMode__NSAPI_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int SelectionMode__NSAPI_type__gtpc_oer_ext_arr_[0] = {}; const int SelectionMode__NSAPI_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t SelectionMode__NSAPI_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SelectionMode__NSAPI_type__gtpc_oer_ext_arr_, 0, SelectionMode__NSAPI_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t SelectionMode__NSAPI_type__gtpc_descr_ = { "@GTPC_Types.SelectionMode_NSAPI.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &SelectionMode__NSAPI_type__gtpc_xer_, &OCTETSTRING_json_, &SelectionMode__NSAPI_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SelectionMode__NSAPI_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t SelectionMode__NSAPI_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t SelectionMode__NSAPI_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t SelectionMode__NSAPI_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t SelectionMode__NSAPI_lengthf_descr_ = { "@GTPC_Types.SelectionMode_NSAPI.lengthf", &INTEGER_ber_, &SelectionMode__NSAPI_lengthf_raw_, &INTEGER_text_, &SelectionMode__NSAPI_lengthf_xer_, &INTEGER_json_, &SelectionMode__NSAPI_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SelectionMode__NSAPI_lengthf_default_coding("RAW"); const XERdescriptor_t SelectionMode__NSAPI_nsapi_xer_ = { {"nsapi>\n", "nsapi>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t SelectionMode__NSAPI_nsapi_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t SelectionMode__NSAPI_nsapi_descr_ = { "@GTPC_Types.SelectionMode_NSAPI.nsapi", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &SelectionMode__NSAPI_nsapi_xer_, &BITSTRING_json_, &SelectionMode__NSAPI_nsapi_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SelectionMode__NSAPI_nsapi_default_coding("RAW"); const XERdescriptor_t SelectionMode__NSAPI_spare1_xer_ = { {"spare1>\n", "spare1>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t SelectionMode__NSAPI_spare1_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t SelectionMode__NSAPI_spare1_descr_ = { "@GTPC_Types.SelectionMode_NSAPI.spare1", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &SelectionMode__NSAPI_spare1_xer_, &BITSTRING_json_, &SelectionMode__NSAPI_spare1_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SelectionMode__NSAPI_spare1_default_coding("RAW"); const XERdescriptor_t SelectionMode__NSAPI_selectionMode_xer_ = { {"selectionMode>\n", "selectionMode>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t SelectionMode__NSAPI_selectionMode_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t SelectionMode__NSAPI_selectionMode_descr_ = { "@GTPC_Types.SelectionMode_NSAPI.selectionMode", &BITSTRING_ber_, &General__Types::BIT2_raw_, NULL, &SelectionMode__NSAPI_selectionMode_xer_, &BITSTRING_json_, &SelectionMode__NSAPI_selectionMode_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SelectionMode__NSAPI_selectionMode_default_coding("RAW"); const XERdescriptor_t SelectionMode__NSAPI_spare2_xer_ = { {"spare2>\n", "spare2>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t SelectionMode__NSAPI_spare2_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t SelectionMode__NSAPI_spare2_descr_ = { "@GTPC_Types.SelectionMode_NSAPI.spare2", &BITSTRING_ber_, &General__Types::BIT6_raw_, NULL, &SelectionMode__NSAPI_spare2_xer_, &BITSTRING_json_, &SelectionMode__NSAPI_spare2_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SelectionMode__NSAPI_spare2_default_coding("RAW"); const TTCN_RAWdescriptor_t SelectionMode__NSAPI_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for SelectionMode__NSAPI const TTCN_Typedescriptor_t SelectionMode__NSAPI_descr_ = { "@GTPC_Types.SelectionMode_NSAPI", NULL, &SelectionMode__NSAPI_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SelectionMode__NSAPI_default_coding("RAW"); const XERdescriptor_t ULI__Timestamp_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int ULI__Timestamp_type__gtpc_oer_ext_arr_[0] = {}; const int ULI__Timestamp_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t ULI__Timestamp_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ULI__Timestamp_type__gtpc_oer_ext_arr_, 0, ULI__Timestamp_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t ULI__Timestamp_type__gtpc_descr_ = { "@GTPC_Types.ULI_Timestamp.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &ULI__Timestamp_type__gtpc_xer_, &OCTETSTRING_json_, &ULI__Timestamp_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ULI__Timestamp_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t ULI__Timestamp_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t ULI__Timestamp_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t ULI__Timestamp_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t ULI__Timestamp_lengthf_descr_ = { "@GTPC_Types.ULI_Timestamp.lengthf", &INTEGER_ber_, &ULI__Timestamp_lengthf_raw_, &INTEGER_text_, &ULI__Timestamp_lengthf_xer_, &INTEGER_json_, &ULI__Timestamp_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ULI__Timestamp_lengthf_default_coding("RAW"); const XERdescriptor_t ULI__Timestamp_uliTimestampValue_xer_ = { {"uliTimestampValue>\n", "uliTimestampValue>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int ULI__Timestamp_uliTimestampValue_oer_ext_arr_[0] = {}; const int ULI__Timestamp_uliTimestampValue_oer_p_[0] = {}; const TTCN_OERdescriptor_t ULI__Timestamp_uliTimestampValue_oer_ = { -1, TRUE, 4, FALSE, 0, 0, ULI__Timestamp_uliTimestampValue_oer_ext_arr_, 0, ULI__Timestamp_uliTimestampValue_oer_p_}; const TTCN_Typedescriptor_t ULI__Timestamp_uliTimestampValue_descr_ = { "@GTPC_Types.ULI_Timestamp.uliTimestampValue", &OCTETSTRING_ber_, &General__Types::OCT4_raw_, &OCTETSTRING_text_, &ULI__Timestamp_uliTimestampValue_xer_, &OCTETSTRING_json_, &ULI__Timestamp_uliTimestampValue_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ULI__Timestamp_uliTimestampValue_default_coding("RAW"); const TTCN_RAWdescriptor_t ULI__Timestamp_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for ULI__Timestamp const TTCN_Typedescriptor_t ULI__Timestamp_descr_ = { "@GTPC_Types.ULI_Timestamp", NULL, &ULI__Timestamp_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t ULI__Timestamp_explicitly__specified_xer_ = { {"explicitly_specified>\n", "explicitly_specified>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int ULI__Timestamp_explicitly__specified_oer_ext_arr_[0] = {}; const int ULI__Timestamp_explicitly__specified_oer_p_[0] = {}; const TTCN_OERdescriptor_t ULI__Timestamp_explicitly__specified_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ULI__Timestamp_explicitly__specified_oer_ext_arr_, 0, ULI__Timestamp_explicitly__specified_oer_p_}; const TTCN_Typedescriptor_t ULI__Timestamp_explicitly__specified_descr_ = { "@GTPC_Types.ULI_Timestamp.explicitly_specified", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &ULI__Timestamp_explicitly__specified_xer_, &OCTETSTRING_json_, &ULI__Timestamp_explicitly__specified_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ULI__Timestamp_explicitly__specified_default_coding("RAW"); UNIVERSAL_CHARSTRING ULI__Timestamp_default_coding("RAW"); const XERdescriptor_t LHN__ID__NSAPI_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int LHN__ID__NSAPI_type__gtpc_oer_ext_arr_[0] = {}; const int LHN__ID__NSAPI_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t LHN__ID__NSAPI_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, LHN__ID__NSAPI_type__gtpc_oer_ext_arr_, 0, LHN__ID__NSAPI_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t LHN__ID__NSAPI_type__gtpc_descr_ = { "@GTPC_Types.LHN_ID_NSAPI.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &LHN__ID__NSAPI_type__gtpc_xer_, &OCTETSTRING_json_, &LHN__ID__NSAPI_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LHN__ID__NSAPI_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t LHN__ID__NSAPI_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t LHN__ID__NSAPI_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t LHN__ID__NSAPI_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t LHN__ID__NSAPI_lengthf_descr_ = { "@GTPC_Types.LHN_ID_NSAPI.lengthf", &INTEGER_ber_, &LHN__ID__NSAPI_lengthf_raw_, &INTEGER_text_, &LHN__ID__NSAPI_lengthf_xer_, &INTEGER_json_, &LHN__ID__NSAPI_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LHN__ID__NSAPI_lengthf_default_coding("RAW"); const XERdescriptor_t LHN__ID__NSAPI_nsapi_xer_ = { {"nsapi>\n", "nsapi>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t LHN__ID__NSAPI_nsapi_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t LHN__ID__NSAPI_nsapi_descr_ = { "@GTPC_Types.LHN_ID_NSAPI.nsapi", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &LHN__ID__NSAPI_nsapi_xer_, &BITSTRING_json_, &LHN__ID__NSAPI_nsapi_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LHN__ID__NSAPI_nsapi_default_coding("RAW"); const XERdescriptor_t LHN__ID__NSAPI_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 LHN__ID__NSAPI_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t LHN__ID__NSAPI_spare_descr_ = { "@GTPC_Types.LHN_ID_NSAPI.spare", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &LHN__ID__NSAPI_spare_xer_, &BITSTRING_json_, &LHN__ID__NSAPI_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LHN__ID__NSAPI_spare_default_coding("RAW"); const TTCN_RAWdescriptor_t LHN__ID__NSAPI_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for LHN__ID__NSAPI const TTCN_Typedescriptor_t LHN__ID__NSAPI_descr_ = { "@GTPC_Types.LHN_ID_NSAPI", NULL, &LHN__ID__NSAPI_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t LHN__ID__NSAPI_lHN__ID_xer_ = { {"lHN_ID>\n", "lHN_ID>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int LHN__ID__NSAPI_lHN__ID_oer_ext_arr_[0] = {}; const int LHN__ID__NSAPI_lHN__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t LHN__ID__NSAPI_lHN__ID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LHN__ID__NSAPI_lHN__ID_oer_ext_arr_, 0, LHN__ID__NSAPI_lHN__ID_oer_p_}; const TTCN_Typedescriptor_t LHN__ID__NSAPI_lHN__ID_descr_ = { "@GTPC_Types.LHN_ID_NSAPI.lHN_ID", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &LHN__ID__NSAPI_lHN__ID_xer_, &OCTETSTRING_json_, &LHN__ID__NSAPI_lHN__ID_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LHN__ID__NSAPI_lHN__ID_default_coding("RAW"); UNIVERSAL_CHARSTRING LHN__ID__NSAPI_default_coding("RAW"); const XERdescriptor_t CN__OperatorSelectionEntity_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int CN__OperatorSelectionEntity_type__gtpc_oer_ext_arr_[0] = {}; const int CN__OperatorSelectionEntity_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t CN__OperatorSelectionEntity_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, CN__OperatorSelectionEntity_type__gtpc_oer_ext_arr_, 0, CN__OperatorSelectionEntity_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t CN__OperatorSelectionEntity_type__gtpc_descr_ = { "@GTPC_Types.CN_OperatorSelectionEntity.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &CN__OperatorSelectionEntity_type__gtpc_xer_, &OCTETSTRING_json_, &CN__OperatorSelectionEntity_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CN__OperatorSelectionEntity_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t CN__OperatorSelectionEntity_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t CN__OperatorSelectionEntity_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t CN__OperatorSelectionEntity_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t CN__OperatorSelectionEntity_lengthf_descr_ = { "@GTPC_Types.CN_OperatorSelectionEntity.lengthf", &INTEGER_ber_, &CN__OperatorSelectionEntity_lengthf_raw_, &INTEGER_text_, &CN__OperatorSelectionEntity_lengthf_xer_, &INTEGER_json_, &CN__OperatorSelectionEntity_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CN__OperatorSelectionEntity_lengthf_default_coding("RAW"); const XERdescriptor_t CN__OperatorSelectionEntity_selectionEntity_xer_ = { {"selectionEntity>\n", "selectionEntity>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t CN__OperatorSelectionEntity_selectionEntity_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t CN__OperatorSelectionEntity_selectionEntity_descr_ = { "@GTPC_Types.CN_OperatorSelectionEntity.selectionEntity", &BITSTRING_ber_, &General__Types::BIT2_raw_, NULL, &CN__OperatorSelectionEntity_selectionEntity_xer_, &BITSTRING_json_, &CN__OperatorSelectionEntity_selectionEntity_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CN__OperatorSelectionEntity_selectionEntity_default_coding("RAW"); const XERdescriptor_t CN__OperatorSelectionEntity_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 CN__OperatorSelectionEntity_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t CN__OperatorSelectionEntity_spare_descr_ = { "@GTPC_Types.CN_OperatorSelectionEntity.spare", &BITSTRING_ber_, &General__Types::BIT6_raw_, NULL, &CN__OperatorSelectionEntity_spare_xer_, &BITSTRING_json_, &CN__OperatorSelectionEntity_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CN__OperatorSelectionEntity_spare_default_coding("RAW"); const TTCN_RAWdescriptor_t CN__OperatorSelectionEntity_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for CN__OperatorSelectionEntity const TTCN_Typedescriptor_t CN__OperatorSelectionEntity_descr_ = { "@GTPC_Types.CN_OperatorSelectionEntity", NULL, &CN__OperatorSelectionEntity_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t CN__OperatorSelectionEntity_explicitly__specified_xer_ = { {"explicitly_specified>\n", "explicitly_specified>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int CN__OperatorSelectionEntity_explicitly__specified_oer_ext_arr_[0] = {}; const int CN__OperatorSelectionEntity_explicitly__specified_oer_p_[0] = {}; const TTCN_OERdescriptor_t CN__OperatorSelectionEntity_explicitly__specified_oer_ = { -1, TRUE, -1, FALSE, 0, 0, CN__OperatorSelectionEntity_explicitly__specified_oer_ext_arr_, 0, CN__OperatorSelectionEntity_explicitly__specified_oer_p_}; const TTCN_Typedescriptor_t CN__OperatorSelectionEntity_explicitly__specified_descr_ = { "@GTPC_Types.CN_OperatorSelectionEntity.explicitly_specified", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &CN__OperatorSelectionEntity_explicitly__specified_xer_, &OCTETSTRING_json_, &CN__OperatorSelectionEntity_explicitly__specified_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CN__OperatorSelectionEntity_explicitly__specified_default_coding("RAW"); UNIVERSAL_CHARSTRING CN__OperatorSelectionEntity_default_coding("RAW"); const XERdescriptor_t UE__UsageType_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int UE__UsageType_type__gtpc_oer_ext_arr_[0] = {}; const int UE__UsageType_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t UE__UsageType_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, UE__UsageType_type__gtpc_oer_ext_arr_, 0, UE__UsageType_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t UE__UsageType_type__gtpc_descr_ = { "@GTPC_Types.UE_UsageType.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &UE__UsageType_type__gtpc_xer_, &OCTETSTRING_json_, &UE__UsageType_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UE__UsageType_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t UE__UsageType_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t UE__UsageType_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t UE__UsageType_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t UE__UsageType_lengthf_descr_ = { "@GTPC_Types.UE_UsageType.lengthf", &INTEGER_ber_, &UE__UsageType_lengthf_raw_, &INTEGER_text_, &UE__UsageType_lengthf_xer_, &INTEGER_json_, &UE__UsageType_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UE__UsageType_lengthf_default_coding("RAW"); const XERdescriptor_t UE__UsageType_uE__UsageTypeValue_xer_ = { {"uE_UsageTypeValue>\n", "uE_UsageTypeValue>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t UE__UsageType_uE__UsageTypeValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t UE__UsageType_uE__UsageTypeValue_descr_ = { "@GTPC_Types.UE_UsageType.uE_UsageTypeValue", &INTEGER_ber_, &General__Types::LIN4__BO__LAST_raw_, &INTEGER_text_, &UE__UsageType_uE__UsageTypeValue_xer_, &INTEGER_json_, &UE__UsageType_uE__UsageTypeValue_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UE__UsageType_uE__UsageTypeValue_default_coding("RAW"); const TTCN_RAWdescriptor_t UE__UsageType_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for UE__UsageType const TTCN_Typedescriptor_t UE__UsageType_descr_ = { "@GTPC_Types.UE_UsageType", NULL, &UE__UsageType_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UE__UsageType_default_coding("RAW"); const XERdescriptor_t ExtendedCommonFlagsII_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int ExtendedCommonFlagsII_type__gtpc_oer_ext_arr_[0] = {}; const int ExtendedCommonFlagsII_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t ExtendedCommonFlagsII_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExtendedCommonFlagsII_type__gtpc_oer_ext_arr_, 0, ExtendedCommonFlagsII_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t ExtendedCommonFlagsII_type__gtpc_descr_ = { "@GTPC_Types.ExtendedCommonFlagsII.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &ExtendedCommonFlagsII_type__gtpc_xer_, &OCTETSTRING_json_, &ExtendedCommonFlagsII_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ExtendedCommonFlagsII_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t ExtendedCommonFlagsII_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t ExtendedCommonFlagsII_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t ExtendedCommonFlagsII_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t ExtendedCommonFlagsII_lengthf_descr_ = { "@GTPC_Types.ExtendedCommonFlagsII.lengthf", &INTEGER_ber_, &ExtendedCommonFlagsII_lengthf_raw_, &INTEGER_text_, &ExtendedCommonFlagsII_lengthf_xer_, &INTEGER_json_, &ExtendedCommonFlagsII_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ExtendedCommonFlagsII_lengthf_default_coding("RAW"); const XERdescriptor_t ExtendedCommonFlagsII_pnsi_xer_ = { {"pnsi>\n", "pnsi>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t ExtendedCommonFlagsII_pnsi_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t ExtendedCommonFlagsII_pnsi_descr_ = { "@GTPC_Types.ExtendedCommonFlagsII.pnsi", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &ExtendedCommonFlagsII_pnsi_xer_, &BITSTRING_json_, &ExtendedCommonFlagsII_pnsi_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ExtendedCommonFlagsII_pnsi_default_coding("RAW"); const XERdescriptor_t ExtendedCommonFlagsII_dtci_xer_ = { {"dtci>\n", "dtci>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t ExtendedCommonFlagsII_dtci_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t ExtendedCommonFlagsII_dtci_descr_ = { "@GTPC_Types.ExtendedCommonFlagsII.dtci", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &ExtendedCommonFlagsII_dtci_xer_, &BITSTRING_json_, &ExtendedCommonFlagsII_dtci_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ExtendedCommonFlagsII_dtci_default_coding("RAW"); const XERdescriptor_t ExtendedCommonFlagsII_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 ExtendedCommonFlagsII_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t ExtendedCommonFlagsII_spare_descr_ = { "@GTPC_Types.ExtendedCommonFlagsII.spare", &BITSTRING_ber_, &General__Types::BIT6_raw_, NULL, &ExtendedCommonFlagsII_spare_xer_, &BITSTRING_json_, &ExtendedCommonFlagsII_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ExtendedCommonFlagsII_spare_default_coding("RAW"); const TTCN_RAWdescriptor_t ExtendedCommonFlagsII_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for ExtendedCommonFlagsII const TTCN_Typedescriptor_t ExtendedCommonFlagsII_descr_ = { "@GTPC_Types.ExtendedCommonFlagsII", NULL, &ExtendedCommonFlagsII_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t ExtendedCommonFlagsII_explicitly__specified_xer_ = { {"explicitly_specified>\n", "explicitly_specified>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int ExtendedCommonFlagsII_explicitly__specified_oer_ext_arr_[0] = {}; const int ExtendedCommonFlagsII_explicitly__specified_oer_p_[0] = {}; const TTCN_OERdescriptor_t ExtendedCommonFlagsII_explicitly__specified_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExtendedCommonFlagsII_explicitly__specified_oer_ext_arr_, 0, ExtendedCommonFlagsII_explicitly__specified_oer_p_}; const TTCN_Typedescriptor_t ExtendedCommonFlagsII_explicitly__specified_descr_ = { "@GTPC_Types.ExtendedCommonFlagsII.explicitly_specified", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &ExtendedCommonFlagsII_explicitly__specified_xer_, &OCTETSTRING_json_, &ExtendedCommonFlagsII_explicitly__specified_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ExtendedCommonFlagsII_explicitly__specified_default_coding("RAW"); UNIVERSAL_CHARSTRING ExtendedCommonFlagsII_default_coding("RAW"); const XERdescriptor_t NodeIdentifier_type__gtpc_xer_ = { {"type_gtpc>\n", "type_gtpc>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int NodeIdentifier_type__gtpc_oer_ext_arr_[0] = {}; const int NodeIdentifier_type__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t NodeIdentifier_type__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, NodeIdentifier_type__gtpc_oer_ext_arr_, 0, NodeIdentifier_type__gtpc_oer_p_}; const TTCN_Typedescriptor_t NodeIdentifier_type__gtpc_descr_ = { "@GTPC_Types.NodeIdentifier.type_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &NodeIdentifier_type__gtpc_xer_, &OCTETSTRING_json_, &NodeIdentifier_type__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING NodeIdentifier_type__gtpc_default_coding("RAW"); const TTCN_RAWdescriptor_t NodeIdentifier_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t NodeIdentifier_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t NodeIdentifier_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t NodeIdentifier_lengthf_descr_ = { "@GTPC_Types.NodeIdentifier.lengthf", &INTEGER_ber_, &NodeIdentifier_lengthf_raw_, &INTEGER_text_, &NodeIdentifier_lengthf_xer_, &INTEGER_json_, &NodeIdentifier_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING NodeIdentifier_lengthf_default_coding("RAW"); const XERdescriptor_t NodeIdentifier_nodeIdentifier_xer_ = { {"nodeIdentifier>\n", "nodeIdentifier>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int NodeIdentifier_nodeIdentifier_oer_ext_arr_[0] = {}; const int NodeIdentifier_nodeIdentifier_oer_p_[0] = {}; const TTCN_OERdescriptor_t NodeIdentifier_nodeIdentifier_oer_ = { -1, TRUE, -1, FALSE, 0, 0, NodeIdentifier_nodeIdentifier_oer_ext_arr_, 0, NodeIdentifier_nodeIdentifier_oer_p_}; const TTCN_Typedescriptor_t NodeIdentifier_nodeIdentifier_descr_ = { "@GTPC_Types.NodeIdentifier.nodeIdentifier", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &NodeIdentifier_nodeIdentifier_xer_, &OCTETSTRING_json_, &NodeIdentifier_nodeIdentifier_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING NodeIdentifier_nodeIdentifier_default_coding("RAW"); const TTCN_RAWdescriptor_t NodeIdentifier_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for NodeIdentifier const TTCN_Typedescriptor_t NodeIdentifier_descr_ = { "@GTPC_Types.NodeIdentifier", NULL, &NodeIdentifier_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING NodeIdentifier_default_coding("RAW"); const XERdescriptor_t MessageType__gtpc_xer_ = { {"MessageType_gtpc>\n", "MessageType_gtpc>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int MessageType__gtpc_oer_ext_arr_[0] = {}; const int MessageType__gtpc_oer_p_[0] = {}; const TTCN_OERdescriptor_t MessageType__gtpc_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MessageType__gtpc_oer_ext_arr_, 0, MessageType__gtpc_oer_p_}; const TTCN_Typedescriptor_t MessageType__gtpc_descr_ = { "@GTPC_Types.MessageType_gtpc", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MessageType__gtpc_xer_, &OCTETSTRING_json_, &MessageType__gtpc_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MessageType__gtpc_default_coding("RAW"); OCTETSTRING const_echoRequest; const OCTETSTRING& echoRequest = const_echoRequest; OCTETSTRING const_echoResponse; const OCTETSTRING& echoResponse = const_echoResponse; OCTETSTRING const_versionNotSupported; const OCTETSTRING& versionNotSupported = const_versionNotSupported; OCTETSTRING const_createPDPContextRequest; const OCTETSTRING& createPDPContextRequest = const_createPDPContextRequest; OCTETSTRING const_createPDPContextResponse; const OCTETSTRING& createPDPContextResponse = const_createPDPContextResponse; OCTETSTRING const_updatePDPContextRequest; const OCTETSTRING& updatePDPContextRequest = const_updatePDPContextRequest; OCTETSTRING const_updatePDPContextResponse; const OCTETSTRING& updatePDPContextResponse = const_updatePDPContextResponse; OCTETSTRING const_deletePDPContextRequest; const OCTETSTRING& deletePDPContextRequest = const_deletePDPContextRequest; OCTETSTRING const_deletePDPContextResponse; const OCTETSTRING& deletePDPContextResponse = const_deletePDPContextResponse; OCTETSTRING const_initiatePDPContextActivationRequest; const OCTETSTRING& initiatePDPContextActivationRequest = const_initiatePDPContextActivationRequest; OCTETSTRING const_initiatePDPContextActivationResponse; const OCTETSTRING& initiatePDPContextActivationResponse = const_initiatePDPContextActivationResponse; OCTETSTRING const_pduNotificationRequest; const OCTETSTRING& pduNotificationRequest = const_pduNotificationRequest; OCTETSTRING const_pduNotificationResponse; const OCTETSTRING& pduNotificationResponse = const_pduNotificationResponse; OCTETSTRING const_pduNotificationRejectRequest; const OCTETSTRING& pduNotificationRejectRequest = const_pduNotificationRejectRequest; OCTETSTRING const_pduNotificationRejectResponse; const OCTETSTRING& pduNotificationRejectResponse = const_pduNotificationRejectResponse; OCTETSTRING const_supportedExtHeadersNotification; const OCTETSTRING& supportedExtHeadersNotification = const_supportedExtHeadersNotification; OCTETSTRING const_sendRoutingInfoForGPRSRequest; const OCTETSTRING& sendRoutingInfoForGPRSRequest = const_sendRoutingInfoForGPRSRequest; OCTETSTRING const_sendRoutingInfoForGPRSResponse; const OCTETSTRING& sendRoutingInfoForGPRSResponse = const_sendRoutingInfoForGPRSResponse; OCTETSTRING const_failureReportRequest; const OCTETSTRING& failureReportRequest = const_failureReportRequest; OCTETSTRING const_failureReportResponse; const OCTETSTRING& failureReportResponse = const_failureReportResponse; OCTETSTRING const_noteMS__GPRSPresentRequest; const OCTETSTRING& noteMS__GPRSPresentRequest = const_noteMS__GPRSPresentRequest; OCTETSTRING const_noteMS__GPRSPresentResponse; const OCTETSTRING& noteMS__GPRSPresentResponse = const_noteMS__GPRSPresentResponse; OCTETSTRING const_identificationRequest; const OCTETSTRING& identificationRequest = const_identificationRequest; OCTETSTRING const_identificationResponse; const OCTETSTRING& identificationResponse = const_identificationResponse; OCTETSTRING const_sgsnContextRequest; const OCTETSTRING& sgsnContextRequest = const_sgsnContextRequest; OCTETSTRING const_sgsnContextResponse; const OCTETSTRING& sgsnContextResponse = const_sgsnContextResponse; OCTETSTRING const_sgsnContextAcknowledge; const OCTETSTRING& sgsnContextAcknowledge = const_sgsnContextAcknowledge; OCTETSTRING const_forwardRelocationRequest; const OCTETSTRING& forwardRelocationRequest = const_forwardRelocationRequest; OCTETSTRING const_forwardRelocationResponse; const OCTETSTRING& forwardRelocationResponse = const_forwardRelocationResponse; OCTETSTRING const_forwardRelocationComplete; const OCTETSTRING& forwardRelocationComplete = const_forwardRelocationComplete; OCTETSTRING const_relocationCancelRequest; const OCTETSTRING& relocationCancelRequest = const_relocationCancelRequest; OCTETSTRING const_relocationCancelResponse; const OCTETSTRING& relocationCancelResponse = const_relocationCancelResponse; OCTETSTRING const_forwardSRNSContext; const OCTETSTRING& forwardSRNSContext = const_forwardSRNSContext; OCTETSTRING const_forwardRelocationCompleteAcknowledge; const OCTETSTRING& forwardRelocationCompleteAcknowledge = const_forwardRelocationCompleteAcknowledge; OCTETSTRING const_forwardSRNSContextAcknowledge; const OCTETSTRING& forwardSRNSContextAcknowledge = const_forwardSRNSContextAcknowledge; OCTETSTRING const_ueRegistrationQueryRequest; const OCTETSTRING& ueRegistrationQueryRequest = const_ueRegistrationQueryRequest; OCTETSTRING const_ueRegistrationQueryResponse; const OCTETSTRING& ueRegistrationQueryResponse = const_ueRegistrationQueryResponse; OCTETSTRING const_rANInformationRelay; const OCTETSTRING& rANInformationRelay = const_rANInformationRelay; OCTETSTRING const_mBMSNotificationRequest; const OCTETSTRING& mBMSNotificationRequest = const_mBMSNotificationRequest; OCTETSTRING const_mBMSNotificationResponse; const OCTETSTRING& mBMSNotificationResponse = const_mBMSNotificationResponse; OCTETSTRING const_mBMSNotificationRejectRequest; const OCTETSTRING& mBMSNotificationRejectRequest = const_mBMSNotificationRejectRequest; OCTETSTRING const_mBMSNotificationRejectResponse; const OCTETSTRING& mBMSNotificationRejectResponse = const_mBMSNotificationRejectResponse; OCTETSTRING const_createMBMSContextRequest; const OCTETSTRING& createMBMSContextRequest = const_createMBMSContextRequest; OCTETSTRING const_createMBMSContextResponse; const OCTETSTRING& createMBMSContextResponse = const_createMBMSContextResponse; OCTETSTRING const_updateMBMSContextRequest; const OCTETSTRING& updateMBMSContextRequest = const_updateMBMSContextRequest; OCTETSTRING const_updateMBMSContextResponse; const OCTETSTRING& updateMBMSContextResponse = const_updateMBMSContextResponse; OCTETSTRING const_deleteMBMSContextRequest; const OCTETSTRING& deleteMBMSContextRequest = const_deleteMBMSContextRequest; OCTETSTRING const_deleteMBMSContextResponse; const OCTETSTRING& deleteMBMSContextResponse = const_deleteMBMSContextResponse; OCTETSTRING const_mBMSRegistrationRequest; const OCTETSTRING& mBMSRegistrationRequest = const_mBMSRegistrationRequest; OCTETSTRING const_mBMSRegistrationResponse; const OCTETSTRING& mBMSRegistrationResponse = const_mBMSRegistrationResponse; OCTETSTRING const_mBMSDeRegistrationRequest; const OCTETSTRING& mBMSDeRegistrationRequest = const_mBMSDeRegistrationRequest; OCTETSTRING const_mBMSDeRegistrationResponse; const OCTETSTRING& mBMSDeRegistrationResponse = const_mBMSDeRegistrationResponse; OCTETSTRING const_mBMSSessionStartRequest; const OCTETSTRING& mBMSSessionStartRequest = const_mBMSSessionStartRequest; OCTETSTRING const_mBMSSessionStartResponse; const OCTETSTRING& mBMSSessionStartResponse = const_mBMSSessionStartResponse; OCTETSTRING const_mBMSSessionStopRequest; const OCTETSTRING& mBMSSessionStopRequest = const_mBMSSessionStopRequest; OCTETSTRING const_mBMSSessionStopResponse; const OCTETSTRING& mBMSSessionStopResponse = const_mBMSSessionStopResponse; OCTETSTRING const_mBMSSessionUpdateRequest; const OCTETSTRING& mBMSSessionUpdateRequest = const_mBMSSessionUpdateRequest; OCTETSTRING const_mBMSSessionUpdateResponse; const OCTETSTRING& mBMSSessionUpdateResponse = const_mBMSSessionUpdateResponse; OCTETSTRING const_mS__InfoChangeNotificationRequest; const OCTETSTRING& mS__InfoChangeNotificationRequest = const_mS__InfoChangeNotificationRequest; OCTETSTRING const_mS__InfoChangeNotificationResponse; const OCTETSTRING& mS__InfoChangeNotificationResponse = const_mS__InfoChangeNotificationResponse; OCTETSTRING const_g__PDU; const OCTETSTRING& g__PDU = const_g__PDU; const TTCN_RAWdescriptor_t EchoRequest_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for EchoRequest const TTCN_Typedescriptor_t EchoRequest_descr_ = { "@GTPC_Types.EchoRequest", NULL, &EchoRequest_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EchoRequest_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING EchoRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING EchoResponse_recovery_default_coding("RAW"); const TTCN_RAWdescriptor_t EchoResponse_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for EchoResponse const TTCN_Typedescriptor_t EchoResponse_descr_ = { "@GTPC_Types.EchoResponse", NULL, &EchoResponse_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EchoResponse_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING EchoResponse_default_coding("RAW"); const TTCN_RAWdescriptor_t VersionNotSupported_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for VersionNotSupported const TTCN_Typedescriptor_t VersionNotSupported_descr_ = { "@GTPC_Types.VersionNotSupported", NULL, &VersionNotSupported_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING VersionNotSupported_default_coding("RAW"); UNIVERSAL_CHARSTRING SupportedExtensionHeadersNotification_extensionHeaderTypeList_default_coding("RAW"); const TTCN_RAWdescriptor_t SupportedExtensionHeadersNotification_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for SupportedExtensionHeadersNotification const TTCN_Typedescriptor_t SupportedExtensionHeadersNotification_descr_ = { "@GTPC_Types.SupportedExtensionHeadersNotification", NULL, &SupportedExtensionHeadersNotification_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SupportedExtensionHeadersNotification_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextRequest_teidDataI_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextRequest_nsapi_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextRequest_sgsn__addr__signalling_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextRequest_sgsn__addr__traffic_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextRequest_qualityOfServiceProfile_default_coding("RAW"); const TTCN_RAWdescriptor_t CreatePDPContextRequest_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for CreatePDPContextRequest const TTCN_Typedescriptor_t CreatePDPContextRequest_descr_ = { "@GTPC_Types.CreatePDPContextRequest", NULL, &CreatePDPContextRequest_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CreatePDPContextRequest_imsi_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextRequest_rai_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextRequest_recovery_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextRequest_selectionMode_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextRequest_teidControlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextRequest_linked__nsapi_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextRequest_charging__char_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextRequest_trace__ref_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextRequest_trace__type_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextRequest_endUserAddress_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextRequest_accessPointName_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextRequest_protConfigOptions_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextRequest_msisdn_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextRequest_tft_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextRequest_triggerId_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextRequest_omcId_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextRequest_commonFlags_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextRequest_aPN__Restriction_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextRequest_ratType_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextRequest_userLocationInformation_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextRequest_mS__TimeZone_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextRequest_imeisv_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextRequest_camelChargingInformationContainer_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextRequest_additionalTraceInfo_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextRequest_correlationID_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextRequest_evolvedAllocationRetentionPriorityI_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextRequest_extendedCommonFlags_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextRequest_userCSGInformation_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextRequest_aPN__AMBR_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextRequest_signallingPriorityIndication_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextRequest_cN__OperatorSelectionEntity_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextRequest_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextResponse_cause_default_coding("RAW"); const TTCN_RAWdescriptor_t CreatePDPContextResponse_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for CreatePDPContextResponse const TTCN_Typedescriptor_t CreatePDPContextResponse_descr_ = { "@GTPC_Types.CreatePDPContextResponse", NULL, &CreatePDPContextResponse_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CreatePDPContextResponse_reorderingRequired_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextResponse_recovery_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextResponse_teidDataI_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextResponse_teidControlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextResponse_nsapi_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextResponse_chargingID_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextResponse_endUserAddress_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextResponse_protConfigOptions_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextResponse_ggsn__addr__controlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextResponse_ggsn__addr__traffic_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextResponse_alt__ggsn__addr__controlPane_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextResponse_alt__ggsn__addr__traffic_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextResponse_qualityOfServiceProfile_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextResponse_commonFlags_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextResponse_aPN__Restriction_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextResponse_mS__InfoChangeReportingAction_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextResponse_bearerControlMode_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextResponse_evolvedAllocationRetentionPriorityI_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextResponse_extendedCommonFlag_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextResponse_csg__information__reporting__action_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextResponse_aPN__AMBR_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextResponse_gGSN__BackOffTime_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextResponse_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING CreatePDPContextResponse_default_coding("RAW"); const TTCN_RAWdescriptor_t UpdatePDPContextRequest_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for UpdatePDPContextRequest const TTCN_Typedescriptor_t UpdatePDPContextRequest_descr_ = { "@GTPC_Types.UpdatePDPContextRequest", NULL, &UpdatePDPContextRequest_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UpdatePDPContextRequestSGSN_teidDataI_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestSGSN_nsapi_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestSGSN_sgsn__addr__controlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestSGSN_sgsn__addr__traffic_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestSGSN_qualityOfServiceProfile_default_coding("RAW"); const TTCN_RAWdescriptor_t UpdatePDPContextRequestSGSN_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for UpdatePDPContextRequestSGSN const TTCN_Typedescriptor_t UpdatePDPContextRequestSGSN_descr_ = { "@GTPC_Types.UpdatePDPContextRequestSGSN", NULL, &UpdatePDPContextRequestSGSN_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UpdatePDPContextRequestSGSN_imsi_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestSGSN_rai_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestSGSN_recovery_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestSGSN_teidControlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestSGSN_trace__ref_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestSGSN_trace__type_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestSGSN_protConfigOptions_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestSGSN_alt__ggsn__addr__controlPane_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestSGSN_alt__ggsn__addr__traffic_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestSGSN_tft_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestSGSN_triggerId_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestSGSN_omcId_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestSGSN_commonFlags_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestSGSN_ratType_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestSGSN_userLocationInformation_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestSGSN_mS__TimeZone_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestSGSN_additionalTraceInfo_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestSGSN_directTunnelFlags_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestSGSN_evolvedAllocationRetentionPriorityI_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestSGSN_extendedCommonFlags_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestSGSN_userCSGInformation_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestSGSN_aPN__AMBR_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestSGSN_signallingPriorityIndication_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestSGSN_cN__OperatorSelectionEntity_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestSGSN_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestSGSN_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequest_updatePDPContextRequestSGSN_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestGGSN_nsapi_default_coding("RAW"); const TTCN_RAWdescriptor_t UpdatePDPContextRequestGGSN_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for UpdatePDPContextRequestGGSN const TTCN_Typedescriptor_t UpdatePDPContextRequestGGSN_descr_ = { "@GTPC_Types.UpdatePDPContextRequestGGSN", NULL, &UpdatePDPContextRequestGGSN_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UpdatePDPContextRequestGGSN_imsi_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestGGSN_recovery_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestGGSN_endUserAddress_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestGGSN_protConfigOptions_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestGGSN_qualityOfServiceProfile_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestGGSN_tft_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestGGSN_commonFlags_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestGGSN_aPN__Restriction_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestGGSN_mS__InfoChangeReportingAction_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestGGSN_directTunnelFlags_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestGGSN_bearerControlMode_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestGGSN_evolvedAllocationRetentionPriorityI_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestGGSN_extendedCommonFlags_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestGGSN_cSGInfoReportingAction_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestGGSN_aPN__AMBR_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestGGSN_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestGGSN_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequest_updatePDPContextRequestGGSN_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestCGW_nsapi_default_coding("RAW"); const TTCN_RAWdescriptor_t UpdatePDPContextRequestCGW_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for UpdatePDPContextRequestCGW const TTCN_Typedescriptor_t UpdatePDPContextRequestCGW_descr_ = { "@GTPC_Types.UpdatePDPContextRequestCGW", NULL, &UpdatePDPContextRequestCGW_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UpdatePDPContextRequestCGW_imsi_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestCGW_recovery_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestCGW_endUserAddress_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestCGW_protConfigOptions_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestCGW_qualityOfServiceProfile_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestCGW_tft_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestCGW_commonFlags_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestCGW_aPN__Restriction_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestCGW_mS__InfoChangeReportingAction_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestCGW_directTunnelFlags_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestCGW_bearerControlMode_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestCGW_evolvedAllocationRetentionPriorityI_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestCGW_cSGInfoReportingAction_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestCGW_aPN__AMBR_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestCGW_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequestCGW_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequest_updatePDPContextRequestCGW_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextRequest_default_coding("RAW"); const TTCN_RAWdescriptor_t UpdatePDPContextResponse_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for UpdatePDPContextResponse const TTCN_Typedescriptor_t UpdatePDPContextResponse_descr_ = { "@GTPC_Types.UpdatePDPContextResponse", NULL, &UpdatePDPContextResponse_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UpdatePDPContextResponseSGSN_cause_default_coding("RAW"); const TTCN_RAWdescriptor_t UpdatePDPContextResponseSGSN_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for UpdatePDPContextResponseSGSN const TTCN_Typedescriptor_t UpdatePDPContextResponseSGSN_descr_ = { "@GTPC_Types.UpdatePDPContextResponseSGSN", NULL, &UpdatePDPContextResponseSGSN_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UpdatePDPContextResponseSGSN_recovery_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseSGSN_teidDataI_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseSGSN_protConfigOptions_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseSGSN_sgsn__addr__traffic_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseSGSN_qualityOfServiceProfile_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseSGSN_userLocationInformation_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseSGSN_mS__TimeZone_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseSGSN_directTunnelFlags_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseSGSN_evolvedAllocationRetentionPriorityI_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseSGSN_aPN__AMBR_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseSGSN_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseSGSN_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponse_updatePDPContextResponseSGSN_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseGGSN_cause_default_coding("RAW"); const TTCN_RAWdescriptor_t UpdatePDPContextResponseGGSN_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for UpdatePDPContextResponseGGSN const TTCN_Typedescriptor_t UpdatePDPContextResponseGGSN_descr_ = { "@GTPC_Types.UpdatePDPContextResponseGGSN", NULL, &UpdatePDPContextResponseGGSN_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UpdatePDPContextResponseGGSN_recovery_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseGGSN_teidDataI_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseGGSN_teidControlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseGGSN_chargingID_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseGGSN_protConfigOptions_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseGGSN_ggsn__addr__controlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseGGSN_ggsn__addr__traffic_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseGGSN_alt__ggsn__addr__controlPane_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseGGSN_alt__ggsn__addr__traffic_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseGGSN_qualityOfServiceProfile_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseGGSN_commonFlags_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseGGSN_aPN__Restriction_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseGGSN_mS__InfoChangeReportingAction_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseGGSN_bearerControlMode_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseGGSN_evolvedAllocationRetentionPriorityI_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseGGSN_csg__information__reporting__action_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseGGSN_aPN__AMBR_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseGGSN_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseGGSN_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponse_updatePDPContextResponseGGSN_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseCGW_cause_default_coding("RAW"); const TTCN_RAWdescriptor_t UpdatePDPContextResponseCGW_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for UpdatePDPContextResponseCGW const TTCN_Typedescriptor_t UpdatePDPContextResponseCGW_descr_ = { "@GTPC_Types.UpdatePDPContextResponseCGW", NULL, &UpdatePDPContextResponseCGW_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UpdatePDPContextResponseCGW_recovery_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseCGW_teidDataI_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseCGW_teidControlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseCGW_chargingID_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseCGW_protConfigOptions_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseCGW_ggsn__addr__controlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseCGW_ggsn__addr__traffic_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseCGW_alt__ggsn__addr__controlPane_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseCGW_alt__ggsn__addr__traffic_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseCGW_qualityOfServiceProfile_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseCGW_commonFlags_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseCGW_aPN__Restriction_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseCGW_mS__InfoChangeReportingAction_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseCGW_bearerControlMode_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseCGW_evolvedAllocationRetentionPriorityI_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseCGW_aPN__AMBR_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseCGW_chargingGatewayAddress_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseCGW_alt__chargingGatewayAddress_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseCGW_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponseCGW_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponse_updatePDPContextResponseCGW_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdatePDPContextResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING DeletePDPContextRequest_nsapi_default_coding("RAW"); const TTCN_RAWdescriptor_t DeletePDPContextRequest_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for DeletePDPContextRequest const TTCN_Typedescriptor_t DeletePDPContextRequest_descr_ = { "@GTPC_Types.DeletePDPContextRequest", NULL, &DeletePDPContextRequest_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING DeletePDPContextRequest_cause_default_coding("RAW"); UNIVERSAL_CHARSTRING DeletePDPContextRequest_tearDownIndicator_default_coding("RAW"); UNIVERSAL_CHARSTRING DeletePDPContextRequest_protConfigOptions_default_coding("RAW"); UNIVERSAL_CHARSTRING DeletePDPContextRequest_userLocationInformation_default_coding("RAW"); UNIVERSAL_CHARSTRING DeletePDPContextRequest_mS__TimeZone_default_coding("RAW"); UNIVERSAL_CHARSTRING DeletePDPContextRequest_extendedCommonFlags_default_coding("RAW"); UNIVERSAL_CHARSTRING DeletePDPContextRequest_uLI__Timestamp_default_coding("RAW"); UNIVERSAL_CHARSTRING DeletePDPContextRequest_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING DeletePDPContextRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING DeletePDPContextResponse_cause_default_coding("RAW"); const TTCN_RAWdescriptor_t DeletePDPContextResponse_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for DeletePDPContextResponse const TTCN_Typedescriptor_t DeletePDPContextResponse_descr_ = { "@GTPC_Types.DeletePDPContextResponse", NULL, &DeletePDPContextResponse_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING DeletePDPContextResponse_protConfigOptions_default_coding("RAW"); UNIVERSAL_CHARSTRING DeletePDPContextResponse_userLocationInformation_default_coding("RAW"); UNIVERSAL_CHARSTRING DeletePDPContextResponse_mS__TimeZone_default_coding("RAW"); UNIVERSAL_CHARSTRING DeletePDPContextResponse_uLI__Timestamp_default_coding("RAW"); UNIVERSAL_CHARSTRING DeletePDPContextResponse_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING DeletePDPContextResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING PDU__NotificationRequest_imsi_default_coding("RAW"); UNIVERSAL_CHARSTRING PDU__NotificationRequest_teidControlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING PDU__NotificationRequest_endUserAddress_default_coding("RAW"); UNIVERSAL_CHARSTRING PDU__NotificationRequest_accessPointName_default_coding("RAW"); UNIVERSAL_CHARSTRING PDU__NotificationRequest_ggsn__addr__controlPlane_default_coding("RAW"); const TTCN_RAWdescriptor_t PDU__NotificationRequest_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for PDU__NotificationRequest const TTCN_Typedescriptor_t PDU__NotificationRequest_descr_ = { "@GTPC_Types.PDU_NotificationRequest", NULL, &PDU__NotificationRequest_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__NotificationRequest_protConfigOptions_default_coding("RAW"); UNIVERSAL_CHARSTRING PDU__NotificationRequest_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING PDU__NotificationRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING PDU__NotificationResponse_cause_default_coding("RAW"); const TTCN_RAWdescriptor_t PDU__NotificationResponse_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for PDU__NotificationResponse const TTCN_Typedescriptor_t PDU__NotificationResponse_descr_ = { "@GTPC_Types.PDU_NotificationResponse", NULL, &PDU__NotificationResponse_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__NotificationResponse_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING PDU__NotificationResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING PDU__NotificationRejectRequest_cause_default_coding("RAW"); UNIVERSAL_CHARSTRING PDU__NotificationRejectRequest_teidControlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING PDU__NotificationRejectRequest_endUserAddress_default_coding("RAW"); UNIVERSAL_CHARSTRING PDU__NotificationRejectRequest_accessPointName_default_coding("RAW"); const TTCN_RAWdescriptor_t PDU__NotificationRejectRequest_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for PDU__NotificationRejectRequest const TTCN_Typedescriptor_t PDU__NotificationRejectRequest_descr_ = { "@GTPC_Types.PDU_NotificationRejectRequest", NULL, &PDU__NotificationRejectRequest_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__NotificationRejectRequest_protConfigOptions_default_coding("RAW"); UNIVERSAL_CHARSTRING PDU__NotificationRejectRequest_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING PDU__NotificationRejectRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING PDU__NotificationRejectResponse_cause_default_coding("RAW"); const TTCN_RAWdescriptor_t PDU__NotificationRejectResponse_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for PDU__NotificationRejectResponse const TTCN_Typedescriptor_t PDU__NotificationRejectResponse_descr_ = { "@GTPC_Types.PDU_NotificationRejectResponse", NULL, &PDU__NotificationRejectResponse_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__NotificationRejectResponse_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING PDU__NotificationRejectResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING InitiatePDPContextActivationRequest_linkedNSAPI_default_coding("RAW"); UNIVERSAL_CHARSTRING InitiatePDPContextActivationRequest_qualityOfServiceProfile_default_coding("RAW"); UNIVERSAL_CHARSTRING InitiatePDPContextActivationRequest_correlationID_default_coding("RAW"); const TTCN_RAWdescriptor_t InitiatePDPContextActivationRequest_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for InitiatePDPContextActivationRequest const TTCN_Typedescriptor_t InitiatePDPContextActivationRequest_descr_ = { "@GTPC_Types.InitiatePDPContextActivationRequest", NULL, &InitiatePDPContextActivationRequest_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING InitiatePDPContextActivationRequest_protConfigOptions_default_coding("RAW"); UNIVERSAL_CHARSTRING InitiatePDPContextActivationRequest_tft_default_coding("RAW"); UNIVERSAL_CHARSTRING InitiatePDPContextActivationRequest_evolvedAllocationRetentionPriorityI_default_coding("RAW"); UNIVERSAL_CHARSTRING InitiatePDPContextActivationRequest_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING InitiatePDPContextActivationRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING InitiatePDPContextActivationResponse_cause_default_coding("RAW"); const TTCN_RAWdescriptor_t InitiatePDPContextActivationResponse_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for InitiatePDPContextActivationResponse const TTCN_Typedescriptor_t InitiatePDPContextActivationResponse_descr_ = { "@GTPC_Types.InitiatePDPContextActivationResponse", NULL, &InitiatePDPContextActivationResponse_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING InitiatePDPContextActivationResponse_protConfigOptions_default_coding("RAW"); UNIVERSAL_CHARSTRING InitiatePDPContextActivationResponse_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING InitiatePDPContextActivationResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING SendRouteingInformationForGPRSRequest_imsi_default_coding("RAW"); const TTCN_RAWdescriptor_t SendRouteingInformationForGPRSRequest_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for SendRouteingInformationForGPRSRequest const TTCN_Typedescriptor_t SendRouteingInformationForGPRSRequest_descr_ = { "@GTPC_Types.SendRouteingInformationForGPRSRequest", NULL, &SendRouteingInformationForGPRSRequest_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SendRouteingInformationForGPRSRequest_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING SendRouteingInformationForGPRSRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING SendRouteingInformationForGPRSResponse_cause_default_coding("RAW"); UNIVERSAL_CHARSTRING SendRouteingInformationForGPRSResponse_imsi_default_coding("RAW"); const TTCN_RAWdescriptor_t SendRouteingInformationForGPRSResponse_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for SendRouteingInformationForGPRSResponse const TTCN_Typedescriptor_t SendRouteingInformationForGPRSResponse_descr_ = { "@GTPC_Types.SendRouteingInformationForGPRSResponse", NULL, &SendRouteingInformationForGPRSResponse_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SendRouteingInformationForGPRSResponse_map__Cause_default_coding("RAW"); UNIVERSAL_CHARSTRING SendRouteingInformationForGPRSResponse_mS__not__ReachableReason_default_coding("RAW"); UNIVERSAL_CHARSTRING SendRouteingInformationForGPRSResponse_gsn__Address_default_coding("RAW"); UNIVERSAL_CHARSTRING SendRouteingInformationForGPRSResponse_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING SendRouteingInformationForGPRSResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING FailureReportRequest_imsi_default_coding("RAW"); const TTCN_RAWdescriptor_t FailureReportRequest_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for FailureReportRequest const TTCN_Typedescriptor_t FailureReportRequest_descr_ = { "@GTPC_Types.FailureReportRequest", NULL, &FailureReportRequest_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING FailureReportRequest_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING FailureReportRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING FailureReportResponse_cause_default_coding("RAW"); const TTCN_RAWdescriptor_t FailureReportResponse_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for FailureReportResponse const TTCN_Typedescriptor_t FailureReportResponse_descr_ = { "@GTPC_Types.FailureReportResponse", NULL, &FailureReportResponse_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING FailureReportResponse_map__Cause_default_coding("RAW"); UNIVERSAL_CHARSTRING FailureReportResponse_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING FailureReportResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING NoteMS__GPRSPresentRequest_imsi_default_coding("RAW"); UNIVERSAL_CHARSTRING NoteMS__GPRSPresentRequest_gsn__Address_default_coding("RAW"); const TTCN_RAWdescriptor_t NoteMS__GPRSPresentRequest_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for NoteMS__GPRSPresentRequest const TTCN_Typedescriptor_t NoteMS__GPRSPresentRequest_descr_ = { "@GTPC_Types.NoteMS_GPRSPresentRequest", NULL, &NoteMS__GPRSPresentRequest_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING NoteMS__GPRSPresentRequest_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING NoteMS__GPRSPresentRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING NoteMS__GPRSPresentResponse_cause_default_coding("RAW"); const TTCN_RAWdescriptor_t NoteMS__GPRSPresentResponse_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for NoteMS__GPRSPresentResponse const TTCN_Typedescriptor_t NoteMS__GPRSPresentResponse_descr_ = { "@GTPC_Types.NoteMS_GPRSPresentResponse", NULL, &NoteMS__GPRSPresentResponse_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING NoteMS__GPRSPresentResponse_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING NoteMS__GPRSPresentResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING IdentificationRequest_routingAreaIdentity_default_coding("RAW"); UNIVERSAL_CHARSTRING IdentificationRequest_packetTMSI_default_coding("RAW"); const TTCN_RAWdescriptor_t IdentificationRequest_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for IdentificationRequest const TTCN_Typedescriptor_t IdentificationRequest_descr_ = { "@GTPC_Types.IdentificationRequest", NULL, &IdentificationRequest_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IdentificationRequest_ptmsi__Signature_default_coding("RAW"); UNIVERSAL_CHARSTRING IdentificationRequest_sgsn__addr__controlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING IdentificationRequest_hopCounter_default_coding("RAW"); UNIVERSAL_CHARSTRING IdentificationRequest_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING IdentificationRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING IdentificationResponse_cause_default_coding("RAW"); const TTCN_RAWdescriptor_t IdentificationResponse_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for IdentificationResponse const TTCN_Typedescriptor_t IdentificationResponse_descr_ = { "@GTPC_Types.IdentificationResponse", NULL, &IdentificationResponse_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IdentificationResponse_imsi_default_coding("RAW"); UNIVERSAL_CHARSTRING IdentificationResponse_authenticationTriplet_default_coding("RAW"); UNIVERSAL_CHARSTRING IdentificationResponse_authenticationQuintuplet_default_coding("RAW"); UNIVERSAL_CHARSTRING IdentificationResponse_authenticationQuintuplet2_default_coding("RAW"); UNIVERSAL_CHARSTRING IdentificationResponse_authenticationQuintuplet3_default_coding("RAW"); UNIVERSAL_CHARSTRING IdentificationResponse_authenticationQuintuplet4_default_coding("RAW"); UNIVERSAL_CHARSTRING IdentificationResponse_authenticationQuintuplet5_default_coding("RAW"); UNIVERSAL_CHARSTRING IdentificationResponse_uE__UsageType_default_coding("RAW"); UNIVERSAL_CHARSTRING IdentificationResponse_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING IdentificationResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextRequest_routingAreaIdentity_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextRequest_teidControlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextRequest_sgsn__addr__controlPlane_default_coding("RAW"); const TTCN_RAWdescriptor_t SGSN__ContextRequest_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for SGSN__ContextRequest const TTCN_Typedescriptor_t SGSN__ContextRequest_descr_ = { "@GTPC_Types.SGSN_ContextRequest", NULL, &SGSN__ContextRequest_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SGSN__ContextRequest_imsi_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextRequest_tlli_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextRequest_packetTMSI_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextRequest_ptmsi__Signature_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextRequest_ms__Validated_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextRequest_alternative__sgsn__addr__controlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextRequest_sGSN__Number_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextRequest_ratType_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextRequest_hopCounter_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextRequest_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextResponse_cause_default_coding("RAW"); const TTCN_RAWdescriptor_t SGSN__ContextResponse_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for SGSN__ContextResponse const TTCN_Typedescriptor_t SGSN__ContextResponse_descr_ = { "@GTPC_Types.SGSN_ContextResponse", NULL, &SGSN__ContextResponse_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SGSN__ContextResponse_imsi_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextResponse_teidControlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextResponse_rabContext_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextResponse_radioPrioritySMS_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextResponse_radioPriority_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextResponse_packetFlowID_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextResponse_charging__char_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextResponse_mm__Context_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextResponse_pdp__Context_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextResponse_sgsn__addr__controlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextResponse_pdpContextPriorization_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextResponse_radioPriority__LCS_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextResponse_mBMS__UE__Context_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextResponse_subscribedRFSP__Index_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextResponse_rFSP__IndexInUse_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextResponse_colocatedGGSN__PGW__FQDN_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextResponse_evolvedAllocationRetentionPriorityII_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextResponse_extendedCommonFlags_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextResponse_ue__network__capability_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextResponse_ue__ambr_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextResponse_apn__ambr__nsapi_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextResponse_signallingPriorityIndication__nsapi_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextResponse_higher__bitrates__than__16mbps__flag_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextResponse_selectionMode__nsapi_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextResponse_localHomeNetworkID__nsapi_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextResponse_uE__UsageType_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextResponse_extendedCommonFlagsII_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextResponse_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextAcknowledge_cause_default_coding("RAW"); const TTCN_RAWdescriptor_t SGSN__ContextAcknowledge_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for SGSN__ContextAcknowledge const TTCN_Typedescriptor_t SGSN__ContextAcknowledge_descr_ = { "@GTPC_Types.SGSN_ContextAcknowledge", NULL, &SGSN__ContextAcknowledge_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SGSN__ContextAcknowledge_teidDataII_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextAcknowledge_sgsn__AddressForUserTraffic_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextAcknowledge_sgsn__Number_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextAcknowledge_nodeIdentifier_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextAcknowledge_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING SGSN__ContextAcknowledge_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_teidControlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_ranapCause_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_mmContext_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_sgsn__addr__controlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_targetId_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_transpContainer_default_coding("RAW"); const TTCN_RAWdescriptor_t ForwardRelocationRequest_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for ForwardRelocationRequest const TTCN_Typedescriptor_t ForwardRelocationRequest_descr_ = { "@GTPC_Types.ForwardRelocationRequest", NULL, &ForwardRelocationRequest_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ForwardRelocationRequest_imsi_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_packetFlowID_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_charging__char_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_pdpContext_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_pdpContextPriorization_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_mBMS__UE__Context_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_selected__PLMN__ID_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_bSS__Container_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_cell__Identification_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_bSSGP__Cause__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_pS__HandoverXIDParameters_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_directTunnelFlags_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_reliableInterRATHandoverInfo_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_subscribedRFSP__Index_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_rFSP__IndexInUse_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_colocatedGGSN__PGW__FQDN_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_evolvedAllocationRetentionPriorityII_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_extendedCommonFlags_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_cSG__Id_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_cSG__MembershipIndication_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_ue__network__capability_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_ue__ambr_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_apn__ambr__nsapi_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_signallingPriorityIndication__nsapi_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_higher__bitrates__than__16mbps__flag_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_srvcc__mm__context_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_srvcc__flags_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_stn__sr_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_c__msisdn_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_extended__ranap__cause_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_eNodeB__ID_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_selectionMode__nsapi_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_uE__UsageType_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_extendedCommonFlagsII_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationResponse_cause_default_coding("RAW"); const TTCN_RAWdescriptor_t ForwardRelocationResponse_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for ForwardRelocationResponse const TTCN_Typedescriptor_t ForwardRelocationResponse_descr_ = { "@GTPC_Types.ForwardRelocationResponse", NULL, &ForwardRelocationResponse_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ForwardRelocationResponse_teidControlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationResponse_teidDataII_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationResponse_ranapCause_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationResponse_sgsn__addr__controlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationResponse_sgsn__addr__traffic_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationResponse_transpContainer_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationResponse_rabSetupInfo_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationResponse_additionalRABSetupInfo_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationResponse_sGSN__Number_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationResponse_bSS__Container_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationResponse_bSSGP__Cause__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationResponse_listOfSetupPFCs__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationResponse_extended__ranap__cause_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationResponse_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationResponse_default_coding("RAW"); const TTCN_RAWdescriptor_t ForwardRelocationComplete_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for ForwardRelocationComplete const TTCN_Typedescriptor_t ForwardRelocationComplete_descr_ = { "@GTPC_Types.ForwardRelocationComplete", NULL, &ForwardRelocationComplete_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ForwardRelocationComplete_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationComplete_default_coding("RAW"); const TTCN_RAWdescriptor_t RelocationCancelRequest_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RelocationCancelRequest const TTCN_Typedescriptor_t RelocationCancelRequest_descr_ = { "@GTPC_Types.RelocationCancelRequest", NULL, &RelocationCancelRequest_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RelocationCancelRequest_imsi_default_coding("RAW"); UNIVERSAL_CHARSTRING RelocationCancelRequest_imeisv__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING RelocationCancelRequest_extended__common__flags_default_coding("RAW"); UNIVERSAL_CHARSTRING RelocationCancelRequest_extended__ranap__cause_default_coding("RAW"); UNIVERSAL_CHARSTRING RelocationCancelRequest_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING RelocationCancelRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING RelocationCancelResponse_cause_default_coding("RAW"); const TTCN_RAWdescriptor_t RelocationCancelResponse_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RelocationCancelResponse const TTCN_Typedescriptor_t RelocationCancelResponse_descr_ = { "@GTPC_Types.RelocationCancelResponse", NULL, &RelocationCancelResponse_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RelocationCancelResponse_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING RelocationCancelResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationCompleteAcknowledge_cause_default_coding("RAW"); const TTCN_RAWdescriptor_t ForwardRelocationCompleteAcknowledge_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for ForwardRelocationCompleteAcknowledge const TTCN_Typedescriptor_t ForwardRelocationCompleteAcknowledge_descr_ = { "@GTPC_Types.ForwardRelocationCompleteAcknowledge", NULL, &ForwardRelocationCompleteAcknowledge_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ForwardRelocationCompleteAcknowledge_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardRelocationCompleteAcknowledge_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardSRNSContextAcknowledge_cause_default_coding("RAW"); const TTCN_RAWdescriptor_t ForwardSRNSContextAcknowledge_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for ForwardSRNSContextAcknowledge const TTCN_Typedescriptor_t ForwardSRNSContextAcknowledge_descr_ = { "@GTPC_Types.ForwardSRNSContextAcknowledge", NULL, &ForwardSRNSContextAcknowledge_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ForwardSRNSContextAcknowledge_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardSRNSContextAcknowledge_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardSRNSContext_rabContext_default_coding("RAW"); const TTCN_RAWdescriptor_t ForwardSRNSContext_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for ForwardSRNSContext const TTCN_Typedescriptor_t ForwardSRNSContext_descr_ = { "@GTPC_Types.ForwardSRNSContext", NULL, &ForwardSRNSContext_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ForwardSRNSContext_sourceRNC__PDCP__ContextInfo_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardSRNSContext_pDU__Numbers_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardSRNSContext_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING ForwardSRNSContext_default_coding("RAW"); UNIVERSAL_CHARSTRING RANInformationRelay_transparentContainer_default_coding("RAW"); const TTCN_RAWdescriptor_t RANInformationRelay_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for RANInformationRelay const TTCN_Typedescriptor_t RANInformationRelay_descr_ = { "@GTPC_Types.RANInformationRelay", NULL, &RANInformationRelay_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RANInformationRelay_rIM__RoutingAddress_default_coding("RAW"); UNIVERSAL_CHARSTRING RANInformationRelay_rIM__RoutingAddress__Discriminator_default_coding("RAW"); UNIVERSAL_CHARSTRING RANInformationRelay_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING RANInformationRelay_default_coding("RAW"); UNIVERSAL_CHARSTRING UERegistrationQueryRequest_imsi_default_coding("RAW"); const TTCN_RAWdescriptor_t UERegistrationQueryRequest_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for UERegistrationQueryRequest const TTCN_Typedescriptor_t UERegistrationQueryRequest_descr_ = { "@GTPC_Types.UERegistrationQueryRequest", NULL, &UERegistrationQueryRequest_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UERegistrationQueryRequest_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING UERegistrationQueryRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING UERegistrationQueryResponse_cause_default_coding("RAW"); UNIVERSAL_CHARSTRING UERegistrationQueryResponse_imsi_default_coding("RAW"); const TTCN_RAWdescriptor_t UERegistrationQueryResponse_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for UERegistrationQueryResponse const TTCN_Typedescriptor_t UERegistrationQueryResponse_descr_ = { "@GTPC_Types.UERegistrationQueryResponse", NULL, &UERegistrationQueryResponse_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UERegistrationQueryResponse_selected__PLMN__ID_default_coding("RAW"); UNIVERSAL_CHARSTRING UERegistrationQueryResponse_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING UERegistrationQueryResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSNotificationRequest_imsi_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSNotificationRequest_teidControlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSNotificationRequest_nsapi_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSNotificationRequest_endUserAddress_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSNotificationRequest_accessPointName_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSNotificationRequest_ggsn__addr__controlPlane_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMSNotificationRequest_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MBMSNotificationRequest const TTCN_Typedescriptor_t MBMSNotificationRequest_descr_ = { "@GTPC_Types.MBMSNotificationRequest", NULL, &MBMSNotificationRequest_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMSNotificationRequest_mBMS__ProtocolConfigurationOptions_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSNotificationRequest_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSNotificationRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSNotificationResponse_cause_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMSNotificationResponse_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MBMSNotificationResponse const TTCN_Typedescriptor_t MBMSNotificationResponse_descr_ = { "@GTPC_Types.MBMSNotificationResponse", NULL, &MBMSNotificationResponse_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMSNotificationResponse_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSNotificationResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSNotificationRejectRequest_cause_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSNotificationRejectRequest_teidControlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSNotificationRejectRequest_nsapi_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSNotificationRejectRequest_endUserAddress_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSNotificationRejectRequest_accessPointName_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMSNotificationRejectRequest_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MBMSNotificationRejectRequest const TTCN_Typedescriptor_t MBMSNotificationRejectRequest_descr_ = { "@GTPC_Types.MBMSNotificationRejectRequest", NULL, &MBMSNotificationRejectRequest_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMSNotificationRejectRequest_sgsn__addr__controlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSNotificationRejectRequest_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSNotificationRejectRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSNotificationRejectResponse_cause_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMSNotificationRejectResponse_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MBMSNotificationRejectResponse const TTCN_Typedescriptor_t MBMSNotificationRejectResponse_descr_ = { "@GTPC_Types.MBMSNotificationRejectResponse", NULL, &MBMSNotificationRejectResponse_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMSNotificationRejectResponse_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSNotificationRejectResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING CreateMBMSContextRequest_rai_default_coding("RAW"); UNIVERSAL_CHARSTRING CreateMBMSContextRequest_endUserAddress_default_coding("RAW"); UNIVERSAL_CHARSTRING CreateMBMSContextRequest_accessPointName_default_coding("RAW"); UNIVERSAL_CHARSTRING CreateMBMSContextRequest_sGSNAddressForSignalling_default_coding("RAW"); UNIVERSAL_CHARSTRING CreateMBMSContextRequest_enhanced__NSAPI_default_coding("RAW"); const TTCN_RAWdescriptor_t CreateMBMSContextRequest_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for CreateMBMSContextRequest const TTCN_Typedescriptor_t CreateMBMSContextRequest_descr_ = { "@GTPC_Types.CreateMBMSContextRequest", NULL, &CreateMBMSContextRequest_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CreateMBMSContextRequest_imsi_default_coding("RAW"); UNIVERSAL_CHARSTRING CreateMBMSContextRequest_recovery_default_coding("RAW"); UNIVERSAL_CHARSTRING CreateMBMSContextRequest_selectionMode_default_coding("RAW"); UNIVERSAL_CHARSTRING CreateMBMSContextRequest_teidControlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING CreateMBMSContextRequest_trace__ref_default_coding("RAW"); UNIVERSAL_CHARSTRING CreateMBMSContextRequest_trace__type_default_coding("RAW"); UNIVERSAL_CHARSTRING CreateMBMSContextRequest_msisdn_default_coding("RAW"); UNIVERSAL_CHARSTRING CreateMBMSContextRequest_triggerId_default_coding("RAW"); UNIVERSAL_CHARSTRING CreateMBMSContextRequest_omcId_default_coding("RAW"); UNIVERSAL_CHARSTRING CreateMBMSContextRequest_ratType_default_coding("RAW"); UNIVERSAL_CHARSTRING CreateMBMSContextRequest_userLocationInformation_default_coding("RAW"); UNIVERSAL_CHARSTRING CreateMBMSContextRequest_mS__TimeZone_default_coding("RAW"); UNIVERSAL_CHARSTRING CreateMBMSContextRequest_imeisv_default_coding("RAW"); UNIVERSAL_CHARSTRING CreateMBMSContextRequest_mBMS__ProtocolConfigurationOptions_default_coding("RAW"); UNIVERSAL_CHARSTRING CreateMBMSContextRequest_additionalTraceInfo_default_coding("RAW"); UNIVERSAL_CHARSTRING CreateMBMSContextRequest_additionalMBMSTraceInfo_default_coding("RAW"); UNIVERSAL_CHARSTRING CreateMBMSContextRequest_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING CreateMBMSContextRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING CreateMBMSContextResponse_cause_default_coding("RAW"); const TTCN_RAWdescriptor_t CreateMBMSContextResponse_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for CreateMBMSContextResponse const TTCN_Typedescriptor_t CreateMBMSContextResponse_descr_ = { "@GTPC_Types.CreateMBMSContextResponse", NULL, &CreateMBMSContextResponse_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CreateMBMSContextResponse_recovery_default_coding("RAW"); UNIVERSAL_CHARSTRING CreateMBMSContextResponse_teidControlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING CreateMBMSContextResponse_chargingID_default_coding("RAW"); UNIVERSAL_CHARSTRING CreateMBMSContextResponse_ggsn__addr__controlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING CreateMBMSContextResponse_alternative__ggsn__addr__controlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING CreateMBMSContextResponse_mBMS__ProtocolConfigurationOptions_default_coding("RAW"); UNIVERSAL_CHARSTRING CreateMBMSContextResponse_chargingGatewayAddress_default_coding("RAW"); UNIVERSAL_CHARSTRING CreateMBMSContextResponse_alt__chargingGatewayAddress_default_coding("RAW"); UNIVERSAL_CHARSTRING CreateMBMSContextResponse_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING CreateMBMSContextResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdateMBMSContextRequest_rai_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdateMBMSContextRequest_sgsn__addr__controlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdateMBMSContextRequest_enhanced__NSAPI_default_coding("RAW"); const TTCN_RAWdescriptor_t UpdateMBMSContextRequest_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for UpdateMBMSContextRequest const TTCN_Typedescriptor_t UpdateMBMSContextRequest_descr_ = { "@GTPC_Types.UpdateMBMSContextRequest", NULL, &UpdateMBMSContextRequest_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UpdateMBMSContextRequest_recovery_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdateMBMSContextRequest_teidControlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdateMBMSContextRequest_trace__ref_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdateMBMSContextRequest_trace__type_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdateMBMSContextRequest_alternative__sgsn__addr__controlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdateMBMSContextRequest_triggerId_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdateMBMSContextRequest_omcId_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdateMBMSContextRequest_ratType_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdateMBMSContextRequest_userLocationInformation_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdateMBMSContextRequest_mS__TimeZone_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdateMBMSContextRequest_additionalTraceInfo_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdateMBMSContextRequest_additionalMBMSTraceInfo_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdateMBMSContextRequest_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdateMBMSContextRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdateMBMSContextResponse_cause_default_coding("RAW"); const TTCN_RAWdescriptor_t UpdateMBMSContextResponse_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for UpdateMBMSContextResponse const TTCN_Typedescriptor_t UpdateMBMSContextResponse_descr_ = { "@GTPC_Types.UpdateMBMSContextResponse", NULL, &UpdateMBMSContextResponse_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UpdateMBMSContextResponse_recovery_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdateMBMSContextResponse_teidControlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdateMBMSContextResponse_chargingID_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdateMBMSContextResponse_ggsn__addr__controlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdateMBMSContextResponse_alternative__ggsn__addr__controlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdateMBMSContextResponse_chargingGatewayAddress_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdateMBMSContextResponse_alt__chargingGatewayAddress_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdateMBMSContextResponse_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING UpdateMBMSContextResponse_default_coding("RAW"); const TTCN_RAWdescriptor_t DeleteMBMSContextRequest_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for DeleteMBMSContextRequest const TTCN_Typedescriptor_t DeleteMBMSContextRequest_descr_ = { "@GTPC_Types.DeleteMBMSContextRequest", NULL, &DeleteMBMSContextRequest_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING DeleteMBMSContextRequest_imsi_default_coding("RAW"); UNIVERSAL_CHARSTRING DeleteMBMSContextRequest_teidControlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING DeleteMBMSContextRequest_endUserAddress_default_coding("RAW"); UNIVERSAL_CHARSTRING DeleteMBMSContextRequest_accessPointName_default_coding("RAW"); UNIVERSAL_CHARSTRING DeleteMBMSContextRequest_mBMS__ProtocolConfigurationOptions_default_coding("RAW"); UNIVERSAL_CHARSTRING DeleteMBMSContextRequest_enhanced__NSAPI_default_coding("RAW"); UNIVERSAL_CHARSTRING DeleteMBMSContextRequest_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING DeleteMBMSContextRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING DeleteMBMSContextResponse_cause_default_coding("RAW"); const TTCN_RAWdescriptor_t DeleteMBMSContextResponse_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for DeleteMBMSContextResponse const TTCN_Typedescriptor_t DeleteMBMSContextResponse_descr_ = { "@GTPC_Types.DeleteMBMSContextResponse", NULL, &DeleteMBMSContextResponse_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING DeleteMBMSContextResponse_mBMS__ProtocolConfigurationOptions_default_coding("RAW"); UNIVERSAL_CHARSTRING DeleteMBMSContextResponse_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING DeleteMBMSContextResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSRegistrationRequest__gtpc_endUserAddress_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSRegistrationRequest__gtpc_accessPointName_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMSRegistrationRequest__gtpc_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MBMSRegistrationRequest__gtpc const TTCN_Typedescriptor_t MBMSRegistrationRequest__gtpc_descr_ = { "@GTPC_Types.MBMSRegistrationRequest_gtpc", NULL, &MBMSRegistrationRequest__gtpc_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMSRegistrationRequest__gtpc_teidControlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSRegistrationRequest__gtpc_sgsn__addr__controlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSRegistrationRequest__gtpc_alternative__sgsn__addr__controlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSRegistrationRequest__gtpc_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSRegistrationRequest__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSRegistrationResponse__gtpc_cause_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMSRegistrationResponse__gtpc_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MBMSRegistrationResponse__gtpc const TTCN_Typedescriptor_t MBMSRegistrationResponse__gtpc_descr_ = { "@GTPC_Types.MBMSRegistrationResponse_gtpc", NULL, &MBMSRegistrationResponse__gtpc_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMSRegistrationResponse__gtpc_teidControlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSRegistrationResponse__gtpc_ggsn__addr__controlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSRegistrationResponse__gtpc_tMGI_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSRegistrationResponse__gtpc_reqMBMS__BearerCapabilities_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSRegistrationResponse__gtpc_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSRegistrationResponse__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSDeRegistrationRequest_endUserAddress_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSDeRegistrationRequest_accessPointName_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMSDeRegistrationRequest_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MBMSDeRegistrationRequest const TTCN_Typedescriptor_t MBMSDeRegistrationRequest_descr_ = { "@GTPC_Types.MBMSDeRegistrationRequest", NULL, &MBMSDeRegistrationRequest_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMSDeRegistrationRequest_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSDeRegistrationRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSDeRegistrationResponse_cause_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMSDeRegistrationResponse_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MBMSDeRegistrationResponse const TTCN_Typedescriptor_t MBMSDeRegistrationResponse_descr_ = { "@GTPC_Types.MBMSDeRegistrationResponse", NULL, &MBMSDeRegistrationResponse_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMSDeRegistrationResponse_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSDeRegistrationResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionStartRequest_endUserAddress_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionStartRequest_accessPointName_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionStartRequest_qualityOfServiceProfile_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionStartRequest_commonFlags_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionStartRequest_tMGI_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionStartRequest_mBMS__ServiceArea_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionStartRequest_mBMS__2G__3G__Indicator_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionStartRequest_mBMS__SessionDuration_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionStartRequest_mBMS__TimeToDataTransfer_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMSSessionStartRequest_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MBMSSessionStartRequest const TTCN_Typedescriptor_t MBMSSessionStartRequest_descr_ = { "@GTPC_Types.MBMSSessionStartRequest", NULL, &MBMSSessionStartRequest_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMSSessionStartRequest_recovery_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionStartRequest_teidControlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionStartRequest_ggsn__addr__controlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionStartRequest_alternative__ggsn__addr__controlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionStartRequest_mBMS__SessionIdentifier_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionStartRequest_mBMS__SessionRepetitionNumber_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionStartRequest_mBMS__FlowID_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionStartRequest_mBMS__IPMulticastDistribution_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionStartRequest_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionStartRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionStartResponse__gtpc_cause_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMSSessionStartResponse__gtpc_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MBMSSessionStartResponse__gtpc const TTCN_Typedescriptor_t MBMSSessionStartResponse__gtpc_descr_ = { "@GTPC_Types.MBMSSessionStartResponse_gtpc", NULL, &MBMSSessionStartResponse__gtpc_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMSSessionStartResponse__gtpc_recovery_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionStartResponse__gtpc_teidDataI_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionStartResponse__gtpc_teidControlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionStartResponse__gtpc_sgsn__addr__controlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionStartResponse__gtpc_sgsn__addr__traffic_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionStartResponse__gtpc_alt__sgsn__addr__traffic_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionStartResponse__gtpc_mBMS__DistributionAcknowledgement_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionStartResponse__gtpc_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionStartResponse__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionStopRequest_endUserAddress_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionStopRequest_accessPointName_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMSSessionStopRequest_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MBMSSessionStopRequest const TTCN_Typedescriptor_t MBMSSessionStopRequest_descr_ = { "@GTPC_Types.MBMSSessionStopRequest", NULL, &MBMSSessionStopRequest_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMSSessionStopRequest_mBMS__FlowID_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionStopRequest_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionStopRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionStopResponse__gtpc_cause_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMSSessionStopResponse__gtpc_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MBMSSessionStopResponse__gtpc const TTCN_Typedescriptor_t MBMSSessionStopResponse__gtpc_descr_ = { "@GTPC_Types.MBMSSessionStopResponse_gtpc", NULL, &MBMSSessionStopResponse__gtpc_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMSSessionStopResponse__gtpc_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionStopResponse__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionUpdateRequest_endUserAddress_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionUpdateRequest_accessPointName_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionUpdateRequest_tMGI_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionUpdateRequest_mBMS__ServiceArea_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionUpdateRequest_mBMS__SessionDuration_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMSSessionUpdateRequest_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MBMSSessionUpdateRequest const TTCN_Typedescriptor_t MBMSSessionUpdateRequest_descr_ = { "@GTPC_Types.MBMSSessionUpdateRequest", NULL, &MBMSSessionUpdateRequest_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMSSessionUpdateRequest_teidControlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionUpdateRequest_ggsn__addr__controlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionUpdateRequest_mBMS__SessionIdentifier_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionUpdateRequest_mBMS__SessionRepetitionNumber_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionUpdateRequest_mBMS__FlowID_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionUpdateRequest_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionUpdateRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionUpdateResponse_cause_default_coding("RAW"); const TTCN_RAWdescriptor_t MBMSSessionUpdateResponse_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MBMSSessionUpdateResponse const TTCN_Typedescriptor_t MBMSSessionUpdateResponse_descr_ = { "@GTPC_Types.MBMSSessionUpdateResponse", NULL, &MBMSSessionUpdateResponse_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMSSessionUpdateResponse_teidDataI_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionUpdateResponse_teidControlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionUpdateResponse_sgsn__addr__DataI_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionUpdateResponse_sgsn__addr__controlPlane_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionUpdateResponse_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING MBMSSessionUpdateResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING MS__InfoChangeNotificationRequest_ratType_default_coding("RAW"); const TTCN_RAWdescriptor_t MS__InfoChangeNotificationRequest_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MS__InfoChangeNotificationRequest const TTCN_Typedescriptor_t MS__InfoChangeNotificationRequest_descr_ = { "@GTPC_Types.MS_InfoChangeNotificationRequest", NULL, &MS__InfoChangeNotificationRequest_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MS__InfoChangeNotificationRequest_imsi_default_coding("RAW"); UNIVERSAL_CHARSTRING MS__InfoChangeNotificationRequest_linkedNSAPI_default_coding("RAW"); UNIVERSAL_CHARSTRING MS__InfoChangeNotificationRequest_userLocationInformation_default_coding("RAW"); UNIVERSAL_CHARSTRING MS__InfoChangeNotificationRequest_imeisv__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING MS__InfoChangeNotificationRequest_extended__common__flags_default_coding("RAW"); UNIVERSAL_CHARSTRING MS__InfoChangeNotificationRequest_userCSGInformation_default_coding("RAW"); UNIVERSAL_CHARSTRING MS__InfoChangeNotificationRequest_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING MS__InfoChangeNotificationRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING MS__InfoChangeNotificationResponse_cause_default_coding("RAW"); const TTCN_RAWdescriptor_t MS__InfoChangeNotificationResponse_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for MS__InfoChangeNotificationResponse const TTCN_Typedescriptor_t MS__InfoChangeNotificationResponse_descr_ = { "@GTPC_Types.MS_InfoChangeNotificationResponse", NULL, &MS__InfoChangeNotificationResponse_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MS__InfoChangeNotificationResponse_imsi_default_coding("RAW"); UNIVERSAL_CHARSTRING MS__InfoChangeNotificationResponse_linkedNSAPI_default_coding("RAW"); UNIVERSAL_CHARSTRING MS__InfoChangeNotificationResponse_imeisv__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING MS__InfoChangeNotificationResponse_mS__InfoChangeReportingAction_default_coding("RAW"); UNIVERSAL_CHARSTRING MS__InfoChangeNotificationResponse_cSGInfoReportingAction_default_coding("RAW"); UNIVERSAL_CHARSTRING MS__InfoChangeNotificationResponse_private__extension__gtpc_default_coding("RAW"); UNIVERSAL_CHARSTRING MS__InfoChangeNotificationResponse_default_coding("RAW"); const TTCN_RAWdescriptor_t GTPC__PDUs_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for GTPC__PDUs const TTCN_Typedescriptor_t GTPC__PDUs_descr_ = { "@GTPC_Types.GTPC_PDUs", NULL, >PC__PDUs_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GTPC__PDUs_echoRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_echoResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_versionNotSupported_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_createPDPContextRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_createPDPContextResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_updatePDPContextRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_updatePDPContextResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_deletePDPContextRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_deletePDPContextResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_pdu__NotificationRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_pdu__NotificationResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_pdu__NotificationRejectRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_pdu__NotificationRejectResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_initiatePDPContextActivationRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_initiatePDPContextActivationResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_supportedExtensionHeadersNotification_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_sendRouteingInformationForGPRSRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_sendRouteingInformationForGPRSResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_failureReportRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_failureReportResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_noteMS__GPRSPresentRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_noteMS__GPRSPresentResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_identificationRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_identificationResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_sgsn__ContextRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_sgsn__ContextResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_sgsn__ContextAcknowledge_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_forwardRelocationRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_forwardRelocationResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_forwardRelocationComplete_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_relocationCancelRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_relocationCancelResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_forwardSRNSContext_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_forwardRelocationCompleteAcknowledge_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_forwardSRNSContextAcknowledge_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_uERegistrationQueryRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_uERegistrationQueryResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_ranInformationRelay_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_mBMSNotificationRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_mBMSNotificationResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_mBMSNotificationRejectRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_mBMSNotificationRejectResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_createMBMSContextRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_createMBMSContextResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_updateMBMSContextRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_updateMBMSContextResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_deleteMBMSContextRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_deleteMBMSContextResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_mBMSRegistrationRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_mBMSRegistrationResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_mBMSDeRegistrationRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_mBMSDeRegistrationResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_mBMSSessionStartRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_mBMSSessionStartResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_mBMSSessionStopRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_mBMSSessionStopResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_mBMSSessionUpdateRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_mBMSSessionUpdateResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_mS__InfoChangeNotificationRequest_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_mS__InfoChangeNotificationResponse_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__PDUs_default_coding("RAW"); const XERdescriptor_t PDU__GTPC_pn__bit_xer_ = { {"pn_bit>\n", "pn_bit>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t PDU__GTPC_pn__bit_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t PDU__GTPC_pn__bit_descr_ = { "@GTPC_Types.PDU_GTPC.pn_bit", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &PDU__GTPC_pn__bit_xer_, &BITSTRING_json_, &PDU__GTPC_pn__bit_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__GTPC_pn__bit_default_coding("RAW"); const XERdescriptor_t PDU__GTPC_s__bit_xer_ = { {"s_bit>\n", "s_bit>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t PDU__GTPC_s__bit_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t PDU__GTPC_s__bit_descr_ = { "@GTPC_Types.PDU_GTPC.s_bit", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &PDU__GTPC_s__bit_xer_, &BITSTRING_json_, &PDU__GTPC_s__bit_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__GTPC_s__bit_default_coding("RAW"); const XERdescriptor_t PDU__GTPC_e__bit_xer_ = { {"e_bit>\n", "e_bit>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t PDU__GTPC_e__bit_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t PDU__GTPC_e__bit_descr_ = { "@GTPC_Types.PDU_GTPC.e_bit", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &PDU__GTPC_e__bit_xer_, &BITSTRING_json_, &PDU__GTPC_e__bit_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__GTPC_e__bit_default_coding("RAW"); const XERdescriptor_t PDU__GTPC_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 PDU__GTPC_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t PDU__GTPC_spare_descr_ = { "@GTPC_Types.PDU_GTPC.spare", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &PDU__GTPC_spare_xer_, &BITSTRING_json_, &PDU__GTPC_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__GTPC_spare_default_coding("RAW"); const XERdescriptor_t PDU__GTPC_pt_xer_ = { {"pt>\n", "pt>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t PDU__GTPC_pt_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t PDU__GTPC_pt_descr_ = { "@GTPC_Types.PDU_GTPC.pt", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &PDU__GTPC_pt_xer_, &BITSTRING_json_, &PDU__GTPC_pt_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__GTPC_pt_default_coding("RAW"); const XERdescriptor_t PDU__GTPC_version_xer_ = { {"version>\n", "version>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t PDU__GTPC_version_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t PDU__GTPC_version_descr_ = { "@GTPC_Types.PDU_GTPC.version", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &PDU__GTPC_version_xer_, &BITSTRING_json_, &PDU__GTPC_version_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__GTPC_version_default_coding("RAW"); const XERdescriptor_t PDU__GTPC_messageType_xer_ = { {"messageType>\n", "messageType>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PDU__GTPC_messageType_oer_ext_arr_[0] = {}; const int PDU__GTPC_messageType_oer_p_[0] = {}; const TTCN_OERdescriptor_t PDU__GTPC_messageType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__GTPC_messageType_oer_ext_arr_, 0, PDU__GTPC_messageType_oer_p_}; const TTCN_Typedescriptor_t PDU__GTPC_messageType_descr_ = { "@GTPC_Types.PDU_GTPC.messageType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__GTPC_messageType_xer_, &OCTETSTRING_json_, &PDU__GTPC_messageType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__GTPC_messageType_default_coding("RAW"); const TTCN_RAWdescriptor_t PDU__GTPC_lengthf_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t PDU__GTPC_lengthf_xer_ = { {"lengthf>\n", "lengthf>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_OERdescriptor_t PDU__GTPC_lengthf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t PDU__GTPC_lengthf_descr_ = { "@GTPC_Types.PDU_GTPC.lengthf", &INTEGER_ber_, &PDU__GTPC_lengthf_raw_, &INTEGER_text_, &PDU__GTPC_lengthf_xer_, &INTEGER_json_, &PDU__GTPC_lengthf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__GTPC_lengthf_default_coding("RAW"); const XERdescriptor_t PDU__GTPC_teid_xer_ = { {"teid>\n", "teid>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int PDU__GTPC_teid_oer_ext_arr_[0] = {}; const int PDU__GTPC_teid_oer_p_[0] = {}; const TTCN_OERdescriptor_t PDU__GTPC_teid_oer_ = { -1, TRUE, 4, FALSE, 0, 0, PDU__GTPC_teid_oer_ext_arr_, 0, PDU__GTPC_teid_oer_p_}; const TTCN_Typedescriptor_t PDU__GTPC_teid_descr_ = { "@GTPC_Types.PDU_GTPC.teid", &OCTETSTRING_ber_, &General__Types::OCT4_raw_, &OCTETSTRING_text_, &PDU__GTPC_teid_xer_, &OCTETSTRING_json_, &PDU__GTPC_teid_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__GTPC_teid_default_coding("RAW"); const TTCN_RAWdescriptor_t PDU__GTPC_gtpc__pdu_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for PDU__GTPC_gtpc__pdu const TTCN_Typedescriptor_t PDU__GTPC_gtpc__pdu_descr_ = { "@GTPC_Types.PDU_GTPC.gtpc_pdu", NULL, &PDU__GTPC_gtpc__pdu_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__GTPC_gtpc__pdu_default_coding("RAW"); const TTCN_RAWdescriptor_t PDU__GTPC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for PDU__GTPC const TTCN_Typedescriptor_t PDU__GTPC_descr_ = { "@GTPC_Types.PDU_GTPC", NULL, &PDU__GTPC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t GTPC__Header__optional__part_sequenceNumber_xer_ = { {"sequenceNumber>\n", "sequenceNumber>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int GTPC__Header__optional__part_sequenceNumber_oer_ext_arr_[0] = {}; const int GTPC__Header__optional__part_sequenceNumber_oer_p_[0] = {}; const TTCN_OERdescriptor_t GTPC__Header__optional__part_sequenceNumber_oer_ = { -1, TRUE, 2, FALSE, 0, 0, GTPC__Header__optional__part_sequenceNumber_oer_ext_arr_, 0, GTPC__Header__optional__part_sequenceNumber_oer_p_}; const TTCN_Typedescriptor_t GTPC__Header__optional__part_sequenceNumber_descr_ = { "@GTPC_Types.GTPC_Header_optional_part.sequenceNumber", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, >PC__Header__optional__part_sequenceNumber_xer_, &OCTETSTRING_json_, >PC__Header__optional__part_sequenceNumber_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GTPC__Header__optional__part_sequenceNumber_default_coding("RAW"); const XERdescriptor_t GTPC__Header__optional__part_npduNumber_xer_ = { {"npduNumber>\n", "npduNumber>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int GTPC__Header__optional__part_npduNumber_oer_ext_arr_[0] = {}; const int GTPC__Header__optional__part_npduNumber_oer_p_[0] = {}; const TTCN_OERdescriptor_t GTPC__Header__optional__part_npduNumber_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GTPC__Header__optional__part_npduNumber_oer_ext_arr_, 0, GTPC__Header__optional__part_npduNumber_oer_p_}; const TTCN_Typedescriptor_t GTPC__Header__optional__part_npduNumber_descr_ = { "@GTPC_Types.GTPC_Header_optional_part.npduNumber", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, >PC__Header__optional__part_npduNumber_xer_, &OCTETSTRING_json_, >PC__Header__optional__part_npduNumber_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GTPC__Header__optional__part_npduNumber_default_coding("RAW"); const XERdescriptor_t GTPC__Header__optional__part_nextExtHeader_xer_ = { {"nextExtHeader>\n", "nextExtHeader>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int GTPC__Header__optional__part_nextExtHeader_oer_ext_arr_[0] = {}; const int GTPC__Header__optional__part_nextExtHeader_oer_p_[0] = {}; const TTCN_OERdescriptor_t GTPC__Header__optional__part_nextExtHeader_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GTPC__Header__optional__part_nextExtHeader_oer_ext_arr_, 0, GTPC__Header__optional__part_nextExtHeader_oer_p_}; const TTCN_Typedescriptor_t GTPC__Header__optional__part_nextExtHeader_descr_ = { "@GTPC_Types.GTPC_Header_optional_part.nextExtHeader", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, >PC__Header__optional__part_nextExtHeader_xer_, &OCTETSTRING_json_, >PC__Header__optional__part_nextExtHeader_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GTPC__Header__optional__part_nextExtHeader_default_coding("RAW"); const TTCN_RAWdescriptor_t GTPC__Header__optional__part_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for GTPC__Header__optional__part const TTCN_Typedescriptor_t GTPC__Header__optional__part_descr_ = { "@GTPC_Types.GTPC_Header_optional_part", NULL, >PC__Header__optional__part_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const TTCN_RAWdescriptor_t GTPC__ExtensionHeader__List_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for GTPC__ExtensionHeader__List const TTCN_Typedescriptor_t GTPC__ExtensionHeader__List_descr_ = { "@GTPC_Types.GTPC_ExtensionHeader_List", NULL, >PC__ExtensionHeader__List_raw_, NULL, NULL, NULL, NULL, NULL, >PC__ExtensionHeader_descr_, TTCN_Typedescriptor_t::DONTCARE }; const TTCN_RAWdescriptor_t GTPC__ExtensionHeader_lengthfield_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,32,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t GTPC__ExtensionHeader_lengthfield_xer_ = { {"lengthfield>\n", "lengthfield>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t GTPC__ExtensionHeader_lengthfield_descr_ = { "@GTPC_Types.GTPC_ExtensionHeader.lengthfield", &INTEGER_ber_, >PC__ExtensionHeader_lengthfield_raw_, &INTEGER_text_, >PC__ExtensionHeader_lengthfield_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GTPC__ExtensionHeader_lengthfield_default_coding("RAW"); const XERdescriptor_t GTPC__ExtensionHeader_content_xer_ = { {"content>\n", "content>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int GTPC__ExtensionHeader_content_oer_ext_arr_[0] = {}; const int GTPC__ExtensionHeader_content_oer_p_[0] = {}; const TTCN_OERdescriptor_t GTPC__ExtensionHeader_content_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GTPC__ExtensionHeader_content_oer_ext_arr_, 0, GTPC__ExtensionHeader_content_oer_p_}; const TTCN_Typedescriptor_t GTPC__ExtensionHeader_content_descr_ = { "@GTPC_Types.GTPC_ExtensionHeader.content", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, >PC__ExtensionHeader_content_xer_, &OCTETSTRING_json_, >PC__ExtensionHeader_content_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GTPC__ExtensionHeader_content_default_coding("RAW"); const TTCN_RAWdescriptor_t GTPC__ExtensionHeader_nextExtHeader_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; const XERdescriptor_t GTPC__ExtensionHeader_nextExtHeader_xer_ = { {"nextExtHeader>\n", "nextExtHeader>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const int GTPC__ExtensionHeader_nextExtHeader_oer_ext_arr_[0] = {}; const int GTPC__ExtensionHeader_nextExtHeader_oer_p_[0] = {}; const TTCN_OERdescriptor_t GTPC__ExtensionHeader_nextExtHeader_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GTPC__ExtensionHeader_nextExtHeader_oer_ext_arr_, 0, GTPC__ExtensionHeader_nextExtHeader_oer_p_}; const TTCN_Typedescriptor_t GTPC__ExtensionHeader_nextExtHeader_descr_ = { "@GTPC_Types.GTPC_ExtensionHeader.nextExtHeader", &OCTETSTRING_ber_, >PC__ExtensionHeader_nextExtHeader_raw_, &OCTETSTRING_text_, >PC__ExtensionHeader_nextExtHeader_xer_, &OCTETSTRING_json_, >PC__ExtensionHeader_nextExtHeader_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GTPC__ExtensionHeader_nextExtHeader_default_coding("RAW"); const TTCN_RAWdescriptor_t GTPC__ExtensionHeader_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for GTPC__ExtensionHeader const TTCN_Typedescriptor_t GTPC__ExtensionHeader_descr_ = { "@GTPC_Types.GTPC_ExtensionHeader", NULL, >PC__ExtensionHeader_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GTPC__ExtensionHeader_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__ExtensionHeader__List_0_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__ExtensionHeader__List_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__Header__optional__part_gTPC__extensionHeader__List_default_coding("RAW"); UNIVERSAL_CHARSTRING GTPC__Header__optional__part_default_coding("RAW"); const TTCN_RAWdescriptor_t PDU__GTPC_opt__part_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; // No XER for PDU__GTPC_opt__part const TTCN_Typedescriptor_t PDU__GTPC_opt__part_descr_ = { "@GTPC_Types.PDU_GTPC.opt_part", NULL, &PDU__GTPC_opt__part_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDU__GTPC_opt__part_default_coding("RAW"); UNIVERSAL_CHARSTRING PDU__GTPC_default_coding("RAW"); TTCN_Module module_object("GTPC_Types", __DATE__, __TIME__, module_checksum, pre_init_module, "", 0U, 2U, 0U, 99U, "", 0LU, 0, post_init_module, NULL, NULL, NULL, NULL, NULL, NULL, NULL); const RuntimeVersionChecker ver_checker( current_runtime_version.requires_major_version_9, current_runtime_version.requires_minor_version_0, current_runtime_version.requires_patch_level_0, current_runtime_version.requires_runtime_1); /* Member functions of C++ classes */ SystemUnderTest::SystemUnderTest() { enum_value = UNBOUND_VALUE; } SystemUnderTest::SystemUnderTest(int other_value) { if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @GTPC_Types.SystemUnderTest with invalid numeric value %d.", other_value); enum_value = (enum_type)other_value; } SystemUnderTest::SystemUnderTest(enum_type other_value) { enum_value = other_value; } SystemUnderTest::SystemUnderTest(const SystemUnderTest& other_value) : Base_Type() { if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @GTPC_Types.SystemUnderTest."); enum_value = other_value.enum_value; } SystemUnderTest& SystemUnderTest::operator=(int other_value) { if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @GTPC_Types.SystemUnderTest.", other_value); enum_value = (enum_type)other_value; return *this; } SystemUnderTest& SystemUnderTest::operator=(enum_type other_value) { enum_value = other_value; return *this; } SystemUnderTest& SystemUnderTest::operator=(const SystemUnderTest& other_value) { if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @GTPC_Types.SystemUnderTest."); enum_value = other_value.enum_value; return *this; } boolean SystemUnderTest::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 @GTPC_Types.SystemUnderTest."); return enum_value == other_value; } boolean SystemUnderTest::operator==(const SystemUnderTest& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @GTPC_Types.SystemUnderTest."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @GTPC_Types.SystemUnderTest."); return enum_value == other_value.enum_value; } boolean SystemUnderTest::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 @GTPC_Types.SystemUnderTest."); return enum_value < other_value; } boolean SystemUnderTest::operator<(const SystemUnderTest& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @GTPC_Types.SystemUnderTest."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @GTPC_Types.SystemUnderTest."); return enum_value < other_value.enum_value; } boolean SystemUnderTest::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 @GTPC_Types.SystemUnderTest."); return enum_value > other_value; } boolean SystemUnderTest::operator>(const SystemUnderTest& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @GTPC_Types.SystemUnderTest."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @GTPC_Types.SystemUnderTest."); return enum_value > other_value.enum_value; } const char *SystemUnderTest::enum_to_str(enum_type enum_par) { switch (enum_par) { case SGSN: return "SGSN"; case GGSN: return "GGSN"; case CGW: return "CGW"; case MME: return "MME"; default: return ""; } } SystemUnderTest::enum_type SystemUnderTest::str_to_enum(const char *str_par) { if (!strcmp(str_par, "SGSN")) return SGSN; else if (!strcmp(str_par, "GGSN")) return GGSN; else if (!strcmp(str_par, "CGW")) return CGW; else if (!strcmp(str_par, "MME")) return MME; else return UNKNOWN_VALUE; } boolean SystemUnderTest::is_valid_enum(int int_par) { switch (int_par) { case 0: case 1: case 2: case 3: return TRUE; default: return FALSE; } } int SystemUnderTest::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 @GTPC_Types.SystemUnderTest.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par; } int SystemUnderTest::enum2int(const SystemUnderTest& 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 @GTPC_Types.SystemUnderTest.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par.enum_value; } void SystemUnderTest::int2enum(int int_val) { if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @GTPC_Types.SystemUnderTest.", int_val); enum_value = (enum_type)int_val; } SystemUnderTest::operator SystemUnderTest::enum_type() const { if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @GTPC_Types.SystemUnderTest."); return enum_value; } void SystemUnderTest::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 SystemUnderTest::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", "@GTPC_Types.SystemUnderTest"); enum_value = str_to_enum(param.get_enumerated()); if (!is_valid_enum(enum_value)) { param.error("Invalid enumerated value for type @GTPC_Types.SystemUnderTest."); } } void SystemUnderTest::encode_text(Text_Buf& text_buf) const { if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @GTPC_Types.SystemUnderTest."); text_buf.push_int(enum_value); } void SystemUnderTest::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 @GTPC_Types.SystemUnderTest.", enum_value); } void SystemUnderTest::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;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void SystemUnderTest::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;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int SystemUnderTest::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 SystemUnderTest::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 SystemUnderTest_template::copy_template(const SystemUnderTest_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 SystemUnderTest_template[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 SystemUnderTest_template(*other_value.implication_.precondition); implication_.implied_template = new SystemUnderTest_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 @GTPC_Types.SystemUnderTest."); } } SystemUnderTest_template::SystemUnderTest_template() { } SystemUnderTest_template::SystemUnderTest_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } SystemUnderTest_template::SystemUnderTest_template(int other_value) : Base_Template(SPECIFIC_VALUE) { if (!SystemUnderTest::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @GTPC_Types.SystemUnderTest with unknown numeric value %d.", other_value); single_value = (SystemUnderTest::enum_type)other_value; } SystemUnderTest_template::SystemUnderTest_template(SystemUnderTest::enum_type other_value) : Base_Template(SPECIFIC_VALUE) { single_value = other_value; } SystemUnderTest_template::SystemUnderTest_template(const SystemUnderTest& other_value) : Base_Template(SPECIFIC_VALUE) { if (other_value.enum_value == SystemUnderTest::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @GTPC_Types.SystemUnderTest."); single_value = other_value.enum_value; } SystemUnderTest_template::SystemUnderTest_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (SystemUnderTest::enum_type)(const SystemUnderTest&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of enumerated type @GTPC_Types.SystemUnderTest from an unbound optional field."); } } SystemUnderTest_template::SystemUnderTest_template(SystemUnderTest_template* p_precondition, SystemUnderTest_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } SystemUnderTest_template::SystemUnderTest_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } SystemUnderTest_template::SystemUnderTest_template(const SystemUnderTest_template& other_value) : Base_Template() { copy_template(other_value); } SystemUnderTest_template::~SystemUnderTest_template() { clean_up(); } boolean SystemUnderTest_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; return TRUE; } boolean SystemUnderTest_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value != SystemUnderTest::UNBOUND_VALUE; } void SystemUnderTest_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; } SystemUnderTest_template& SystemUnderTest_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } SystemUnderTest_template& SystemUnderTest_template::operator=(int other_value) { if (!SystemUnderTest::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @GTPC_Types.SystemUnderTest.", other_value); clean_up(); set_selection(SPECIFIC_VALUE); single_value = (SystemUnderTest::enum_type)other_value; return *this; } SystemUnderTest_template& SystemUnderTest_template::operator=(SystemUnderTest::enum_type other_value) { clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value; return *this; } SystemUnderTest_template& SystemUnderTest_template::operator=(const SystemUnderTest& other_value) { if (other_value.enum_value == SystemUnderTest::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @GTPC_Types.SystemUnderTest to a template."); clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value.enum_value; return *this; } SystemUnderTest_template& SystemUnderTest_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (SystemUnderTest::enum_type)(const SystemUnderTest&)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 @GTPC_Types.SystemUnderTest."); } return *this; } SystemUnderTest_template& SystemUnderTest_template::operator=(const SystemUnderTest_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean SystemUnderTest_template::match(SystemUnderTest::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 @GTPC_Types.SystemUnderTest."); } return FALSE; } boolean SystemUnderTest_template::match(const SystemUnderTest& other_value, boolean) const { if (other_value.enum_value == SystemUnderTest::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @GTPC_Types.SystemUnderTest with an unbound value."); return match(other_value.enum_value); } SystemUnderTest::enum_type SystemUnderTest_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 @GTPC_Types.SystemUnderTest."); return single_value; } void SystemUnderTest_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 type for a template of enumerated type @GTPC_Types.SystemUnderTest."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new SystemUnderTest_template[list_length]; } SystemUnderTest_template& SystemUnderTest_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 @GTPC_Types.SystemUnderTest."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @GTPC_Types.SystemUnderTest."); return value_list.list_value[list_index]; } void SystemUnderTest_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_enum(SystemUnderTest::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 SystemUnderTest_template::log_match(const SystemUnderTest& 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 SystemUnderTest_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 @GTPC_Types.SystemUnderTest."); } } void SystemUnderTest_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = (SystemUnderTest::enum_type)text_buf.pull_int().get_val(); if (!SystemUnderTest::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @GTPC_Types.SystemUnderTest.", 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 SystemUnderTest_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 @GTPC_Types.SystemUnderTest."); } } boolean SystemUnderTest_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean SystemUnderTest_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iget_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { SystemUnderTest_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Enumerated: { SystemUnderTest::enum_type enum_val = SystemUnderTest::str_to_enum(m_p->get_enumerated()); if (!SystemUnderTest::is_valid_enum(enum_val)) { param.error("Invalid enumerated value for type @GTPC_Types.SystemUnderTest."); } *this = enum_val; } break; case Module_Param::MP_Implication_Template: { SystemUnderTest_template* precondition = new SystemUnderTest_template; precondition->set_param(*m_p->get_elem(0)); SystemUnderTest_template* implied_template = new SystemUnderTest_template; implied_template->set_param(*m_p->get_elem(1)); *this = SystemUnderTest_template(precondition, implied_template); } break; default: param.type_error("enumerated template", "@GTPC_Types.SystemUnderTest"); } is_ifpresent = param.get_ifpresent(); } void SystemUnderTest_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 : "@GTPC_Types.SystemUnderTest"); } void IE__Extension__UnionType::copy_value(const IE__Extension__UnionType& other_value) { switch (other_value.union_selection) { case ALT_iE__Type__Extension: field_iE__Type__Extension = new IE__Extension__Type(*other_value.field_iE__Type__Extension); break; default: TTCN_error("Assignment of an unbound union value of type @GTPC_Types.IE_Extension_UnionType."); } union_selection = other_value.union_selection; } IE__Extension__UnionType::IE__Extension__UnionType() { union_selection = UNBOUND_VALUE; } IE__Extension__UnionType::IE__Extension__UnionType(const IE__Extension__UnionType& other_value) : Base_Type(){ copy_value(other_value); } IE__Extension__UnionType::~IE__Extension__UnionType() { clean_up(); } IE__Extension__UnionType& IE__Extension__UnionType::operator=(const IE__Extension__UnionType& other_value) { if (this != &other_value) { clean_up(); copy_value(other_value); } return *this; } boolean IE__Extension__UnionType::operator==(const IE__Extension__UnionType& other_value) const { if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @GTPC_Types.IE_Extension_UnionType."); if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @GTPC_Types.IE_Extension_UnionType."); if (union_selection != other_value.union_selection) return FALSE; switch (union_selection) { case ALT_iE__Type__Extension: return *field_iE__Type__Extension == *other_value.field_iE__Type__Extension; default: return FALSE; } } IE__Extension__Type& IE__Extension__UnionType::iE__Type__Extension() { if (union_selection != ALT_iE__Type__Extension) { clean_up(); field_iE__Type__Extension = new IE__Extension__Type; union_selection = ALT_iE__Type__Extension; } return *field_iE__Type__Extension; } const IE__Extension__Type& IE__Extension__UnionType::iE__Type__Extension() const { if (union_selection != ALT_iE__Type__Extension) TTCN_error("Using non-selected field iE_Type_Extension in a value of union type @GTPC_Types.IE_Extension_UnionType."); return *field_iE__Type__Extension; } boolean IE__Extension__UnionType::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 @GTPC_Types.IE_Extension_UnionType."); return union_selection == checked_selection; } boolean IE__Extension__UnionType::is_bound() const { return union_selection != UNBOUND_VALUE; } boolean IE__Extension__UnionType::is_value() const { switch (union_selection) { case UNBOUND_VALUE: return FALSE; case ALT_iE__Type__Extension: return field_iE__Type__Extension->is_value(); default: TTCN_error("Invalid selection in union is_bound");} } void IE__Extension__UnionType::clean_up() { switch (union_selection) { case ALT_iE__Type__Extension: delete field_iE__Type__Extension; break; default: break; } union_selection = UNBOUND_VALUE; } void IE__Extension__UnionType::log() const { switch (union_selection) { case ALT_iE__Type__Extension: TTCN_Logger::log_event_str("{ iE_Type_Extension := "); field_iE__Type__Extension->log(); TTCN_Logger::log_event_str(" }"); break; default: TTCN_Logger::log_event_unbound(); } } void IE__Extension__UnionType::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "union value"); Module_Param_Ptr m_p = ¶m; if (m_p->get_type()==Module_Param::MP_Value_List && m_p->get_size()==0) return; if (m_p->get_type()!=Module_Param::MP_Assignment_List) { param.error("union value with field name was expected"); } Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); if (!strcmp(last_name, "iE_Type_Extension")) { iE__Type__Extension().set_param(*mp_last); if (!iE__Type__Extension().is_bound()) clean_up(); return; } mp_last->error("Field %s does not exist in type @GTPC_Types.IE_Extension_UnionType.", last_name); } void IE__Extension__UnionType::set_implicit_omit() { switch (union_selection) { case ALT_iE__Type__Extension: field_iE__Type__Extension->set_implicit_omit(); break; default: break; } } void IE__Extension__UnionType::encode_text(Text_Buf& text_buf) const { text_buf.push_int(union_selection); switch (union_selection) { case ALT_iE__Type__Extension: field_iE__Type__Extension->encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an unbound value of union type @GTPC_Types.IE_Extension_UnionType."); } } void IE__Extension__UnionType::decode_text(Text_Buf& text_buf) { switch ((union_selection_type)text_buf.pull_int().get_val()) { case ALT_iE__Type__Extension: iE__Type__Extension().decode_text(text_buf); break; default: TTCN_error("Text decoder: Unrecognized union selector was received for type @GTPC_Types.IE_Extension_UnionType."); } } void IE__Extension__UnionType::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;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void IE__Extension__UnionType::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;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int IE__Extension__UnionType::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, IE__Extension__Type_descr_.raw->forceomit); decoded_length = iE__Type__Extension().RAW_decode(IE__Extension__Type_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, IE__Extension__Type_descr_.raw->forceomit); decoded_length = iE__Type__Extension().RAW_decode(IE__Extension__Type_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; } } clean_up(); return -1; } int IE__Extension__UnionType::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { int encoded_length = 0; myleaf.isleaf = FALSE; myleaf.body.node.num_of_nodes = 1; myleaf.body.node.nodes = init_nodes_of_enc_tree(1); memset(myleaf.body.node.nodes, 0, 1 * sizeof(RAW_enc_tree *)); switch (union_selection) { case ALT_iE__Type__Extension: myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 0, IE__Extension__Type_descr_.raw); encoded_length = field_iE__Type__Extension->RAW_encode(IE__Extension__Type_descr_, *myleaf.body.node.nodes[0]); myleaf.body.node.nodes[0]->coding_descr = &IE__Extension__Type_descr_; break; default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); } return encoded_length; } void IE__Extension__UnionType_template::copy_value(const IE__Extension__UnionType& other_value) { single_value.union_selection = other_value.get_selection(); switch (single_value.union_selection) { case IE__Extension__UnionType::ALT_iE__Type__Extension: single_value.field_iE__Type__Extension = new IE__Extension__Type_template(other_value.iE__Type__Extension()); break; default: TTCN_error("Initializing a template with an unbound value of type @GTPC_Types.IE_Extension_UnionType."); } set_selection(SPECIFIC_VALUE); } void IE__Extension__UnionType_template::copy_template(const IE__Extension__UnionType_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 IE__Extension__UnionType::ALT_iE__Type__Extension: single_value.field_iE__Type__Extension = new IE__Extension__Type_template(*other_value.single_value.field_iE__Type__Extension); break; default: TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @GTPC_Types.IE_Extension_UnionType."); } 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 IE__Extension__UnionType_template[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 IE__Extension__UnionType_template(*other_value.implication_.precondition); implication_.implied_template = new IE__Extension__UnionType_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 @GTPC_Types.IE_Extension_UnionType."); } set_selection(other_value); } IE__Extension__UnionType_template::IE__Extension__UnionType_template() { } IE__Extension__UnionType_template::IE__Extension__UnionType_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } IE__Extension__UnionType_template::IE__Extension__UnionType_template(const IE__Extension__UnionType& other_value) { copy_value(other_value); } IE__Extension__UnionType_template::IE__Extension__UnionType_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const IE__Extension__UnionType&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of union type @GTPC_Types.IE_Extension_UnionType from an unbound optional field."); } } IE__Extension__UnionType_template::IE__Extension__UnionType_template(IE__Extension__UnionType_template* p_precondition, IE__Extension__UnionType_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } IE__Extension__UnionType_template::IE__Extension__UnionType_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } IE__Extension__UnionType_template::IE__Extension__UnionType_template(const IE__Extension__UnionType_template& other_value) : Base_Template(){ copy_template(other_value); } IE__Extension__UnionType_template::~IE__Extension__UnionType_template() { clean_up(); } void IE__Extension__UnionType_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { case IE__Extension__UnionType::ALT_iE__Type__Extension: delete single_value.field_iE__Type__Extension; 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; } IE__Extension__UnionType_template& IE__Extension__UnionType_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } IE__Extension__UnionType_template& IE__Extension__UnionType_template::operator=(const IE__Extension__UnionType& other_value) { clean_up(); copy_value(other_value); return *this; } IE__Extension__UnionType_template& IE__Extension__UnionType_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const IE__Extension__UnionType&)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 @GTPC_Types.IE_Extension_UnionType."); } return *this; } IE__Extension__UnionType_template& IE__Extension__UnionType_template::operator=(const IE__Extension__UnionType_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean IE__Extension__UnionType_template::match(const IE__Extension__UnionType& 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: { IE__Extension__UnionType::union_selection_type value_selection = other_value.get_selection(); if (value_selection == IE__Extension__UnionType::UNBOUND_VALUE) return FALSE; if (value_selection != single_value.union_selection) return FALSE; switch (value_selection) { case IE__Extension__UnionType::ALT_iE__Type__Extension: return single_value.field_iE__Type__Extension->match(other_value.iE__Type__Extension(), legacy); default: TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @GTPC_Types.IE_Extension_UnionType."); } } 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 @GTPC_Types.IE_Extension_UnionType."); } return FALSE; } boolean IE__Extension__UnionType_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; switch (single_value.union_selection) { case IE__Extension__UnionType::ALT_iE__Type__Extension: return single_value.field_iE__Type__Extension->is_value(); default: TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @GTPC_Types.IE_Extension_UnionType."); } } IE__Extension__UnionType IE__Extension__UnionType_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 @GTPC_Types.IE_Extension_UnionType."); IE__Extension__UnionType ret_val; switch (single_value.union_selection) { case IE__Extension__UnionType::ALT_iE__Type__Extension: ret_val.iE__Type__Extension() = single_value.field_iE__Type__Extension->valueof(); break; default: TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @GTPC_Types.IE_Extension_UnionType."); } return ret_val; } IE__Extension__UnionType_template& IE__Extension__UnionType_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 @GTPC_Types.IE_Extension_UnionType."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @GTPC_Types.IE_Extension_UnionType."); return value_list.list_value[list_index]; } void IE__Extension__UnionType_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 @GTPC_Types.IE_Extension_UnionType."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new IE__Extension__UnionType_template[list_length]; } IE__Extension__Type_template& IE__Extension__UnionType_template::iE__Type__Extension() { if (template_selection != SPECIFIC_VALUE || single_value.union_selection != IE__Extension__UnionType::ALT_iE__Type__Extension) { template_sel old_selection = template_selection; clean_up(); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_iE__Type__Extension = new IE__Extension__Type_template(ANY_VALUE); else single_value.field_iE__Type__Extension = new IE__Extension__Type_template; single_value.union_selection = IE__Extension__UnionType::ALT_iE__Type__Extension; set_selection(SPECIFIC_VALUE); } return *single_value.field_iE__Type__Extension; } const IE__Extension__Type_template& IE__Extension__UnionType_template::iE__Type__Extension() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field iE_Type_Extension in a non-specific template of union type @GTPC_Types.IE_Extension_UnionType."); if (single_value.union_selection != IE__Extension__UnionType::ALT_iE__Type__Extension) TTCN_error("Accessing non-selected field iE_Type_Extension in a template of union type @GTPC_Types.IE_Extension_UnionType."); return *single_value.field_iE__Type__Extension; } boolean IE__Extension__UnionType_template::ischosen(IE__Extension__UnionType::union_selection_type checked_selection) const { if (checked_selection == IE__Extension__UnionType::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @GTPC_Types.IE_Extension_UnionType."); switch (template_selection) { case SPECIFIC_VALUE: if (single_value.union_selection == IE__Extension__UnionType::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @GTPC_Types.IE_Extension_UnionType."); 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 @GTPC_Types.IE_Extension_UnionType 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 IE__Extension__UnionType_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { case IE__Extension__UnionType::ALT_iE__Type__Extension: TTCN_Logger::log_event_str("{ iE_Type_Extension := "); single_value.field_iE__Type__Extension->log(); TTCN_Logger::log_event_str(" }"); break; default: TTCN_Logger::log_event_str(""); } break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void IE__Extension__UnionType_template::log_match(const IE__Extension__UnionType& 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 IE__Extension__UnionType::ALT_iE__Type__Extension: if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ TTCN_Logger::log_logmatch_info(".iE_Type_Extension"); single_value.field_iE__Type__Extension->log_match(match_value.iE__Type__Extension(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } else { TTCN_Logger::log_event_str("{ iE_Type_Extension := "); single_value.field_iE__Type__Extension->log_match(match_value.iE__Type__Extension(), legacy); TTCN_Logger::log_event_str(" }"); } break; default: TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(""); } } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void IE__Extension__UnionType_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 IE__Extension__UnionType::ALT_iE__Type__Extension: single_value.field_iE__Type__Extension->encode_text(text_buf); break; default: TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @GTPC_Types.IE_Extension_UnionType."); } 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 @GTPC_Types.IE_Extension_UnionType."); } } void IE__Extension__UnionType_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: { single_value.union_selection = IE__Extension__UnionType::UNBOUND_VALUE; IE__Extension__UnionType::union_selection_type new_selection = (IE__Extension__UnionType::union_selection_type)text_buf.pull_int().get_val(); switch (new_selection) { case IE__Extension__UnionType::ALT_iE__Type__Extension: single_value.field_iE__Type__Extension = new IE__Extension__Type_template; single_value.field_iE__Type__Extension->decode_text(text_buf); break; default: TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @GTPC_Types.IE_Extension_UnionType."); } 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 IE__Extension__UnionType_template[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 @GTPC_Types.IE_Extension_UnionType."); } } boolean IE__Extension__UnionType_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean IE__Extension__UnionType_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int v_idx=0; v_idx(param.get_id()) != NULL && param.get_id()->next_name()) { char* param_field = param.get_id()->get_current_name(); if (param_field[0] >= '0' && param_field[0] <= '9') { param.error("Unexpected array index in module parameter, expected a valid field" " name for union template type `@GTPC_Types.IE_Extension_UnionType'"); } if (strcmp("iE_Type_Extension", param_field) == 0) { iE__Type__Extension().set_param(param); return; } else param.error("Field `%s' not found in union template type `@GTPC_Types.IE_Extension_UnionType'", param_field); } param.basic_check(Module_Param::BC_TEMPLATE, "union template"); Module_Param_Ptr m_p = ¶m; switch (m_p->get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { IE__Extension__UnionType_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Value_List: if (m_p->get_size()==0) break; param.type_error("union template", "@GTPC_Types.IE_Extension_UnionType"); 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, "iE_Type_Extension")) { iE__Type__Extension().set_param(*mp_last); break; } mp_last->error("Field %s does not exist in type @GTPC_Types.IE_Extension_UnionType.", last_name); } break; case Module_Param::MP_Implication_Template: { IE__Extension__UnionType_template* precondition = new IE__Extension__UnionType_template; precondition->set_param(*m_p->get_elem(0)); IE__Extension__UnionType_template* implied_template = new IE__Extension__UnionType_template; implied_template->set_param(*m_p->get_elem(1)); *this = IE__Extension__UnionType_template(precondition, implied_template); } break; default: param.type_error("union template", "@GTPC_Types.IE_Extension_UnionType"); } is_ifpresent = param.get_ifpresent(); } void IE__Extension__UnionType_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 IE__Extension__UnionType::ALT_iE__Type__Extension: single_value.field_iE__Type__Extension->check_restriction(t_res, t_name ? t_name : "@GTPC_Types.IE_Extension_UnionType"); return; default: TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @GTPC_Types.IE_Extension_UnionType."); } 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 : "@GTPC_Types.IE_Extension_UnionType"); } IE__Extension__Type::IE__Extension__Type() { } IE__Extension__Type::IE__Extension__Type(const OCTETSTRING& par_elementIdentifier, const OCTETSTRING& par_valueField) : field_elementIdentifier(par_elementIdentifier), field_valueField(par_valueField) { } IE__Extension__Type::IE__Extension__Type(const IE__Extension__Type& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @GTPC_Types.IE_Extension_Type."); if (other_value.elementIdentifier().is_bound()) field_elementIdentifier = other_value.elementIdentifier(); else field_elementIdentifier.clean_up(); if (other_value.valueField().is_bound()) field_valueField = other_value.valueField(); else field_valueField.clean_up(); } void IE__Extension__Type::clean_up() { field_elementIdentifier.clean_up(); field_valueField.clean_up(); } const TTCN_Typedescriptor_t* IE__Extension__Type::get_descriptor() const { return &IE__Extension__Type_descr_; } IE__Extension__Type& IE__Extension__Type::operator=(const IE__Extension__Type& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @GTPC_Types.IE_Extension_Type."); if (other_value.elementIdentifier().is_bound()) field_elementIdentifier = other_value.elementIdentifier(); else field_elementIdentifier.clean_up(); if (other_value.valueField().is_bound()) field_valueField = other_value.valueField(); else field_valueField.clean_up(); } return *this; } boolean IE__Extension__Type::operator==(const IE__Extension__Type& other_value) const { return field_elementIdentifier==other_value.field_elementIdentifier && field_valueField==other_value.field_valueField; } boolean IE__Extension__Type::is_bound() const { return (field_elementIdentifier.is_bound()) || (field_valueField.is_bound()); } boolean IE__Extension__Type::is_value() const { return field_elementIdentifier.is_value() && field_valueField.is_value(); } void IE__Extension__Type::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ elementIdentifier := "); field_elementIdentifier.log(); TTCN_Logger::log_event_str(", valueField := "); field_valueField.log(); TTCN_Logger::log_event_str(" }"); } void IE__Extension__Type::set_implicit_omit() { if (elementIdentifier().is_bound()) elementIdentifier().set_implicit_omit(); if (valueField().is_bound()) valueField().set_implicit_omit(); } void IE__Extension__Type::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (20 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) elementIdentifier().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) valueField().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "elementIdentifier")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { elementIdentifier().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "valueField")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { valueField().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.IE_Extension_Type: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@GTPC_Types.IE_Extension_Type"); } } void IE__Extension__Type::encode_text(Text_Buf& text_buf) const { field_elementIdentifier.encode_text(text_buf); field_valueField.encode_text(text_buf); } void IE__Extension__Type::decode_text(Text_Buf& text_buf) { field_elementIdentifier.decode_text(text_buf); field_valueField.decode_text(text_buf); } void IE__Extension__Type::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(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;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void IE__Extension__Type::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int IE__Extension__Type::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) { (void)no_err; int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); limit-=prepaddlength; size_t last_decoded_pos = p_buf.get_pos_bit(); int decoded_length = 0; int decoded_field_length = 0; raw_order_t local_top_order; if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; else local_top_order=ORDER_LSB; RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT2_descr_.raw->forceomit); decoded_field_length = field_elementIdentifier.RAW_decode(General__Types::OCT2_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, OCTETSTRING_descr_.raw->forceomit); decoded_field_length = field_valueField.RAW_decode(OCTETSTRING_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 IE__Extension__Type::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, General__Types::OCT2_descr_.raw); myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, OCTETSTRING_descr_.raw); encoded_length += field_elementIdentifier.RAW_encode(General__Types::OCT2_descr_, *myleaf.body.node.nodes[0]); encoded_length += field_valueField.RAW_encode(OCTETSTRING_descr_, *myleaf.body.node.nodes[1]); return myleaf.length = encoded_length; } struct IE__Extension__Type_template::single_value_struct { OCTETSTRING_template field_elementIdentifier; OCTETSTRING_template field_valueField; }; void IE__Extension__Type_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_elementIdentifier = ANY_VALUE; single_value->field_valueField = ANY_VALUE; } } } void IE__Extension__Type_template::copy_value(const IE__Extension__Type& other_value) { single_value = new single_value_struct; if (other_value.elementIdentifier().is_bound()) { single_value->field_elementIdentifier = other_value.elementIdentifier(); } else { single_value->field_elementIdentifier.clean_up(); } if (other_value.valueField().is_bound()) { single_value->field_valueField = other_value.valueField(); } else { single_value->field_valueField.clean_up(); } set_selection(SPECIFIC_VALUE); } void IE__Extension__Type_template::copy_template(const IE__Extension__Type_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.elementIdentifier().get_selection()) { single_value->field_elementIdentifier = other_value.elementIdentifier(); } else { single_value->field_elementIdentifier.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.valueField().get_selection()) { single_value->field_valueField = other_value.valueField(); } else { single_value->field_valueField.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 IE__Extension__Type_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new IE__Extension__Type_template(*other_value.implication_.precondition); implication_.implied_template = new IE__Extension__Type_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @GTPC_Types.IE_Extension_Type."); break; } set_selection(other_value); } IE__Extension__Type_template::IE__Extension__Type_template() { } IE__Extension__Type_template::IE__Extension__Type_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } IE__Extension__Type_template::IE__Extension__Type_template(const IE__Extension__Type& other_value) { copy_value(other_value); } IE__Extension__Type_template::IE__Extension__Type_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const IE__Extension__Type&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @GTPC_Types.IE_Extension_Type from an unbound optional field."); } } IE__Extension__Type_template::IE__Extension__Type_template(IE__Extension__Type_template* p_precondition, IE__Extension__Type_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } IE__Extension__Type_template::IE__Extension__Type_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } IE__Extension__Type_template::IE__Extension__Type_template(const IE__Extension__Type_template& other_value) : Base_Template() { copy_template(other_value); } IE__Extension__Type_template::~IE__Extension__Type_template() { clean_up(); } IE__Extension__Type_template& IE__Extension__Type_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } IE__Extension__Type_template& IE__Extension__Type_template::operator=(const IE__Extension__Type& other_value) { clean_up(); copy_value(other_value); return *this; } IE__Extension__Type_template& IE__Extension__Type_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const IE__Extension__Type&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @GTPC_Types.IE_Extension_Type."); } return *this; } IE__Extension__Type_template& IE__Extension__Type_template::operator=(const IE__Extension__Type_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean IE__Extension__Type_template::match(const IE__Extension__Type& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.elementIdentifier().is_bound()) return FALSE; if(!single_value->field_elementIdentifier.match(other_value.elementIdentifier(), legacy))return FALSE; if(!other_value.valueField().is_bound()) return FALSE; if(!single_value->field_valueField.match(other_value.valueField(), 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 @GTPC_Types.IE_Extension_Type."); } return FALSE; } boolean IE__Extension__Type_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_elementIdentifier.is_bound() || single_value->field_valueField.is_bound(); } boolean IE__Extension__Type_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_elementIdentifier.is_value() && single_value->field_valueField.is_value(); } void IE__Extension__Type_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; } IE__Extension__Type IE__Extension__Type_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @GTPC_Types.IE_Extension_Type."); IE__Extension__Type ret_val; if (single_value->field_elementIdentifier.is_bound()) { ret_val.elementIdentifier() = single_value->field_elementIdentifier.valueof(); } if (single_value->field_valueField.is_bound()) { ret_val.valueField() = single_value->field_valueField.valueof(); } return ret_val; } void IE__Extension__Type_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @GTPC_Types.IE_Extension_Type."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new IE__Extension__Type_template[list_length]; } IE__Extension__Type_template& IE__Extension__Type_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 @GTPC_Types.IE_Extension_Type."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @GTPC_Types.IE_Extension_Type."); return value_list.list_value[list_index]; } OCTETSTRING_template& IE__Extension__Type_template::elementIdentifier() { set_specific(); return single_value->field_elementIdentifier; } const OCTETSTRING_template& IE__Extension__Type_template::elementIdentifier() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field elementIdentifier of a non-specific template of type @GTPC_Types.IE_Extension_Type."); return single_value->field_elementIdentifier; } OCTETSTRING_template& IE__Extension__Type_template::valueField() { set_specific(); return single_value->field_valueField; } const OCTETSTRING_template& IE__Extension__Type_template::valueField() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field valueField of a non-specific template of type @GTPC_Types.IE_Extension_Type."); return single_value->field_valueField; } int IE__Extension__Type_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.IE_Extension_Type 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 @GTPC_Types.IE_Extension_Type 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 @GTPC_Types.IE_Extension_Type containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.IE_Extension_Type containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.IE_Extension_Type containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.IE_Extension_Type containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.IE_Extension_Type containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.IE_Extension_Type containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.IE_Extension_Type containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @GTPC_Types.IE_Extension_Type."); } return 0; } void IE__Extension__Type_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ elementIdentifier := "); single_value->field_elementIdentifier.log(); TTCN_Logger::log_event_str(", valueField := "); single_value->field_valueField.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 IE__Extension__Type_template::log_match(const IE__Extension__Type& 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_elementIdentifier.match(match_value.elementIdentifier(), legacy)){ TTCN_Logger::log_logmatch_info(".elementIdentifier"); single_value->field_elementIdentifier.log_match(match_value.elementIdentifier(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_valueField.match(match_value.valueField(), legacy)){ TTCN_Logger::log_logmatch_info(".valueField"); single_value->field_valueField.log_match(match_value.valueField(), 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("{ elementIdentifier := "); single_value->field_elementIdentifier.log_match(match_value.elementIdentifier(), legacy); TTCN_Logger::log_event_str(", valueField := "); single_value->field_valueField.log_match(match_value.valueField(), 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 IE__Extension__Type_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_elementIdentifier.encode_text(text_buf); single_value->field_valueField.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 @GTPC_Types.IE_Extension_Type."); } } void IE__Extension__Type_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_elementIdentifier.decode_text(text_buf); single_value->field_valueField.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 IE__Extension__Type_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @GTPC_Types.IE_Extension_Type."); } } void IE__Extension__Type_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: { IE__Extension__Type_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) elementIdentifier().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) valueField().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "elementIdentifier")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { elementIdentifier().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "valueField")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { valueField().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.IE_Extension_Type: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { IE__Extension__Type_template* precondition = new IE__Extension__Type_template; precondition->set_param(*param.get_elem(0)); IE__Extension__Type_template* implied_template = new IE__Extension__Type_template; implied_template->set_param(*param.get_elem(1)); *this = IE__Extension__Type_template(precondition, implied_template); } break; default: param.type_error("record template", "@GTPC_Types.IE_Extension_Type"); } is_ifpresent = param.get_ifpresent(); } void IE__Extension__Type_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_elementIdentifier.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.IE_Extension_Type"); single_value->field_valueField.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.IE_Extension_Type"); 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 : "@GTPC_Types.IE_Extension_Type"); } boolean IE__Extension__Type_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean IE__Extension__Type_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) lengthf().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) iE__Type__Extension().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "lengthf")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { lengthf().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "iE_Type_Extension")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { iE__Type__Extension().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.IE_Type_Extension: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@GTPC_Types.IE_Type_Extension"); } } void IE__Type__Extension::encode_text(Text_Buf& text_buf) const { field_type__gtpc.encode_text(text_buf); field_lengthf.encode_text(text_buf); field_iE__Type__Extension.encode_text(text_buf); } void IE__Type__Extension::decode_text(Text_Buf& text_buf) { field_type__gtpc.decode_text(text_buf); field_lengthf.decode_text(text_buf); field_iE__Type__Extension.decode_text(text_buf); } void IE__Type__Extension::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;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void IE__Type__Extension::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;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int IE__Type__Extension::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_field1 = 0; RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit); decoded_field_length = field_type__gtpc.RAW_decode(General__Types::OCT1_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, IE__Type__Extension_lengthf_descr_.raw->forceomit); decoded_field_length = field_lengthf.RAW_decode(IE__Type__Extension_lengthf_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()); INTEGER tmp1 = field_lengthf.convert_to_Integer(IE__Type__Extension_lengthf_descr_); field_lengthf = tmp1; value_of_length_field1 += tmp1.get_long_long_val() * 8; RAW_Force_Omit field_2_force_omit(2, force_omit, IE__Extension__UnionType_descr_.raw->forceomit); decoded_field_length = field_iE__Type__Extension.RAW_decode(IE__Extension__UnionType_descr_, p_buf, min_of_ints(2, limit, value_of_length_field1), local_top_order, no_err, -1, TRUE, &field_2_force_omit); if (decoded_field_length < 0) return decoded_field_length; decoded_length+=decoded_field_length; limit-=decoded_field_length; last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); value_of_length_field1 -= decoded_field_length; if (field_type__gtpc != os_169) return -1; p_buf.set_pos_bit(last_decoded_pos); return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); } int IE__Type__Extension::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, General__Types::OCT1_descr_.raw); myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, IE__Type__Extension_lengthf_descr_.raw); myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, IE__Extension__UnionType_descr_.raw); encoded_length += field_type__gtpc.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]); encoded_length += 16; myleaf.body.node.nodes[1]->calc = CALC_LENGTH; myleaf.body.node.nodes[1]->coding_descr = &IE__Type__Extension_lengthf_descr_; myleaf.body.node.nodes[1]->calcof.lengthto.num_of_fields = 1; myleaf.body.node.nodes[1]->calcof.lengthto.unit = 8; myleaf.body.node.nodes[1]->calcof.lengthto.offset = 0; myleaf.body.node.nodes[1]->calcof.lengthto.fields = init_lengthto_fields_list(1); myleaf.body.node.nodes[1]->length = 16; myleaf.body.node.nodes[1]->calcof.lengthto.fields[0].level = myleaf.body.node.nodes[2]->curr_pos.level; myleaf.body.node.nodes[1]->calcof.lengthto.fields[0].pos = myleaf.body.node.nodes[2]->curr_pos.pos; encoded_length += field_iE__Type__Extension.RAW_encode(IE__Extension__UnionType_descr_, *myleaf.body.node.nodes[2]); if (field_type__gtpc != os_169) { 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){ os_169.RAW_encode(General__Types::OCT1_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 IE__Type__Extension_template::single_value_struct { OCTETSTRING_template field_type__gtpc; INTEGER_template field_lengthf; IE__Extension__UnionType_template field_iE__Type__Extension; }; void IE__Type__Extension_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_type__gtpc = ANY_VALUE; single_value->field_lengthf = ANY_VALUE; single_value->field_iE__Type__Extension = ANY_VALUE; } } } void IE__Type__Extension_template::copy_value(const IE__Type__Extension& other_value) { single_value = new single_value_struct; if (other_value.type__gtpc().is_bound()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (other_value.lengthf().is_bound()) { single_value->field_lengthf = other_value.lengthf(); } else { single_value->field_lengthf.clean_up(); } if (other_value.iE__Type__Extension().is_bound()) { single_value->field_iE__Type__Extension = other_value.iE__Type__Extension(); } else { single_value->field_iE__Type__Extension.clean_up(); } set_selection(SPECIFIC_VALUE); } void IE__Type__Extension_template::copy_template(const IE__Type__Extension_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.type__gtpc().get_selection()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.lengthf().get_selection()) { single_value->field_lengthf = other_value.lengthf(); } else { single_value->field_lengthf.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.iE__Type__Extension().get_selection()) { single_value->field_iE__Type__Extension = other_value.iE__Type__Extension(); } else { single_value->field_iE__Type__Extension.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 IE__Type__Extension_template[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 IE__Type__Extension_template(*other_value.implication_.precondition); implication_.implied_template = new IE__Type__Extension_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 @GTPC_Types.IE_Type_Extension."); break; } set_selection(other_value); } IE__Type__Extension_template::IE__Type__Extension_template() { } IE__Type__Extension_template::IE__Type__Extension_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } IE__Type__Extension_template::IE__Type__Extension_template(const IE__Type__Extension& other_value) { copy_value(other_value); } IE__Type__Extension_template::IE__Type__Extension_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const IE__Type__Extension&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @GTPC_Types.IE_Type_Extension from an unbound optional field."); } } IE__Type__Extension_template::IE__Type__Extension_template(IE__Type__Extension_template* p_precondition, IE__Type__Extension_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } IE__Type__Extension_template::IE__Type__Extension_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } IE__Type__Extension_template::IE__Type__Extension_template(const IE__Type__Extension_template& other_value) : Base_Template() { copy_template(other_value); } IE__Type__Extension_template::~IE__Type__Extension_template() { clean_up(); } IE__Type__Extension_template& IE__Type__Extension_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } IE__Type__Extension_template& IE__Type__Extension_template::operator=(const IE__Type__Extension& other_value) { clean_up(); copy_value(other_value); return *this; } IE__Type__Extension_template& IE__Type__Extension_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const IE__Type__Extension&)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 @GTPC_Types.IE_Type_Extension."); } return *this; } IE__Type__Extension_template& IE__Type__Extension_template::operator=(const IE__Type__Extension_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean IE__Type__Extension_template::match(const IE__Type__Extension& 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.type__gtpc().is_bound()) return FALSE; if(!single_value->field_type__gtpc.match(other_value.type__gtpc(), legacy))return FALSE; if(!other_value.lengthf().is_bound()) return FALSE; if(!single_value->field_lengthf.match(other_value.lengthf(), legacy))return FALSE; if(!other_value.iE__Type__Extension().is_bound()) return FALSE; if(!single_value->field_iE__Type__Extension.match(other_value.iE__Type__Extension(), 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 @GTPC_Types.IE_Type_Extension."); } return FALSE; } boolean IE__Type__Extension_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_type__gtpc.is_bound() || single_value->field_lengthf.is_bound() || single_value->field_iE__Type__Extension.is_bound(); } boolean IE__Type__Extension_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_type__gtpc.is_value() && single_value->field_lengthf.is_value() && single_value->field_iE__Type__Extension.is_value(); } void IE__Type__Extension_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; } IE__Type__Extension IE__Type__Extension_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 @GTPC_Types.IE_Type_Extension."); IE__Type__Extension ret_val; if (single_value->field_type__gtpc.is_bound()) { ret_val.type__gtpc() = single_value->field_type__gtpc.valueof(); } if (single_value->field_lengthf.is_bound()) { ret_val.lengthf() = single_value->field_lengthf.valueof(); } if (single_value->field_iE__Type__Extension.is_bound()) { ret_val.iE__Type__Extension() = single_value->field_iE__Type__Extension.valueof(); } return ret_val; } void IE__Type__Extension_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 @GTPC_Types.IE_Type_Extension."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new IE__Type__Extension_template[list_length]; } IE__Type__Extension_template& IE__Type__Extension_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 @GTPC_Types.IE_Type_Extension."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @GTPC_Types.IE_Type_Extension."); return value_list.list_value[list_index]; } OCTETSTRING_template& IE__Type__Extension_template::type__gtpc() { set_specific(); return single_value->field_type__gtpc; } const OCTETSTRING_template& IE__Type__Extension_template::type__gtpc() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field type_gtpc of a non-specific template of type @GTPC_Types.IE_Type_Extension."); return single_value->field_type__gtpc; } INTEGER_template& IE__Type__Extension_template::lengthf() { set_specific(); return single_value->field_lengthf; } const INTEGER_template& IE__Type__Extension_template::lengthf() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field lengthf of a non-specific template of type @GTPC_Types.IE_Type_Extension."); return single_value->field_lengthf; } IE__Extension__UnionType_template& IE__Type__Extension_template::iE__Type__Extension() { set_specific(); return single_value->field_iE__Type__Extension; } const IE__Extension__UnionType_template& IE__Type__Extension_template::iE__Type__Extension() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field iE_Type_Extension of a non-specific template of type @GTPC_Types.IE_Type_Extension."); return single_value->field_iE__Type__Extension; } int IE__Type__Extension_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.IE_Type_Extension which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: return 3; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @GTPC_Types.IE_Type_Extension 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 @GTPC_Types.IE_Type_Extension containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.IE_Type_Extension containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.IE_Type_Extension containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.IE_Type_Extension containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.IE_Type_Extension containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.IE_Type_Extension containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.IE_Type_Extension containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @GTPC_Types.IE_Type_Extension."); } return 0; } void IE__Type__Extension_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ type_gtpc := "); single_value->field_type__gtpc.log(); TTCN_Logger::log_event_str(", lengthf := "); single_value->field_lengthf.log(); TTCN_Logger::log_event_str(", iE_Type_Extension := "); single_value->field_iE__Type__Extension.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 IE__Type__Extension_template::log_match(const IE__Type__Extension& 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_type__gtpc.match(match_value.type__gtpc(), legacy)){ TTCN_Logger::log_logmatch_info(".type_gtpc"); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_lengthf.match(match_value.lengthf(), legacy)){ TTCN_Logger::log_logmatch_info(".lengthf"); single_value->field_lengthf.log_match(match_value.lengthf(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_iE__Type__Extension.match(match_value.iE__Type__Extension(), legacy)){ TTCN_Logger::log_logmatch_info(".iE_Type_Extension"); single_value->field_iE__Type__Extension.log_match(match_value.iE__Type__Extension(), 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("{ type_gtpc := "); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::log_event_str(", lengthf := "); single_value->field_lengthf.log_match(match_value.lengthf(), legacy); TTCN_Logger::log_event_str(", iE_Type_Extension := "); single_value->field_iE__Type__Extension.log_match(match_value.iE__Type__Extension(), 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 IE__Type__Extension_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_type__gtpc.encode_text(text_buf); single_value->field_lengthf.encode_text(text_buf); single_value->field_iE__Type__Extension.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 @GTPC_Types.IE_Type_Extension."); } } void IE__Type__Extension_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_type__gtpc.decode_text(text_buf); single_value->field_lengthf.decode_text(text_buf); single_value->field_iE__Type__Extension.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 IE__Type__Extension_template[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 @GTPC_Types.IE_Type_Extension."); } } void IE__Type__Extension_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: { IE__Type__Extension_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) lengthf().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) iE__Type__Extension().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "lengthf")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { lengthf().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "iE_Type_Extension")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { iE__Type__Extension().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.IE_Type_Extension: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { IE__Type__Extension_template* precondition = new IE__Type__Extension_template; precondition->set_param(*param.get_elem(0)); IE__Type__Extension_template* implied_template = new IE__Type__Extension_template; implied_template->set_param(*param.get_elem(1)); *this = IE__Type__Extension_template(precondition, implied_template); } break; default: param.type_error("record template", "@GTPC_Types.IE_Type_Extension"); } is_ifpresent = param.get_ifpresent(); } void IE__Type__Extension_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_type__gtpc.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.IE_Type_Extension"); single_value->field_lengthf.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.IE_Type_Extension"); single_value->field_iE__Type__Extension.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.IE_Type_Extension"); 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 : "@GTPC_Types.IE_Type_Extension"); } boolean IE__Type__Extension_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean IE__Type__Extension_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) causevalue().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "causevalue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { causevalue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.Cause_gtpc: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@GTPC_Types.Cause_gtpc"); } } void Cause__gtpc::encode_text(Text_Buf& text_buf) const { field_type__gtpc.encode_text(text_buf); field_causevalue.encode_text(text_buf); } void Cause__gtpc::decode_text(Text_Buf& text_buf) { field_type__gtpc.decode_text(text_buf); field_causevalue.decode_text(text_buf); } void Cause__gtpc::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;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void Cause__gtpc::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;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int Cause__gtpc::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) { (void)no_err; int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); limit-=prepaddlength; size_t last_decoded_pos = p_buf.get_pos_bit(); int decoded_length = 0; int decoded_field_length = 0; raw_order_t local_top_order; if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; else local_top_order=ORDER_LSB; RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit); decoded_field_length = field_type__gtpc.RAW_decode(General__Types::OCT1_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, General__Types::OCT1_descr_.raw->forceomit); decoded_field_length = field_causevalue.RAW_decode(General__Types::OCT1_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 (field_type__gtpc != os_13) return -1; p_buf.set_pos_bit(last_decoded_pos); return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); } int Cause__gtpc::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, General__Types::OCT1_descr_.raw); myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::OCT1_descr_.raw); encoded_length += field_type__gtpc.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]); encoded_length += field_causevalue.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[1]); if (field_type__gtpc != os_13) { 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){ os_13.RAW_encode(General__Types::OCT1_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 Cause__gtpc_template::single_value_struct { OCTETSTRING_template field_type__gtpc; OCTETSTRING_template field_causevalue; }; void Cause__gtpc_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_type__gtpc = ANY_VALUE; single_value->field_causevalue = ANY_VALUE; } } } void Cause__gtpc_template::copy_value(const Cause__gtpc& other_value) { single_value = new single_value_struct; if (other_value.type__gtpc().is_bound()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (other_value.causevalue().is_bound()) { single_value->field_causevalue = other_value.causevalue(); } else { single_value->field_causevalue.clean_up(); } set_selection(SPECIFIC_VALUE); } void Cause__gtpc_template::copy_template(const Cause__gtpc_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.type__gtpc().get_selection()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.causevalue().get_selection()) { single_value->field_causevalue = other_value.causevalue(); } else { single_value->field_causevalue.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 Cause__gtpc_template[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 Cause__gtpc_template(*other_value.implication_.precondition); implication_.implied_template = new Cause__gtpc_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 @GTPC_Types.Cause_gtpc."); break; } set_selection(other_value); } Cause__gtpc_template::Cause__gtpc_template() { } Cause__gtpc_template::Cause__gtpc_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } Cause__gtpc_template::Cause__gtpc_template(const Cause__gtpc& other_value) { copy_value(other_value); } Cause__gtpc_template::Cause__gtpc_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const Cause__gtpc&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @GTPC_Types.Cause_gtpc from an unbound optional field."); } } Cause__gtpc_template::Cause__gtpc_template(Cause__gtpc_template* p_precondition, Cause__gtpc_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } Cause__gtpc_template::Cause__gtpc_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } Cause__gtpc_template::Cause__gtpc_template(const Cause__gtpc_template& other_value) : Base_Template() { copy_template(other_value); } Cause__gtpc_template::~Cause__gtpc_template() { clean_up(); } Cause__gtpc_template& Cause__gtpc_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } Cause__gtpc_template& Cause__gtpc_template::operator=(const Cause__gtpc& other_value) { clean_up(); copy_value(other_value); return *this; } Cause__gtpc_template& Cause__gtpc_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const Cause__gtpc&)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 @GTPC_Types.Cause_gtpc."); } return *this; } Cause__gtpc_template& Cause__gtpc_template::operator=(const Cause__gtpc_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean Cause__gtpc_template::match(const Cause__gtpc& 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.type__gtpc().is_bound()) return FALSE; if(!single_value->field_type__gtpc.match(other_value.type__gtpc(), legacy))return FALSE; if(!other_value.causevalue().is_bound()) return FALSE; if(!single_value->field_causevalue.match(other_value.causevalue(), 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 @GTPC_Types.Cause_gtpc."); } return FALSE; } boolean Cause__gtpc_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_type__gtpc.is_bound() || single_value->field_causevalue.is_bound(); } boolean Cause__gtpc_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_type__gtpc.is_value() && single_value->field_causevalue.is_value(); } void Cause__gtpc_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; } Cause__gtpc Cause__gtpc_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 @GTPC_Types.Cause_gtpc."); Cause__gtpc ret_val; if (single_value->field_type__gtpc.is_bound()) { ret_val.type__gtpc() = single_value->field_type__gtpc.valueof(); } if (single_value->field_causevalue.is_bound()) { ret_val.causevalue() = single_value->field_causevalue.valueof(); } return ret_val; } void Cause__gtpc_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 @GTPC_Types.Cause_gtpc."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new Cause__gtpc_template[list_length]; } Cause__gtpc_template& Cause__gtpc_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 @GTPC_Types.Cause_gtpc."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @GTPC_Types.Cause_gtpc."); return value_list.list_value[list_index]; } OCTETSTRING_template& Cause__gtpc_template::type__gtpc() { set_specific(); return single_value->field_type__gtpc; } const OCTETSTRING_template& Cause__gtpc_template::type__gtpc() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field type_gtpc of a non-specific template of type @GTPC_Types.Cause_gtpc."); return single_value->field_type__gtpc; } OCTETSTRING_template& Cause__gtpc_template::causevalue() { set_specific(); return single_value->field_causevalue; } const OCTETSTRING_template& Cause__gtpc_template::causevalue() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field causevalue of a non-specific template of type @GTPC_Types.Cause_gtpc."); return single_value->field_causevalue; } int Cause__gtpc_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.Cause_gtpc 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 @GTPC_Types.Cause_gtpc 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 @GTPC_Types.Cause_gtpc containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.Cause_gtpc containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.Cause_gtpc containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.Cause_gtpc containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.Cause_gtpc containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.Cause_gtpc containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.Cause_gtpc containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @GTPC_Types.Cause_gtpc."); } return 0; } void Cause__gtpc_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ type_gtpc := "); single_value->field_type__gtpc.log(); TTCN_Logger::log_event_str(", causevalue := "); single_value->field_causevalue.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 Cause__gtpc_template::log_match(const Cause__gtpc& 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_type__gtpc.match(match_value.type__gtpc(), legacy)){ TTCN_Logger::log_logmatch_info(".type_gtpc"); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_causevalue.match(match_value.causevalue(), legacy)){ TTCN_Logger::log_logmatch_info(".causevalue"); single_value->field_causevalue.log_match(match_value.causevalue(), 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("{ type_gtpc := "); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::log_event_str(", causevalue := "); single_value->field_causevalue.log_match(match_value.causevalue(), 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 Cause__gtpc_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_type__gtpc.encode_text(text_buf); single_value->field_causevalue.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 @GTPC_Types.Cause_gtpc."); } } void Cause__gtpc_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_type__gtpc.decode_text(text_buf); single_value->field_causevalue.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 Cause__gtpc_template[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 @GTPC_Types.Cause_gtpc."); } } void Cause__gtpc_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: { Cause__gtpc_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) causevalue().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "causevalue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { causevalue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.Cause_gtpc: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { Cause__gtpc_template* precondition = new Cause__gtpc_template; precondition->set_param(*param.get_elem(0)); Cause__gtpc_template* implied_template = new Cause__gtpc_template; implied_template->set_param(*param.get_elem(1)); *this = Cause__gtpc_template(precondition, implied_template); } break; default: param.type_error("record template", "@GTPC_Types.Cause_gtpc"); } is_ifpresent = param.get_ifpresent(); } void Cause__gtpc_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_type__gtpc.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.Cause_gtpc"); single_value->field_causevalue.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.Cause_gtpc"); 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 : "@GTPC_Types.Cause_gtpc"); } boolean Cause__gtpc_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean Cause__gtpc_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) digits().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) padding().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "digits")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { digits().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "padding")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { padding().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.IMSI_gtpc: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@GTPC_Types.IMSI_gtpc"); } } void IMSI__gtpc::encode_text(Text_Buf& text_buf) const { field_type__gtpc.encode_text(text_buf); field_digits.encode_text(text_buf); field_padding.encode_text(text_buf); } void IMSI__gtpc::decode_text(Text_Buf& text_buf) { field_type__gtpc.decode_text(text_buf); field_digits.decode_text(text_buf); field_padding.decode_text(text_buf); } void IMSI__gtpc::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;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void IMSI__gtpc::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;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int IMSI__gtpc::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) { (void)no_err; int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); limit-=prepaddlength; size_t last_decoded_pos = p_buf.get_pos_bit(); int decoded_length = 0; int decoded_field_length = 0; raw_order_t local_top_order; if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; else local_top_order=ORDER_LSB; RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit); decoded_field_length = field_type__gtpc.RAW_decode(General__Types::OCT1_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, IMSI__gtpc_digits_descr_.raw->forceomit); decoded_field_length = field_digits.RAW_decode(IMSI__gtpc_digits_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, General__Types::HEX1_descr_.raw->forceomit); decoded_field_length = field_padding.RAW_decode(General__Types::HEX1_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 (field_type__gtpc != os_2) return -1; p_buf.set_pos_bit(last_decoded_pos); return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); } int IMSI__gtpc::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, General__Types::OCT1_descr_.raw); myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, IMSI__gtpc_digits_descr_.raw); myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, General__Types::HEX1_descr_.raw); encoded_length += field_type__gtpc.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]); encoded_length += field_digits.RAW_encode(IMSI__gtpc_digits_descr_, *myleaf.body.node.nodes[1]); encoded_length += field_padding.RAW_encode(General__Types::HEX1_descr_, *myleaf.body.node.nodes[2]); if (field_type__gtpc != os_2) { 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){ os_2.RAW_encode(General__Types::OCT1_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 IMSI__gtpc_template::single_value_struct { OCTETSTRING_template field_type__gtpc; HEXSTRING_template field_digits; HEXSTRING_template field_padding; }; void IMSI__gtpc_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_type__gtpc = ANY_VALUE; single_value->field_digits = ANY_VALUE; single_value->field_padding = ANY_VALUE; } } } void IMSI__gtpc_template::copy_value(const IMSI__gtpc& other_value) { single_value = new single_value_struct; if (other_value.type__gtpc().is_bound()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (other_value.digits().is_bound()) { single_value->field_digits = other_value.digits(); } else { single_value->field_digits.clean_up(); } if (other_value.padding().is_bound()) { single_value->field_padding = other_value.padding(); } else { single_value->field_padding.clean_up(); } set_selection(SPECIFIC_VALUE); } void IMSI__gtpc_template::copy_template(const IMSI__gtpc_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.type__gtpc().get_selection()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.digits().get_selection()) { single_value->field_digits = other_value.digits(); } else { single_value->field_digits.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.padding().get_selection()) { single_value->field_padding = other_value.padding(); } else { single_value->field_padding.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 IMSI__gtpc_template[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 IMSI__gtpc_template(*other_value.implication_.precondition); implication_.implied_template = new IMSI__gtpc_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 @GTPC_Types.IMSI_gtpc."); break; } set_selection(other_value); } IMSI__gtpc_template::IMSI__gtpc_template() { } IMSI__gtpc_template::IMSI__gtpc_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } IMSI__gtpc_template::IMSI__gtpc_template(const IMSI__gtpc& other_value) { copy_value(other_value); } IMSI__gtpc_template::IMSI__gtpc_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const IMSI__gtpc&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @GTPC_Types.IMSI_gtpc from an unbound optional field."); } } IMSI__gtpc_template::IMSI__gtpc_template(IMSI__gtpc_template* p_precondition, IMSI__gtpc_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } IMSI__gtpc_template::IMSI__gtpc_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } IMSI__gtpc_template::IMSI__gtpc_template(const IMSI__gtpc_template& other_value) : Base_Template() { copy_template(other_value); } IMSI__gtpc_template::~IMSI__gtpc_template() { clean_up(); } IMSI__gtpc_template& IMSI__gtpc_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } IMSI__gtpc_template& IMSI__gtpc_template::operator=(const IMSI__gtpc& other_value) { clean_up(); copy_value(other_value); return *this; } IMSI__gtpc_template& IMSI__gtpc_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const IMSI__gtpc&)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 @GTPC_Types.IMSI_gtpc."); } return *this; } IMSI__gtpc_template& IMSI__gtpc_template::operator=(const IMSI__gtpc_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean IMSI__gtpc_template::match(const IMSI__gtpc& 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.type__gtpc().is_bound()) return FALSE; if(!single_value->field_type__gtpc.match(other_value.type__gtpc(), legacy))return FALSE; if(!other_value.digits().is_bound()) return FALSE; if(!single_value->field_digits.match(other_value.digits(), legacy))return FALSE; if(!other_value.padding().is_bound()) return FALSE; if(!single_value->field_padding.match(other_value.padding(), 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 @GTPC_Types.IMSI_gtpc."); } return FALSE; } boolean IMSI__gtpc_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_type__gtpc.is_bound() || single_value->field_digits.is_bound() || single_value->field_padding.is_bound(); } boolean IMSI__gtpc_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_type__gtpc.is_value() && single_value->field_digits.is_value() && single_value->field_padding.is_value(); } void IMSI__gtpc_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; } IMSI__gtpc IMSI__gtpc_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 @GTPC_Types.IMSI_gtpc."); IMSI__gtpc ret_val; if (single_value->field_type__gtpc.is_bound()) { ret_val.type__gtpc() = single_value->field_type__gtpc.valueof(); } if (single_value->field_digits.is_bound()) { ret_val.digits() = single_value->field_digits.valueof(); } if (single_value->field_padding.is_bound()) { ret_val.padding() = single_value->field_padding.valueof(); } return ret_val; } void IMSI__gtpc_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 @GTPC_Types.IMSI_gtpc."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new IMSI__gtpc_template[list_length]; } IMSI__gtpc_template& IMSI__gtpc_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 @GTPC_Types.IMSI_gtpc."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @GTPC_Types.IMSI_gtpc."); return value_list.list_value[list_index]; } OCTETSTRING_template& IMSI__gtpc_template::type__gtpc() { set_specific(); return single_value->field_type__gtpc; } const OCTETSTRING_template& IMSI__gtpc_template::type__gtpc() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field type_gtpc of a non-specific template of type @GTPC_Types.IMSI_gtpc."); return single_value->field_type__gtpc; } HEXSTRING_template& IMSI__gtpc_template::digits() { set_specific(); return single_value->field_digits; } const HEXSTRING_template& IMSI__gtpc_template::digits() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field digits of a non-specific template of type @GTPC_Types.IMSI_gtpc."); return single_value->field_digits; } HEXSTRING_template& IMSI__gtpc_template::padding() { set_specific(); return single_value->field_padding; } const HEXSTRING_template& IMSI__gtpc_template::padding() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field padding of a non-specific template of type @GTPC_Types.IMSI_gtpc."); return single_value->field_padding; } int IMSI__gtpc_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.IMSI_gtpc which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: return 3; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @GTPC_Types.IMSI_gtpc 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 @GTPC_Types.IMSI_gtpc containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.IMSI_gtpc containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.IMSI_gtpc containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.IMSI_gtpc containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.IMSI_gtpc containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.IMSI_gtpc containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.IMSI_gtpc containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @GTPC_Types.IMSI_gtpc."); } return 0; } void IMSI__gtpc_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ type_gtpc := "); single_value->field_type__gtpc.log(); TTCN_Logger::log_event_str(", digits := "); single_value->field_digits.log(); TTCN_Logger::log_event_str(", padding := "); single_value->field_padding.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 IMSI__gtpc_template::log_match(const IMSI__gtpc& 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_type__gtpc.match(match_value.type__gtpc(), legacy)){ TTCN_Logger::log_logmatch_info(".type_gtpc"); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_digits.match(match_value.digits(), legacy)){ TTCN_Logger::log_logmatch_info(".digits"); single_value->field_digits.log_match(match_value.digits(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_padding.match(match_value.padding(), legacy)){ TTCN_Logger::log_logmatch_info(".padding"); single_value->field_padding.log_match(match_value.padding(), 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("{ type_gtpc := "); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::log_event_str(", digits := "); single_value->field_digits.log_match(match_value.digits(), legacy); TTCN_Logger::log_event_str(", padding := "); single_value->field_padding.log_match(match_value.padding(), 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 IMSI__gtpc_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_type__gtpc.encode_text(text_buf); single_value->field_digits.encode_text(text_buf); single_value->field_padding.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 @GTPC_Types.IMSI_gtpc."); } } void IMSI__gtpc_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_type__gtpc.decode_text(text_buf); single_value->field_digits.decode_text(text_buf); single_value->field_padding.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 IMSI__gtpc_template[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 @GTPC_Types.IMSI_gtpc."); } } void IMSI__gtpc_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: { IMSI__gtpc_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) digits().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) padding().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "digits")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { digits().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "padding")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { padding().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.IMSI_gtpc: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { IMSI__gtpc_template* precondition = new IMSI__gtpc_template; precondition->set_param(*param.get_elem(0)); IMSI__gtpc_template* implied_template = new IMSI__gtpc_template; implied_template->set_param(*param.get_elem(1)); *this = IMSI__gtpc_template(precondition, implied_template); } break; default: param.type_error("record template", "@GTPC_Types.IMSI_gtpc"); } is_ifpresent = param.get_ifpresent(); } void IMSI__gtpc_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_type__gtpc.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.IMSI_gtpc"); single_value->field_digits.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.IMSI_gtpc"); single_value->field_padding.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.IMSI_gtpc"); 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 : "@GTPC_Types.IMSI_gtpc"); } boolean IMSI__gtpc_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean IMSI__gtpc_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) mcc__digits().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) mnc__digits().set_param(*param.get_elem(2)); if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) lac().set_param(*param.get_elem(3)); if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) rac().set_param(*param.get_elem(4)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "mcc_digits")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { mcc__digits().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "mnc_digits")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { mnc__digits().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "lac")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { lac().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "rac")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { rac().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.RoutingAreaIdentity: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@GTPC_Types.RoutingAreaIdentity"); } } void RoutingAreaIdentity::encode_text(Text_Buf& text_buf) const { field_type__gtpc.encode_text(text_buf); field_mcc__digits.encode_text(text_buf); field_mnc__digits.encode_text(text_buf); field_lac.encode_text(text_buf); field_rac.encode_text(text_buf); } void RoutingAreaIdentity::decode_text(Text_Buf& text_buf) { field_type__gtpc.decode_text(text_buf); field_mcc__digits.decode_text(text_buf); field_mnc__digits.decode_text(text_buf); field_lac.decode_text(text_buf); field_rac.decode_text(text_buf); } void RoutingAreaIdentity::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;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void RoutingAreaIdentity::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;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int RoutingAreaIdentity::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) { (void)no_err; int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); limit-=prepaddlength; size_t last_decoded_pos = p_buf.get_pos_bit(); int decoded_length = 0; int decoded_field_length = 0; raw_order_t local_top_order; if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; else local_top_order=ORDER_LSB; RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit); decoded_field_length = field_type__gtpc.RAW_decode(General__Types::OCT1_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, RoutingAreaIdentity_mcc__digits_descr_.raw->forceomit); decoded_field_length = field_mcc__digits.RAW_decode(RoutingAreaIdentity_mcc__digits_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, RoutingAreaIdentity_mnc__digits_descr_.raw->forceomit); decoded_field_length = field_mnc__digits.RAW_decode(RoutingAreaIdentity_mnc__digits_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_2_force_omit); if (decoded_field_length < 0) return decoded_field_length; decoded_length+=decoded_field_length; limit-=decoded_field_length; last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); RAW_Force_Omit field_3_force_omit(3, force_omit, General__Types::OCT2_descr_.raw->forceomit); decoded_field_length = field_lac.RAW_decode(General__Types::OCT2_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, General__Types::OCT1_descr_.raw->forceomit); decoded_field_length = field_rac.RAW_decode(General__Types::OCT1_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 (field_type__gtpc != os_3) return -1; p_buf.set_pos_bit(last_decoded_pos); return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); } int RoutingAreaIdentity::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, General__Types::OCT1_descr_.raw); myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, RoutingAreaIdentity_mcc__digits_descr_.raw); myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, RoutingAreaIdentity_mnc__digits_descr_.raw); myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, General__Types::OCT2_descr_.raw); myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, General__Types::OCT1_descr_.raw); encoded_length += field_type__gtpc.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]); encoded_length += field_mcc__digits.RAW_encode(RoutingAreaIdentity_mcc__digits_descr_, *myleaf.body.node.nodes[1]); encoded_length += field_mnc__digits.RAW_encode(RoutingAreaIdentity_mnc__digits_descr_, *myleaf.body.node.nodes[2]); encoded_length += field_lac.RAW_encode(General__Types::OCT2_descr_, *myleaf.body.node.nodes[3]); encoded_length += field_rac.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[4]); if (field_type__gtpc != os_3) { 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){ os_3.RAW_encode(General__Types::OCT1_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 RoutingAreaIdentity_template::single_value_struct { OCTETSTRING_template field_type__gtpc; HEXSTRING_template field_mcc__digits; HEXSTRING_template field_mnc__digits; OCTETSTRING_template field_lac; OCTETSTRING_template field_rac; }; void RoutingAreaIdentity_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_type__gtpc = ANY_VALUE; single_value->field_mcc__digits = ANY_VALUE; single_value->field_mnc__digits = ANY_VALUE; single_value->field_lac = ANY_VALUE; single_value->field_rac = ANY_VALUE; } } } void RoutingAreaIdentity_template::copy_value(const RoutingAreaIdentity& other_value) { single_value = new single_value_struct; if (other_value.type__gtpc().is_bound()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (other_value.mcc__digits().is_bound()) { single_value->field_mcc__digits = other_value.mcc__digits(); } else { single_value->field_mcc__digits.clean_up(); } if (other_value.mnc__digits().is_bound()) { single_value->field_mnc__digits = other_value.mnc__digits(); } else { single_value->field_mnc__digits.clean_up(); } if (other_value.lac().is_bound()) { single_value->field_lac = other_value.lac(); } else { single_value->field_lac.clean_up(); } if (other_value.rac().is_bound()) { single_value->field_rac = other_value.rac(); } else { single_value->field_rac.clean_up(); } set_selection(SPECIFIC_VALUE); } void RoutingAreaIdentity_template::copy_template(const RoutingAreaIdentity_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.type__gtpc().get_selection()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.mcc__digits().get_selection()) { single_value->field_mcc__digits = other_value.mcc__digits(); } else { single_value->field_mcc__digits.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.mnc__digits().get_selection()) { single_value->field_mnc__digits = other_value.mnc__digits(); } else { single_value->field_mnc__digits.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.lac().get_selection()) { single_value->field_lac = other_value.lac(); } else { single_value->field_lac.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.rac().get_selection()) { single_value->field_rac = other_value.rac(); } else { single_value->field_rac.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 RoutingAreaIdentity_template[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 RoutingAreaIdentity_template(*other_value.implication_.precondition); implication_.implied_template = new RoutingAreaIdentity_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 @GTPC_Types.RoutingAreaIdentity."); break; } set_selection(other_value); } RoutingAreaIdentity_template::RoutingAreaIdentity_template() { } RoutingAreaIdentity_template::RoutingAreaIdentity_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } RoutingAreaIdentity_template::RoutingAreaIdentity_template(const RoutingAreaIdentity& other_value) { copy_value(other_value); } RoutingAreaIdentity_template::RoutingAreaIdentity_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const RoutingAreaIdentity&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @GTPC_Types.RoutingAreaIdentity from an unbound optional field."); } } RoutingAreaIdentity_template::RoutingAreaIdentity_template(RoutingAreaIdentity_template* p_precondition, RoutingAreaIdentity_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } RoutingAreaIdentity_template::RoutingAreaIdentity_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } RoutingAreaIdentity_template::RoutingAreaIdentity_template(const RoutingAreaIdentity_template& other_value) : Base_Template() { copy_template(other_value); } RoutingAreaIdentity_template::~RoutingAreaIdentity_template() { clean_up(); } RoutingAreaIdentity_template& RoutingAreaIdentity_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } RoutingAreaIdentity_template& RoutingAreaIdentity_template::operator=(const RoutingAreaIdentity& other_value) { clean_up(); copy_value(other_value); return *this; } RoutingAreaIdentity_template& RoutingAreaIdentity_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const RoutingAreaIdentity&)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 @GTPC_Types.RoutingAreaIdentity."); } return *this; } RoutingAreaIdentity_template& RoutingAreaIdentity_template::operator=(const RoutingAreaIdentity_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean RoutingAreaIdentity_template::match(const RoutingAreaIdentity& 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.type__gtpc().is_bound()) return FALSE; if(!single_value->field_type__gtpc.match(other_value.type__gtpc(), legacy))return FALSE; if(!other_value.mcc__digits().is_bound()) return FALSE; if(!single_value->field_mcc__digits.match(other_value.mcc__digits(), legacy))return FALSE; if(!other_value.mnc__digits().is_bound()) return FALSE; if(!single_value->field_mnc__digits.match(other_value.mnc__digits(), legacy))return FALSE; if(!other_value.lac().is_bound()) return FALSE; if(!single_value->field_lac.match(other_value.lac(), legacy))return FALSE; if(!other_value.rac().is_bound()) return FALSE; if(!single_value->field_rac.match(other_value.rac(), 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 @GTPC_Types.RoutingAreaIdentity."); } return FALSE; } boolean RoutingAreaIdentity_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_type__gtpc.is_bound() || single_value->field_mcc__digits.is_bound() || single_value->field_mnc__digits.is_bound() || single_value->field_lac.is_bound() || single_value->field_rac.is_bound(); } boolean RoutingAreaIdentity_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_type__gtpc.is_value() && single_value->field_mcc__digits.is_value() && single_value->field_mnc__digits.is_value() && single_value->field_lac.is_value() && single_value->field_rac.is_value(); } void RoutingAreaIdentity_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; } RoutingAreaIdentity RoutingAreaIdentity_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 @GTPC_Types.RoutingAreaIdentity."); RoutingAreaIdentity ret_val; if (single_value->field_type__gtpc.is_bound()) { ret_val.type__gtpc() = single_value->field_type__gtpc.valueof(); } if (single_value->field_mcc__digits.is_bound()) { ret_val.mcc__digits() = single_value->field_mcc__digits.valueof(); } if (single_value->field_mnc__digits.is_bound()) { ret_val.mnc__digits() = single_value->field_mnc__digits.valueof(); } if (single_value->field_lac.is_bound()) { ret_val.lac() = single_value->field_lac.valueof(); } if (single_value->field_rac.is_bound()) { ret_val.rac() = single_value->field_rac.valueof(); } return ret_val; } void RoutingAreaIdentity_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 @GTPC_Types.RoutingAreaIdentity."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new RoutingAreaIdentity_template[list_length]; } RoutingAreaIdentity_template& RoutingAreaIdentity_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 @GTPC_Types.RoutingAreaIdentity."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @GTPC_Types.RoutingAreaIdentity."); return value_list.list_value[list_index]; } OCTETSTRING_template& RoutingAreaIdentity_template::type__gtpc() { set_specific(); return single_value->field_type__gtpc; } const OCTETSTRING_template& RoutingAreaIdentity_template::type__gtpc() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field type_gtpc of a non-specific template of type @GTPC_Types.RoutingAreaIdentity."); return single_value->field_type__gtpc; } HEXSTRING_template& RoutingAreaIdentity_template::mcc__digits() { set_specific(); return single_value->field_mcc__digits; } const HEXSTRING_template& RoutingAreaIdentity_template::mcc__digits() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field mcc_digits of a non-specific template of type @GTPC_Types.RoutingAreaIdentity."); return single_value->field_mcc__digits; } HEXSTRING_template& RoutingAreaIdentity_template::mnc__digits() { set_specific(); return single_value->field_mnc__digits; } const HEXSTRING_template& RoutingAreaIdentity_template::mnc__digits() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field mnc_digits of a non-specific template of type @GTPC_Types.RoutingAreaIdentity."); return single_value->field_mnc__digits; } OCTETSTRING_template& RoutingAreaIdentity_template::lac() { set_specific(); return single_value->field_lac; } const OCTETSTRING_template& RoutingAreaIdentity_template::lac() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field lac of a non-specific template of type @GTPC_Types.RoutingAreaIdentity."); return single_value->field_lac; } OCTETSTRING_template& RoutingAreaIdentity_template::rac() { set_specific(); return single_value->field_rac; } const OCTETSTRING_template& RoutingAreaIdentity_template::rac() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field rac of a non-specific template of type @GTPC_Types.RoutingAreaIdentity."); return single_value->field_rac; } int RoutingAreaIdentity_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RoutingAreaIdentity which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: return 5; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @GTPC_Types.RoutingAreaIdentity 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 @GTPC_Types.RoutingAreaIdentity containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RoutingAreaIdentity containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RoutingAreaIdentity containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RoutingAreaIdentity containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RoutingAreaIdentity containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RoutingAreaIdentity containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RoutingAreaIdentity containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @GTPC_Types.RoutingAreaIdentity."); } return 0; } void RoutingAreaIdentity_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ type_gtpc := "); single_value->field_type__gtpc.log(); TTCN_Logger::log_event_str(", mcc_digits := "); single_value->field_mcc__digits.log(); TTCN_Logger::log_event_str(", mnc_digits := "); single_value->field_mnc__digits.log(); TTCN_Logger::log_event_str(", lac := "); single_value->field_lac.log(); TTCN_Logger::log_event_str(", rac := "); single_value->field_rac.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 RoutingAreaIdentity_template::log_match(const RoutingAreaIdentity& 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_type__gtpc.match(match_value.type__gtpc(), legacy)){ TTCN_Logger::log_logmatch_info(".type_gtpc"); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_mcc__digits.match(match_value.mcc__digits(), legacy)){ TTCN_Logger::log_logmatch_info(".mcc_digits"); single_value->field_mcc__digits.log_match(match_value.mcc__digits(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_mnc__digits.match(match_value.mnc__digits(), legacy)){ TTCN_Logger::log_logmatch_info(".mnc_digits"); single_value->field_mnc__digits.log_match(match_value.mnc__digits(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_lac.match(match_value.lac(), legacy)){ TTCN_Logger::log_logmatch_info(".lac"); single_value->field_lac.log_match(match_value.lac(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_rac.match(match_value.rac(), legacy)){ TTCN_Logger::log_logmatch_info(".rac"); single_value->field_rac.log_match(match_value.rac(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } }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("{ type_gtpc := "); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::log_event_str(", mcc_digits := "); single_value->field_mcc__digits.log_match(match_value.mcc__digits(), legacy); TTCN_Logger::log_event_str(", mnc_digits := "); single_value->field_mnc__digits.log_match(match_value.mnc__digits(), legacy); TTCN_Logger::log_event_str(", lac := "); single_value->field_lac.log_match(match_value.lac(), legacy); TTCN_Logger::log_event_str(", rac := "); single_value->field_rac.log_match(match_value.rac(), 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 RoutingAreaIdentity_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_type__gtpc.encode_text(text_buf); single_value->field_mcc__digits.encode_text(text_buf); single_value->field_mnc__digits.encode_text(text_buf); single_value->field_lac.encode_text(text_buf); single_value->field_rac.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 @GTPC_Types.RoutingAreaIdentity."); } } void RoutingAreaIdentity_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_type__gtpc.decode_text(text_buf); single_value->field_mcc__digits.decode_text(text_buf); single_value->field_mnc__digits.decode_text(text_buf); single_value->field_lac.decode_text(text_buf); single_value->field_rac.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 RoutingAreaIdentity_template[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 @GTPC_Types.RoutingAreaIdentity."); } } void RoutingAreaIdentity_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: { RoutingAreaIdentity_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) mcc__digits().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) mnc__digits().set_param(*param.get_elem(2)); if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) lac().set_param(*param.get_elem(3)); if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) rac().set_param(*param.get_elem(4)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "mcc_digits")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { mcc__digits().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "mnc_digits")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { mnc__digits().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "lac")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { lac().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "rac")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { rac().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.RoutingAreaIdentity: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { RoutingAreaIdentity_template* precondition = new RoutingAreaIdentity_template; precondition->set_param(*param.get_elem(0)); RoutingAreaIdentity_template* implied_template = new RoutingAreaIdentity_template; implied_template->set_param(*param.get_elem(1)); *this = RoutingAreaIdentity_template(precondition, implied_template); } break; default: param.type_error("record template", "@GTPC_Types.RoutingAreaIdentity"); } is_ifpresent = param.get_ifpresent(); } void RoutingAreaIdentity_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_type__gtpc.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.RoutingAreaIdentity"); single_value->field_mcc__digits.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.RoutingAreaIdentity"); single_value->field_mnc__digits.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.RoutingAreaIdentity"); single_value->field_lac.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.RoutingAreaIdentity"); single_value->field_rac.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.RoutingAreaIdentity"); 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 : "@GTPC_Types.RoutingAreaIdentity"); } boolean RoutingAreaIdentity_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean RoutingAreaIdentity_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) tlli__element().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "tlli_element")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { tlli__element().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.TLLI: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@GTPC_Types.TLLI"); } } void TLLI::encode_text(Text_Buf& text_buf) const { field_type__gtpc.encode_text(text_buf); field_tlli__element.encode_text(text_buf); } void TLLI::decode_text(Text_Buf& text_buf) { field_type__gtpc.decode_text(text_buf); field_tlli__element.decode_text(text_buf); } void TLLI::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;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void TLLI::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;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int TLLI::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) { (void)no_err; int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); limit-=prepaddlength; size_t last_decoded_pos = p_buf.get_pos_bit(); int decoded_length = 0; int decoded_field_length = 0; raw_order_t local_top_order; if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; else local_top_order=ORDER_LSB; RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit); decoded_field_length = field_type__gtpc.RAW_decode(General__Types::OCT1_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, General__Types::OCT4_descr_.raw->forceomit); decoded_field_length = field_tlli__element.RAW_decode(General__Types::OCT4_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 (field_type__gtpc != os_58) return -1; p_buf.set_pos_bit(last_decoded_pos); return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); } int TLLI::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, General__Types::OCT1_descr_.raw); myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::OCT4_descr_.raw); encoded_length += field_type__gtpc.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]); encoded_length += field_tlli__element.RAW_encode(General__Types::OCT4_descr_, *myleaf.body.node.nodes[1]); if (field_type__gtpc != os_58) { 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){ os_58.RAW_encode(General__Types::OCT1_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 TLLI_template::single_value_struct { OCTETSTRING_template field_type__gtpc; OCTETSTRING_template field_tlli__element; }; void TLLI_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_type__gtpc = ANY_VALUE; single_value->field_tlli__element = ANY_VALUE; } } } void TLLI_template::copy_value(const TLLI& other_value) { single_value = new single_value_struct; if (other_value.type__gtpc().is_bound()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (other_value.tlli__element().is_bound()) { single_value->field_tlli__element = other_value.tlli__element(); } else { single_value->field_tlli__element.clean_up(); } set_selection(SPECIFIC_VALUE); } void TLLI_template::copy_template(const TLLI_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.type__gtpc().get_selection()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.tlli__element().get_selection()) { single_value->field_tlli__element = other_value.tlli__element(); } else { single_value->field_tlli__element.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 TLLI_template[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 TLLI_template(*other_value.implication_.precondition); implication_.implied_template = new TLLI_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 @GTPC_Types.TLLI."); break; } set_selection(other_value); } TLLI_template::TLLI_template() { } TLLI_template::TLLI_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } TLLI_template::TLLI_template(const TLLI& other_value) { copy_value(other_value); } TLLI_template::TLLI_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const TLLI&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @GTPC_Types.TLLI from an unbound optional field."); } } TLLI_template::TLLI_template(TLLI_template* p_precondition, TLLI_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } TLLI_template::TLLI_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } TLLI_template::TLLI_template(const TLLI_template& other_value) : Base_Template() { copy_template(other_value); } TLLI_template::~TLLI_template() { clean_up(); } TLLI_template& TLLI_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } TLLI_template& TLLI_template::operator=(const TLLI& other_value) { clean_up(); copy_value(other_value); return *this; } TLLI_template& TLLI_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const TLLI&)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 @GTPC_Types.TLLI."); } return *this; } TLLI_template& TLLI_template::operator=(const TLLI_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean TLLI_template::match(const TLLI& 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.type__gtpc().is_bound()) return FALSE; if(!single_value->field_type__gtpc.match(other_value.type__gtpc(), legacy))return FALSE; if(!other_value.tlli__element().is_bound()) return FALSE; if(!single_value->field_tlli__element.match(other_value.tlli__element(), 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 @GTPC_Types.TLLI."); } return FALSE; } boolean TLLI_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_type__gtpc.is_bound() || single_value->field_tlli__element.is_bound(); } boolean TLLI_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_type__gtpc.is_value() && single_value->field_tlli__element.is_value(); } void TLLI_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; } TLLI TLLI_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 @GTPC_Types.TLLI."); TLLI ret_val; if (single_value->field_type__gtpc.is_bound()) { ret_val.type__gtpc() = single_value->field_type__gtpc.valueof(); } if (single_value->field_tlli__element.is_bound()) { ret_val.tlli__element() = single_value->field_tlli__element.valueof(); } return ret_val; } void TLLI_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 @GTPC_Types.TLLI."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new TLLI_template[list_length]; } TLLI_template& TLLI_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 @GTPC_Types.TLLI."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @GTPC_Types.TLLI."); return value_list.list_value[list_index]; } OCTETSTRING_template& TLLI_template::type__gtpc() { set_specific(); return single_value->field_type__gtpc; } const OCTETSTRING_template& TLLI_template::type__gtpc() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field type_gtpc of a non-specific template of type @GTPC_Types.TLLI."); return single_value->field_type__gtpc; } OCTETSTRING_template& TLLI_template::tlli__element() { set_specific(); return single_value->field_tlli__element; } const OCTETSTRING_template& TLLI_template::tlli__element() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field tlli_element of a non-specific template of type @GTPC_Types.TLLI."); return single_value->field_tlli__element; } int TLLI_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TLLI 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 @GTPC_Types.TLLI 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 @GTPC_Types.TLLI containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TLLI containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TLLI containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TLLI containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TLLI containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TLLI containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TLLI containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @GTPC_Types.TLLI."); } return 0; } void TLLI_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ type_gtpc := "); single_value->field_type__gtpc.log(); TTCN_Logger::log_event_str(", tlli_element := "); single_value->field_tlli__element.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 TLLI_template::log_match(const TLLI& 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_type__gtpc.match(match_value.type__gtpc(), legacy)){ TTCN_Logger::log_logmatch_info(".type_gtpc"); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_tlli__element.match(match_value.tlli__element(), legacy)){ TTCN_Logger::log_logmatch_info(".tlli_element"); single_value->field_tlli__element.log_match(match_value.tlli__element(), 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("{ type_gtpc := "); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::log_event_str(", tlli_element := "); single_value->field_tlli__element.log_match(match_value.tlli__element(), 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 TLLI_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_type__gtpc.encode_text(text_buf); single_value->field_tlli__element.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 @GTPC_Types.TLLI."); } } void TLLI_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_type__gtpc.decode_text(text_buf); single_value->field_tlli__element.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 TLLI_template[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 @GTPC_Types.TLLI."); } } void TLLI_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: { TLLI_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) tlli__element().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "tlli_element")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { tlli__element().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.TLLI: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { TLLI_template* precondition = new TLLI_template; precondition->set_param(*param.get_elem(0)); TLLI_template* implied_template = new TLLI_template; implied_template->set_param(*param.get_elem(1)); *this = TLLI_template(precondition, implied_template); } break; default: param.type_error("record template", "@GTPC_Types.TLLI"); } is_ifpresent = param.get_ifpresent(); } void TLLI_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_type__gtpc.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.TLLI"); single_value->field_tlli__element.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.TLLI"); 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 : "@GTPC_Types.TLLI"); } boolean TLLI_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean TLLI_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) p__tmsi().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "p_tmsi")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { p__tmsi().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.PacketTMSI: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@GTPC_Types.PacketTMSI"); } } void PacketTMSI::encode_text(Text_Buf& text_buf) const { field_type__gtpc.encode_text(text_buf); field_p__tmsi.encode_text(text_buf); } void PacketTMSI::decode_text(Text_Buf& text_buf) { field_type__gtpc.decode_text(text_buf); field_p__tmsi.decode_text(text_buf); } void PacketTMSI::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;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void PacketTMSI::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;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int PacketTMSI::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) { (void)no_err; int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); limit-=prepaddlength; size_t last_decoded_pos = p_buf.get_pos_bit(); int decoded_length = 0; int decoded_field_length = 0; raw_order_t local_top_order; if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; else local_top_order=ORDER_LSB; RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit); decoded_field_length = field_type__gtpc.RAW_decode(General__Types::OCT1_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, General__Types::OCT4_descr_.raw->forceomit); decoded_field_length = field_p__tmsi.RAW_decode(General__Types::OCT4_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 (field_type__gtpc != os_52) return -1; p_buf.set_pos_bit(last_decoded_pos); return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); } int PacketTMSI::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, General__Types::OCT1_descr_.raw); myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::OCT4_descr_.raw); encoded_length += field_type__gtpc.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]); encoded_length += field_p__tmsi.RAW_encode(General__Types::OCT4_descr_, *myleaf.body.node.nodes[1]); if (field_type__gtpc != os_52) { 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){ os_52.RAW_encode(General__Types::OCT1_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 PacketTMSI_template::single_value_struct { OCTETSTRING_template field_type__gtpc; OCTETSTRING_template field_p__tmsi; }; void PacketTMSI_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_type__gtpc = ANY_VALUE; single_value->field_p__tmsi = ANY_VALUE; } } } void PacketTMSI_template::copy_value(const PacketTMSI& other_value) { single_value = new single_value_struct; if (other_value.type__gtpc().is_bound()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (other_value.p__tmsi().is_bound()) { single_value->field_p__tmsi = other_value.p__tmsi(); } else { single_value->field_p__tmsi.clean_up(); } set_selection(SPECIFIC_VALUE); } void PacketTMSI_template::copy_template(const PacketTMSI_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.type__gtpc().get_selection()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.p__tmsi().get_selection()) { single_value->field_p__tmsi = other_value.p__tmsi(); } else { single_value->field_p__tmsi.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 PacketTMSI_template[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 PacketTMSI_template(*other_value.implication_.precondition); implication_.implied_template = new PacketTMSI_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 @GTPC_Types.PacketTMSI."); break; } set_selection(other_value); } PacketTMSI_template::PacketTMSI_template() { } PacketTMSI_template::PacketTMSI_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } PacketTMSI_template::PacketTMSI_template(const PacketTMSI& other_value) { copy_value(other_value); } PacketTMSI_template::PacketTMSI_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const PacketTMSI&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @GTPC_Types.PacketTMSI from an unbound optional field."); } } PacketTMSI_template::PacketTMSI_template(PacketTMSI_template* p_precondition, PacketTMSI_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } PacketTMSI_template::PacketTMSI_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } PacketTMSI_template::PacketTMSI_template(const PacketTMSI_template& other_value) : Base_Template() { copy_template(other_value); } PacketTMSI_template::~PacketTMSI_template() { clean_up(); } PacketTMSI_template& PacketTMSI_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } PacketTMSI_template& PacketTMSI_template::operator=(const PacketTMSI& other_value) { clean_up(); copy_value(other_value); return *this; } PacketTMSI_template& PacketTMSI_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const PacketTMSI&)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 @GTPC_Types.PacketTMSI."); } return *this; } PacketTMSI_template& PacketTMSI_template::operator=(const PacketTMSI_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean PacketTMSI_template::match(const PacketTMSI& 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.type__gtpc().is_bound()) return FALSE; if(!single_value->field_type__gtpc.match(other_value.type__gtpc(), legacy))return FALSE; if(!other_value.p__tmsi().is_bound()) return FALSE; if(!single_value->field_p__tmsi.match(other_value.p__tmsi(), 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 @GTPC_Types.PacketTMSI."); } return FALSE; } boolean PacketTMSI_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_type__gtpc.is_bound() || single_value->field_p__tmsi.is_bound(); } boolean PacketTMSI_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_type__gtpc.is_value() && single_value->field_p__tmsi.is_value(); } void PacketTMSI_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; } PacketTMSI PacketTMSI_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 @GTPC_Types.PacketTMSI."); PacketTMSI ret_val; if (single_value->field_type__gtpc.is_bound()) { ret_val.type__gtpc() = single_value->field_type__gtpc.valueof(); } if (single_value->field_p__tmsi.is_bound()) { ret_val.p__tmsi() = single_value->field_p__tmsi.valueof(); } return ret_val; } void PacketTMSI_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 @GTPC_Types.PacketTMSI."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new PacketTMSI_template[list_length]; } PacketTMSI_template& PacketTMSI_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 @GTPC_Types.PacketTMSI."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @GTPC_Types.PacketTMSI."); return value_list.list_value[list_index]; } OCTETSTRING_template& PacketTMSI_template::type__gtpc() { set_specific(); return single_value->field_type__gtpc; } const OCTETSTRING_template& PacketTMSI_template::type__gtpc() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field type_gtpc of a non-specific template of type @GTPC_Types.PacketTMSI."); return single_value->field_type__gtpc; } OCTETSTRING_template& PacketTMSI_template::p__tmsi() { set_specific(); return single_value->field_p__tmsi; } const OCTETSTRING_template& PacketTMSI_template::p__tmsi() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field p_tmsi of a non-specific template of type @GTPC_Types.PacketTMSI."); return single_value->field_p__tmsi; } int PacketTMSI_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.PacketTMSI 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 @GTPC_Types.PacketTMSI 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 @GTPC_Types.PacketTMSI containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.PacketTMSI containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.PacketTMSI containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.PacketTMSI containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.PacketTMSI containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.PacketTMSI containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.PacketTMSI containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @GTPC_Types.PacketTMSI."); } return 0; } void PacketTMSI_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ type_gtpc := "); single_value->field_type__gtpc.log(); TTCN_Logger::log_event_str(", p_tmsi := "); single_value->field_p__tmsi.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 PacketTMSI_template::log_match(const PacketTMSI& 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_type__gtpc.match(match_value.type__gtpc(), legacy)){ TTCN_Logger::log_logmatch_info(".type_gtpc"); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_p__tmsi.match(match_value.p__tmsi(), legacy)){ TTCN_Logger::log_logmatch_info(".p_tmsi"); single_value->field_p__tmsi.log_match(match_value.p__tmsi(), 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("{ type_gtpc := "); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::log_event_str(", p_tmsi := "); single_value->field_p__tmsi.log_match(match_value.p__tmsi(), 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 PacketTMSI_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_type__gtpc.encode_text(text_buf); single_value->field_p__tmsi.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 @GTPC_Types.PacketTMSI."); } } void PacketTMSI_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_type__gtpc.decode_text(text_buf); single_value->field_p__tmsi.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 PacketTMSI_template[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 @GTPC_Types.PacketTMSI."); } } void PacketTMSI_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: { PacketTMSI_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) p__tmsi().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "p_tmsi")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { p__tmsi().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.PacketTMSI: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { PacketTMSI_template* precondition = new PacketTMSI_template; precondition->set_param(*param.get_elem(0)); PacketTMSI_template* implied_template = new PacketTMSI_template; implied_template->set_param(*param.get_elem(1)); *this = PacketTMSI_template(precondition, implied_template); } break; default: param.type_error("record template", "@GTPC_Types.PacketTMSI"); } is_ifpresent = param.get_ifpresent(); } void PacketTMSI_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_type__gtpc.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.PacketTMSI"); single_value->field_p__tmsi.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.PacketTMSI"); 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 : "@GTPC_Types.PacketTMSI"); } boolean PacketTMSI_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean PacketTMSI_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reordreq().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) spare().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "reordreq")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { reordreq().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_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_idxerror("Non existent field name in type @GTPC_Types.ReorderingRequired: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@GTPC_Types.ReorderingRequired"); } } void ReorderingRequired::encode_text(Text_Buf& text_buf) const { field_type__gtpc.encode_text(text_buf); field_reordreq.encode_text(text_buf); field_spare.encode_text(text_buf); } void ReorderingRequired::decode_text(Text_Buf& text_buf) { field_type__gtpc.decode_text(text_buf); field_reordreq.decode_text(text_buf); field_spare.decode_text(text_buf); } void ReorderingRequired::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;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void ReorderingRequired::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;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int ReorderingRequired::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) { (void)no_err; int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); limit-=prepaddlength; size_t last_decoded_pos = p_buf.get_pos_bit(); int decoded_length = 0; int decoded_field_length = 0; raw_order_t local_top_order; if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; else local_top_order=ORDER_LSB; RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit); decoded_field_length = field_type__gtpc.RAW_decode(General__Types::OCT1_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, General__Types::BIT1_descr_.raw->forceomit); decoded_field_length = field_reordreq.RAW_decode(General__Types::BIT1_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, General__Types::BIT7_descr_.raw->forceomit); decoded_field_length = field_spare.RAW_decode(General__Types::BIT7_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 (field_type__gtpc != os_40) return -1; p_buf.set_pos_bit(last_decoded_pos); return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); } int ReorderingRequired::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, General__Types::OCT1_descr_.raw); myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::BIT1_descr_.raw); myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, General__Types::BIT7_descr_.raw); encoded_length += field_type__gtpc.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]); encoded_length += field_reordreq.RAW_encode(General__Types::BIT1_descr_, *myleaf.body.node.nodes[1]); encoded_length += field_spare.RAW_encode(General__Types::BIT7_descr_, *myleaf.body.node.nodes[2]); if (field_type__gtpc != os_40) { 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){ os_40.RAW_encode(General__Types::OCT1_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 ReorderingRequired_template::single_value_struct { OCTETSTRING_template field_type__gtpc; BITSTRING_template field_reordreq; BITSTRING_template field_spare; }; void ReorderingRequired_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_type__gtpc = ANY_VALUE; single_value->field_reordreq = ANY_VALUE; single_value->field_spare = ANY_VALUE; } } } void ReorderingRequired_template::copy_value(const ReorderingRequired& other_value) { single_value = new single_value_struct; if (other_value.type__gtpc().is_bound()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (other_value.reordreq().is_bound()) { single_value->field_reordreq = other_value.reordreq(); } else { single_value->field_reordreq.clean_up(); } if (other_value.spare().is_bound()) { single_value->field_spare = other_value.spare(); } else { single_value->field_spare.clean_up(); } set_selection(SPECIFIC_VALUE); } void ReorderingRequired_template::copy_template(const ReorderingRequired_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.type__gtpc().get_selection()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.reordreq().get_selection()) { single_value->field_reordreq = other_value.reordreq(); } else { single_value->field_reordreq.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.spare().get_selection()) { single_value->field_spare = other_value.spare(); } else { single_value->field_spare.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 ReorderingRequired_template[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 ReorderingRequired_template(*other_value.implication_.precondition); implication_.implied_template = new ReorderingRequired_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 @GTPC_Types.ReorderingRequired."); break; } set_selection(other_value); } ReorderingRequired_template::ReorderingRequired_template() { } ReorderingRequired_template::ReorderingRequired_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } ReorderingRequired_template::ReorderingRequired_template(const ReorderingRequired& other_value) { copy_value(other_value); } ReorderingRequired_template::ReorderingRequired_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const ReorderingRequired&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @GTPC_Types.ReorderingRequired from an unbound optional field."); } } ReorderingRequired_template::ReorderingRequired_template(ReorderingRequired_template* p_precondition, ReorderingRequired_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } ReorderingRequired_template::ReorderingRequired_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } ReorderingRequired_template::ReorderingRequired_template(const ReorderingRequired_template& other_value) : Base_Template() { copy_template(other_value); } ReorderingRequired_template::~ReorderingRequired_template() { clean_up(); } ReorderingRequired_template& ReorderingRequired_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } ReorderingRequired_template& ReorderingRequired_template::operator=(const ReorderingRequired& other_value) { clean_up(); copy_value(other_value); return *this; } ReorderingRequired_template& ReorderingRequired_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const ReorderingRequired&)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 @GTPC_Types.ReorderingRequired."); } return *this; } ReorderingRequired_template& ReorderingRequired_template::operator=(const ReorderingRequired_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean ReorderingRequired_template::match(const ReorderingRequired& 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.type__gtpc().is_bound()) return FALSE; if(!single_value->field_type__gtpc.match(other_value.type__gtpc(), legacy))return FALSE; if(!other_value.reordreq().is_bound()) return FALSE; if(!single_value->field_reordreq.match(other_value.reordreq(), legacy))return FALSE; if(!other_value.spare().is_bound()) return FALSE; if(!single_value->field_spare.match(other_value.spare(), 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 @GTPC_Types.ReorderingRequired."); } return FALSE; } boolean ReorderingRequired_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_type__gtpc.is_bound() || single_value->field_reordreq.is_bound() || single_value->field_spare.is_bound(); } boolean ReorderingRequired_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_type__gtpc.is_value() && single_value->field_reordreq.is_value() && single_value->field_spare.is_value(); } void ReorderingRequired_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; } ReorderingRequired ReorderingRequired_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 @GTPC_Types.ReorderingRequired."); ReorderingRequired ret_val; if (single_value->field_type__gtpc.is_bound()) { ret_val.type__gtpc() = single_value->field_type__gtpc.valueof(); } if (single_value->field_reordreq.is_bound()) { ret_val.reordreq() = single_value->field_reordreq.valueof(); } if (single_value->field_spare.is_bound()) { ret_val.spare() = single_value->field_spare.valueof(); } return ret_val; } void ReorderingRequired_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 @GTPC_Types.ReorderingRequired."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new ReorderingRequired_template[list_length]; } ReorderingRequired_template& ReorderingRequired_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 @GTPC_Types.ReorderingRequired."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @GTPC_Types.ReorderingRequired."); return value_list.list_value[list_index]; } OCTETSTRING_template& ReorderingRequired_template::type__gtpc() { set_specific(); return single_value->field_type__gtpc; } const OCTETSTRING_template& ReorderingRequired_template::type__gtpc() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field type_gtpc of a non-specific template of type @GTPC_Types.ReorderingRequired."); return single_value->field_type__gtpc; } BITSTRING_template& ReorderingRequired_template::reordreq() { set_specific(); return single_value->field_reordreq; } const BITSTRING_template& ReorderingRequired_template::reordreq() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field reordreq of a non-specific template of type @GTPC_Types.ReorderingRequired."); return single_value->field_reordreq; } BITSTRING_template& ReorderingRequired_template::spare() { set_specific(); return single_value->field_spare; } const BITSTRING_template& ReorderingRequired_template::spare() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field spare of a non-specific template of type @GTPC_Types.ReorderingRequired."); return single_value->field_spare; } int ReorderingRequired_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.ReorderingRequired which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: return 3; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @GTPC_Types.ReorderingRequired 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 @GTPC_Types.ReorderingRequired containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.ReorderingRequired containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.ReorderingRequired containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.ReorderingRequired containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.ReorderingRequired containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.ReorderingRequired containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.ReorderingRequired containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @GTPC_Types.ReorderingRequired."); } return 0; } void ReorderingRequired_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ type_gtpc := "); single_value->field_type__gtpc.log(); TTCN_Logger::log_event_str(", reordreq := "); single_value->field_reordreq.log(); TTCN_Logger::log_event_str(", spare := "); single_value->field_spare.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 ReorderingRequired_template::log_match(const ReorderingRequired& 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_type__gtpc.match(match_value.type__gtpc(), legacy)){ TTCN_Logger::log_logmatch_info(".type_gtpc"); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_reordreq.match(match_value.reordreq(), legacy)){ TTCN_Logger::log_logmatch_info(".reordreq"); single_value->field_reordreq.log_match(match_value.reordreq(), legacy); 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); } }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("{ type_gtpc := "); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::log_event_str(", reordreq := "); single_value->field_reordreq.log_match(match_value.reordreq(), legacy); TTCN_Logger::log_event_str(", spare := "); single_value->field_spare.log_match(match_value.spare(), 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 ReorderingRequired_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_type__gtpc.encode_text(text_buf); single_value->field_reordreq.encode_text(text_buf); single_value->field_spare.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 @GTPC_Types.ReorderingRequired."); } } void ReorderingRequired_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_type__gtpc.decode_text(text_buf); single_value->field_reordreq.decode_text(text_buf); single_value->field_spare.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 ReorderingRequired_template[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 @GTPC_Types.ReorderingRequired."); } } void ReorderingRequired_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: { ReorderingRequired_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reordreq().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) spare().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "reordreq")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { reordreq().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_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_idxerror("Non existent field name in type @GTPC_Types.ReorderingRequired: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { ReorderingRequired_template* precondition = new ReorderingRequired_template; precondition->set_param(*param.get_elem(0)); ReorderingRequired_template* implied_template = new ReorderingRequired_template; implied_template->set_param(*param.get_elem(1)); *this = ReorderingRequired_template(precondition, implied_template); } break; default: param.type_error("record template", "@GTPC_Types.ReorderingRequired"); } is_ifpresent = param.get_ifpresent(); } void ReorderingRequired_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_type__gtpc.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.ReorderingRequired"); single_value->field_reordreq.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.ReorderingRequired"); single_value->field_spare.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.ReorderingRequired"); 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 : "@GTPC_Types.ReorderingRequired"); } boolean ReorderingRequired_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean ReorderingRequired_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) rand().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) sres().set_param(*param.get_elem(2)); if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) kc().set_param(*param.get_elem(3)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "rand")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { rand().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "sres")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { sres().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "kc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { kc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.AuthenticationTriplet_GTPC: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@GTPC_Types.AuthenticationTriplet_GTPC"); } } void AuthenticationTriplet__GTPC::encode_text(Text_Buf& text_buf) const { field_type__gtpc.encode_text(text_buf); field_rand.encode_text(text_buf); field_sres.encode_text(text_buf); field_kc.encode_text(text_buf); } void AuthenticationTriplet__GTPC::decode_text(Text_Buf& text_buf) { field_type__gtpc.decode_text(text_buf); field_rand.decode_text(text_buf); field_sres.decode_text(text_buf); field_kc.decode_text(text_buf); } void AuthenticationTriplet__GTPC::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;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void AuthenticationTriplet__GTPC::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;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int AuthenticationTriplet__GTPC::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) { (void)no_err; int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); limit-=prepaddlength; size_t last_decoded_pos = p_buf.get_pos_bit(); int decoded_length = 0; int decoded_field_length = 0; raw_order_t local_top_order; if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; else local_top_order=ORDER_LSB; RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit); decoded_field_length = field_type__gtpc.RAW_decode(General__Types::OCT1_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, General__Types::OCT16_descr_.raw->forceomit); decoded_field_length = field_rand.RAW_decode(General__Types::OCT16_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, General__Types::OCT4_descr_.raw->forceomit); decoded_field_length = field_sres.RAW_decode(General__Types::OCT4_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_2_force_omit); if (decoded_field_length < 0) return decoded_field_length; decoded_length+=decoded_field_length; limit-=decoded_field_length; last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); RAW_Force_Omit field_3_force_omit(3, force_omit, General__Types::OCT8_descr_.raw->forceomit); decoded_field_length = field_kc.RAW_decode(General__Types::OCT8_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_3_force_omit); if (decoded_field_length < 0) return decoded_field_length; decoded_length+=decoded_field_length; limit-=decoded_field_length; last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); if (field_type__gtpc != os_55) return -1; p_buf.set_pos_bit(last_decoded_pos); return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); } int AuthenticationTriplet__GTPC::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); int encoded_length = 0; myleaf.isleaf = FALSE; myleaf.body.node.num_of_nodes = 4; myleaf.body.node.nodes = init_nodes_of_enc_tree(4); myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, General__Types::OCT1_descr_.raw); myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::OCT16_descr_.raw); myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, General__Types::OCT4_descr_.raw); myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, General__Types::OCT8_descr_.raw); encoded_length += field_type__gtpc.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]); encoded_length += field_rand.RAW_encode(General__Types::OCT16_descr_, *myleaf.body.node.nodes[1]); encoded_length += field_sres.RAW_encode(General__Types::OCT4_descr_, *myleaf.body.node.nodes[2]); encoded_length += field_kc.RAW_encode(General__Types::OCT8_descr_, *myleaf.body.node.nodes[3]); if (field_type__gtpc != os_55) { 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){ os_55.RAW_encode(General__Types::OCT1_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 AuthenticationTriplet__GTPC_template::single_value_struct { OCTETSTRING_template field_type__gtpc; OCTETSTRING_template field_rand; OCTETSTRING_template field_sres; OCTETSTRING_template field_kc; }; void AuthenticationTriplet__GTPC_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_type__gtpc = ANY_VALUE; single_value->field_rand = ANY_VALUE; single_value->field_sres = ANY_VALUE; single_value->field_kc = ANY_VALUE; } } } void AuthenticationTriplet__GTPC_template::copy_value(const AuthenticationTriplet__GTPC& other_value) { single_value = new single_value_struct; if (other_value.type__gtpc().is_bound()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (other_value.rand().is_bound()) { single_value->field_rand = other_value.rand(); } else { single_value->field_rand.clean_up(); } if (other_value.sres().is_bound()) { single_value->field_sres = other_value.sres(); } else { single_value->field_sres.clean_up(); } if (other_value.kc().is_bound()) { single_value->field_kc = other_value.kc(); } else { single_value->field_kc.clean_up(); } set_selection(SPECIFIC_VALUE); } void AuthenticationTriplet__GTPC_template::copy_template(const AuthenticationTriplet__GTPC_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.type__gtpc().get_selection()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.rand().get_selection()) { single_value->field_rand = other_value.rand(); } else { single_value->field_rand.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.sres().get_selection()) { single_value->field_sres = other_value.sres(); } else { single_value->field_sres.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.kc().get_selection()) { single_value->field_kc = other_value.kc(); } else { single_value->field_kc.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 AuthenticationTriplet__GTPC_template[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 AuthenticationTriplet__GTPC_template(*other_value.implication_.precondition); implication_.implied_template = new AuthenticationTriplet__GTPC_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 @GTPC_Types.AuthenticationTriplet_GTPC."); break; } set_selection(other_value); } AuthenticationTriplet__GTPC_template::AuthenticationTriplet__GTPC_template() { } AuthenticationTriplet__GTPC_template::AuthenticationTriplet__GTPC_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } AuthenticationTriplet__GTPC_template::AuthenticationTriplet__GTPC_template(const AuthenticationTriplet__GTPC& other_value) { copy_value(other_value); } AuthenticationTriplet__GTPC_template::AuthenticationTriplet__GTPC_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const AuthenticationTriplet__GTPC&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @GTPC_Types.AuthenticationTriplet_GTPC from an unbound optional field."); } } AuthenticationTriplet__GTPC_template::AuthenticationTriplet__GTPC_template(AuthenticationTriplet__GTPC_template* p_precondition, AuthenticationTriplet__GTPC_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } AuthenticationTriplet__GTPC_template::AuthenticationTriplet__GTPC_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } AuthenticationTriplet__GTPC_template::AuthenticationTriplet__GTPC_template(const AuthenticationTriplet__GTPC_template& other_value) : Base_Template() { copy_template(other_value); } AuthenticationTriplet__GTPC_template::~AuthenticationTriplet__GTPC_template() { clean_up(); } AuthenticationTriplet__GTPC_template& AuthenticationTriplet__GTPC_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } AuthenticationTriplet__GTPC_template& AuthenticationTriplet__GTPC_template::operator=(const AuthenticationTriplet__GTPC& other_value) { clean_up(); copy_value(other_value); return *this; } AuthenticationTriplet__GTPC_template& AuthenticationTriplet__GTPC_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const AuthenticationTriplet__GTPC&)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 @GTPC_Types.AuthenticationTriplet_GTPC."); } return *this; } AuthenticationTriplet__GTPC_template& AuthenticationTriplet__GTPC_template::operator=(const AuthenticationTriplet__GTPC_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean AuthenticationTriplet__GTPC_template::match(const AuthenticationTriplet__GTPC& 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.type__gtpc().is_bound()) return FALSE; if(!single_value->field_type__gtpc.match(other_value.type__gtpc(), legacy))return FALSE; if(!other_value.rand().is_bound()) return FALSE; if(!single_value->field_rand.match(other_value.rand(), legacy))return FALSE; if(!other_value.sres().is_bound()) return FALSE; if(!single_value->field_sres.match(other_value.sres(), legacy))return FALSE; if(!other_value.kc().is_bound()) return FALSE; if(!single_value->field_kc.match(other_value.kc(), 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 @GTPC_Types.AuthenticationTriplet_GTPC."); } return FALSE; } boolean AuthenticationTriplet__GTPC_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_type__gtpc.is_bound() || single_value->field_rand.is_bound() || single_value->field_sres.is_bound() || single_value->field_kc.is_bound(); } boolean AuthenticationTriplet__GTPC_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_type__gtpc.is_value() && single_value->field_rand.is_value() && single_value->field_sres.is_value() && single_value->field_kc.is_value(); } void AuthenticationTriplet__GTPC_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; } AuthenticationTriplet__GTPC AuthenticationTriplet__GTPC_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 @GTPC_Types.AuthenticationTriplet_GTPC."); AuthenticationTriplet__GTPC ret_val; if (single_value->field_type__gtpc.is_bound()) { ret_val.type__gtpc() = single_value->field_type__gtpc.valueof(); } if (single_value->field_rand.is_bound()) { ret_val.rand() = single_value->field_rand.valueof(); } if (single_value->field_sres.is_bound()) { ret_val.sres() = single_value->field_sres.valueof(); } if (single_value->field_kc.is_bound()) { ret_val.kc() = single_value->field_kc.valueof(); } return ret_val; } void AuthenticationTriplet__GTPC_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 @GTPC_Types.AuthenticationTriplet_GTPC."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new AuthenticationTriplet__GTPC_template[list_length]; } AuthenticationTriplet__GTPC_template& AuthenticationTriplet__GTPC_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 @GTPC_Types.AuthenticationTriplet_GTPC."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @GTPC_Types.AuthenticationTriplet_GTPC."); return value_list.list_value[list_index]; } OCTETSTRING_template& AuthenticationTriplet__GTPC_template::type__gtpc() { set_specific(); return single_value->field_type__gtpc; } const OCTETSTRING_template& AuthenticationTriplet__GTPC_template::type__gtpc() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field type_gtpc of a non-specific template of type @GTPC_Types.AuthenticationTriplet_GTPC."); return single_value->field_type__gtpc; } OCTETSTRING_template& AuthenticationTriplet__GTPC_template::rand() { set_specific(); return single_value->field_rand; } const OCTETSTRING_template& AuthenticationTriplet__GTPC_template::rand() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field rand of a non-specific template of type @GTPC_Types.AuthenticationTriplet_GTPC."); return single_value->field_rand; } OCTETSTRING_template& AuthenticationTriplet__GTPC_template::sres() { set_specific(); return single_value->field_sres; } const OCTETSTRING_template& AuthenticationTriplet__GTPC_template::sres() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field sres of a non-specific template of type @GTPC_Types.AuthenticationTriplet_GTPC."); return single_value->field_sres; } OCTETSTRING_template& AuthenticationTriplet__GTPC_template::kc() { set_specific(); return single_value->field_kc; } const OCTETSTRING_template& AuthenticationTriplet__GTPC_template::kc() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field kc of a non-specific template of type @GTPC_Types.AuthenticationTriplet_GTPC."); return single_value->field_kc; } int AuthenticationTriplet__GTPC_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.AuthenticationTriplet_GTPC 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 @GTPC_Types.AuthenticationTriplet_GTPC 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 @GTPC_Types.AuthenticationTriplet_GTPC containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.AuthenticationTriplet_GTPC containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.AuthenticationTriplet_GTPC containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.AuthenticationTriplet_GTPC containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.AuthenticationTriplet_GTPC containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.AuthenticationTriplet_GTPC containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.AuthenticationTriplet_GTPC containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @GTPC_Types.AuthenticationTriplet_GTPC."); } return 0; } void AuthenticationTriplet__GTPC_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ type_gtpc := "); single_value->field_type__gtpc.log(); TTCN_Logger::log_event_str(", rand := "); single_value->field_rand.log(); TTCN_Logger::log_event_str(", sres := "); single_value->field_sres.log(); TTCN_Logger::log_event_str(", kc := "); single_value->field_kc.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 AuthenticationTriplet__GTPC_template::log_match(const AuthenticationTriplet__GTPC& 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_type__gtpc.match(match_value.type__gtpc(), legacy)){ TTCN_Logger::log_logmatch_info(".type_gtpc"); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_rand.match(match_value.rand(), legacy)){ TTCN_Logger::log_logmatch_info(".rand"); single_value->field_rand.log_match(match_value.rand(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_sres.match(match_value.sres(), legacy)){ TTCN_Logger::log_logmatch_info(".sres"); single_value->field_sres.log_match(match_value.sres(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_kc.match(match_value.kc(), legacy)){ TTCN_Logger::log_logmatch_info(".kc"); single_value->field_kc.log_match(match_value.kc(), 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("{ type_gtpc := "); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::log_event_str(", rand := "); single_value->field_rand.log_match(match_value.rand(), legacy); TTCN_Logger::log_event_str(", sres := "); single_value->field_sres.log_match(match_value.sres(), legacy); TTCN_Logger::log_event_str(", kc := "); single_value->field_kc.log_match(match_value.kc(), 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 AuthenticationTriplet__GTPC_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_type__gtpc.encode_text(text_buf); single_value->field_rand.encode_text(text_buf); single_value->field_sres.encode_text(text_buf); single_value->field_kc.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 @GTPC_Types.AuthenticationTriplet_GTPC."); } } void AuthenticationTriplet__GTPC_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_type__gtpc.decode_text(text_buf); single_value->field_rand.decode_text(text_buf); single_value->field_sres.decode_text(text_buf); single_value->field_kc.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 AuthenticationTriplet__GTPC_template[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 @GTPC_Types.AuthenticationTriplet_GTPC."); } } void AuthenticationTriplet__GTPC_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: { AuthenticationTriplet__GTPC_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) rand().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) sres().set_param(*param.get_elem(2)); if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) kc().set_param(*param.get_elem(3)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "rand")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { rand().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "sres")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { sres().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "kc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { kc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.AuthenticationTriplet_GTPC: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { AuthenticationTriplet__GTPC_template* precondition = new AuthenticationTriplet__GTPC_template; precondition->set_param(*param.get_elem(0)); AuthenticationTriplet__GTPC_template* implied_template = new AuthenticationTriplet__GTPC_template; implied_template->set_param(*param.get_elem(1)); *this = AuthenticationTriplet__GTPC_template(precondition, implied_template); } break; default: param.type_error("record template", "@GTPC_Types.AuthenticationTriplet_GTPC"); } is_ifpresent = param.get_ifpresent(); } void AuthenticationTriplet__GTPC_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_type__gtpc.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.AuthenticationTriplet_GTPC"); single_value->field_rand.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.AuthenticationTriplet_GTPC"); single_value->field_sres.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.AuthenticationTriplet_GTPC"); single_value->field_kc.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.AuthenticationTriplet_GTPC"); 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 : "@GTPC_Types.AuthenticationTriplet_GTPC"); } boolean AuthenticationTriplet__GTPC_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean AuthenticationTriplet__GTPC_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_idxval_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf."); if (((const AuthenticationTriplet__GTPC__SetOf*)right_ptr)->val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf."); if (((const AuthenticationTriplet__GTPC__SetOf*)left_ptr)->val_ptr->value_elements[left_index] != NULL){ if (((const AuthenticationTriplet__GTPC__SetOf*)right_ptr)->val_ptr->value_elements[right_index] != NULL){ return *((const AuthenticationTriplet__GTPC__SetOf*)left_ptr)->val_ptr->value_elements[left_index] == *((const AuthenticationTriplet__GTPC__SetOf*)right_ptr)->val_ptr->value_elements[right_index]; } else return FALSE; } else { return ((const AuthenticationTriplet__GTPC__SetOf*)right_ptr)->val_ptr->value_elements[right_index] == NULL; } } AuthenticationTriplet__GTPC__SetOf::AuthenticationTriplet__GTPC__SetOf() { val_ptr = NULL; } AuthenticationTriplet__GTPC__SetOf::AuthenticationTriplet__GTPC__SetOf(null_type) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } AuthenticationTriplet__GTPC__SetOf::AuthenticationTriplet__GTPC__SetOf(const AuthenticationTriplet__GTPC__SetOf& other_value) { if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf."); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } AuthenticationTriplet__GTPC__SetOf::~AuthenticationTriplet__GTPC__SetOf() { clean_up(); if (val_ptr != NULL) val_ptr = NULL; } void AuthenticationTriplet__GTPC__SetOf::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."); } } AuthenticationTriplet__GTPC__SetOf& AuthenticationTriplet__GTPC__SetOf::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; } AuthenticationTriplet__GTPC__SetOf& AuthenticationTriplet__GTPC__SetOf::operator=(const AuthenticationTriplet__GTPC__SetOf& other_value) { if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf."); if (this != &other_value) { clean_up(); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } return *this; } boolean AuthenticationTriplet__GTPC__SetOf::operator==(null_type) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf."); return val_ptr->n_elements == 0 ; } boolean AuthenticationTriplet__GTPC__SetOf::operator==(const AuthenticationTriplet__GTPC__SetOf& other_value) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf."); if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf."); if (val_ptr == other_value.val_ptr) return TRUE; return compare_set_of(this, val_ptr->n_elements, &other_value, (other_value.val_ptr)->n_elements, compare_function); } AuthenticationTriplet__GTPC& AuthenticationTriplet__GTPC__SetOf::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf 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 = (AuthenticationTriplet__GTPC**)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 AuthenticationTriplet__GTPC(*(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 AuthenticationTriplet__GTPC; } return *val_ptr->value_elements[index_value]; } AuthenticationTriplet__GTPC& AuthenticationTriplet__GTPC__SetOf::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a value of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf."); return (*this)[(int)index_value]; } const AuthenticationTriplet__GTPC& AuthenticationTriplet__GTPC__SetOf::operator[](int index_value) const { if (val_ptr == NULL) TTCN_error("Accessing an element in an unbound value of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf."); if (index_value < 0) TTCN_error("Accessing an element of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf using a negative index: %d.", index_value); if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf: 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 AuthenticationTriplet__GTPC& AuthenticationTriplet__GTPC__SetOf::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a value of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf."); return (*this)[(int)index_value]; } AuthenticationTriplet__GTPC__SetOf AuthenticationTriplet__GTPC__SetOf::operator<<=(int rotate_count) const { return *this >>= (-rotate_count); } AuthenticationTriplet__GTPC__SetOf AuthenticationTriplet__GTPC__SetOf::operator<<=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate left operator."); return *this >>= (int)(-rotate_count); } AuthenticationTriplet__GTPC__SetOf AuthenticationTriplet__GTPC__SetOf::operator>>=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate right operator."); return *this >>= (int)rotate_count; } AuthenticationTriplet__GTPC__SetOf AuthenticationTriplet__GTPC__SetOf::operator>>=(int rotate_count) const { if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf."); 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; AuthenticationTriplet__GTPC__SetOf ret_val; ret_val.set_size(val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new AuthenticationTriplet__GTPC(*val_ptr->value_elements[i]); } } return ret_val; } AuthenticationTriplet__GTPC__SetOf AuthenticationTriplet__GTPC__SetOf::operator+(const AuthenticationTriplet__GTPC__SetOf& other_value) const { if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @GTPC_Types.AuthenticationTriplet_GTPC_SetOf concatenation."); if (val_ptr->n_elements == 0) return other_value; if (other_value.val_ptr->n_elements == 0) return *this; AuthenticationTriplet__GTPC__SetOf ret_val; ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new AuthenticationTriplet__GTPC(*val_ptr->value_elements[i]); } } for (int i=0; in_elements; i++) { if (other_value.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new AuthenticationTriplet__GTPC(*other_value.val_ptr->value_elements[i]); } } return ret_val; } AuthenticationTriplet__GTPC__SetOf AuthenticationTriplet__GTPC__SetOf::substr(int index, int returncount) const { if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf."); check_substr_arguments(val_ptr->n_elements, index, returncount, "@GTPC_Types.AuthenticationTriplet_GTPC_SetOf","element"); AuthenticationTriplet__GTPC__SetOf ret_val; ret_val.set_size(returncount); for (int i=0; ivalue_elements[i+index] != NULL) { ret_val.val_ptr->value_elements[i] = new AuthenticationTriplet__GTPC(*val_ptr->value_elements[i+index]); } } return ret_val; } AuthenticationTriplet__GTPC__SetOf AuthenticationTriplet__GTPC__SetOf::replace(int index, int len, const AuthenticationTriplet__GTPC__SetOf& repl) const { if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf."); if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf."); check_replace_arguments(val_ptr->n_elements, index, len, "@GTPC_Types.AuthenticationTriplet_GTPC_SetOf","element"); AuthenticationTriplet__GTPC__SetOf 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 AuthenticationTriplet__GTPC(*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 AuthenticationTriplet__GTPC(*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 AuthenticationTriplet__GTPC(*val_ptr->value_elements[index+i+len]); } } return ret_val; } AuthenticationTriplet__GTPC__SetOf AuthenticationTriplet__GTPC__SetOf::replace(int index, int len, const AuthenticationTriplet__GTPC__SetOf_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 AuthenticationTriplet__GTPC__SetOf::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf."); 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 = (AuthenticationTriplet__GTPC**)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 AuthenticationTriplet__GTPC(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (new_size > val_ptr->n_elements) { val_ptr->value_elements = (AuthenticationTriplet__GTPC**)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 @GTPC_Types.AuthenticationTriplet_GTPC_SetOf: %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 = (AuthenticationTriplet__GTPC**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); val_ptr->n_elements = new_size; } } boolean AuthenticationTriplet__GTPC__SetOf::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 AuthenticationTriplet__GTPC__SetOf::size_of() const { if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf."); return val_ptr->n_elements; } int AuthenticationTriplet__GTPC__SetOf::lengthof() const { if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf."); 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 AuthenticationTriplet__GTPC__SetOf::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 AuthenticationTriplet__GTPC__SetOf::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 AuthenticationTriplet__GTPC__SetOf::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE|Module_Param::BC_LIST, "set of value"); switch (param.get_operation_type()) { case Module_Param::OT_ASSIGN: if (param.get_type()==Module_Param::MP_Value_List && param.get_size()==0) { *this = NULL_VALUE; return; } switch (param.get_type()) { case Module_Param::MP_Value_List: set_size(param.get_size()); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed) { (*this)[i].set_param(*curr); if (!(*this)[i].is_bound()) { delete val_ptr->value_elements[i]; val_ptr->value_elements[i] = NULL; } } } break; case Module_Param::MP_Indexed_List: for (size_t i=0; iget_id()->get_index()].set_param(*curr); if (!(*this)[curr->get_id()->get_index()].is_bound()) { delete val_ptr->value_elements[curr->get_id()->get_index()]; val_ptr->value_elements[curr->get_id()->get_index()] = NULL; } } break; default: param.type_error("set of value", "@GTPC_Types.AuthenticationTriplet_GTPC_SetOf"); } break; case Module_Param::OT_CONCAT: switch (param.get_type()) { case Module_Param::MP_Value_List: { if (!is_bound()) *this = NULL_VALUE; int start_idx = lengthof(); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed)) { (*this)[start_idx+(int)i].set_param(*curr); } } } break; case Module_Param::MP_Indexed_List: param.error("Cannot concatenate an indexed value list"); break; default: param.type_error("set of value", "@GTPC_Types.AuthenticationTriplet_GTPC_SetOf"); } break; default: TTCN_error("Internal error: Unknown operation type."); } } void AuthenticationTriplet__GTPC__SetOf::encode_text(Text_Buf& text_buf) const { if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf."); 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 AuthenticationTriplet__GTPC__SetOf::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 @GTPC_Types.AuthenticationTriplet_GTPC_SetOf."); val_ptr->value_elements = (AuthenticationTriplet__GTPC**)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 AuthenticationTriplet__GTPC; val_ptr->value_elements[elem_count]->decode_text(text_buf); } } void AuthenticationTriplet__GTPC__SetOf::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;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void AuthenticationTriplet__GTPC__SetOf::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;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int AuthenticationTriplet__GTPC__SetOf::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=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 AuthenticationTriplet__GTPC__SetOf::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;araw); encoded_length+=(*this)[a].RAW_encode(*p_td.oftype_descr,*myleaf.body.node.nodes[a]); } return myleaf.length=encoded_length; } void AuthenticationTriplet__GTPC__SetOf_template::copy_value(const AuthenticationTriplet__GTPC__SetOf& other_value) { if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf with an unbound value."); single_value.n_elements = other_value.size_of(); single_value.value_elements = (AuthenticationTriplet__GTPC_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 AuthenticationTriplet__GTPC_template(other_value[elem_count]); } else { single_value.value_elements[elem_count] = new AuthenticationTriplet__GTPC_template; } } set_selection(SPECIFIC_VALUE); } void AuthenticationTriplet__GTPC__SetOf_template::copy_template(const AuthenticationTriplet__GTPC__SetOf_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 = (AuthenticationTriplet__GTPC_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 AuthenticationTriplet__GTPC_template(*other_value.single_value.value_elements[elem_count]); } else { single_value.value_elements[elem_count] = new AuthenticationTriplet__GTPC_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 AuthenticationTriplet__GTPC__SetOf_template[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 SUPERSET_MATCH: case SUBSET_MATCH: value_set.n_items = other_value.value_set.n_items; value_set.set_items = new AuthenticationTriplet__GTPC_template[value_set.n_items]; for (unsigned int set_count = 0; set_count < value_set.n_items; set_count++) value_set.set_items[set_count] = other_value.value_set.set_items[set_count]; break; case IMPLICATION_MATCH: implication_.precondition = new AuthenticationTriplet__GTPC__SetOf_template(*other_value.implication_.precondition); implication_.implied_template = new AuthenticationTriplet__GTPC__SetOf_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 @GTPC_Types.AuthenticationTriplet_GTPC_SetOf."); break; } set_selection(other_value); } boolean AuthenticationTriplet__GTPC__SetOf_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 AuthenticationTriplet__GTPC__SetOf_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const AuthenticationTriplet__GTPC__SetOf*)value_ptr)[value_index], legacy); else return ((const AuthenticationTriplet__GTPC__SetOf_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); } boolean AuthenticationTriplet__GTPC__SetOf_template::match_function_set(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 AuthenticationTriplet__GTPC__SetOf_template*)template_ptr)->value_set.set_items[template_index].match((*(const AuthenticationTriplet__GTPC__SetOf*)value_ptr)[value_index], legacy); else return ((const AuthenticationTriplet__GTPC__SetOf_template*)template_ptr)->value_set.set_items[template_index].is_any_or_omit(); } void AuthenticationTriplet__GTPC__SetOf_template::log_function(const Base_Type *value_ptr, const Restricted_Length_Template *template_ptr, int index_value, int index_template, boolean legacy) { if (value_ptr == NULL) { if (template_ptr != NULL) { ((const AuthenticationTriplet__GTPC__SetOf_template*)template_ptr)->single_value.value_elements[index_template]->log(); } } else if (template_ptr == NULL) { (*(const AuthenticationTriplet__GTPC__SetOf*)value_ptr)[index_value].log(); } else { ((const AuthenticationTriplet__GTPC__SetOf_template*)template_ptr)->single_value.value_elements[index_template]->log_match((*(const AuthenticationTriplet__GTPC__SetOf*)value_ptr)[index_value], legacy); } } AuthenticationTriplet__GTPC__SetOf_template::AuthenticationTriplet__GTPC__SetOf_template() { } AuthenticationTriplet__GTPC__SetOf_template::AuthenticationTriplet__GTPC__SetOf_template(template_sel other_value) : Restricted_Length_Template(other_value) { check_single_selection(other_value); } AuthenticationTriplet__GTPC__SetOf_template::AuthenticationTriplet__GTPC__SetOf_template(null_type) : Restricted_Length_Template(SPECIFIC_VALUE) { single_value.n_elements = 0; single_value.value_elements = NULL; } AuthenticationTriplet__GTPC__SetOf_template::AuthenticationTriplet__GTPC__SetOf_template(const AuthenticationTriplet__GTPC__SetOf& other_value) { copy_value(other_value); } AuthenticationTriplet__GTPC__SetOf_template::AuthenticationTriplet__GTPC__SetOf_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const AuthenticationTriplet__GTPC__SetOf&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf from an unbound optional field."); } } AuthenticationTriplet__GTPC__SetOf_template::AuthenticationTriplet__GTPC__SetOf_template(AuthenticationTriplet__GTPC__SetOf_template* p_precondition, AuthenticationTriplet__GTPC__SetOf_template* p_implied_template) : Restricted_Length_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } AuthenticationTriplet__GTPC__SetOf_template::AuthenticationTriplet__GTPC__SetOf_template(Dynamic_Match_Interface* p_dyn_match) : Restricted_Length_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } AuthenticationTriplet__GTPC__SetOf_template::AuthenticationTriplet__GTPC__SetOf_template(const AuthenticationTriplet__GTPC__SetOf_template& other_value) : Restricted_Length_Template() { copy_template(other_value); } AuthenticationTriplet__GTPC__SetOf_template::~AuthenticationTriplet__GTPC__SetOf_template() { clean_up(); } void AuthenticationTriplet__GTPC__SetOf_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; break; case SUPERSET_MATCH: case SUBSET_MATCH: delete [] value_set.set_items; 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; } AuthenticationTriplet__GTPC__SetOf_template& AuthenticationTriplet__GTPC__SetOf_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } AuthenticationTriplet__GTPC__SetOf_template& AuthenticationTriplet__GTPC__SetOf_template::operator=(null_type) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; return *this; } AuthenticationTriplet__GTPC__SetOf_template& AuthenticationTriplet__GTPC__SetOf_template::operator=(const AuthenticationTriplet__GTPC__SetOf& other_value) { clean_up(); copy_value(other_value); return *this; } AuthenticationTriplet__GTPC__SetOf_template& AuthenticationTriplet__GTPC__SetOf_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const AuthenticationTriplet__GTPC__SetOf&)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 @GTPC_Types.AuthenticationTriplet_GTPC_SetOf."); } return *this; } AuthenticationTriplet__GTPC__SetOf_template& AuthenticationTriplet__GTPC__SetOf_template::operator=(const AuthenticationTriplet__GTPC__SetOf_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } AuthenticationTriplet__GTPC_template& AuthenticationTriplet__GTPC__SetOf_template::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of a template for type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf 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 @GTPC_Types.AuthenticationTriplet_GTPC_SetOf."); break; } return *single_value.value_elements[index_value]; } AuthenticationTriplet__GTPC_template& AuthenticationTriplet__GTPC__SetOf_template::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a template of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf."); return (*this)[(int)index_value]; } const AuthenticationTriplet__GTPC_template& AuthenticationTriplet__GTPC__SetOf_template::operator[](int index_value) const { if (index_value < 0) TTCN_error("Accessing an element of a template for type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf using a negative index: %d.", index_value); if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf."); if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf: 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 AuthenticationTriplet__GTPC_template& AuthenticationTriplet__GTPC__SetOf_template::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a template of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf."); return (*this)[(int)index_value]; } void AuthenticationTriplet__GTPC__SetOf_template::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf."); 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 = (AuthenticationTriplet__GTPC_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 AuthenticationTriplet__GTPC_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 AuthenticationTriplet__GTPC_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 = (AuthenticationTriplet__GTPC_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); single_value.n_elements = new_size; } } int AuthenticationTriplet__GTPC__SetOf_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 AuthenticationTriplet__GTPC__SetOf_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 @GTPC_Types.AuthenticationTriplet_GTPC_SetOf which has an ifpresent attribute.", op_name); switch (template_selection) { case SPECIFIC_VALUE: { min_size = 0; has_any_or_none = FALSE; int elem_count = single_value.n_elements; if (!is_size) { while (elem_count>0 && !single_value.value_elements[elem_count-1]->is_bound()) elem_count--; } for (int i=0; iget_selection()) { case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf containing omit element.", op_name); case ANY_OR_OMIT: has_any_or_none = TRUE; break; default: min_size++; break; } } } break; case SUPERSET_MATCH: case SUBSET_MATCH: { min_size = 0; has_any_or_none = FALSE; int elem_count = value_set.n_items; if (!is_size) { while (elem_count>0 && !value_set.set_items[elem_count-1].is_bound()) elem_count--; } for (int i=0; ilength_restriction.range_length.min_length){ TTCN_error("Performing %sof() operation on a template of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf with no exact size.", op_name); } else TTCN_error("Performing %sof() operation on an invalid template of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf. Maximum size (%d) contradicts the length restriction (%d..%d).", op_name, max_size, length_restriction.range_length.min_length, length_restriction.range_length.max_length); default: TTCN_error("Internal error: Template has invalid length restriction type."); } } } } break; case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf 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 @GTPC_Types.AuthenticationTriplet_GTPC_SetOf 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 @GTPC_Types.AuthenticationTriplet_GTPC_SetOf 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 @GTPC_Types.AuthenticationTriplet_GTPC_SetOf containing complemented list.", op_name); default: TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf.", op_name); } return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf"); } boolean AuthenticationTriplet__GTPC__SetOf_template::match(const AuthenticationTriplet__GTPC__SetOf& 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_set_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 SUPERSET_MATCH: case SUBSET_MATCH: return match_set_of(&other_value, value_length, this, value_set.n_items, match_function_set, legacy); 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 @GTPC_Types.AuthenticationTriplet_GTPC_SetOf."); } return FALSE; } boolean AuthenticationTriplet__GTPC__SetOf_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; } AuthenticationTriplet__GTPC__SetOf AuthenticationTriplet__GTPC__SetOf_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 @GTPC_Types.AuthenticationTriplet_GTPC_SetOf."); AuthenticationTriplet__GTPC__SetOf 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; } AuthenticationTriplet__GTPC__SetOf AuthenticationTriplet__GTPC__SetOf_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); } AuthenticationTriplet__GTPC__SetOf AuthenticationTriplet__GTPC__SetOf_template::replace(int index, int len, const AuthenticationTriplet__GTPC__SetOf_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()); } AuthenticationTriplet__GTPC__SetOf AuthenticationTriplet__GTPC__SetOf_template::replace(int index, int len, const AuthenticationTriplet__GTPC__SetOf& 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 AuthenticationTriplet__GTPC__SetOf_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 AuthenticationTriplet__GTPC__SetOf_template[list_length]; break; case SUPERSET_MATCH: case SUBSET_MATCH: value_set.n_items = list_length; value_set.set_items = new AuthenticationTriplet__GTPC_template[list_length]; break; default: TTCN_error("Internal error: Setting an invalid type for a template of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf."); } set_selection(template_type); } AuthenticationTriplet__GTPC__SetOf_template& AuthenticationTriplet__GTPC__SetOf_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 @GTPC_Types.AuthenticationTriplet_GTPC_SetOf."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf."); return value_list.list_value[list_index]; } AuthenticationTriplet__GTPC_template& AuthenticationTriplet__GTPC__SetOf_template::set_item(unsigned int set_index) { if (template_selection != SUPERSET_MATCH && template_selection != SUBSET_MATCH) TTCN_error("Internal error: Accessing a set element of a non-set template of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf."); if (set_index >= value_set.n_items) TTCN_error("Internal error: Index overflow in a set template of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf."); return value_set.set_items[set_index]; } void AuthenticationTriplet__GTPC__SetOf_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(", "); single_value.value_elements[elem_count]->log(); } 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 SUPERSET_MATCH: case SUBSET_MATCH: TTCN_Logger::log_event("%s(", template_selection == SUPERSET_MATCH ? "superset" : "subset"); for (unsigned int set_count = 0; set_count < value_set.n_items; set_count++) { if (set_count > 0) TTCN_Logger::log_event_str(", "); value_set.set_items[set_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 AuthenticationTriplet__GTPC__SetOf_template::log_match(const AuthenticationTriplet__GTPC__SetOf& 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{ size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if (template_selection == SPECIFIC_VALUE) log_match_heuristics(&match_value, match_value.size_of(), this, single_value.n_elements, match_function_specific, log_function, legacy); else{ if(previous_size != 0){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::set_logmatch_buffer_len(previous_size); TTCN_Logger::log_event_str(":="); } match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } 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"); if (template_selection == SPECIFIC_VALUE) log_match_heuristics(&match_value, match_value.size_of(), this, single_value.n_elements, match_function_specific, log_function, legacy); } } void AuthenticationTriplet__GTPC__SetOf_template::encode_text(Text_Buf& text_buf) const { encode_text_restricted(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; case SUPERSET_MATCH: case SUBSET_MATCH: text_buf.push_int(value_set.n_items); for (unsigned int set_count = 0; set_count < value_set.n_items; set_count++) value_set.set_items[set_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf."); } } void AuthenticationTriplet__GTPC__SetOf_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_restricted(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 @GTPC_Types.AuthenticationTriplet_GTPC_SetOf."); single_value.value_elements = (AuthenticationTriplet__GTPC_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 AuthenticationTriplet__GTPC_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 AuthenticationTriplet__GTPC__SetOf_template[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; case SUPERSET_MATCH: case SUBSET_MATCH: value_set.n_items = text_buf.pull_int().get_val(); value_set.set_items = new AuthenticationTriplet__GTPC_template[value_set.n_items]; for (unsigned int set_count = 0; set_count < value_set.n_items; set_count++) value_set.set_items[set_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of type @GTPC_Types.AuthenticationTriplet_GTPC_SetOf."); } } boolean AuthenticationTriplet__GTPC__SetOf_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean AuthenticationTriplet__GTPC__SetOf_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iget_id()->get_index())].set_param(*param.get_elem(p_i)); } break; case Module_Param::MP_Value_List: set_size(param.get_size()); for (size_t p_i=0; p_iget_type()!=Module_Param::MP_NotUsed) { (*this)[p_i].set_param(*param.get_elem(p_i)); } } break; case Module_Param::MP_Superset_Template: case Module_Param::MP_Subset_Template: set_type(param.get_type()==Module_Param::MP_Superset_Template ? SUPERSET_MATCH : SUBSET_MATCH, param.get_size()); for (size_t p_i=0; p_iset_param(*param.get_elem(0)); AuthenticationTriplet__GTPC__SetOf_template* implied_template = new AuthenticationTriplet__GTPC__SetOf_template; implied_template->set_param(*param.get_elem(1)); *this = AuthenticationTriplet__GTPC__SetOf_template(precondition, implied_template); } break; default: param.type_error("set of template", "@GTPC_Types.AuthenticationTriplet_GTPC_SetOf"); } is_ifpresent = param.get_ifpresent(); set_length_range(param); } void AuthenticationTriplet__GTPC__SetOf_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; for (int i=0; icheck_restriction(t_res, t_name ? t_name : "@GTPC_Types.AuthenticationTriplet_GTPC_SetOf"); 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 : "@GTPC_Types.AuthenticationTriplet_GTPC_SetOf"); } boolean AuthenticationTriplet__GTPC__SetOf_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 FALSE; } else if (!strcmp(type, "length")) { return length_restriction_type != NO_LENGTH_RESTRICTION; } else { return Base_Template::get_istemplate_kind(type); } } MAP__Cause::MAP__Cause() { } MAP__Cause::MAP__Cause(const OCTETSTRING& par_type__gtpc, const OCTETSTRING& par_mapCauseValue) : field_type__gtpc(par_type__gtpc), field_mapCauseValue(par_mapCauseValue) { } MAP__Cause::MAP__Cause(const MAP__Cause& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @GTPC_Types.MAP_Cause."); if (other_value.type__gtpc().is_bound()) field_type__gtpc = other_value.type__gtpc(); else field_type__gtpc.clean_up(); if (other_value.mapCauseValue().is_bound()) field_mapCauseValue = other_value.mapCauseValue(); else field_mapCauseValue.clean_up(); } void MAP__Cause::clean_up() { field_type__gtpc.clean_up(); field_mapCauseValue.clean_up(); } const TTCN_Typedescriptor_t* MAP__Cause::get_descriptor() const { return &MAP__Cause_descr_; } MAP__Cause& MAP__Cause::operator=(const MAP__Cause& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @GTPC_Types.MAP_Cause."); if (other_value.type__gtpc().is_bound()) field_type__gtpc = other_value.type__gtpc(); else field_type__gtpc.clean_up(); if (other_value.mapCauseValue().is_bound()) field_mapCauseValue = other_value.mapCauseValue(); else field_mapCauseValue.clean_up(); } return *this; } boolean MAP__Cause::operator==(const MAP__Cause& other_value) const { return field_type__gtpc==other_value.field_type__gtpc && field_mapCauseValue==other_value.field_mapCauseValue; } boolean MAP__Cause::is_bound() const { return (field_type__gtpc.is_bound()) || (field_mapCauseValue.is_bound()); } boolean MAP__Cause::is_value() const { return field_type__gtpc.is_value() && field_mapCauseValue.is_value(); } void MAP__Cause::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ type_gtpc := "); field_type__gtpc.log(); TTCN_Logger::log_event_str(", mapCauseValue := "); field_mapCauseValue.log(); TTCN_Logger::log_event_str(" }"); } void MAP__Cause::set_implicit_omit() { if (type__gtpc().is_bound()) type__gtpc().set_implicit_omit(); if (mapCauseValue().is_bound()) mapCauseValue().set_implicit_omit(); } void MAP__Cause::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (20 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) mapCauseValue().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "mapCauseValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { mapCauseValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.MAP_Cause: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@GTPC_Types.MAP_Cause"); } } void MAP__Cause::encode_text(Text_Buf& text_buf) const { field_type__gtpc.encode_text(text_buf); field_mapCauseValue.encode_text(text_buf); } void MAP__Cause::decode_text(Text_Buf& text_buf) { field_type__gtpc.decode_text(text_buf); field_mapCauseValue.decode_text(text_buf); } void MAP__Cause::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;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void MAP__Cause::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;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int MAP__Cause::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) { (void)no_err; int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); limit-=prepaddlength; size_t last_decoded_pos = p_buf.get_pos_bit(); int decoded_length = 0; int decoded_field_length = 0; raw_order_t local_top_order; if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; else local_top_order=ORDER_LSB; RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit); decoded_field_length = field_type__gtpc.RAW_decode(General__Types::OCT1_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, General__Types::OCT1_descr_.raw->forceomit); decoded_field_length = field_mapCauseValue.RAW_decode(General__Types::OCT1_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 (field_type__gtpc != os_50) return -1; p_buf.set_pos_bit(last_decoded_pos); return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); } int MAP__Cause::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, General__Types::OCT1_descr_.raw); myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::OCT1_descr_.raw); encoded_length += field_type__gtpc.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]); encoded_length += field_mapCauseValue.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[1]); if (field_type__gtpc != os_50) { 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){ os_50.RAW_encode(General__Types::OCT1_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 MAP__Cause_template::single_value_struct { OCTETSTRING_template field_type__gtpc; OCTETSTRING_template field_mapCauseValue; }; void MAP__Cause_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_type__gtpc = ANY_VALUE; single_value->field_mapCauseValue = ANY_VALUE; } } } void MAP__Cause_template::copy_value(const MAP__Cause& other_value) { single_value = new single_value_struct; if (other_value.type__gtpc().is_bound()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (other_value.mapCauseValue().is_bound()) { single_value->field_mapCauseValue = other_value.mapCauseValue(); } else { single_value->field_mapCauseValue.clean_up(); } set_selection(SPECIFIC_VALUE); } void MAP__Cause_template::copy_template(const MAP__Cause_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.type__gtpc().get_selection()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.mapCauseValue().get_selection()) { single_value->field_mapCauseValue = other_value.mapCauseValue(); } else { single_value->field_mapCauseValue.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 MAP__Cause_template[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 MAP__Cause_template(*other_value.implication_.precondition); implication_.implied_template = new MAP__Cause_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 @GTPC_Types.MAP_Cause."); break; } set_selection(other_value); } MAP__Cause_template::MAP__Cause_template() { } MAP__Cause_template::MAP__Cause_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } MAP__Cause_template::MAP__Cause_template(const MAP__Cause& other_value) { copy_value(other_value); } MAP__Cause_template::MAP__Cause_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const MAP__Cause&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @GTPC_Types.MAP_Cause from an unbound optional field."); } } MAP__Cause_template::MAP__Cause_template(MAP__Cause_template* p_precondition, MAP__Cause_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } MAP__Cause_template::MAP__Cause_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } MAP__Cause_template::MAP__Cause_template(const MAP__Cause_template& other_value) : Base_Template() { copy_template(other_value); } MAP__Cause_template::~MAP__Cause_template() { clean_up(); } MAP__Cause_template& MAP__Cause_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } MAP__Cause_template& MAP__Cause_template::operator=(const MAP__Cause& other_value) { clean_up(); copy_value(other_value); return *this; } MAP__Cause_template& MAP__Cause_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const MAP__Cause&)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 @GTPC_Types.MAP_Cause."); } return *this; } MAP__Cause_template& MAP__Cause_template::operator=(const MAP__Cause_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean MAP__Cause_template::match(const MAP__Cause& 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.type__gtpc().is_bound()) return FALSE; if(!single_value->field_type__gtpc.match(other_value.type__gtpc(), legacy))return FALSE; if(!other_value.mapCauseValue().is_bound()) return FALSE; if(!single_value->field_mapCauseValue.match(other_value.mapCauseValue(), 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 @GTPC_Types.MAP_Cause."); } return FALSE; } boolean MAP__Cause_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_type__gtpc.is_bound() || single_value->field_mapCauseValue.is_bound(); } boolean MAP__Cause_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_type__gtpc.is_value() && single_value->field_mapCauseValue.is_value(); } void MAP__Cause_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; } MAP__Cause MAP__Cause_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 @GTPC_Types.MAP_Cause."); MAP__Cause ret_val; if (single_value->field_type__gtpc.is_bound()) { ret_val.type__gtpc() = single_value->field_type__gtpc.valueof(); } if (single_value->field_mapCauseValue.is_bound()) { ret_val.mapCauseValue() = single_value->field_mapCauseValue.valueof(); } return ret_val; } void MAP__Cause_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 @GTPC_Types.MAP_Cause."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new MAP__Cause_template[list_length]; } MAP__Cause_template& MAP__Cause_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 @GTPC_Types.MAP_Cause."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @GTPC_Types.MAP_Cause."); return value_list.list_value[list_index]; } OCTETSTRING_template& MAP__Cause_template::type__gtpc() { set_specific(); return single_value->field_type__gtpc; } const OCTETSTRING_template& MAP__Cause_template::type__gtpc() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field type_gtpc of a non-specific template of type @GTPC_Types.MAP_Cause."); return single_value->field_type__gtpc; } OCTETSTRING_template& MAP__Cause_template::mapCauseValue() { set_specific(); return single_value->field_mapCauseValue; } const OCTETSTRING_template& MAP__Cause_template::mapCauseValue() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field mapCauseValue of a non-specific template of type @GTPC_Types.MAP_Cause."); return single_value->field_mapCauseValue; } int MAP__Cause_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.MAP_Cause 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 @GTPC_Types.MAP_Cause 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 @GTPC_Types.MAP_Cause containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.MAP_Cause containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.MAP_Cause containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.MAP_Cause containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.MAP_Cause containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.MAP_Cause containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.MAP_Cause containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @GTPC_Types.MAP_Cause."); } return 0; } void MAP__Cause_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ type_gtpc := "); single_value->field_type__gtpc.log(); TTCN_Logger::log_event_str(", mapCauseValue := "); single_value->field_mapCauseValue.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 MAP__Cause_template::log_match(const MAP__Cause& 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_type__gtpc.match(match_value.type__gtpc(), legacy)){ TTCN_Logger::log_logmatch_info(".type_gtpc"); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_mapCauseValue.match(match_value.mapCauseValue(), legacy)){ TTCN_Logger::log_logmatch_info(".mapCauseValue"); single_value->field_mapCauseValue.log_match(match_value.mapCauseValue(), 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("{ type_gtpc := "); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::log_event_str(", mapCauseValue := "); single_value->field_mapCauseValue.log_match(match_value.mapCauseValue(), 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 MAP__Cause_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_type__gtpc.encode_text(text_buf); single_value->field_mapCauseValue.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 @GTPC_Types.MAP_Cause."); } } void MAP__Cause_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_type__gtpc.decode_text(text_buf); single_value->field_mapCauseValue.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 MAP__Cause_template[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 @GTPC_Types.MAP_Cause."); } } void MAP__Cause_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: { MAP__Cause_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) mapCauseValue().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "mapCauseValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { mapCauseValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.MAP_Cause: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { MAP__Cause_template* precondition = new MAP__Cause_template; precondition->set_param(*param.get_elem(0)); MAP__Cause_template* implied_template = new MAP__Cause_template; implied_template->set_param(*param.get_elem(1)); *this = MAP__Cause_template(precondition, implied_template); } break; default: param.type_error("record template", "@GTPC_Types.MAP_Cause"); } is_ifpresent = param.get_ifpresent(); } void MAP__Cause_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_type__gtpc.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.MAP_Cause"); single_value->field_mapCauseValue.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.MAP_Cause"); 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 : "@GTPC_Types.MAP_Cause"); } boolean MAP__Cause_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean MAP__Cause_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ptmsi__Signature().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "ptmsi_Signature")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { ptmsi__Signature().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.PTMSI_Signature: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@GTPC_Types.PTMSI_Signature"); } } void PTMSI__Signature::encode_text(Text_Buf& text_buf) const { field_type__gtpc.encode_text(text_buf); field_ptmsi__Signature.encode_text(text_buf); } void PTMSI__Signature::decode_text(Text_Buf& text_buf) { field_type__gtpc.decode_text(text_buf); field_ptmsi__Signature.decode_text(text_buf); } void PTMSI__Signature::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;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void PTMSI__Signature::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;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int PTMSI__Signature::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) { (void)no_err; int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); limit-=prepaddlength; size_t last_decoded_pos = p_buf.get_pos_bit(); int decoded_length = 0; int decoded_field_length = 0; raw_order_t local_top_order; if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; else local_top_order=ORDER_LSB; RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit); decoded_field_length = field_type__gtpc.RAW_decode(General__Types::OCT1_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, General__Types::OCT3_descr_.raw->forceomit); decoded_field_length = field_ptmsi__Signature.RAW_decode(General__Types::OCT3_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 (field_type__gtpc != os_53) return -1; p_buf.set_pos_bit(last_decoded_pos); return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); } int PTMSI__Signature::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, General__Types::OCT1_descr_.raw); myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::OCT3_descr_.raw); encoded_length += field_type__gtpc.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]); encoded_length += field_ptmsi__Signature.RAW_encode(General__Types::OCT3_descr_, *myleaf.body.node.nodes[1]); if (field_type__gtpc != os_53) { 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){ os_53.RAW_encode(General__Types::OCT1_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 PTMSI__Signature_template::single_value_struct { OCTETSTRING_template field_type__gtpc; OCTETSTRING_template field_ptmsi__Signature; }; void PTMSI__Signature_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_type__gtpc = ANY_VALUE; single_value->field_ptmsi__Signature = ANY_VALUE; } } } void PTMSI__Signature_template::copy_value(const PTMSI__Signature& other_value) { single_value = new single_value_struct; if (other_value.type__gtpc().is_bound()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (other_value.ptmsi__Signature().is_bound()) { single_value->field_ptmsi__Signature = other_value.ptmsi__Signature(); } else { single_value->field_ptmsi__Signature.clean_up(); } set_selection(SPECIFIC_VALUE); } void PTMSI__Signature_template::copy_template(const PTMSI__Signature_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.type__gtpc().get_selection()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.ptmsi__Signature().get_selection()) { single_value->field_ptmsi__Signature = other_value.ptmsi__Signature(); } else { single_value->field_ptmsi__Signature.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 PTMSI__Signature_template[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 PTMSI__Signature_template(*other_value.implication_.precondition); implication_.implied_template = new PTMSI__Signature_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 @GTPC_Types.PTMSI_Signature."); break; } set_selection(other_value); } PTMSI__Signature_template::PTMSI__Signature_template() { } PTMSI__Signature_template::PTMSI__Signature_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } PTMSI__Signature_template::PTMSI__Signature_template(const PTMSI__Signature& other_value) { copy_value(other_value); } PTMSI__Signature_template::PTMSI__Signature_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const PTMSI__Signature&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @GTPC_Types.PTMSI_Signature from an unbound optional field."); } } PTMSI__Signature_template::PTMSI__Signature_template(PTMSI__Signature_template* p_precondition, PTMSI__Signature_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } PTMSI__Signature_template::PTMSI__Signature_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } PTMSI__Signature_template::PTMSI__Signature_template(const PTMSI__Signature_template& other_value) : Base_Template() { copy_template(other_value); } PTMSI__Signature_template::~PTMSI__Signature_template() { clean_up(); } PTMSI__Signature_template& PTMSI__Signature_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } PTMSI__Signature_template& PTMSI__Signature_template::operator=(const PTMSI__Signature& other_value) { clean_up(); copy_value(other_value); return *this; } PTMSI__Signature_template& PTMSI__Signature_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const PTMSI__Signature&)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 @GTPC_Types.PTMSI_Signature."); } return *this; } PTMSI__Signature_template& PTMSI__Signature_template::operator=(const PTMSI__Signature_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean PTMSI__Signature_template::match(const PTMSI__Signature& 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.type__gtpc().is_bound()) return FALSE; if(!single_value->field_type__gtpc.match(other_value.type__gtpc(), legacy))return FALSE; if(!other_value.ptmsi__Signature().is_bound()) return FALSE; if(!single_value->field_ptmsi__Signature.match(other_value.ptmsi__Signature(), 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 @GTPC_Types.PTMSI_Signature."); } return FALSE; } boolean PTMSI__Signature_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_type__gtpc.is_bound() || single_value->field_ptmsi__Signature.is_bound(); } boolean PTMSI__Signature_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_type__gtpc.is_value() && single_value->field_ptmsi__Signature.is_value(); } void PTMSI__Signature_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; } PTMSI__Signature PTMSI__Signature_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 @GTPC_Types.PTMSI_Signature."); PTMSI__Signature ret_val; if (single_value->field_type__gtpc.is_bound()) { ret_val.type__gtpc() = single_value->field_type__gtpc.valueof(); } if (single_value->field_ptmsi__Signature.is_bound()) { ret_val.ptmsi__Signature() = single_value->field_ptmsi__Signature.valueof(); } return ret_val; } void PTMSI__Signature_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 @GTPC_Types.PTMSI_Signature."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new PTMSI__Signature_template[list_length]; } PTMSI__Signature_template& PTMSI__Signature_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 @GTPC_Types.PTMSI_Signature."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @GTPC_Types.PTMSI_Signature."); return value_list.list_value[list_index]; } OCTETSTRING_template& PTMSI__Signature_template::type__gtpc() { set_specific(); return single_value->field_type__gtpc; } const OCTETSTRING_template& PTMSI__Signature_template::type__gtpc() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field type_gtpc of a non-specific template of type @GTPC_Types.PTMSI_Signature."); return single_value->field_type__gtpc; } OCTETSTRING_template& PTMSI__Signature_template::ptmsi__Signature() { set_specific(); return single_value->field_ptmsi__Signature; } const OCTETSTRING_template& PTMSI__Signature_template::ptmsi__Signature() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field ptmsi_Signature of a non-specific template of type @GTPC_Types.PTMSI_Signature."); return single_value->field_ptmsi__Signature; } int PTMSI__Signature_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.PTMSI_Signature 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 @GTPC_Types.PTMSI_Signature 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 @GTPC_Types.PTMSI_Signature containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.PTMSI_Signature containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.PTMSI_Signature containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.PTMSI_Signature containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.PTMSI_Signature containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.PTMSI_Signature containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.PTMSI_Signature containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @GTPC_Types.PTMSI_Signature."); } return 0; } void PTMSI__Signature_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ type_gtpc := "); single_value->field_type__gtpc.log(); TTCN_Logger::log_event_str(", ptmsi_Signature := "); single_value->field_ptmsi__Signature.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 PTMSI__Signature_template::log_match(const PTMSI__Signature& 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_type__gtpc.match(match_value.type__gtpc(), legacy)){ TTCN_Logger::log_logmatch_info(".type_gtpc"); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_ptmsi__Signature.match(match_value.ptmsi__Signature(), legacy)){ TTCN_Logger::log_logmatch_info(".ptmsi_Signature"); single_value->field_ptmsi__Signature.log_match(match_value.ptmsi__Signature(), 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("{ type_gtpc := "); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::log_event_str(", ptmsi_Signature := "); single_value->field_ptmsi__Signature.log_match(match_value.ptmsi__Signature(), 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 PTMSI__Signature_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_type__gtpc.encode_text(text_buf); single_value->field_ptmsi__Signature.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 @GTPC_Types.PTMSI_Signature."); } } void PTMSI__Signature_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_type__gtpc.decode_text(text_buf); single_value->field_ptmsi__Signature.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 PTMSI__Signature_template[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 @GTPC_Types.PTMSI_Signature."); } } void PTMSI__Signature_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: { PTMSI__Signature_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ptmsi__Signature().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "ptmsi_Signature")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { ptmsi__Signature().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.PTMSI_Signature: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { PTMSI__Signature_template* precondition = new PTMSI__Signature_template; precondition->set_param(*param.get_elem(0)); PTMSI__Signature_template* implied_template = new PTMSI__Signature_template; implied_template->set_param(*param.get_elem(1)); *this = PTMSI__Signature_template(precondition, implied_template); } break; default: param.type_error("record template", "@GTPC_Types.PTMSI_Signature"); } is_ifpresent = param.get_ifpresent(); } void PTMSI__Signature_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_type__gtpc.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.PTMSI_Signature"); single_value->field_ptmsi__Signature.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.PTMSI_Signature"); 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 : "@GTPC_Types.PTMSI_Signature"); } boolean PTMSI__Signature_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean PTMSI__Signature_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) msValidated().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) spare().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "msValidated")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { msValidated().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_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_idxerror("Non existent field name in type @GTPC_Types.MS_Validated: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@GTPC_Types.MS_Validated"); } } void MS__Validated::encode_text(Text_Buf& text_buf) const { field_type__gtpc.encode_text(text_buf); field_msValidated.encode_text(text_buf); field_spare.encode_text(text_buf); } void MS__Validated::decode_text(Text_Buf& text_buf) { field_type__gtpc.decode_text(text_buf); field_msValidated.decode_text(text_buf); field_spare.decode_text(text_buf); } void MS__Validated::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;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void MS__Validated::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;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int MS__Validated::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) { (void)no_err; int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); limit-=prepaddlength; size_t last_decoded_pos = p_buf.get_pos_bit(); int decoded_length = 0; int decoded_field_length = 0; raw_order_t local_top_order; if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; else local_top_order=ORDER_LSB; RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit); decoded_field_length = field_type__gtpc.RAW_decode(General__Types::OCT1_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, General__Types::BIT1_descr_.raw->forceomit); decoded_field_length = field_msValidated.RAW_decode(General__Types::BIT1_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, General__Types::BIT7_descr_.raw->forceomit); decoded_field_length = field_spare.RAW_decode(General__Types::BIT7_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 (field_type__gtpc != os_59) return -1; p_buf.set_pos_bit(last_decoded_pos); return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); } int MS__Validated::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, General__Types::OCT1_descr_.raw); myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::BIT1_descr_.raw); myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, General__Types::BIT7_descr_.raw); encoded_length += field_type__gtpc.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]); encoded_length += field_msValidated.RAW_encode(General__Types::BIT1_descr_, *myleaf.body.node.nodes[1]); encoded_length += field_spare.RAW_encode(General__Types::BIT7_descr_, *myleaf.body.node.nodes[2]); if (field_type__gtpc != os_59) { 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){ os_59.RAW_encode(General__Types::OCT1_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 MS__Validated_template::single_value_struct { OCTETSTRING_template field_type__gtpc; BITSTRING_template field_msValidated; BITSTRING_template field_spare; }; void MS__Validated_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_type__gtpc = ANY_VALUE; single_value->field_msValidated = ANY_VALUE; single_value->field_spare = ANY_VALUE; } } } void MS__Validated_template::copy_value(const MS__Validated& other_value) { single_value = new single_value_struct; if (other_value.type__gtpc().is_bound()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (other_value.msValidated().is_bound()) { single_value->field_msValidated = other_value.msValidated(); } else { single_value->field_msValidated.clean_up(); } if (other_value.spare().is_bound()) { single_value->field_spare = other_value.spare(); } else { single_value->field_spare.clean_up(); } set_selection(SPECIFIC_VALUE); } void MS__Validated_template::copy_template(const MS__Validated_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.type__gtpc().get_selection()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.msValidated().get_selection()) { single_value->field_msValidated = other_value.msValidated(); } else { single_value->field_msValidated.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.spare().get_selection()) { single_value->field_spare = other_value.spare(); } else { single_value->field_spare.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 MS__Validated_template[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 MS__Validated_template(*other_value.implication_.precondition); implication_.implied_template = new MS__Validated_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 @GTPC_Types.MS_Validated."); break; } set_selection(other_value); } MS__Validated_template::MS__Validated_template() { } MS__Validated_template::MS__Validated_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } MS__Validated_template::MS__Validated_template(const MS__Validated& other_value) { copy_value(other_value); } MS__Validated_template::MS__Validated_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const MS__Validated&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @GTPC_Types.MS_Validated from an unbound optional field."); } } MS__Validated_template::MS__Validated_template(MS__Validated_template* p_precondition, MS__Validated_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } MS__Validated_template::MS__Validated_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } MS__Validated_template::MS__Validated_template(const MS__Validated_template& other_value) : Base_Template() { copy_template(other_value); } MS__Validated_template::~MS__Validated_template() { clean_up(); } MS__Validated_template& MS__Validated_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } MS__Validated_template& MS__Validated_template::operator=(const MS__Validated& other_value) { clean_up(); copy_value(other_value); return *this; } MS__Validated_template& MS__Validated_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const MS__Validated&)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 @GTPC_Types.MS_Validated."); } return *this; } MS__Validated_template& MS__Validated_template::operator=(const MS__Validated_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean MS__Validated_template::match(const MS__Validated& 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.type__gtpc().is_bound()) return FALSE; if(!single_value->field_type__gtpc.match(other_value.type__gtpc(), legacy))return FALSE; if(!other_value.msValidated().is_bound()) return FALSE; if(!single_value->field_msValidated.match(other_value.msValidated(), legacy))return FALSE; if(!other_value.spare().is_bound()) return FALSE; if(!single_value->field_spare.match(other_value.spare(), 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 @GTPC_Types.MS_Validated."); } return FALSE; } boolean MS__Validated_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_type__gtpc.is_bound() || single_value->field_msValidated.is_bound() || single_value->field_spare.is_bound(); } boolean MS__Validated_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_type__gtpc.is_value() && single_value->field_msValidated.is_value() && single_value->field_spare.is_value(); } void MS__Validated_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; } MS__Validated MS__Validated_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 @GTPC_Types.MS_Validated."); MS__Validated ret_val; if (single_value->field_type__gtpc.is_bound()) { ret_val.type__gtpc() = single_value->field_type__gtpc.valueof(); } if (single_value->field_msValidated.is_bound()) { ret_val.msValidated() = single_value->field_msValidated.valueof(); } if (single_value->field_spare.is_bound()) { ret_val.spare() = single_value->field_spare.valueof(); } return ret_val; } void MS__Validated_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 @GTPC_Types.MS_Validated."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new MS__Validated_template[list_length]; } MS__Validated_template& MS__Validated_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 @GTPC_Types.MS_Validated."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @GTPC_Types.MS_Validated."); return value_list.list_value[list_index]; } OCTETSTRING_template& MS__Validated_template::type__gtpc() { set_specific(); return single_value->field_type__gtpc; } const OCTETSTRING_template& MS__Validated_template::type__gtpc() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field type_gtpc of a non-specific template of type @GTPC_Types.MS_Validated."); return single_value->field_type__gtpc; } BITSTRING_template& MS__Validated_template::msValidated() { set_specific(); return single_value->field_msValidated; } const BITSTRING_template& MS__Validated_template::msValidated() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field msValidated of a non-specific template of type @GTPC_Types.MS_Validated."); return single_value->field_msValidated; } BITSTRING_template& MS__Validated_template::spare() { set_specific(); return single_value->field_spare; } const BITSTRING_template& MS__Validated_template::spare() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field spare of a non-specific template of type @GTPC_Types.MS_Validated."); return single_value->field_spare; } int MS__Validated_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.MS_Validated which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: return 3; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @GTPC_Types.MS_Validated 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 @GTPC_Types.MS_Validated containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.MS_Validated containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.MS_Validated containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.MS_Validated containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.MS_Validated containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.MS_Validated containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.MS_Validated containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @GTPC_Types.MS_Validated."); } return 0; } void MS__Validated_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ type_gtpc := "); single_value->field_type__gtpc.log(); TTCN_Logger::log_event_str(", msValidated := "); single_value->field_msValidated.log(); TTCN_Logger::log_event_str(", spare := "); single_value->field_spare.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 MS__Validated_template::log_match(const MS__Validated& 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_type__gtpc.match(match_value.type__gtpc(), legacy)){ TTCN_Logger::log_logmatch_info(".type_gtpc"); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_msValidated.match(match_value.msValidated(), legacy)){ TTCN_Logger::log_logmatch_info(".msValidated"); single_value->field_msValidated.log_match(match_value.msValidated(), legacy); 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); } }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("{ type_gtpc := "); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::log_event_str(", msValidated := "); single_value->field_msValidated.log_match(match_value.msValidated(), legacy); TTCN_Logger::log_event_str(", spare := "); single_value->field_spare.log_match(match_value.spare(), 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 MS__Validated_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_type__gtpc.encode_text(text_buf); single_value->field_msValidated.encode_text(text_buf); single_value->field_spare.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 @GTPC_Types.MS_Validated."); } } void MS__Validated_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_type__gtpc.decode_text(text_buf); single_value->field_msValidated.decode_text(text_buf); single_value->field_spare.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 MS__Validated_template[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 @GTPC_Types.MS_Validated."); } } void MS__Validated_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: { MS__Validated_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) msValidated().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) spare().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "msValidated")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { msValidated().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_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_idxerror("Non existent field name in type @GTPC_Types.MS_Validated: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { MS__Validated_template* precondition = new MS__Validated_template; precondition->set_param(*param.get_elem(0)); MS__Validated_template* implied_template = new MS__Validated_template; implied_template->set_param(*param.get_elem(1)); *this = MS__Validated_template(precondition, implied_template); } break; default: param.type_error("record template", "@GTPC_Types.MS_Validated"); } is_ifpresent = param.get_ifpresent(); } void MS__Validated_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_type__gtpc.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.MS_Validated"); single_value->field_msValidated.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.MS_Validated"); single_value->field_spare.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.MS_Validated"); 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 : "@GTPC_Types.MS_Validated"); } boolean MS__Validated_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean MS__Validated_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) restartCounter().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "restartCounter")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { restartCounter().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.Recovery_gtpc: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@GTPC_Types.Recovery_gtpc"); } } void Recovery__gtpc::encode_text(Text_Buf& text_buf) const { field_type__gtpc.encode_text(text_buf); field_restartCounter.encode_text(text_buf); } void Recovery__gtpc::decode_text(Text_Buf& text_buf) { field_type__gtpc.decode_text(text_buf); field_restartCounter.decode_text(text_buf); } void Recovery__gtpc::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;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void Recovery__gtpc::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;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int Recovery__gtpc::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) { (void)no_err; int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); limit-=prepaddlength; size_t last_decoded_pos = p_buf.get_pos_bit(); int decoded_length = 0; int decoded_field_length = 0; raw_order_t local_top_order; if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; else local_top_order=ORDER_LSB; RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit); decoded_field_length = field_type__gtpc.RAW_decode(General__Types::OCT1_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, General__Types::OCT1_descr_.raw->forceomit); decoded_field_length = field_restartCounter.RAW_decode(General__Types::OCT1_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 (field_type__gtpc != os_1) return -1; p_buf.set_pos_bit(last_decoded_pos); return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); } int Recovery__gtpc::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, General__Types::OCT1_descr_.raw); myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::OCT1_descr_.raw); encoded_length += field_type__gtpc.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]); encoded_length += field_restartCounter.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[1]); if (field_type__gtpc != os_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){ os_1.RAW_encode(General__Types::OCT1_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 Recovery__gtpc_template::single_value_struct { OCTETSTRING_template field_type__gtpc; OCTETSTRING_template field_restartCounter; }; void Recovery__gtpc_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_type__gtpc = ANY_VALUE; single_value->field_restartCounter = ANY_VALUE; } } } void Recovery__gtpc_template::copy_value(const Recovery__gtpc& other_value) { single_value = new single_value_struct; if (other_value.type__gtpc().is_bound()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (other_value.restartCounter().is_bound()) { single_value->field_restartCounter = other_value.restartCounter(); } else { single_value->field_restartCounter.clean_up(); } set_selection(SPECIFIC_VALUE); } void Recovery__gtpc_template::copy_template(const Recovery__gtpc_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.type__gtpc().get_selection()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.restartCounter().get_selection()) { single_value->field_restartCounter = other_value.restartCounter(); } else { single_value->field_restartCounter.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 Recovery__gtpc_template[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 Recovery__gtpc_template(*other_value.implication_.precondition); implication_.implied_template = new Recovery__gtpc_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 @GTPC_Types.Recovery_gtpc."); break; } set_selection(other_value); } Recovery__gtpc_template::Recovery__gtpc_template() { } Recovery__gtpc_template::Recovery__gtpc_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } Recovery__gtpc_template::Recovery__gtpc_template(const Recovery__gtpc& other_value) { copy_value(other_value); } Recovery__gtpc_template::Recovery__gtpc_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const Recovery__gtpc&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @GTPC_Types.Recovery_gtpc from an unbound optional field."); } } Recovery__gtpc_template::Recovery__gtpc_template(Recovery__gtpc_template* p_precondition, Recovery__gtpc_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } Recovery__gtpc_template::Recovery__gtpc_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } Recovery__gtpc_template::Recovery__gtpc_template(const Recovery__gtpc_template& other_value) : Base_Template() { copy_template(other_value); } Recovery__gtpc_template::~Recovery__gtpc_template() { clean_up(); } Recovery__gtpc_template& Recovery__gtpc_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } Recovery__gtpc_template& Recovery__gtpc_template::operator=(const Recovery__gtpc& other_value) { clean_up(); copy_value(other_value); return *this; } Recovery__gtpc_template& Recovery__gtpc_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const Recovery__gtpc&)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 @GTPC_Types.Recovery_gtpc."); } return *this; } Recovery__gtpc_template& Recovery__gtpc_template::operator=(const Recovery__gtpc_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean Recovery__gtpc_template::match(const Recovery__gtpc& 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.type__gtpc().is_bound()) return FALSE; if(!single_value->field_type__gtpc.match(other_value.type__gtpc(), legacy))return FALSE; if(!other_value.restartCounter().is_bound()) return FALSE; if(!single_value->field_restartCounter.match(other_value.restartCounter(), 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 @GTPC_Types.Recovery_gtpc."); } return FALSE; } boolean Recovery__gtpc_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_type__gtpc.is_bound() || single_value->field_restartCounter.is_bound(); } boolean Recovery__gtpc_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_type__gtpc.is_value() && single_value->field_restartCounter.is_value(); } void Recovery__gtpc_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; } Recovery__gtpc Recovery__gtpc_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 @GTPC_Types.Recovery_gtpc."); Recovery__gtpc ret_val; if (single_value->field_type__gtpc.is_bound()) { ret_val.type__gtpc() = single_value->field_type__gtpc.valueof(); } if (single_value->field_restartCounter.is_bound()) { ret_val.restartCounter() = single_value->field_restartCounter.valueof(); } return ret_val; } void Recovery__gtpc_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 @GTPC_Types.Recovery_gtpc."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new Recovery__gtpc_template[list_length]; } Recovery__gtpc_template& Recovery__gtpc_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 @GTPC_Types.Recovery_gtpc."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @GTPC_Types.Recovery_gtpc."); return value_list.list_value[list_index]; } OCTETSTRING_template& Recovery__gtpc_template::type__gtpc() { set_specific(); return single_value->field_type__gtpc; } const OCTETSTRING_template& Recovery__gtpc_template::type__gtpc() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field type_gtpc of a non-specific template of type @GTPC_Types.Recovery_gtpc."); return single_value->field_type__gtpc; } OCTETSTRING_template& Recovery__gtpc_template::restartCounter() { set_specific(); return single_value->field_restartCounter; } const OCTETSTRING_template& Recovery__gtpc_template::restartCounter() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field restartCounter of a non-specific template of type @GTPC_Types.Recovery_gtpc."); return single_value->field_restartCounter; } int Recovery__gtpc_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.Recovery_gtpc 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 @GTPC_Types.Recovery_gtpc 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 @GTPC_Types.Recovery_gtpc containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.Recovery_gtpc containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.Recovery_gtpc containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.Recovery_gtpc containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.Recovery_gtpc containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.Recovery_gtpc containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.Recovery_gtpc containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @GTPC_Types.Recovery_gtpc."); } return 0; } void Recovery__gtpc_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ type_gtpc := "); single_value->field_type__gtpc.log(); TTCN_Logger::log_event_str(", restartCounter := "); single_value->field_restartCounter.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 Recovery__gtpc_template::log_match(const Recovery__gtpc& 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_type__gtpc.match(match_value.type__gtpc(), legacy)){ TTCN_Logger::log_logmatch_info(".type_gtpc"); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_restartCounter.match(match_value.restartCounter(), legacy)){ TTCN_Logger::log_logmatch_info(".restartCounter"); single_value->field_restartCounter.log_match(match_value.restartCounter(), 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("{ type_gtpc := "); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::log_event_str(", restartCounter := "); single_value->field_restartCounter.log_match(match_value.restartCounter(), 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 Recovery__gtpc_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_type__gtpc.encode_text(text_buf); single_value->field_restartCounter.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 @GTPC_Types.Recovery_gtpc."); } } void Recovery__gtpc_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_type__gtpc.decode_text(text_buf); single_value->field_restartCounter.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 Recovery__gtpc_template[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 @GTPC_Types.Recovery_gtpc."); } } void Recovery__gtpc_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: { Recovery__gtpc_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) restartCounter().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "restartCounter")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { restartCounter().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.Recovery_gtpc: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { Recovery__gtpc_template* precondition = new Recovery__gtpc_template; precondition->set_param(*param.get_elem(0)); Recovery__gtpc_template* implied_template = new Recovery__gtpc_template; implied_template->set_param(*param.get_elem(1)); *this = Recovery__gtpc_template(precondition, implied_template); } break; default: param.type_error("record template", "@GTPC_Types.Recovery_gtpc"); } is_ifpresent = param.get_ifpresent(); } void Recovery__gtpc_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_type__gtpc.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.Recovery_gtpc"); single_value->field_restartCounter.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.Recovery_gtpc"); 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 : "@GTPC_Types.Recovery_gtpc"); } boolean Recovery__gtpc_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean Recovery__gtpc_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) selectModeValue().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) spare().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "selectModeValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { selectModeValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_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_idxerror("Non existent field name in type @GTPC_Types.SelectionMode: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@GTPC_Types.SelectionMode"); } } void SelectionMode::encode_text(Text_Buf& text_buf) const { field_type__gtpc.encode_text(text_buf); field_selectModeValue.encode_text(text_buf); field_spare.encode_text(text_buf); } void SelectionMode::decode_text(Text_Buf& text_buf) { field_type__gtpc.decode_text(text_buf); field_selectModeValue.decode_text(text_buf); field_spare.decode_text(text_buf); } void SelectionMode::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;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void SelectionMode::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;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int SelectionMode::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) { (void)no_err; int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); limit-=prepaddlength; size_t last_decoded_pos = p_buf.get_pos_bit(); int decoded_length = 0; int decoded_field_length = 0; raw_order_t local_top_order; if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; else local_top_order=ORDER_LSB; RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit); decoded_field_length = field_type__gtpc.RAW_decode(General__Types::OCT1_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, General__Types::BIT2_descr_.raw->forceomit); decoded_field_length = field_selectModeValue.RAW_decode(General__Types::BIT2_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, General__Types::BIT6_descr_.raw->forceomit); decoded_field_length = field_spare.RAW_decode(General__Types::BIT6_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 (field_type__gtpc != os_4) return -1; p_buf.set_pos_bit(last_decoded_pos); return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); } int SelectionMode::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, General__Types::OCT1_descr_.raw); myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::BIT2_descr_.raw); myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, General__Types::BIT6_descr_.raw); encoded_length += field_type__gtpc.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]); encoded_length += field_selectModeValue.RAW_encode(General__Types::BIT2_descr_, *myleaf.body.node.nodes[1]); encoded_length += field_spare.RAW_encode(General__Types::BIT6_descr_, *myleaf.body.node.nodes[2]); if (field_type__gtpc != os_4) { 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){ os_4.RAW_encode(General__Types::OCT1_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 SelectionMode_template::single_value_struct { OCTETSTRING_template field_type__gtpc; BITSTRING_template field_selectModeValue; BITSTRING_template field_spare; }; void SelectionMode_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_type__gtpc = ANY_VALUE; single_value->field_selectModeValue = ANY_VALUE; single_value->field_spare = ANY_VALUE; } } } void SelectionMode_template::copy_value(const SelectionMode& other_value) { single_value = new single_value_struct; if (other_value.type__gtpc().is_bound()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (other_value.selectModeValue().is_bound()) { single_value->field_selectModeValue = other_value.selectModeValue(); } else { single_value->field_selectModeValue.clean_up(); } if (other_value.spare().is_bound()) { single_value->field_spare = other_value.spare(); } else { single_value->field_spare.clean_up(); } set_selection(SPECIFIC_VALUE); } void SelectionMode_template::copy_template(const SelectionMode_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.type__gtpc().get_selection()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.selectModeValue().get_selection()) { single_value->field_selectModeValue = other_value.selectModeValue(); } else { single_value->field_selectModeValue.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.spare().get_selection()) { single_value->field_spare = other_value.spare(); } else { single_value->field_spare.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 SelectionMode_template[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 SelectionMode_template(*other_value.implication_.precondition); implication_.implied_template = new SelectionMode_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 @GTPC_Types.SelectionMode."); break; } set_selection(other_value); } SelectionMode_template::SelectionMode_template() { } SelectionMode_template::SelectionMode_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } SelectionMode_template::SelectionMode_template(const SelectionMode& other_value) { copy_value(other_value); } SelectionMode_template::SelectionMode_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const SelectionMode&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @GTPC_Types.SelectionMode from an unbound optional field."); } } SelectionMode_template::SelectionMode_template(SelectionMode_template* p_precondition, SelectionMode_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } SelectionMode_template::SelectionMode_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } SelectionMode_template::SelectionMode_template(const SelectionMode_template& other_value) : Base_Template() { copy_template(other_value); } SelectionMode_template::~SelectionMode_template() { clean_up(); } SelectionMode_template& SelectionMode_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } SelectionMode_template& SelectionMode_template::operator=(const SelectionMode& other_value) { clean_up(); copy_value(other_value); return *this; } SelectionMode_template& SelectionMode_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const SelectionMode&)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 @GTPC_Types.SelectionMode."); } return *this; } SelectionMode_template& SelectionMode_template::operator=(const SelectionMode_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean SelectionMode_template::match(const SelectionMode& 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.type__gtpc().is_bound()) return FALSE; if(!single_value->field_type__gtpc.match(other_value.type__gtpc(), legacy))return FALSE; if(!other_value.selectModeValue().is_bound()) return FALSE; if(!single_value->field_selectModeValue.match(other_value.selectModeValue(), legacy))return FALSE; if(!other_value.spare().is_bound()) return FALSE; if(!single_value->field_spare.match(other_value.spare(), 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 @GTPC_Types.SelectionMode."); } return FALSE; } boolean SelectionMode_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_type__gtpc.is_bound() || single_value->field_selectModeValue.is_bound() || single_value->field_spare.is_bound(); } boolean SelectionMode_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_type__gtpc.is_value() && single_value->field_selectModeValue.is_value() && single_value->field_spare.is_value(); } void SelectionMode_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; } SelectionMode SelectionMode_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 @GTPC_Types.SelectionMode."); SelectionMode ret_val; if (single_value->field_type__gtpc.is_bound()) { ret_val.type__gtpc() = single_value->field_type__gtpc.valueof(); } if (single_value->field_selectModeValue.is_bound()) { ret_val.selectModeValue() = single_value->field_selectModeValue.valueof(); } if (single_value->field_spare.is_bound()) { ret_val.spare() = single_value->field_spare.valueof(); } return ret_val; } void SelectionMode_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 @GTPC_Types.SelectionMode."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new SelectionMode_template[list_length]; } SelectionMode_template& SelectionMode_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 @GTPC_Types.SelectionMode."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @GTPC_Types.SelectionMode."); return value_list.list_value[list_index]; } OCTETSTRING_template& SelectionMode_template::type__gtpc() { set_specific(); return single_value->field_type__gtpc; } const OCTETSTRING_template& SelectionMode_template::type__gtpc() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field type_gtpc of a non-specific template of type @GTPC_Types.SelectionMode."); return single_value->field_type__gtpc; } BITSTRING_template& SelectionMode_template::selectModeValue() { set_specific(); return single_value->field_selectModeValue; } const BITSTRING_template& SelectionMode_template::selectModeValue() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field selectModeValue of a non-specific template of type @GTPC_Types.SelectionMode."); return single_value->field_selectModeValue; } BITSTRING_template& SelectionMode_template::spare() { set_specific(); return single_value->field_spare; } const BITSTRING_template& SelectionMode_template::spare() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field spare of a non-specific template of type @GTPC_Types.SelectionMode."); return single_value->field_spare; } int SelectionMode_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.SelectionMode which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: return 3; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @GTPC_Types.SelectionMode 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 @GTPC_Types.SelectionMode containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.SelectionMode containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.SelectionMode containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.SelectionMode containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.SelectionMode containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.SelectionMode containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.SelectionMode containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @GTPC_Types.SelectionMode."); } return 0; } void SelectionMode_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ type_gtpc := "); single_value->field_type__gtpc.log(); TTCN_Logger::log_event_str(", selectModeValue := "); single_value->field_selectModeValue.log(); TTCN_Logger::log_event_str(", spare := "); single_value->field_spare.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 SelectionMode_template::log_match(const SelectionMode& 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_type__gtpc.match(match_value.type__gtpc(), legacy)){ TTCN_Logger::log_logmatch_info(".type_gtpc"); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_selectModeValue.match(match_value.selectModeValue(), legacy)){ TTCN_Logger::log_logmatch_info(".selectModeValue"); single_value->field_selectModeValue.log_match(match_value.selectModeValue(), legacy); 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); } }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("{ type_gtpc := "); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::log_event_str(", selectModeValue := "); single_value->field_selectModeValue.log_match(match_value.selectModeValue(), legacy); TTCN_Logger::log_event_str(", spare := "); single_value->field_spare.log_match(match_value.spare(), 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 SelectionMode_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_type__gtpc.encode_text(text_buf); single_value->field_selectModeValue.encode_text(text_buf); single_value->field_spare.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 @GTPC_Types.SelectionMode."); } } void SelectionMode_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_type__gtpc.decode_text(text_buf); single_value->field_selectModeValue.decode_text(text_buf); single_value->field_spare.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 SelectionMode_template[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 @GTPC_Types.SelectionMode."); } } void SelectionMode_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: { SelectionMode_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) selectModeValue().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) spare().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "selectModeValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { selectModeValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_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_idxerror("Non existent field name in type @GTPC_Types.SelectionMode: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { SelectionMode_template* precondition = new SelectionMode_template; precondition->set_param(*param.get_elem(0)); SelectionMode_template* implied_template = new SelectionMode_template; implied_template->set_param(*param.get_elem(1)); *this = SelectionMode_template(precondition, implied_template); } break; default: param.type_error("record template", "@GTPC_Types.SelectionMode"); } is_ifpresent = param.get_ifpresent(); } void SelectionMode_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_type__gtpc.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.SelectionMode"); single_value->field_selectModeValue.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.SelectionMode"); single_value->field_spare.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.SelectionMode"); 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 : "@GTPC_Types.SelectionMode"); } boolean SelectionMode_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean SelectionMode_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) teidDataI().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "teidDataI")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { teidDataI().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.TeidDataI: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@GTPC_Types.TeidDataI"); } } void TeidDataI::encode_text(Text_Buf& text_buf) const { field_type__gtpc.encode_text(text_buf); field_teidDataI.encode_text(text_buf); } void TeidDataI::decode_text(Text_Buf& text_buf) { field_type__gtpc.decode_text(text_buf); field_teidDataI.decode_text(text_buf); } void TeidDataI::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;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void TeidDataI::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;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int TeidDataI::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) { (void)no_err; int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); limit-=prepaddlength; size_t last_decoded_pos = p_buf.get_pos_bit(); int decoded_length = 0; int decoded_field_length = 0; raw_order_t local_top_order; if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; else local_top_order=ORDER_LSB; RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit); decoded_field_length = field_type__gtpc.RAW_decode(General__Types::OCT1_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, General__Types::OCT4_descr_.raw->forceomit); decoded_field_length = field_teidDataI.RAW_decode(General__Types::OCT4_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 (field_type__gtpc != os_5) return -1; p_buf.set_pos_bit(last_decoded_pos); return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); } int TeidDataI::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, General__Types::OCT1_descr_.raw); myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::OCT4_descr_.raw); encoded_length += field_type__gtpc.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]); encoded_length += field_teidDataI.RAW_encode(General__Types::OCT4_descr_, *myleaf.body.node.nodes[1]); if (field_type__gtpc != os_5) { 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){ os_5.RAW_encode(General__Types::OCT1_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 TeidDataI_template::single_value_struct { OCTETSTRING_template field_type__gtpc; OCTETSTRING_template field_teidDataI; }; void TeidDataI_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_type__gtpc = ANY_VALUE; single_value->field_teidDataI = ANY_VALUE; } } } void TeidDataI_template::copy_value(const TeidDataI& other_value) { single_value = new single_value_struct; if (other_value.type__gtpc().is_bound()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (other_value.teidDataI().is_bound()) { single_value->field_teidDataI = other_value.teidDataI(); } else { single_value->field_teidDataI.clean_up(); } set_selection(SPECIFIC_VALUE); } void TeidDataI_template::copy_template(const TeidDataI_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.type__gtpc().get_selection()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.teidDataI().get_selection()) { single_value->field_teidDataI = other_value.teidDataI(); } else { single_value->field_teidDataI.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 TeidDataI_template[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 TeidDataI_template(*other_value.implication_.precondition); implication_.implied_template = new TeidDataI_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 @GTPC_Types.TeidDataI."); break; } set_selection(other_value); } TeidDataI_template::TeidDataI_template() { } TeidDataI_template::TeidDataI_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } TeidDataI_template::TeidDataI_template(const TeidDataI& other_value) { copy_value(other_value); } TeidDataI_template::TeidDataI_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const TeidDataI&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @GTPC_Types.TeidDataI from an unbound optional field."); } } TeidDataI_template::TeidDataI_template(TeidDataI_template* p_precondition, TeidDataI_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } TeidDataI_template::TeidDataI_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } TeidDataI_template::TeidDataI_template(const TeidDataI_template& other_value) : Base_Template() { copy_template(other_value); } TeidDataI_template::~TeidDataI_template() { clean_up(); } TeidDataI_template& TeidDataI_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } TeidDataI_template& TeidDataI_template::operator=(const TeidDataI& other_value) { clean_up(); copy_value(other_value); return *this; } TeidDataI_template& TeidDataI_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const TeidDataI&)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 @GTPC_Types.TeidDataI."); } return *this; } TeidDataI_template& TeidDataI_template::operator=(const TeidDataI_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean TeidDataI_template::match(const TeidDataI& 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.type__gtpc().is_bound()) return FALSE; if(!single_value->field_type__gtpc.match(other_value.type__gtpc(), legacy))return FALSE; if(!other_value.teidDataI().is_bound()) return FALSE; if(!single_value->field_teidDataI.match(other_value.teidDataI(), 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 @GTPC_Types.TeidDataI."); } return FALSE; } boolean TeidDataI_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_type__gtpc.is_bound() || single_value->field_teidDataI.is_bound(); } boolean TeidDataI_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_type__gtpc.is_value() && single_value->field_teidDataI.is_value(); } void TeidDataI_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; } TeidDataI TeidDataI_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 @GTPC_Types.TeidDataI."); TeidDataI ret_val; if (single_value->field_type__gtpc.is_bound()) { ret_val.type__gtpc() = single_value->field_type__gtpc.valueof(); } if (single_value->field_teidDataI.is_bound()) { ret_val.teidDataI() = single_value->field_teidDataI.valueof(); } return ret_val; } void TeidDataI_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 @GTPC_Types.TeidDataI."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new TeidDataI_template[list_length]; } TeidDataI_template& TeidDataI_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 @GTPC_Types.TeidDataI."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @GTPC_Types.TeidDataI."); return value_list.list_value[list_index]; } OCTETSTRING_template& TeidDataI_template::type__gtpc() { set_specific(); return single_value->field_type__gtpc; } const OCTETSTRING_template& TeidDataI_template::type__gtpc() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field type_gtpc of a non-specific template of type @GTPC_Types.TeidDataI."); return single_value->field_type__gtpc; } OCTETSTRING_template& TeidDataI_template::teidDataI() { set_specific(); return single_value->field_teidDataI; } const OCTETSTRING_template& TeidDataI_template::teidDataI() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field teidDataI of a non-specific template of type @GTPC_Types.TeidDataI."); return single_value->field_teidDataI; } int TeidDataI_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TeidDataI 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 @GTPC_Types.TeidDataI 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 @GTPC_Types.TeidDataI containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TeidDataI containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TeidDataI containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TeidDataI containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TeidDataI containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TeidDataI containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TeidDataI containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @GTPC_Types.TeidDataI."); } return 0; } void TeidDataI_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ type_gtpc := "); single_value->field_type__gtpc.log(); TTCN_Logger::log_event_str(", teidDataI := "); single_value->field_teidDataI.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 TeidDataI_template::log_match(const TeidDataI& 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_type__gtpc.match(match_value.type__gtpc(), legacy)){ TTCN_Logger::log_logmatch_info(".type_gtpc"); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_teidDataI.match(match_value.teidDataI(), legacy)){ TTCN_Logger::log_logmatch_info(".teidDataI"); single_value->field_teidDataI.log_match(match_value.teidDataI(), 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("{ type_gtpc := "); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::log_event_str(", teidDataI := "); single_value->field_teidDataI.log_match(match_value.teidDataI(), 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 TeidDataI_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_type__gtpc.encode_text(text_buf); single_value->field_teidDataI.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 @GTPC_Types.TeidDataI."); } } void TeidDataI_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_type__gtpc.decode_text(text_buf); single_value->field_teidDataI.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 TeidDataI_template[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 @GTPC_Types.TeidDataI."); } } void TeidDataI_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: { TeidDataI_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) teidDataI().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "teidDataI")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { teidDataI().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.TeidDataI: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { TeidDataI_template* precondition = new TeidDataI_template; precondition->set_param(*param.get_elem(0)); TeidDataI_template* implied_template = new TeidDataI_template; implied_template->set_param(*param.get_elem(1)); *this = TeidDataI_template(precondition, implied_template); } break; default: param.type_error("record template", "@GTPC_Types.TeidDataI"); } is_ifpresent = param.get_ifpresent(); } void TeidDataI_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_type__gtpc.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.TeidDataI"); single_value->field_teidDataI.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.TeidDataI"); 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 : "@GTPC_Types.TeidDataI"); } boolean TeidDataI_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean TeidDataI_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) teidControlPlane().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "teidControlPlane")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { teidControlPlane().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.TeidControlPlane: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@GTPC_Types.TeidControlPlane"); } } void TeidControlPlane::encode_text(Text_Buf& text_buf) const { field_type__gtpc.encode_text(text_buf); field_teidControlPlane.encode_text(text_buf); } void TeidControlPlane::decode_text(Text_Buf& text_buf) { field_type__gtpc.decode_text(text_buf); field_teidControlPlane.decode_text(text_buf); } void TeidControlPlane::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;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void TeidControlPlane::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;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int TeidControlPlane::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) { (void)no_err; int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); limit-=prepaddlength; size_t last_decoded_pos = p_buf.get_pos_bit(); int decoded_length = 0; int decoded_field_length = 0; raw_order_t local_top_order; if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; else local_top_order=ORDER_LSB; RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit); decoded_field_length = field_type__gtpc.RAW_decode(General__Types::OCT1_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, General__Types::OCT4_descr_.raw->forceomit); decoded_field_length = field_teidControlPlane.RAW_decode(General__Types::OCT4_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 (field_type__gtpc != os_6) return -1; p_buf.set_pos_bit(last_decoded_pos); return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); } int TeidControlPlane::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, General__Types::OCT1_descr_.raw); myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::OCT4_descr_.raw); encoded_length += field_type__gtpc.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]); encoded_length += field_teidControlPlane.RAW_encode(General__Types::OCT4_descr_, *myleaf.body.node.nodes[1]); if (field_type__gtpc != os_6) { 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){ os_6.RAW_encode(General__Types::OCT1_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 TeidControlPlane_template::single_value_struct { OCTETSTRING_template field_type__gtpc; OCTETSTRING_template field_teidControlPlane; }; void TeidControlPlane_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_type__gtpc = ANY_VALUE; single_value->field_teidControlPlane = ANY_VALUE; } } } void TeidControlPlane_template::copy_value(const TeidControlPlane& other_value) { single_value = new single_value_struct; if (other_value.type__gtpc().is_bound()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (other_value.teidControlPlane().is_bound()) { single_value->field_teidControlPlane = other_value.teidControlPlane(); } else { single_value->field_teidControlPlane.clean_up(); } set_selection(SPECIFIC_VALUE); } void TeidControlPlane_template::copy_template(const TeidControlPlane_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.type__gtpc().get_selection()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.teidControlPlane().get_selection()) { single_value->field_teidControlPlane = other_value.teidControlPlane(); } else { single_value->field_teidControlPlane.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 TeidControlPlane_template[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 TeidControlPlane_template(*other_value.implication_.precondition); implication_.implied_template = new TeidControlPlane_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 @GTPC_Types.TeidControlPlane."); break; } set_selection(other_value); } TeidControlPlane_template::TeidControlPlane_template() { } TeidControlPlane_template::TeidControlPlane_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } TeidControlPlane_template::TeidControlPlane_template(const TeidControlPlane& other_value) { copy_value(other_value); } TeidControlPlane_template::TeidControlPlane_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const TeidControlPlane&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @GTPC_Types.TeidControlPlane from an unbound optional field."); } } TeidControlPlane_template::TeidControlPlane_template(TeidControlPlane_template* p_precondition, TeidControlPlane_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } TeidControlPlane_template::TeidControlPlane_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } TeidControlPlane_template::TeidControlPlane_template(const TeidControlPlane_template& other_value) : Base_Template() { copy_template(other_value); } TeidControlPlane_template::~TeidControlPlane_template() { clean_up(); } TeidControlPlane_template& TeidControlPlane_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } TeidControlPlane_template& TeidControlPlane_template::operator=(const TeidControlPlane& other_value) { clean_up(); copy_value(other_value); return *this; } TeidControlPlane_template& TeidControlPlane_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const TeidControlPlane&)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 @GTPC_Types.TeidControlPlane."); } return *this; } TeidControlPlane_template& TeidControlPlane_template::operator=(const TeidControlPlane_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean TeidControlPlane_template::match(const TeidControlPlane& 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.type__gtpc().is_bound()) return FALSE; if(!single_value->field_type__gtpc.match(other_value.type__gtpc(), legacy))return FALSE; if(!other_value.teidControlPlane().is_bound()) return FALSE; if(!single_value->field_teidControlPlane.match(other_value.teidControlPlane(), 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 @GTPC_Types.TeidControlPlane."); } return FALSE; } boolean TeidControlPlane_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_type__gtpc.is_bound() || single_value->field_teidControlPlane.is_bound(); } boolean TeidControlPlane_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_type__gtpc.is_value() && single_value->field_teidControlPlane.is_value(); } void TeidControlPlane_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; } TeidControlPlane TeidControlPlane_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 @GTPC_Types.TeidControlPlane."); TeidControlPlane ret_val; if (single_value->field_type__gtpc.is_bound()) { ret_val.type__gtpc() = single_value->field_type__gtpc.valueof(); } if (single_value->field_teidControlPlane.is_bound()) { ret_val.teidControlPlane() = single_value->field_teidControlPlane.valueof(); } return ret_val; } void TeidControlPlane_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 @GTPC_Types.TeidControlPlane."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new TeidControlPlane_template[list_length]; } TeidControlPlane_template& TeidControlPlane_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 @GTPC_Types.TeidControlPlane."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @GTPC_Types.TeidControlPlane."); return value_list.list_value[list_index]; } OCTETSTRING_template& TeidControlPlane_template::type__gtpc() { set_specific(); return single_value->field_type__gtpc; } const OCTETSTRING_template& TeidControlPlane_template::type__gtpc() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field type_gtpc of a non-specific template of type @GTPC_Types.TeidControlPlane."); return single_value->field_type__gtpc; } OCTETSTRING_template& TeidControlPlane_template::teidControlPlane() { set_specific(); return single_value->field_teidControlPlane; } const OCTETSTRING_template& TeidControlPlane_template::teidControlPlane() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field teidControlPlane of a non-specific template of type @GTPC_Types.TeidControlPlane."); return single_value->field_teidControlPlane; } int TeidControlPlane_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TeidControlPlane 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 @GTPC_Types.TeidControlPlane 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 @GTPC_Types.TeidControlPlane containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TeidControlPlane containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TeidControlPlane containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TeidControlPlane containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TeidControlPlane containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TeidControlPlane containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TeidControlPlane containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @GTPC_Types.TeidControlPlane."); } return 0; } void TeidControlPlane_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ type_gtpc := "); single_value->field_type__gtpc.log(); TTCN_Logger::log_event_str(", teidControlPlane := "); single_value->field_teidControlPlane.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 TeidControlPlane_template::log_match(const TeidControlPlane& 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_type__gtpc.match(match_value.type__gtpc(), legacy)){ TTCN_Logger::log_logmatch_info(".type_gtpc"); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_teidControlPlane.match(match_value.teidControlPlane(), legacy)){ TTCN_Logger::log_logmatch_info(".teidControlPlane"); single_value->field_teidControlPlane.log_match(match_value.teidControlPlane(), 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("{ type_gtpc := "); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::log_event_str(", teidControlPlane := "); single_value->field_teidControlPlane.log_match(match_value.teidControlPlane(), 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 TeidControlPlane_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_type__gtpc.encode_text(text_buf); single_value->field_teidControlPlane.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 @GTPC_Types.TeidControlPlane."); } } void TeidControlPlane_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_type__gtpc.decode_text(text_buf); single_value->field_teidControlPlane.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 TeidControlPlane_template[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 @GTPC_Types.TeidControlPlane."); } } void TeidControlPlane_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: { TeidControlPlane_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) teidControlPlane().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "teidControlPlane")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { teidControlPlane().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.TeidControlPlane: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { TeidControlPlane_template* precondition = new TeidControlPlane_template; precondition->set_param(*param.get_elem(0)); TeidControlPlane_template* implied_template = new TeidControlPlane_template; implied_template->set_param(*param.get_elem(1)); *this = TeidControlPlane_template(precondition, implied_template); } break; default: param.type_error("record template", "@GTPC_Types.TeidControlPlane"); } is_ifpresent = param.get_ifpresent(); } void TeidControlPlane_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_type__gtpc.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.TeidControlPlane"); single_value->field_teidControlPlane.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.TeidControlPlane"); 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 : "@GTPC_Types.TeidControlPlane"); } boolean TeidControlPlane_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean TeidControlPlane_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idxref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } TeidDataII__List::TeidDataII__List(const TeidDataII__List& other_value) { if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @GTPC_Types.TeidDataII_List."); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } TeidDataII__List::~TeidDataII__List() { clean_up(); if (val_ptr != NULL) val_ptr = NULL; } void TeidDataII__List::clean_up() { if (val_ptr != NULL) { if (val_ptr->ref_count > 1) { val_ptr->ref_count--; val_ptr = NULL; } else if (val_ptr->ref_count == 1) { for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL) delete val_ptr->value_elements[elem_count]; free_pointers((void**)val_ptr->value_elements); delete val_ptr; val_ptr = NULL; } else TTCN_error("Internal error: Invalid reference counter in a record of/set of value."); } } TeidDataII__List& TeidDataII__List::operator=(null_type) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; return *this; } TeidDataII__List& TeidDataII__List::operator=(const TeidDataII__List& other_value) { if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @GTPC_Types.TeidDataII_List."); if (this != &other_value) { clean_up(); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } return *this; } boolean TeidDataII__List::operator==(null_type) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @GTPC_Types.TeidDataII_List."); return val_ptr->n_elements == 0 ; } boolean TeidDataII__List::operator==(const TeidDataII__List& other_value) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @GTPC_Types.TeidDataII_List."); if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @GTPC_Types.TeidDataII_List."); if (val_ptr == other_value.val_ptr) return TRUE; if (val_ptr->n_elements != (other_value.val_ptr)->n_elements) return FALSE; for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ if ((other_value.val_ptr)->value_elements[elem_count] != NULL){ if (*val_ptr->value_elements[elem_count] != *(other_value.val_ptr)->value_elements[elem_count]) return FALSE; } else return FALSE; } else { if ((other_value.val_ptr)->value_elements[elem_count] != NULL) return FALSE; } } return TRUE; } TeidDataII& TeidDataII__List::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of type @GTPC_Types.TeidDataII_List using a negative index: %d.", index_value); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (index_value >= val_ptr->n_elements) ? index_value + 1 : val_ptr->n_elements; new_val_ptr->value_elements = (TeidDataII**)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 TeidDataII(*(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 TeidDataII; } return *val_ptr->value_elements[index_value]; } TeidDataII& TeidDataII__List::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a value of type @GTPC_Types.TeidDataII_List."); return (*this)[(int)index_value]; } const TeidDataII& TeidDataII__List::operator[](int index_value) const { if (val_ptr == NULL) TTCN_error("Accessing an element in an unbound value of type @GTPC_Types.TeidDataII_List."); if (index_value < 0) TTCN_error("Accessing an element of type @GTPC_Types.TeidDataII_List using a negative index: %d.", index_value); if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @GTPC_Types.TeidDataII_List: The index is %d, but the value has only %d elements.", index_value, val_ptr->n_elements); return (val_ptr->value_elements[index_value] == NULL) ? UNBOUND_ELEM : *val_ptr->value_elements[index_value]; } const TeidDataII& TeidDataII__List::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a value of type @GTPC_Types.TeidDataII_List."); return (*this)[(int)index_value]; } TeidDataII__List TeidDataII__List::operator<<=(int rotate_count) const { return *this >>= (-rotate_count); } TeidDataII__List TeidDataII__List::operator<<=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate left operator."); return *this >>= (int)(-rotate_count); } TeidDataII__List TeidDataII__List::operator>>=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate right operator."); return *this >>= (int)rotate_count; } TeidDataII__List TeidDataII__List::operator>>=(int rotate_count) const { if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @GTPC_Types.TeidDataII_List."); if (val_ptr->n_elements == 0) return *this; int rc; if (rotate_count>=0) rc = rotate_count % val_ptr->n_elements; else rc = val_ptr->n_elements - ((-rotate_count) % val_ptr->n_elements); if (rc == 0) return *this; TeidDataII__List ret_val; ret_val.set_size(val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new TeidDataII(*val_ptr->value_elements[i]); } } return ret_val; } TeidDataII__List TeidDataII__List::operator+(const TeidDataII__List& other_value) const { if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @GTPC_Types.TeidDataII_List concatenation."); if (val_ptr->n_elements == 0) return other_value; if (other_value.val_ptr->n_elements == 0) return *this; TeidDataII__List ret_val; ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new TeidDataII(*val_ptr->value_elements[i]); } } for (int i=0; in_elements; i++) { if (other_value.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new TeidDataII(*other_value.val_ptr->value_elements[i]); } } return ret_val; } TeidDataII__List TeidDataII__List::substr(int index, int returncount) const { if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @GTPC_Types.TeidDataII_List."); check_substr_arguments(val_ptr->n_elements, index, returncount, "@GTPC_Types.TeidDataII_List","element"); TeidDataII__List ret_val; ret_val.set_size(returncount); for (int i=0; ivalue_elements[i+index] != NULL) { ret_val.val_ptr->value_elements[i] = new TeidDataII(*val_ptr->value_elements[i+index]); } } return ret_val; } TeidDataII__List TeidDataII__List::replace(int index, int len, const TeidDataII__List& repl) const { if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @GTPC_Types.TeidDataII_List."); if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @GTPC_Types.TeidDataII_List."); check_replace_arguments(val_ptr->n_elements, index, len, "@GTPC_Types.TeidDataII_List","element"); TeidDataII__List ret_val; ret_val.set_size(val_ptr->n_elements + repl.val_ptr->n_elements - len); for (int i = 0; i < index; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new TeidDataII(*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 TeidDataII(*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 TeidDataII(*val_ptr->value_elements[index+i+len]); } } return ret_val; } TeidDataII__List TeidDataII__List::replace(int index, int len, const TeidDataII__List_template& repl) const { if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return replace(index, len, repl.valueof()); } void TeidDataII__List::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @GTPC_Types.TeidDataII_List."); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (new_size < val_ptr->n_elements) ? new_size : val_ptr->n_elements; new_val_ptr->value_elements = (TeidDataII**)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 TeidDataII(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (new_size > val_ptr->n_elements) { val_ptr->value_elements = (TeidDataII**)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 @GTPC_Types.TeidDataII_List: %d",new_size); #endif val_ptr->n_elements = new_size; } else if (new_size < val_ptr->n_elements) { for (int elem_count = new_size; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL)delete val_ptr->value_elements[elem_count]; val_ptr->value_elements = (TeidDataII**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); val_ptr->n_elements = new_size; } } boolean TeidDataII__List::is_value() const { if (val_ptr == NULL) return FALSE; for(int i = 0; i < val_ptr->n_elements; ++i) { if (val_ptr->value_elements[i] == NULL || !val_ptr->value_elements[i]->is_value()) return FALSE; } return TRUE; } int TeidDataII__List::size_of() const { if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @GTPC_Types.TeidDataII_List."); return val_ptr->n_elements; } int TeidDataII__List::lengthof() const { if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @GTPC_Types.TeidDataII_List."); for (int my_length=val_ptr->n_elements; my_length>0; my_length--) if (val_ptr->value_elements[my_length-1] != NULL) return my_length; return 0; } void TeidDataII__List::log() const { if (val_ptr == NULL) {; TTCN_Logger::log_event_unbound(); return; } switch (val_ptr->n_elements) { case 0: TTCN_Logger::log_event_str("{ }"); break; default: TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); (*this)[elem_count].log(); } TTCN_Logger::log_event_str(" }"); } } void TeidDataII__List::set_implicit_omit() { if (val_ptr == NULL) return; for (int i = 0; i < val_ptr->n_elements; i++) { if (val_ptr->value_elements[i] != NULL) val_ptr->value_elements[i]->set_implicit_omit(); } } void TeidDataII__List::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE|Module_Param::BC_LIST, "record of value"); switch (param.get_operation_type()) { case Module_Param::OT_ASSIGN: if (param.get_type()==Module_Param::MP_Value_List && param.get_size()==0) { *this = NULL_VALUE; return; } switch (param.get_type()) { case Module_Param::MP_Value_List: set_size(param.get_size()); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed) { (*this)[i].set_param(*curr); if (!(*this)[i].is_bound()) { delete val_ptr->value_elements[i]; val_ptr->value_elements[i] = NULL; } } } break; case Module_Param::MP_Indexed_List: for (size_t i=0; iget_id()->get_index()].set_param(*curr); if (!(*this)[curr->get_id()->get_index()].is_bound()) { delete val_ptr->value_elements[curr->get_id()->get_index()]; val_ptr->value_elements[curr->get_id()->get_index()] = NULL; } } break; default: param.type_error("record of value", "@GTPC_Types.TeidDataII_List"); } break; case Module_Param::OT_CONCAT: switch (param.get_type()) { case Module_Param::MP_Value_List: { if (!is_bound()) *this = NULL_VALUE; int start_idx = lengthof(); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed)) { (*this)[start_idx+(int)i].set_param(*curr); } } } break; case Module_Param::MP_Indexed_List: param.error("Cannot concatenate an indexed value list"); break; default: param.type_error("record of value", "@GTPC_Types.TeidDataII_List"); } break; default: TTCN_error("Internal error: Unknown operation type."); } } void TeidDataII__List::encode_text(Text_Buf& text_buf) const { if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @GTPC_Types.TeidDataII_List."); text_buf.push_int(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) (*this)[elem_count].encode_text(text_buf); } void TeidDataII__List::decode_text(Text_Buf& text_buf) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = text_buf.pull_int().get_val(); if (val_ptr->n_elements < 0) TTCN_error("Text decoder: Negative size was received for a value of type @GTPC_Types.TeidDataII_List."); val_ptr->value_elements = (TeidDataII**)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 TeidDataII; val_ptr->value_elements[elem_count]->decode_text(text_buf); } } void TeidDataII__List::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void TeidDataII__List::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int TeidDataII__List::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=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 TeidDataII__List::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;araw); encoded_length+=(*this)[a].RAW_encode(*p_td.oftype_descr,*myleaf.body.node.nodes[a]); } return myleaf.length=encoded_length; } void TeidDataII__List_template::copy_value(const TeidDataII__List& other_value) { if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @GTPC_Types.TeidDataII_List with an unbound value."); single_value.n_elements = other_value.size_of(); single_value.value_elements = (TeidDataII_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 TeidDataII_template(other_value[elem_count]); } else { single_value.value_elements[elem_count] = new TeidDataII_template; } } set_selection(SPECIFIC_VALUE); } void TeidDataII__List_template::copy_template(const TeidDataII__List_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.n_elements = other_value.single_value.n_elements; single_value.value_elements = (TeidDataII_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 TeidDataII_template(*other_value.single_value.value_elements[elem_count]); } else { single_value.value_elements[elem_count] = new TeidDataII_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 TeidDataII__List_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new TeidDataII__List_template(*other_value.implication_.precondition); implication_.implied_template = new TeidDataII__List_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @GTPC_Types.TeidDataII_List."); break; } set_selection(other_value); } boolean TeidDataII__List_template::match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy) { if (value_index >= 0) return ((const TeidDataII__List_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const TeidDataII__List*)value_ptr)[value_index], legacy); else return ((const TeidDataII__List_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); } TeidDataII__List_template::TeidDataII__List_template() { } TeidDataII__List_template::TeidDataII__List_template(template_sel other_value) : Base_Record_Of_Template(other_value) { check_single_selection(other_value); } TeidDataII__List_template::TeidDataII__List_template(null_type) : Base_Record_Of_Template(SPECIFIC_VALUE) { single_value.n_elements = 0; single_value.value_elements = NULL; } TeidDataII__List_template::TeidDataII__List_template(const TeidDataII__List& other_value) { copy_value(other_value); } TeidDataII__List_template::TeidDataII__List_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const TeidDataII__List&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @GTPC_Types.TeidDataII_List from an unbound optional field."); } } TeidDataII__List_template::TeidDataII__List_template(TeidDataII__List_template* p_precondition, TeidDataII__List_template* p_implied_template) : Base_Record_Of_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } TeidDataII__List_template::TeidDataII__List_template(Dynamic_Match_Interface* p_dyn_match) : Base_Record_Of_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } TeidDataII__List_template::TeidDataII__List_template(const TeidDataII__List_template& other_value) : Base_Record_Of_Template() { copy_template(other_value); } TeidDataII__List_template::~TeidDataII__List_template() { clean_up(); } void TeidDataII__List_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; free_pointers((void**)single_value.value_elements); break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } TeidDataII__List_template& TeidDataII__List_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } TeidDataII__List_template& TeidDataII__List_template::operator=(null_type) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; return *this; } TeidDataII__List_template& TeidDataII__List_template::operator=(const TeidDataII__List& other_value) { clean_up(); copy_value(other_value); return *this; } TeidDataII__List_template& TeidDataII__List_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const TeidDataII__List&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @GTPC_Types.TeidDataII_List."); } return *this; } TeidDataII__List_template& TeidDataII__List_template::operator=(const TeidDataII__List_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } TeidDataII_template& TeidDataII__List_template::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of a template for type @GTPC_Types.TeidDataII_List using a negative index: %d.", index_value); switch (template_selection) { case SPECIFIC_VALUE: if(index_value < single_value.n_elements) break; // no break case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: case UNINITIALIZED_TEMPLATE: set_size(index_value + 1); break; default: TTCN_error("Accessing an element of a non-specific template for type @GTPC_Types.TeidDataII_List."); break; } return *single_value.value_elements[index_value]; } TeidDataII_template& TeidDataII__List_template::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a template of type @GTPC_Types.TeidDataII_List."); return (*this)[(int)index_value]; } const TeidDataII_template& TeidDataII__List_template::operator[](int index_value) const { if (index_value < 0) TTCN_error("Accessing an element of a template for type @GTPC_Types.TeidDataII_List using a negative index: %d.", index_value); if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @GTPC_Types.TeidDataII_List."); if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @GTPC_Types.TeidDataII_List: The index is %d, but the template has only %d elements.", index_value, single_value.n_elements); return *single_value.value_elements[index_value]; } const TeidDataII_template& TeidDataII__List_template::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a template of type @GTPC_Types.TeidDataII_List."); return (*this)[(int)index_value]; } void TeidDataII__List_template::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @GTPC_Types.TeidDataII_List."); template_sel old_selection = template_selection; if (old_selection != SPECIFIC_VALUE) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; } if (new_size > single_value.n_elements) { single_value.value_elements = (TeidDataII_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 TeidDataII_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 TeidDataII_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 = (TeidDataII_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); single_value.n_elements = new_size; } } int TeidDataII__List_template::n_elem() const { switch (template_selection) { case SPECIFIC_VALUE: return single_value.n_elements; break; case VALUE_LIST: return value_list.n_values; break; default: TTCN_error("Performing n_elem"); } } int TeidDataII__List_template::size_of(boolean is_size) const { const char* op_name = is_size ? "size" : "length"; int min_size; boolean has_any_or_none; if (is_ifpresent) TTCN_error("Performing %sof() operation on a template of type @GTPC_Types.TeidDataII_List which has an ifpresent attribute.", op_name); switch (template_selection) { case SPECIFIC_VALUE: { min_size = 0; has_any_or_none = FALSE; int elem_count = single_value.n_elements; if (!is_size) { while (elem_count>0 && !single_value.value_elements[elem_count-1]->is_bound()) elem_count--; } for (int i=0; iget_selection()) { case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @GTPC_Types.TeidDataII_List containing omit element.", op_name); case ANY_OR_OMIT: has_any_or_none = TRUE; break; default: min_size++; break; } } } break; case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @GTPC_Types.TeidDataII_List containing omit value.", op_name); case ANY_VALUE: case ANY_OR_OMIT: min_size = 0; has_any_or_none = TRUE; break; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Performing %sof() operation on a template of type @GTPC_Types.TeidDataII_List containing an empty list.", op_name); int item_size = value_list.list_value[0].size_of(is_size); for (unsigned int i = 1; i < value_list.n_values; i++) { if (value_list.list_value[i].size_of(is_size)!=item_size) TTCN_error("Performing %sof() operation on a template of type @GTPC_Types.TeidDataII_List containing a value list with different sizes.", op_name); } min_size = item_size; has_any_or_none = FALSE; break; } case COMPLEMENTED_LIST: TTCN_error("Performing %sof() operation on a template of type @GTPC_Types.TeidDataII_List containing complemented list.", op_name); default: TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @GTPC_Types.TeidDataII_List.", op_name); } return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @GTPC_Types.TeidDataII_List"); } boolean TeidDataII__List_template::match(const TeidDataII__List& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; int value_length = other_value.size_of(); if (!match_length(value_length)) return FALSE; switch (template_selection) { case SPECIFIC_VALUE: return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy); case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching with an uninitialized/unsupported template of type @GTPC_Types.TeidDataII_List."); } return FALSE; } boolean TeidDataII__List_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (!single_value.value_elements[elem_count]->is_value()) return FALSE; return TRUE; } TeidDataII__List TeidDataII__List_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @GTPC_Types.TeidDataII_List."); TeidDataII__List ret_val; ret_val.set_size(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (single_value.value_elements[elem_count]->is_bound()) { ret_val[elem_count] = single_value.value_elements[elem_count]->valueof(); } return ret_val; } TeidDataII__List TeidDataII__List_template::substr(int index, int returncount) const { if (!is_value()) TTCN_error("The first argument of function substr() is a template with non-specific value."); return valueof().substr(index, returncount); } TeidDataII__List TeidDataII__List_template::replace(int index, int len, const TeidDataII__List_template& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl.valueof()); } TeidDataII__List TeidDataII__List_template::replace(int index, int len, const TeidDataII__List& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl); } void TeidDataII__List_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = list_length; value_list.list_value = new TeidDataII__List_template[list_length]; break; default: TTCN_error("Internal error: Setting an invalid type for a template of type @GTPC_Types.TeidDataII_List."); } set_selection(template_type); } TeidDataII__List_template& TeidDataII__List_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of type @GTPC_Types.TeidDataII_List."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @GTPC_Types.TeidDataII_List."); return value_list.list_value[list_index]; } void TeidDataII__List_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: if (single_value.n_elements > 0) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation("); single_value.value_elements[elem_count]->log(); if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')'); } TTCN_Logger::log_event_str(" }"); } else TTCN_Logger::log_event_str("{ }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_restricted(); log_ifpresent(); } void TeidDataII__List_template::log_match(const TeidDataII__List& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); }else{ if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if(!single_value.value_elements[elem_count]->match(match_value[elem_count], legacy)){ TTCN_Logger::log_logmatch_info("[%d]", elem_count); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } log_match_length(single_value.n_elements); } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); } TTCN_Logger::log_event_str(" }"); log_match_length(single_value.n_elements); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void TeidDataII__List_template::encode_text(Text_Buf& text_buf) const { encode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) single_value.value_elements[elem_count]->encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @GTPC_Types.TeidDataII_List."); } } void TeidDataII__List_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value.n_elements = text_buf.pull_int().get_val(); if (single_value.n_elements < 0) TTCN_error("Text decoder: Negative size was received for a template of type @GTPC_Types.TeidDataII_List."); single_value.value_elements = (TeidDataII_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 TeidDataII_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 TeidDataII__List_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of type @GTPC_Types.TeidDataII_List."); } } boolean TeidDataII__List_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean TeidDataII__List_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iget_id()->get_index())].set_param(*param.get_elem(p_i)); } break; case Module_Param::MP_Value_List: { set_size(param.get_size()); int curr_idx = 0; for (size_t p_i=0; p_iget_type()) { case Module_Param::MP_NotUsed: curr_idx++; break; case Module_Param::MP_Permutation_Template: { int perm_start_idx = curr_idx; Module_Param* param_i = param.get_elem(p_i); for (size_t perm_i=0; perm_iget_size(); perm_i++) { (*this)[curr_idx].set_param(*(param_i->get_elem(perm_i))); curr_idx++; } int perm_end_idx = curr_idx - 1; add_permutation(perm_start_idx, perm_end_idx); } break; default: (*this)[curr_idx].set_param(*param.get_elem(p_i)); curr_idx++; } } } break; case Module_Param::MP_Implication_Template: { TeidDataII__List_template* precondition = new TeidDataII__List_template; precondition->set_param(*param.get_elem(0)); TeidDataII__List_template* implied_template = new TeidDataII__List_template; implied_template->set_param(*param.get_elem(1)); *this = TeidDataII__List_template(precondition, implied_template); } break; default: param.type_error("record of template", "@GTPC_Types.TeidDataII_List"); } is_ifpresent = param.get_ifpresent(); set_length_range(param); } void TeidDataII__List_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; for (int i=0; icheck_restriction(t_res, t_name ? t_name : "@GTPC_Types.TeidDataII_List"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@GTPC_Types.TeidDataII_List"); } boolean TeidDataII__List_template::get_istemplate_kind(const char* type) const { if (!strcmp(type, "AnyElement")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_VALUE) { return TRUE; } } return FALSE; } else if (!strcmp(type, "AnyElementsOrNone")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_OR_OMIT) { return TRUE; } } return FALSE; } else if (!strcmp(type, "permutation")) { return number_of_permutations; } else if (!strcmp(type, "length")) { return length_restriction_type != NO_LENGTH_RESTRICTION; } else { return Base_Template::get_istemplate_kind(type); } } TeidDataII::TeidDataII() { } TeidDataII::TeidDataII(const OCTETSTRING& par_type__gtpc, const BITSTRING& par_nsapi, const BITSTRING& par_unused, const OCTETSTRING& par_teidDataII) : field_type__gtpc(par_type__gtpc), field_nsapi(par_nsapi), field_unused(par_unused), field_teidDataII(par_teidDataII) { } TeidDataII::TeidDataII(const TeidDataII& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @GTPC_Types.TeidDataII."); if (other_value.type__gtpc().is_bound()) field_type__gtpc = other_value.type__gtpc(); else field_type__gtpc.clean_up(); if (other_value.nsapi().is_bound()) field_nsapi = other_value.nsapi(); else field_nsapi.clean_up(); if (other_value.unused().is_bound()) field_unused = other_value.unused(); else field_unused.clean_up(); if (other_value.teidDataII().is_bound()) field_teidDataII = other_value.teidDataII(); else field_teidDataII.clean_up(); } void TeidDataII::clean_up() { field_type__gtpc.clean_up(); field_nsapi.clean_up(); field_unused.clean_up(); field_teidDataII.clean_up(); } const TTCN_Typedescriptor_t* TeidDataII::get_descriptor() const { return &TeidDataII_descr_; } TeidDataII& TeidDataII::operator=(const TeidDataII& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @GTPC_Types.TeidDataII."); if (other_value.type__gtpc().is_bound()) field_type__gtpc = other_value.type__gtpc(); else field_type__gtpc.clean_up(); if (other_value.nsapi().is_bound()) field_nsapi = other_value.nsapi(); else field_nsapi.clean_up(); if (other_value.unused().is_bound()) field_unused = other_value.unused(); else field_unused.clean_up(); if (other_value.teidDataII().is_bound()) field_teidDataII = other_value.teidDataII(); else field_teidDataII.clean_up(); } return *this; } boolean TeidDataII::operator==(const TeidDataII& other_value) const { return field_type__gtpc==other_value.field_type__gtpc && field_nsapi==other_value.field_nsapi && field_unused==other_value.field_unused && field_teidDataII==other_value.field_teidDataII; } boolean TeidDataII::is_bound() const { return (field_type__gtpc.is_bound()) || (field_nsapi.is_bound()) || (field_unused.is_bound()) || (field_teidDataII.is_bound()); } boolean TeidDataII::is_value() const { return field_type__gtpc.is_value() && field_nsapi.is_value() && field_unused.is_value() && field_teidDataII.is_value(); } void TeidDataII::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ type_gtpc := "); field_type__gtpc.log(); TTCN_Logger::log_event_str(", nsapi := "); field_nsapi.log(); TTCN_Logger::log_event_str(", unused := "); field_unused.log(); TTCN_Logger::log_event_str(", teidDataII := "); field_teidDataII.log(); TTCN_Logger::log_event_str(" }"); } void TeidDataII::set_implicit_omit() { if (type__gtpc().is_bound()) type__gtpc().set_implicit_omit(); if (nsapi().is_bound()) nsapi().set_implicit_omit(); if (unused().is_bound()) unused().set_implicit_omit(); if (teidDataII().is_bound()) teidDataII().set_implicit_omit(); } void TeidDataII::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (40 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) nsapi().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) unused().set_param(*param.get_elem(2)); if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) teidDataII().set_param(*param.get_elem(3)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "nsapi")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { nsapi().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "unused")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { unused().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "teidDataII")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { teidDataII().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.TeidDataII: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@GTPC_Types.TeidDataII"); } } void TeidDataII::encode_text(Text_Buf& text_buf) const { field_type__gtpc.encode_text(text_buf); field_nsapi.encode_text(text_buf); field_unused.encode_text(text_buf); field_teidDataII.encode_text(text_buf); } void TeidDataII::decode_text(Text_Buf& text_buf) { field_type__gtpc.decode_text(text_buf); field_nsapi.decode_text(text_buf); field_unused.decode_text(text_buf); field_teidDataII.decode_text(text_buf); } void TeidDataII::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;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void TeidDataII::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;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int TeidDataII::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) { (void)no_err; int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); limit-=prepaddlength; size_t last_decoded_pos = p_buf.get_pos_bit(); int decoded_length = 0; int decoded_field_length = 0; raw_order_t local_top_order; if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; else local_top_order=ORDER_LSB; RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit); decoded_field_length = field_type__gtpc.RAW_decode(General__Types::OCT1_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, General__Types::BIT4_descr_.raw->forceomit); decoded_field_length = field_nsapi.RAW_decode(General__Types::BIT4_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, General__Types::BIT4_descr_.raw->forceomit); decoded_field_length = field_unused.RAW_decode(General__Types::BIT4_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_2_force_omit); if (decoded_field_length < 0) return decoded_field_length; decoded_length+=decoded_field_length; limit-=decoded_field_length; last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); RAW_Force_Omit field_3_force_omit(3, force_omit, General__Types::OCT4_descr_.raw->forceomit); decoded_field_length = field_teidDataII.RAW_decode(General__Types::OCT4_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 (field_type__gtpc != os_81) return -1; p_buf.set_pos_bit(last_decoded_pos); return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); } int TeidDataII::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); int encoded_length = 0; myleaf.isleaf = FALSE; myleaf.body.node.num_of_nodes = 4; myleaf.body.node.nodes = init_nodes_of_enc_tree(4); myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, General__Types::OCT1_descr_.raw); myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::BIT4_descr_.raw); myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, General__Types::BIT4_descr_.raw); myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, General__Types::OCT4_descr_.raw); encoded_length += field_type__gtpc.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]); encoded_length += field_nsapi.RAW_encode(General__Types::BIT4_descr_, *myleaf.body.node.nodes[1]); encoded_length += field_unused.RAW_encode(General__Types::BIT4_descr_, *myleaf.body.node.nodes[2]); encoded_length += field_teidDataII.RAW_encode(General__Types::OCT4_descr_, *myleaf.body.node.nodes[3]); if (field_type__gtpc != os_81) { 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){ os_81.RAW_encode(General__Types::OCT1_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 TeidDataII_template::single_value_struct { OCTETSTRING_template field_type__gtpc; BITSTRING_template field_nsapi; BITSTRING_template field_unused; OCTETSTRING_template field_teidDataII; }; void TeidDataII_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_type__gtpc = ANY_VALUE; single_value->field_nsapi = ANY_VALUE; single_value->field_unused = ANY_VALUE; single_value->field_teidDataII = ANY_VALUE; } } } void TeidDataII_template::copy_value(const TeidDataII& other_value) { single_value = new single_value_struct; if (other_value.type__gtpc().is_bound()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (other_value.nsapi().is_bound()) { single_value->field_nsapi = other_value.nsapi(); } else { single_value->field_nsapi.clean_up(); } if (other_value.unused().is_bound()) { single_value->field_unused = other_value.unused(); } else { single_value->field_unused.clean_up(); } if (other_value.teidDataII().is_bound()) { single_value->field_teidDataII = other_value.teidDataII(); } else { single_value->field_teidDataII.clean_up(); } set_selection(SPECIFIC_VALUE); } void TeidDataII_template::copy_template(const TeidDataII_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.type__gtpc().get_selection()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.nsapi().get_selection()) { single_value->field_nsapi = other_value.nsapi(); } else { single_value->field_nsapi.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.unused().get_selection()) { single_value->field_unused = other_value.unused(); } else { single_value->field_unused.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.teidDataII().get_selection()) { single_value->field_teidDataII = other_value.teidDataII(); } else { single_value->field_teidDataII.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 TeidDataII_template[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 TeidDataII_template(*other_value.implication_.precondition); implication_.implied_template = new TeidDataII_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 @GTPC_Types.TeidDataII."); break; } set_selection(other_value); } TeidDataII_template::TeidDataII_template() { } TeidDataII_template::TeidDataII_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } TeidDataII_template::TeidDataII_template(const TeidDataII& other_value) { copy_value(other_value); } TeidDataII_template::TeidDataII_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const TeidDataII&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @GTPC_Types.TeidDataII from an unbound optional field."); } } TeidDataII_template::TeidDataII_template(TeidDataII_template* p_precondition, TeidDataII_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } TeidDataII_template::TeidDataII_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } TeidDataII_template::TeidDataII_template(const TeidDataII_template& other_value) : Base_Template() { copy_template(other_value); } TeidDataII_template::~TeidDataII_template() { clean_up(); } TeidDataII_template& TeidDataII_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } TeidDataII_template& TeidDataII_template::operator=(const TeidDataII& other_value) { clean_up(); copy_value(other_value); return *this; } TeidDataII_template& TeidDataII_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const TeidDataII&)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 @GTPC_Types.TeidDataII."); } return *this; } TeidDataII_template& TeidDataII_template::operator=(const TeidDataII_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean TeidDataII_template::match(const TeidDataII& 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.type__gtpc().is_bound()) return FALSE; if(!single_value->field_type__gtpc.match(other_value.type__gtpc(), legacy))return FALSE; if(!other_value.nsapi().is_bound()) return FALSE; if(!single_value->field_nsapi.match(other_value.nsapi(), legacy))return FALSE; if(!other_value.unused().is_bound()) return FALSE; if(!single_value->field_unused.match(other_value.unused(), legacy))return FALSE; if(!other_value.teidDataII().is_bound()) return FALSE; if(!single_value->field_teidDataII.match(other_value.teidDataII(), 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 @GTPC_Types.TeidDataII."); } return FALSE; } boolean TeidDataII_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_type__gtpc.is_bound() || single_value->field_nsapi.is_bound() || single_value->field_unused.is_bound() || single_value->field_teidDataII.is_bound(); } boolean TeidDataII_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_type__gtpc.is_value() && single_value->field_nsapi.is_value() && single_value->field_unused.is_value() && single_value->field_teidDataII.is_value(); } void TeidDataII_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; } TeidDataII TeidDataII_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 @GTPC_Types.TeidDataII."); TeidDataII ret_val; if (single_value->field_type__gtpc.is_bound()) { ret_val.type__gtpc() = single_value->field_type__gtpc.valueof(); } if (single_value->field_nsapi.is_bound()) { ret_val.nsapi() = single_value->field_nsapi.valueof(); } if (single_value->field_unused.is_bound()) { ret_val.unused() = single_value->field_unused.valueof(); } if (single_value->field_teidDataII.is_bound()) { ret_val.teidDataII() = single_value->field_teidDataII.valueof(); } return ret_val; } void TeidDataII_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 @GTPC_Types.TeidDataII."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new TeidDataII_template[list_length]; } TeidDataII_template& TeidDataII_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 @GTPC_Types.TeidDataII."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @GTPC_Types.TeidDataII."); return value_list.list_value[list_index]; } OCTETSTRING_template& TeidDataII_template::type__gtpc() { set_specific(); return single_value->field_type__gtpc; } const OCTETSTRING_template& TeidDataII_template::type__gtpc() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field type_gtpc of a non-specific template of type @GTPC_Types.TeidDataII."); return single_value->field_type__gtpc; } BITSTRING_template& TeidDataII_template::nsapi() { set_specific(); return single_value->field_nsapi; } const BITSTRING_template& TeidDataII_template::nsapi() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field nsapi of a non-specific template of type @GTPC_Types.TeidDataII."); return single_value->field_nsapi; } BITSTRING_template& TeidDataII_template::unused() { set_specific(); return single_value->field_unused; } const BITSTRING_template& TeidDataII_template::unused() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field unused of a non-specific template of type @GTPC_Types.TeidDataII."); return single_value->field_unused; } OCTETSTRING_template& TeidDataII_template::teidDataII() { set_specific(); return single_value->field_teidDataII; } const OCTETSTRING_template& TeidDataII_template::teidDataII() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field teidDataII of a non-specific template of type @GTPC_Types.TeidDataII."); return single_value->field_teidDataII; } int TeidDataII_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TeidDataII 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 @GTPC_Types.TeidDataII 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 @GTPC_Types.TeidDataII containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TeidDataII containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TeidDataII containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TeidDataII containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TeidDataII containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TeidDataII containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TeidDataII containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @GTPC_Types.TeidDataII."); } return 0; } void TeidDataII_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ type_gtpc := "); single_value->field_type__gtpc.log(); TTCN_Logger::log_event_str(", nsapi := "); single_value->field_nsapi.log(); TTCN_Logger::log_event_str(", unused := "); single_value->field_unused.log(); TTCN_Logger::log_event_str(", teidDataII := "); single_value->field_teidDataII.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 TeidDataII_template::log_match(const TeidDataII& 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_type__gtpc.match(match_value.type__gtpc(), legacy)){ TTCN_Logger::log_logmatch_info(".type_gtpc"); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_nsapi.match(match_value.nsapi(), legacy)){ TTCN_Logger::log_logmatch_info(".nsapi"); single_value->field_nsapi.log_match(match_value.nsapi(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_unused.match(match_value.unused(), legacy)){ TTCN_Logger::log_logmatch_info(".unused"); single_value->field_unused.log_match(match_value.unused(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_teidDataII.match(match_value.teidDataII(), legacy)){ TTCN_Logger::log_logmatch_info(".teidDataII"); single_value->field_teidDataII.log_match(match_value.teidDataII(), 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("{ type_gtpc := "); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::log_event_str(", nsapi := "); single_value->field_nsapi.log_match(match_value.nsapi(), legacy); TTCN_Logger::log_event_str(", unused := "); single_value->field_unused.log_match(match_value.unused(), legacy); TTCN_Logger::log_event_str(", teidDataII := "); single_value->field_teidDataII.log_match(match_value.teidDataII(), 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 TeidDataII_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_type__gtpc.encode_text(text_buf); single_value->field_nsapi.encode_text(text_buf); single_value->field_unused.encode_text(text_buf); single_value->field_teidDataII.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 @GTPC_Types.TeidDataII."); } } void TeidDataII_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_type__gtpc.decode_text(text_buf); single_value->field_nsapi.decode_text(text_buf); single_value->field_unused.decode_text(text_buf); single_value->field_teidDataII.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 TeidDataII_template[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 @GTPC_Types.TeidDataII."); } } void TeidDataII_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: { TeidDataII_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) nsapi().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) unused().set_param(*param.get_elem(2)); if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) teidDataII().set_param(*param.get_elem(3)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "nsapi")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { nsapi().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "unused")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { unused().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "teidDataII")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { teidDataII().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.TeidDataII: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { TeidDataII_template* precondition = new TeidDataII_template; precondition->set_param(*param.get_elem(0)); TeidDataII_template* implied_template = new TeidDataII_template; implied_template->set_param(*param.get_elem(1)); *this = TeidDataII_template(precondition, implied_template); } break; default: param.type_error("record template", "@GTPC_Types.TeidDataII"); } is_ifpresent = param.get_ifpresent(); } void TeidDataII_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_type__gtpc.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.TeidDataII"); single_value->field_nsapi.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.TeidDataII"); single_value->field_unused.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.TeidDataII"); single_value->field_teidDataII.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.TeidDataII"); 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 : "@GTPC_Types.TeidDataII"); } boolean TeidDataII_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean TeidDataII_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) tdInd().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) spare().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "tdInd")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { tdInd().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_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_idxerror("Non existent field name in type @GTPC_Types.TearDownInd: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@GTPC_Types.TearDownInd"); } } void TearDownInd::encode_text(Text_Buf& text_buf) const { field_type__gtpc.encode_text(text_buf); field_tdInd.encode_text(text_buf); field_spare.encode_text(text_buf); } void TearDownInd::decode_text(Text_Buf& text_buf) { field_type__gtpc.decode_text(text_buf); field_tdInd.decode_text(text_buf); field_spare.decode_text(text_buf); } void TearDownInd::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;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void TearDownInd::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;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int TearDownInd::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) { (void)no_err; int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); limit-=prepaddlength; size_t last_decoded_pos = p_buf.get_pos_bit(); int decoded_length = 0; int decoded_field_length = 0; raw_order_t local_top_order; if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; else local_top_order=ORDER_LSB; RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit); decoded_field_length = field_type__gtpc.RAW_decode(General__Types::OCT1_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, General__Types::BIT1_descr_.raw->forceomit); decoded_field_length = field_tdInd.RAW_decode(General__Types::BIT1_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, General__Types::BIT7_descr_.raw->forceomit); decoded_field_length = field_spare.RAW_decode(General__Types::BIT7_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 (field_type__gtpc != os_48) return -1; p_buf.set_pos_bit(last_decoded_pos); return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); } int TearDownInd::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, General__Types::OCT1_descr_.raw); myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::BIT1_descr_.raw); myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, General__Types::BIT7_descr_.raw); encoded_length += field_type__gtpc.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]); encoded_length += field_tdInd.RAW_encode(General__Types::BIT1_descr_, *myleaf.body.node.nodes[1]); encoded_length += field_spare.RAW_encode(General__Types::BIT7_descr_, *myleaf.body.node.nodes[2]); if (field_type__gtpc != os_48) { 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){ os_48.RAW_encode(General__Types::OCT1_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 TearDownInd_template::single_value_struct { OCTETSTRING_template field_type__gtpc; BITSTRING_template field_tdInd; BITSTRING_template field_spare; }; void TearDownInd_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_type__gtpc = ANY_VALUE; single_value->field_tdInd = ANY_VALUE; single_value->field_spare = ANY_VALUE; } } } void TearDownInd_template::copy_value(const TearDownInd& other_value) { single_value = new single_value_struct; if (other_value.type__gtpc().is_bound()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (other_value.tdInd().is_bound()) { single_value->field_tdInd = other_value.tdInd(); } else { single_value->field_tdInd.clean_up(); } if (other_value.spare().is_bound()) { single_value->field_spare = other_value.spare(); } else { single_value->field_spare.clean_up(); } set_selection(SPECIFIC_VALUE); } void TearDownInd_template::copy_template(const TearDownInd_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.type__gtpc().get_selection()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.tdInd().get_selection()) { single_value->field_tdInd = other_value.tdInd(); } else { single_value->field_tdInd.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.spare().get_selection()) { single_value->field_spare = other_value.spare(); } else { single_value->field_spare.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 TearDownInd_template[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 TearDownInd_template(*other_value.implication_.precondition); implication_.implied_template = new TearDownInd_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 @GTPC_Types.TearDownInd."); break; } set_selection(other_value); } TearDownInd_template::TearDownInd_template() { } TearDownInd_template::TearDownInd_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } TearDownInd_template::TearDownInd_template(const TearDownInd& other_value) { copy_value(other_value); } TearDownInd_template::TearDownInd_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const TearDownInd&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @GTPC_Types.TearDownInd from an unbound optional field."); } } TearDownInd_template::TearDownInd_template(TearDownInd_template* p_precondition, TearDownInd_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } TearDownInd_template::TearDownInd_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } TearDownInd_template::TearDownInd_template(const TearDownInd_template& other_value) : Base_Template() { copy_template(other_value); } TearDownInd_template::~TearDownInd_template() { clean_up(); } TearDownInd_template& TearDownInd_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } TearDownInd_template& TearDownInd_template::operator=(const TearDownInd& other_value) { clean_up(); copy_value(other_value); return *this; } TearDownInd_template& TearDownInd_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const TearDownInd&)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 @GTPC_Types.TearDownInd."); } return *this; } TearDownInd_template& TearDownInd_template::operator=(const TearDownInd_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean TearDownInd_template::match(const TearDownInd& 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.type__gtpc().is_bound()) return FALSE; if(!single_value->field_type__gtpc.match(other_value.type__gtpc(), legacy))return FALSE; if(!other_value.tdInd().is_bound()) return FALSE; if(!single_value->field_tdInd.match(other_value.tdInd(), legacy))return FALSE; if(!other_value.spare().is_bound()) return FALSE; if(!single_value->field_spare.match(other_value.spare(), 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 @GTPC_Types.TearDownInd."); } return FALSE; } boolean TearDownInd_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_type__gtpc.is_bound() || single_value->field_tdInd.is_bound() || single_value->field_spare.is_bound(); } boolean TearDownInd_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_type__gtpc.is_value() && single_value->field_tdInd.is_value() && single_value->field_spare.is_value(); } void TearDownInd_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; } TearDownInd TearDownInd_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 @GTPC_Types.TearDownInd."); TearDownInd ret_val; if (single_value->field_type__gtpc.is_bound()) { ret_val.type__gtpc() = single_value->field_type__gtpc.valueof(); } if (single_value->field_tdInd.is_bound()) { ret_val.tdInd() = single_value->field_tdInd.valueof(); } if (single_value->field_spare.is_bound()) { ret_val.spare() = single_value->field_spare.valueof(); } return ret_val; } void TearDownInd_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 @GTPC_Types.TearDownInd."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new TearDownInd_template[list_length]; } TearDownInd_template& TearDownInd_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 @GTPC_Types.TearDownInd."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @GTPC_Types.TearDownInd."); return value_list.list_value[list_index]; } OCTETSTRING_template& TearDownInd_template::type__gtpc() { set_specific(); return single_value->field_type__gtpc; } const OCTETSTRING_template& TearDownInd_template::type__gtpc() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field type_gtpc of a non-specific template of type @GTPC_Types.TearDownInd."); return single_value->field_type__gtpc; } BITSTRING_template& TearDownInd_template::tdInd() { set_specific(); return single_value->field_tdInd; } const BITSTRING_template& TearDownInd_template::tdInd() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field tdInd of a non-specific template of type @GTPC_Types.TearDownInd."); return single_value->field_tdInd; } BITSTRING_template& TearDownInd_template::spare() { set_specific(); return single_value->field_spare; } const BITSTRING_template& TearDownInd_template::spare() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field spare of a non-specific template of type @GTPC_Types.TearDownInd."); return single_value->field_spare; } int TearDownInd_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TearDownInd which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: return 3; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @GTPC_Types.TearDownInd 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 @GTPC_Types.TearDownInd containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TearDownInd containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TearDownInd containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TearDownInd containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TearDownInd containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TearDownInd containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TearDownInd containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @GTPC_Types.TearDownInd."); } return 0; } void TearDownInd_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ type_gtpc := "); single_value->field_type__gtpc.log(); TTCN_Logger::log_event_str(", tdInd := "); single_value->field_tdInd.log(); TTCN_Logger::log_event_str(", spare := "); single_value->field_spare.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 TearDownInd_template::log_match(const TearDownInd& 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_type__gtpc.match(match_value.type__gtpc(), legacy)){ TTCN_Logger::log_logmatch_info(".type_gtpc"); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_tdInd.match(match_value.tdInd(), legacy)){ TTCN_Logger::log_logmatch_info(".tdInd"); single_value->field_tdInd.log_match(match_value.tdInd(), legacy); 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); } }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("{ type_gtpc := "); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::log_event_str(", tdInd := "); single_value->field_tdInd.log_match(match_value.tdInd(), legacy); TTCN_Logger::log_event_str(", spare := "); single_value->field_spare.log_match(match_value.spare(), 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 TearDownInd_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_type__gtpc.encode_text(text_buf); single_value->field_tdInd.encode_text(text_buf); single_value->field_spare.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 @GTPC_Types.TearDownInd."); } } void TearDownInd_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_type__gtpc.decode_text(text_buf); single_value->field_tdInd.decode_text(text_buf); single_value->field_spare.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 TearDownInd_template[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 @GTPC_Types.TearDownInd."); } } void TearDownInd_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: { TearDownInd_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) tdInd().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) spare().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "tdInd")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { tdInd().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_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_idxerror("Non existent field name in type @GTPC_Types.TearDownInd: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { TearDownInd_template* precondition = new TearDownInd_template; precondition->set_param(*param.get_elem(0)); TearDownInd_template* implied_template = new TearDownInd_template; implied_template->set_param(*param.get_elem(1)); *this = TearDownInd_template(precondition, implied_template); } break; default: param.type_error("record template", "@GTPC_Types.TearDownInd"); } is_ifpresent = param.get_ifpresent(); } void TearDownInd_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_type__gtpc.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.TearDownInd"); single_value->field_tdInd.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.TearDownInd"); single_value->field_spare.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.TearDownInd"); 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 : "@GTPC_Types.TearDownInd"); } boolean TearDownInd_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean TearDownInd_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) nsapi().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) unused().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "nsapi")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { nsapi().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "unused")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { unused().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.NSAPI_GTPC: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@GTPC_Types.NSAPI_GTPC"); } } void NSAPI__GTPC::encode_text(Text_Buf& text_buf) const { field_type__gtpc.encode_text(text_buf); field_nsapi.encode_text(text_buf); field_unused.encode_text(text_buf); } void NSAPI__GTPC::decode_text(Text_Buf& text_buf) { field_type__gtpc.decode_text(text_buf); field_nsapi.decode_text(text_buf); field_unused.decode_text(text_buf); } void NSAPI__GTPC::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;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void NSAPI__GTPC::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;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int NSAPI__GTPC::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) { (void)no_err; int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); limit-=prepaddlength; size_t last_decoded_pos = p_buf.get_pos_bit(); int decoded_length = 0; int decoded_field_length = 0; raw_order_t local_top_order; if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; else local_top_order=ORDER_LSB; RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit); decoded_field_length = field_type__gtpc.RAW_decode(General__Types::OCT1_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, General__Types::BIT4_descr_.raw->forceomit); decoded_field_length = field_nsapi.RAW_decode(General__Types::BIT4_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, General__Types::BIT4_descr_.raw->forceomit); decoded_field_length = field_unused.RAW_decode(General__Types::BIT4_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 (field_type__gtpc != os_7) return -1; p_buf.set_pos_bit(last_decoded_pos); return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); } int NSAPI__GTPC::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, General__Types::OCT1_descr_.raw); myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::BIT4_descr_.raw); myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, General__Types::BIT4_descr_.raw); encoded_length += field_type__gtpc.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]); encoded_length += field_nsapi.RAW_encode(General__Types::BIT4_descr_, *myleaf.body.node.nodes[1]); encoded_length += field_unused.RAW_encode(General__Types::BIT4_descr_, *myleaf.body.node.nodes[2]); if (field_type__gtpc != os_7) { 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){ os_7.RAW_encode(General__Types::OCT1_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 NSAPI__GTPC_template::single_value_struct { OCTETSTRING_template field_type__gtpc; BITSTRING_template field_nsapi; BITSTRING_template field_unused; }; void NSAPI__GTPC_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_type__gtpc = ANY_VALUE; single_value->field_nsapi = ANY_VALUE; single_value->field_unused = ANY_VALUE; } } } void NSAPI__GTPC_template::copy_value(const NSAPI__GTPC& other_value) { single_value = new single_value_struct; if (other_value.type__gtpc().is_bound()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (other_value.nsapi().is_bound()) { single_value->field_nsapi = other_value.nsapi(); } else { single_value->field_nsapi.clean_up(); } if (other_value.unused().is_bound()) { single_value->field_unused = other_value.unused(); } else { single_value->field_unused.clean_up(); } set_selection(SPECIFIC_VALUE); } void NSAPI__GTPC_template::copy_template(const NSAPI__GTPC_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.type__gtpc().get_selection()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.nsapi().get_selection()) { single_value->field_nsapi = other_value.nsapi(); } else { single_value->field_nsapi.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.unused().get_selection()) { single_value->field_unused = other_value.unused(); } else { single_value->field_unused.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 NSAPI__GTPC_template[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 NSAPI__GTPC_template(*other_value.implication_.precondition); implication_.implied_template = new NSAPI__GTPC_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 @GTPC_Types.NSAPI_GTPC."); break; } set_selection(other_value); } NSAPI__GTPC_template::NSAPI__GTPC_template() { } NSAPI__GTPC_template::NSAPI__GTPC_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } NSAPI__GTPC_template::NSAPI__GTPC_template(const NSAPI__GTPC& other_value) { copy_value(other_value); } NSAPI__GTPC_template::NSAPI__GTPC_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const NSAPI__GTPC&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @GTPC_Types.NSAPI_GTPC from an unbound optional field."); } } NSAPI__GTPC_template::NSAPI__GTPC_template(NSAPI__GTPC_template* p_precondition, NSAPI__GTPC_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } NSAPI__GTPC_template::NSAPI__GTPC_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } NSAPI__GTPC_template::NSAPI__GTPC_template(const NSAPI__GTPC_template& other_value) : Base_Template() { copy_template(other_value); } NSAPI__GTPC_template::~NSAPI__GTPC_template() { clean_up(); } NSAPI__GTPC_template& NSAPI__GTPC_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } NSAPI__GTPC_template& NSAPI__GTPC_template::operator=(const NSAPI__GTPC& other_value) { clean_up(); copy_value(other_value); return *this; } NSAPI__GTPC_template& NSAPI__GTPC_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const NSAPI__GTPC&)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 @GTPC_Types.NSAPI_GTPC."); } return *this; } NSAPI__GTPC_template& NSAPI__GTPC_template::operator=(const NSAPI__GTPC_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean NSAPI__GTPC_template::match(const NSAPI__GTPC& 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.type__gtpc().is_bound()) return FALSE; if(!single_value->field_type__gtpc.match(other_value.type__gtpc(), legacy))return FALSE; if(!other_value.nsapi().is_bound()) return FALSE; if(!single_value->field_nsapi.match(other_value.nsapi(), legacy))return FALSE; if(!other_value.unused().is_bound()) return FALSE; if(!single_value->field_unused.match(other_value.unused(), 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 @GTPC_Types.NSAPI_GTPC."); } return FALSE; } boolean NSAPI__GTPC_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_type__gtpc.is_bound() || single_value->field_nsapi.is_bound() || single_value->field_unused.is_bound(); } boolean NSAPI__GTPC_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_type__gtpc.is_value() && single_value->field_nsapi.is_value() && single_value->field_unused.is_value(); } void NSAPI__GTPC_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; } NSAPI__GTPC NSAPI__GTPC_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 @GTPC_Types.NSAPI_GTPC."); NSAPI__GTPC ret_val; if (single_value->field_type__gtpc.is_bound()) { ret_val.type__gtpc() = single_value->field_type__gtpc.valueof(); } if (single_value->field_nsapi.is_bound()) { ret_val.nsapi() = single_value->field_nsapi.valueof(); } if (single_value->field_unused.is_bound()) { ret_val.unused() = single_value->field_unused.valueof(); } return ret_val; } void NSAPI__GTPC_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 @GTPC_Types.NSAPI_GTPC."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new NSAPI__GTPC_template[list_length]; } NSAPI__GTPC_template& NSAPI__GTPC_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 @GTPC_Types.NSAPI_GTPC."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @GTPC_Types.NSAPI_GTPC."); return value_list.list_value[list_index]; } OCTETSTRING_template& NSAPI__GTPC_template::type__gtpc() { set_specific(); return single_value->field_type__gtpc; } const OCTETSTRING_template& NSAPI__GTPC_template::type__gtpc() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field type_gtpc of a non-specific template of type @GTPC_Types.NSAPI_GTPC."); return single_value->field_type__gtpc; } BITSTRING_template& NSAPI__GTPC_template::nsapi() { set_specific(); return single_value->field_nsapi; } const BITSTRING_template& NSAPI__GTPC_template::nsapi() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field nsapi of a non-specific template of type @GTPC_Types.NSAPI_GTPC."); return single_value->field_nsapi; } BITSTRING_template& NSAPI__GTPC_template::unused() { set_specific(); return single_value->field_unused; } const BITSTRING_template& NSAPI__GTPC_template::unused() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field unused of a non-specific template of type @GTPC_Types.NSAPI_GTPC."); return single_value->field_unused; } int NSAPI__GTPC_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.NSAPI_GTPC which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: return 3; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @GTPC_Types.NSAPI_GTPC 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 @GTPC_Types.NSAPI_GTPC containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.NSAPI_GTPC containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.NSAPI_GTPC containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.NSAPI_GTPC containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.NSAPI_GTPC containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.NSAPI_GTPC containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.NSAPI_GTPC containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @GTPC_Types.NSAPI_GTPC."); } return 0; } void NSAPI__GTPC_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ type_gtpc := "); single_value->field_type__gtpc.log(); TTCN_Logger::log_event_str(", nsapi := "); single_value->field_nsapi.log(); TTCN_Logger::log_event_str(", unused := "); single_value->field_unused.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 NSAPI__GTPC_template::log_match(const NSAPI__GTPC& 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_type__gtpc.match(match_value.type__gtpc(), legacy)){ TTCN_Logger::log_logmatch_info(".type_gtpc"); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_nsapi.match(match_value.nsapi(), legacy)){ TTCN_Logger::log_logmatch_info(".nsapi"); single_value->field_nsapi.log_match(match_value.nsapi(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_unused.match(match_value.unused(), legacy)){ TTCN_Logger::log_logmatch_info(".unused"); single_value->field_unused.log_match(match_value.unused(), 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("{ type_gtpc := "); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::log_event_str(", nsapi := "); single_value->field_nsapi.log_match(match_value.nsapi(), legacy); TTCN_Logger::log_event_str(", unused := "); single_value->field_unused.log_match(match_value.unused(), 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 NSAPI__GTPC_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_type__gtpc.encode_text(text_buf); single_value->field_nsapi.encode_text(text_buf); single_value->field_unused.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 @GTPC_Types.NSAPI_GTPC."); } } void NSAPI__GTPC_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_type__gtpc.decode_text(text_buf); single_value->field_nsapi.decode_text(text_buf); single_value->field_unused.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 NSAPI__GTPC_template[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 @GTPC_Types.NSAPI_GTPC."); } } void NSAPI__GTPC_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: { NSAPI__GTPC_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) nsapi().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) unused().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "nsapi")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { nsapi().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "unused")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { unused().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.NSAPI_GTPC: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { NSAPI__GTPC_template* precondition = new NSAPI__GTPC_template; precondition->set_param(*param.get_elem(0)); NSAPI__GTPC_template* implied_template = new NSAPI__GTPC_template; implied_template->set_param(*param.get_elem(1)); *this = NSAPI__GTPC_template(precondition, implied_template); } break; default: param.type_error("record template", "@GTPC_Types.NSAPI_GTPC"); } is_ifpresent = param.get_ifpresent(); } void NSAPI__GTPC_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_type__gtpc.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.NSAPI_GTPC"); single_value->field_nsapi.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.NSAPI_GTPC"); single_value->field_unused.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.NSAPI_GTPC"); 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 : "@GTPC_Types.NSAPI_GTPC"); } boolean NSAPI__GTPC_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean NSAPI__GTPC_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ranapCause().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "ranapCause")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { ranapCause().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.RANAPCause: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@GTPC_Types.RANAPCause"); } } void RANAPCause::encode_text(Text_Buf& text_buf) const { field_type__gtpc.encode_text(text_buf); field_ranapCause.encode_text(text_buf); } void RANAPCause::decode_text(Text_Buf& text_buf) { field_type__gtpc.decode_text(text_buf); field_ranapCause.decode_text(text_buf); } void RANAPCause::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;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void RANAPCause::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;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int RANAPCause::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) { (void)no_err; int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); limit-=prepaddlength; size_t last_decoded_pos = p_buf.get_pos_bit(); int decoded_length = 0; int decoded_field_length = 0; raw_order_t local_top_order; if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; else local_top_order=ORDER_LSB; RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit); decoded_field_length = field_type__gtpc.RAW_decode(General__Types::OCT1_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, General__Types::OCT1_descr_.raw->forceomit); decoded_field_length = field_ranapCause.RAW_decode(General__Types::OCT1_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 (field_type__gtpc != os_83) return -1; p_buf.set_pos_bit(last_decoded_pos); return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); } int RANAPCause::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, General__Types::OCT1_descr_.raw); myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::OCT1_descr_.raw); encoded_length += field_type__gtpc.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]); encoded_length += field_ranapCause.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[1]); if (field_type__gtpc != os_83) { 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){ os_83.RAW_encode(General__Types::OCT1_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 RANAPCause_template::single_value_struct { OCTETSTRING_template field_type__gtpc; OCTETSTRING_template field_ranapCause; }; void RANAPCause_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_type__gtpc = ANY_VALUE; single_value->field_ranapCause = ANY_VALUE; } } } void RANAPCause_template::copy_value(const RANAPCause& other_value) { single_value = new single_value_struct; if (other_value.type__gtpc().is_bound()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (other_value.ranapCause().is_bound()) { single_value->field_ranapCause = other_value.ranapCause(); } else { single_value->field_ranapCause.clean_up(); } set_selection(SPECIFIC_VALUE); } void RANAPCause_template::copy_template(const RANAPCause_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.type__gtpc().get_selection()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.ranapCause().get_selection()) { single_value->field_ranapCause = other_value.ranapCause(); } else { single_value->field_ranapCause.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 RANAPCause_template[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 RANAPCause_template(*other_value.implication_.precondition); implication_.implied_template = new RANAPCause_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 @GTPC_Types.RANAPCause."); break; } set_selection(other_value); } RANAPCause_template::RANAPCause_template() { } RANAPCause_template::RANAPCause_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } RANAPCause_template::RANAPCause_template(const RANAPCause& other_value) { copy_value(other_value); } RANAPCause_template::RANAPCause_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const RANAPCause&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @GTPC_Types.RANAPCause from an unbound optional field."); } } RANAPCause_template::RANAPCause_template(RANAPCause_template* p_precondition, RANAPCause_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } RANAPCause_template::RANAPCause_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } RANAPCause_template::RANAPCause_template(const RANAPCause_template& other_value) : Base_Template() { copy_template(other_value); } RANAPCause_template::~RANAPCause_template() { clean_up(); } RANAPCause_template& RANAPCause_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } RANAPCause_template& RANAPCause_template::operator=(const RANAPCause& other_value) { clean_up(); copy_value(other_value); return *this; } RANAPCause_template& RANAPCause_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const RANAPCause&)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 @GTPC_Types.RANAPCause."); } return *this; } RANAPCause_template& RANAPCause_template::operator=(const RANAPCause_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean RANAPCause_template::match(const RANAPCause& 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.type__gtpc().is_bound()) return FALSE; if(!single_value->field_type__gtpc.match(other_value.type__gtpc(), legacy))return FALSE; if(!other_value.ranapCause().is_bound()) return FALSE; if(!single_value->field_ranapCause.match(other_value.ranapCause(), 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 @GTPC_Types.RANAPCause."); } return FALSE; } boolean RANAPCause_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_type__gtpc.is_bound() || single_value->field_ranapCause.is_bound(); } boolean RANAPCause_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_type__gtpc.is_value() && single_value->field_ranapCause.is_value(); } void RANAPCause_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; } RANAPCause RANAPCause_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 @GTPC_Types.RANAPCause."); RANAPCause ret_val; if (single_value->field_type__gtpc.is_bound()) { ret_val.type__gtpc() = single_value->field_type__gtpc.valueof(); } if (single_value->field_ranapCause.is_bound()) { ret_val.ranapCause() = single_value->field_ranapCause.valueof(); } return ret_val; } void RANAPCause_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 @GTPC_Types.RANAPCause."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new RANAPCause_template[list_length]; } RANAPCause_template& RANAPCause_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 @GTPC_Types.RANAPCause."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @GTPC_Types.RANAPCause."); return value_list.list_value[list_index]; } OCTETSTRING_template& RANAPCause_template::type__gtpc() { set_specific(); return single_value->field_type__gtpc; } const OCTETSTRING_template& RANAPCause_template::type__gtpc() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field type_gtpc of a non-specific template of type @GTPC_Types.RANAPCause."); return single_value->field_type__gtpc; } OCTETSTRING_template& RANAPCause_template::ranapCause() { set_specific(); return single_value->field_ranapCause; } const OCTETSTRING_template& RANAPCause_template::ranapCause() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field ranapCause of a non-specific template of type @GTPC_Types.RANAPCause."); return single_value->field_ranapCause; } int RANAPCause_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RANAPCause 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 @GTPC_Types.RANAPCause 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 @GTPC_Types.RANAPCause containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RANAPCause containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RANAPCause containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RANAPCause containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RANAPCause containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RANAPCause containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RANAPCause containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @GTPC_Types.RANAPCause."); } return 0; } void RANAPCause_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ type_gtpc := "); single_value->field_type__gtpc.log(); TTCN_Logger::log_event_str(", ranapCause := "); single_value->field_ranapCause.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 RANAPCause_template::log_match(const RANAPCause& 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_type__gtpc.match(match_value.type__gtpc(), legacy)){ TTCN_Logger::log_logmatch_info(".type_gtpc"); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_ranapCause.match(match_value.ranapCause(), legacy)){ TTCN_Logger::log_logmatch_info(".ranapCause"); single_value->field_ranapCause.log_match(match_value.ranapCause(), 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("{ type_gtpc := "); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::log_event_str(", ranapCause := "); single_value->field_ranapCause.log_match(match_value.ranapCause(), 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 RANAPCause_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_type__gtpc.encode_text(text_buf); single_value->field_ranapCause.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 @GTPC_Types.RANAPCause."); } } void RANAPCause_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_type__gtpc.decode_text(text_buf); single_value->field_ranapCause.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 RANAPCause_template[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 @GTPC_Types.RANAPCause."); } } void RANAPCause_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: { RANAPCause_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ranapCause().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "ranapCause")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { ranapCause().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.RANAPCause: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { RANAPCause_template* precondition = new RANAPCause_template; precondition->set_param(*param.get_elem(0)); RANAPCause_template* implied_template = new RANAPCause_template; implied_template->set_param(*param.get_elem(1)); *this = RANAPCause_template(precondition, implied_template); } break; default: param.type_error("record template", "@GTPC_Types.RANAPCause"); } is_ifpresent = param.get_ifpresent(); } void RANAPCause_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_type__gtpc.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.RANAPCause"); single_value->field_ranapCause.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.RANAPCause"); 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 : "@GTPC_Types.RANAPCause"); } boolean RANAPCause_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean RANAPCause_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idxref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } RABContext__List::RABContext__List(const RABContext__List& other_value) { if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @GTPC_Types.RABContext_List."); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } RABContext__List::~RABContext__List() { clean_up(); if (val_ptr != NULL) val_ptr = NULL; } void RABContext__List::clean_up() { if (val_ptr != NULL) { if (val_ptr->ref_count > 1) { val_ptr->ref_count--; val_ptr = NULL; } else if (val_ptr->ref_count == 1) { for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL) delete val_ptr->value_elements[elem_count]; free_pointers((void**)val_ptr->value_elements); delete val_ptr; val_ptr = NULL; } else TTCN_error("Internal error: Invalid reference counter in a record of/set of value."); } } RABContext__List& RABContext__List::operator=(null_type) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; return *this; } RABContext__List& RABContext__List::operator=(const RABContext__List& other_value) { if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @GTPC_Types.RABContext_List."); if (this != &other_value) { clean_up(); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } return *this; } boolean RABContext__List::operator==(null_type) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @GTPC_Types.RABContext_List."); return val_ptr->n_elements == 0 ; } boolean RABContext__List::operator==(const RABContext__List& other_value) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @GTPC_Types.RABContext_List."); if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @GTPC_Types.RABContext_List."); if (val_ptr == other_value.val_ptr) return TRUE; if (val_ptr->n_elements != (other_value.val_ptr)->n_elements) return FALSE; for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ if ((other_value.val_ptr)->value_elements[elem_count] != NULL){ if (*val_ptr->value_elements[elem_count] != *(other_value.val_ptr)->value_elements[elem_count]) return FALSE; } else return FALSE; } else { if ((other_value.val_ptr)->value_elements[elem_count] != NULL) return FALSE; } } return TRUE; } RABContext& RABContext__List::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of type @GTPC_Types.RABContext_List using a negative index: %d.", index_value); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (index_value >= val_ptr->n_elements) ? index_value + 1 : val_ptr->n_elements; new_val_ptr->value_elements = (RABContext**)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 RABContext(*(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 RABContext; } return *val_ptr->value_elements[index_value]; } RABContext& RABContext__List::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a value of type @GTPC_Types.RABContext_List."); return (*this)[(int)index_value]; } const RABContext& RABContext__List::operator[](int index_value) const { if (val_ptr == NULL) TTCN_error("Accessing an element in an unbound value of type @GTPC_Types.RABContext_List."); if (index_value < 0) TTCN_error("Accessing an element of type @GTPC_Types.RABContext_List using a negative index: %d.", index_value); if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @GTPC_Types.RABContext_List: The index is %d, but the value has only %d elements.", index_value, val_ptr->n_elements); return (val_ptr->value_elements[index_value] == NULL) ? UNBOUND_ELEM : *val_ptr->value_elements[index_value]; } const RABContext& RABContext__List::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a value of type @GTPC_Types.RABContext_List."); return (*this)[(int)index_value]; } RABContext__List RABContext__List::operator<<=(int rotate_count) const { return *this >>= (-rotate_count); } RABContext__List RABContext__List::operator<<=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate left operator."); return *this >>= (int)(-rotate_count); } RABContext__List RABContext__List::operator>>=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate right operator."); return *this >>= (int)rotate_count; } RABContext__List RABContext__List::operator>>=(int rotate_count) const { if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @GTPC_Types.RABContext_List."); if (val_ptr->n_elements == 0) return *this; int rc; if (rotate_count>=0) rc = rotate_count % val_ptr->n_elements; else rc = val_ptr->n_elements - ((-rotate_count) % val_ptr->n_elements); if (rc == 0) return *this; RABContext__List ret_val; ret_val.set_size(val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new RABContext(*val_ptr->value_elements[i]); } } return ret_val; } RABContext__List RABContext__List::operator+(const RABContext__List& other_value) const { if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @GTPC_Types.RABContext_List concatenation."); if (val_ptr->n_elements == 0) return other_value; if (other_value.val_ptr->n_elements == 0) return *this; RABContext__List ret_val; ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new RABContext(*val_ptr->value_elements[i]); } } for (int i=0; in_elements; i++) { if (other_value.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new RABContext(*other_value.val_ptr->value_elements[i]); } } return ret_val; } RABContext__List RABContext__List::substr(int index, int returncount) const { if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @GTPC_Types.RABContext_List."); check_substr_arguments(val_ptr->n_elements, index, returncount, "@GTPC_Types.RABContext_List","element"); RABContext__List ret_val; ret_val.set_size(returncount); for (int i=0; ivalue_elements[i+index] != NULL) { ret_val.val_ptr->value_elements[i] = new RABContext(*val_ptr->value_elements[i+index]); } } return ret_val; } RABContext__List RABContext__List::replace(int index, int len, const RABContext__List& repl) const { if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @GTPC_Types.RABContext_List."); if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @GTPC_Types.RABContext_List."); check_replace_arguments(val_ptr->n_elements, index, len, "@GTPC_Types.RABContext_List","element"); RABContext__List ret_val; ret_val.set_size(val_ptr->n_elements + repl.val_ptr->n_elements - len); for (int i = 0; i < index; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new RABContext(*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 RABContext(*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 RABContext(*val_ptr->value_elements[index+i+len]); } } return ret_val; } RABContext__List RABContext__List::replace(int index, int len, const RABContext__List_template& repl) const { if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return replace(index, len, repl.valueof()); } void RABContext__List::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @GTPC_Types.RABContext_List."); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (new_size < val_ptr->n_elements) ? new_size : val_ptr->n_elements; new_val_ptr->value_elements = (RABContext**)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 RABContext(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (new_size > val_ptr->n_elements) { val_ptr->value_elements = (RABContext**)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 @GTPC_Types.RABContext_List: %d",new_size); #endif val_ptr->n_elements = new_size; } else if (new_size < val_ptr->n_elements) { for (int elem_count = new_size; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL)delete val_ptr->value_elements[elem_count]; val_ptr->value_elements = (RABContext**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); val_ptr->n_elements = new_size; } } boolean RABContext__List::is_value() const { if (val_ptr == NULL) return FALSE; for(int i = 0; i < val_ptr->n_elements; ++i) { if (val_ptr->value_elements[i] == NULL || !val_ptr->value_elements[i]->is_value()) return FALSE; } return TRUE; } int RABContext__List::size_of() const { if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @GTPC_Types.RABContext_List."); return val_ptr->n_elements; } int RABContext__List::lengthof() const { if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @GTPC_Types.RABContext_List."); for (int my_length=val_ptr->n_elements; my_length>0; my_length--) if (val_ptr->value_elements[my_length-1] != NULL) return my_length; return 0; } void RABContext__List::log() const { if (val_ptr == NULL) {; TTCN_Logger::log_event_unbound(); return; } switch (val_ptr->n_elements) { case 0: TTCN_Logger::log_event_str("{ }"); break; default: TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); (*this)[elem_count].log(); } TTCN_Logger::log_event_str(" }"); } } void RABContext__List::set_implicit_omit() { if (val_ptr == NULL) return; for (int i = 0; i < val_ptr->n_elements; i++) { if (val_ptr->value_elements[i] != NULL) val_ptr->value_elements[i]->set_implicit_omit(); } } void RABContext__List::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE|Module_Param::BC_LIST, "record of value"); switch (param.get_operation_type()) { case Module_Param::OT_ASSIGN: if (param.get_type()==Module_Param::MP_Value_List && param.get_size()==0) { *this = NULL_VALUE; return; } switch (param.get_type()) { case Module_Param::MP_Value_List: set_size(param.get_size()); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed) { (*this)[i].set_param(*curr); if (!(*this)[i].is_bound()) { delete val_ptr->value_elements[i]; val_ptr->value_elements[i] = NULL; } } } break; case Module_Param::MP_Indexed_List: for (size_t i=0; iget_id()->get_index()].set_param(*curr); if (!(*this)[curr->get_id()->get_index()].is_bound()) { delete val_ptr->value_elements[curr->get_id()->get_index()]; val_ptr->value_elements[curr->get_id()->get_index()] = NULL; } } break; default: param.type_error("record of value", "@GTPC_Types.RABContext_List"); } break; case Module_Param::OT_CONCAT: switch (param.get_type()) { case Module_Param::MP_Value_List: { if (!is_bound()) *this = NULL_VALUE; int start_idx = lengthof(); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed)) { (*this)[start_idx+(int)i].set_param(*curr); } } } break; case Module_Param::MP_Indexed_List: param.error("Cannot concatenate an indexed value list"); break; default: param.type_error("record of value", "@GTPC_Types.RABContext_List"); } break; default: TTCN_error("Internal error: Unknown operation type."); } } void RABContext__List::encode_text(Text_Buf& text_buf) const { if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @GTPC_Types.RABContext_List."); text_buf.push_int(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) (*this)[elem_count].encode_text(text_buf); } void RABContext__List::decode_text(Text_Buf& text_buf) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = text_buf.pull_int().get_val(); if (val_ptr->n_elements < 0) TTCN_error("Text decoder: Negative size was received for a value of type @GTPC_Types.RABContext_List."); val_ptr->value_elements = (RABContext**)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 RABContext; val_ptr->value_elements[elem_count]->decode_text(text_buf); } } void RABContext__List::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void RABContext__List::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int RABContext__List::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=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 RABContext__List::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;araw); encoded_length+=(*this)[a].RAW_encode(*p_td.oftype_descr,*myleaf.body.node.nodes[a]); } return myleaf.length=encoded_length; } void RABContext__List_template::copy_value(const RABContext__List& other_value) { if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @GTPC_Types.RABContext_List with an unbound value."); single_value.n_elements = other_value.size_of(); single_value.value_elements = (RABContext_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 RABContext_template(other_value[elem_count]); } else { single_value.value_elements[elem_count] = new RABContext_template; } } set_selection(SPECIFIC_VALUE); } void RABContext__List_template::copy_template(const RABContext__List_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.n_elements = other_value.single_value.n_elements; single_value.value_elements = (RABContext_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 RABContext_template(*other_value.single_value.value_elements[elem_count]); } else { single_value.value_elements[elem_count] = new RABContext_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 RABContext__List_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new RABContext__List_template(*other_value.implication_.precondition); implication_.implied_template = new RABContext__List_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @GTPC_Types.RABContext_List."); break; } set_selection(other_value); } boolean RABContext__List_template::match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy) { if (value_index >= 0) return ((const RABContext__List_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const RABContext__List*)value_ptr)[value_index], legacy); else return ((const RABContext__List_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); } RABContext__List_template::RABContext__List_template() { } RABContext__List_template::RABContext__List_template(template_sel other_value) : Base_Record_Of_Template(other_value) { check_single_selection(other_value); } RABContext__List_template::RABContext__List_template(null_type) : Base_Record_Of_Template(SPECIFIC_VALUE) { single_value.n_elements = 0; single_value.value_elements = NULL; } RABContext__List_template::RABContext__List_template(const RABContext__List& other_value) { copy_value(other_value); } RABContext__List_template::RABContext__List_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const RABContext__List&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @GTPC_Types.RABContext_List from an unbound optional field."); } } RABContext__List_template::RABContext__List_template(RABContext__List_template* p_precondition, RABContext__List_template* p_implied_template) : Base_Record_Of_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } RABContext__List_template::RABContext__List_template(Dynamic_Match_Interface* p_dyn_match) : Base_Record_Of_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } RABContext__List_template::RABContext__List_template(const RABContext__List_template& other_value) : Base_Record_Of_Template() { copy_template(other_value); } RABContext__List_template::~RABContext__List_template() { clean_up(); } void RABContext__List_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; free_pointers((void**)single_value.value_elements); break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } RABContext__List_template& RABContext__List_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } RABContext__List_template& RABContext__List_template::operator=(null_type) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; return *this; } RABContext__List_template& RABContext__List_template::operator=(const RABContext__List& other_value) { clean_up(); copy_value(other_value); return *this; } RABContext__List_template& RABContext__List_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const RABContext__List&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @GTPC_Types.RABContext_List."); } return *this; } RABContext__List_template& RABContext__List_template::operator=(const RABContext__List_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } RABContext_template& RABContext__List_template::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of a template for type @GTPC_Types.RABContext_List using a negative index: %d.", index_value); switch (template_selection) { case SPECIFIC_VALUE: if(index_value < single_value.n_elements) break; // no break case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: case UNINITIALIZED_TEMPLATE: set_size(index_value + 1); break; default: TTCN_error("Accessing an element of a non-specific template for type @GTPC_Types.RABContext_List."); break; } return *single_value.value_elements[index_value]; } RABContext_template& RABContext__List_template::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a template of type @GTPC_Types.RABContext_List."); return (*this)[(int)index_value]; } const RABContext_template& RABContext__List_template::operator[](int index_value) const { if (index_value < 0) TTCN_error("Accessing an element of a template for type @GTPC_Types.RABContext_List using a negative index: %d.", index_value); if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @GTPC_Types.RABContext_List."); if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @GTPC_Types.RABContext_List: The index is %d, but the template has only %d elements.", index_value, single_value.n_elements); return *single_value.value_elements[index_value]; } const RABContext_template& RABContext__List_template::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a template of type @GTPC_Types.RABContext_List."); return (*this)[(int)index_value]; } void RABContext__List_template::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @GTPC_Types.RABContext_List."); template_sel old_selection = template_selection; if (old_selection != SPECIFIC_VALUE) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; } if (new_size > single_value.n_elements) { single_value.value_elements = (RABContext_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 RABContext_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 RABContext_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 = (RABContext_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); single_value.n_elements = new_size; } } int RABContext__List_template::n_elem() const { switch (template_selection) { case SPECIFIC_VALUE: return single_value.n_elements; break; case VALUE_LIST: return value_list.n_values; break; default: TTCN_error("Performing n_elem"); } } int RABContext__List_template::size_of(boolean is_size) const { const char* op_name = is_size ? "size" : "length"; int min_size; boolean has_any_or_none; if (is_ifpresent) TTCN_error("Performing %sof() operation on a template of type @GTPC_Types.RABContext_List which has an ifpresent attribute.", op_name); switch (template_selection) { case SPECIFIC_VALUE: { min_size = 0; has_any_or_none = FALSE; int elem_count = single_value.n_elements; if (!is_size) { while (elem_count>0 && !single_value.value_elements[elem_count-1]->is_bound()) elem_count--; } for (int i=0; iget_selection()) { case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @GTPC_Types.RABContext_List containing omit element.", op_name); case ANY_OR_OMIT: has_any_or_none = TRUE; break; default: min_size++; break; } } } break; case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @GTPC_Types.RABContext_List containing omit value.", op_name); case ANY_VALUE: case ANY_OR_OMIT: min_size = 0; has_any_or_none = TRUE; break; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Performing %sof() operation on a template of type @GTPC_Types.RABContext_List containing an empty list.", op_name); int item_size = value_list.list_value[0].size_of(is_size); for (unsigned int i = 1; i < value_list.n_values; i++) { if (value_list.list_value[i].size_of(is_size)!=item_size) TTCN_error("Performing %sof() operation on a template of type @GTPC_Types.RABContext_List containing a value list with different sizes.", op_name); } min_size = item_size; has_any_or_none = FALSE; break; } case COMPLEMENTED_LIST: TTCN_error("Performing %sof() operation on a template of type @GTPC_Types.RABContext_List containing complemented list.", op_name); default: TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @GTPC_Types.RABContext_List.", op_name); } return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @GTPC_Types.RABContext_List"); } boolean RABContext__List_template::match(const RABContext__List& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; int value_length = other_value.size_of(); if (!match_length(value_length)) return FALSE; switch (template_selection) { case SPECIFIC_VALUE: return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy); case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching with an uninitialized/unsupported template of type @GTPC_Types.RABContext_List."); } return FALSE; } boolean RABContext__List_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (!single_value.value_elements[elem_count]->is_value()) return FALSE; return TRUE; } RABContext__List RABContext__List_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @GTPC_Types.RABContext_List."); RABContext__List ret_val; ret_val.set_size(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (single_value.value_elements[elem_count]->is_bound()) { ret_val[elem_count] = single_value.value_elements[elem_count]->valueof(); } return ret_val; } RABContext__List RABContext__List_template::substr(int index, int returncount) const { if (!is_value()) TTCN_error("The first argument of function substr() is a template with non-specific value."); return valueof().substr(index, returncount); } RABContext__List RABContext__List_template::replace(int index, int len, const RABContext__List_template& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl.valueof()); } RABContext__List RABContext__List_template::replace(int index, int len, const RABContext__List& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl); } void RABContext__List_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = list_length; value_list.list_value = new RABContext__List_template[list_length]; break; default: TTCN_error("Internal error: Setting an invalid type for a template of type @GTPC_Types.RABContext_List."); } set_selection(template_type); } RABContext__List_template& RABContext__List_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of type @GTPC_Types.RABContext_List."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @GTPC_Types.RABContext_List."); return value_list.list_value[list_index]; } void RABContext__List_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: if (single_value.n_elements > 0) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation("); single_value.value_elements[elem_count]->log(); if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')'); } TTCN_Logger::log_event_str(" }"); } else TTCN_Logger::log_event_str("{ }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_restricted(); log_ifpresent(); } void RABContext__List_template::log_match(const RABContext__List& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); }else{ if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if(!single_value.value_elements[elem_count]->match(match_value[elem_count], legacy)){ TTCN_Logger::log_logmatch_info("[%d]", elem_count); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } log_match_length(single_value.n_elements); } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); } TTCN_Logger::log_event_str(" }"); log_match_length(single_value.n_elements); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void RABContext__List_template::encode_text(Text_Buf& text_buf) const { encode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) single_value.value_elements[elem_count]->encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @GTPC_Types.RABContext_List."); } } void RABContext__List_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value.n_elements = text_buf.pull_int().get_val(); if (single_value.n_elements < 0) TTCN_error("Text decoder: Negative size was received for a template of type @GTPC_Types.RABContext_List."); single_value.value_elements = (RABContext_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 RABContext_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 RABContext__List_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of type @GTPC_Types.RABContext_List."); } } boolean RABContext__List_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean RABContext__List_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iget_id()->get_index())].set_param(*param.get_elem(p_i)); } break; case Module_Param::MP_Value_List: { set_size(param.get_size()); int curr_idx = 0; for (size_t p_i=0; p_iget_type()) { case Module_Param::MP_NotUsed: curr_idx++; break; case Module_Param::MP_Permutation_Template: { int perm_start_idx = curr_idx; Module_Param* param_i = param.get_elem(p_i); for (size_t perm_i=0; perm_iget_size(); perm_i++) { (*this)[curr_idx].set_param(*(param_i->get_elem(perm_i))); curr_idx++; } int perm_end_idx = curr_idx - 1; add_permutation(perm_start_idx, perm_end_idx); } break; default: (*this)[curr_idx].set_param(*param.get_elem(p_i)); curr_idx++; } } } break; case Module_Param::MP_Implication_Template: { RABContext__List_template* precondition = new RABContext__List_template; precondition->set_param(*param.get_elem(0)); RABContext__List_template* implied_template = new RABContext__List_template; implied_template->set_param(*param.get_elem(1)); *this = RABContext__List_template(precondition, implied_template); } break; default: param.type_error("record of template", "@GTPC_Types.RABContext_List"); } is_ifpresent = param.get_ifpresent(); set_length_range(param); } void RABContext__List_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; for (int i=0; icheck_restriction(t_res, t_name ? t_name : "@GTPC_Types.RABContext_List"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@GTPC_Types.RABContext_List"); } boolean RABContext__List_template::get_istemplate_kind(const char* type) const { if (!strcmp(type, "AnyElement")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_VALUE) { return TRUE; } } return FALSE; } else if (!strcmp(type, "AnyElementsOrNone")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_OR_OMIT) { return TRUE; } } return FALSE; } else if (!strcmp(type, "permutation")) { return number_of_permutations; } else if (!strcmp(type, "length")) { return length_restriction_type != NO_LENGTH_RESTRICTION; } else { return Base_Template::get_istemplate_kind(type); } } RABContext::RABContext() { } RABContext::RABContext(const OCTETSTRING& par_type__gtpc, const BITSTRING& par_nsapi, const BITSTRING& par_spare, const OCTETSTRING& par_dlgtp__u, const OCTETSTRING& par_ulgtp__u, const OCTETSTRING& par_dl__pdcp, const OCTETSTRING& par_ul__pdcp) : field_type__gtpc(par_type__gtpc), field_nsapi(par_nsapi), field_spare(par_spare), field_dlgtp__u(par_dlgtp__u), field_ulgtp__u(par_ulgtp__u), field_dl__pdcp(par_dl__pdcp), field_ul__pdcp(par_ul__pdcp) { } RABContext::RABContext(const RABContext& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @GTPC_Types.RABContext."); if (other_value.type__gtpc().is_bound()) field_type__gtpc = other_value.type__gtpc(); else field_type__gtpc.clean_up(); if (other_value.nsapi().is_bound()) field_nsapi = other_value.nsapi(); else field_nsapi.clean_up(); if (other_value.spare().is_bound()) field_spare = other_value.spare(); else field_spare.clean_up(); if (other_value.dlgtp__u().is_bound()) field_dlgtp__u = other_value.dlgtp__u(); else field_dlgtp__u.clean_up(); if (other_value.ulgtp__u().is_bound()) field_ulgtp__u = other_value.ulgtp__u(); else field_ulgtp__u.clean_up(); if (other_value.dl__pdcp().is_bound()) field_dl__pdcp = other_value.dl__pdcp(); else field_dl__pdcp.clean_up(); if (other_value.ul__pdcp().is_bound()) field_ul__pdcp = other_value.ul__pdcp(); else field_ul__pdcp.clean_up(); } void RABContext::clean_up() { field_type__gtpc.clean_up(); field_nsapi.clean_up(); field_spare.clean_up(); field_dlgtp__u.clean_up(); field_ulgtp__u.clean_up(); field_dl__pdcp.clean_up(); field_ul__pdcp.clean_up(); } const TTCN_Typedescriptor_t* RABContext::get_descriptor() const { return &RABContext_descr_; } RABContext& RABContext::operator=(const RABContext& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @GTPC_Types.RABContext."); if (other_value.type__gtpc().is_bound()) field_type__gtpc = other_value.type__gtpc(); else field_type__gtpc.clean_up(); if (other_value.nsapi().is_bound()) field_nsapi = other_value.nsapi(); else field_nsapi.clean_up(); if (other_value.spare().is_bound()) field_spare = other_value.spare(); else field_spare.clean_up(); if (other_value.dlgtp__u().is_bound()) field_dlgtp__u = other_value.dlgtp__u(); else field_dlgtp__u.clean_up(); if (other_value.ulgtp__u().is_bound()) field_ulgtp__u = other_value.ulgtp__u(); else field_ulgtp__u.clean_up(); if (other_value.dl__pdcp().is_bound()) field_dl__pdcp = other_value.dl__pdcp(); else field_dl__pdcp.clean_up(); if (other_value.ul__pdcp().is_bound()) field_ul__pdcp = other_value.ul__pdcp(); else field_ul__pdcp.clean_up(); } return *this; } boolean RABContext::operator==(const RABContext& other_value) const { return field_type__gtpc==other_value.field_type__gtpc && field_nsapi==other_value.field_nsapi && field_spare==other_value.field_spare && field_dlgtp__u==other_value.field_dlgtp__u && field_ulgtp__u==other_value.field_ulgtp__u && field_dl__pdcp==other_value.field_dl__pdcp && field_ul__pdcp==other_value.field_ul__pdcp; } boolean RABContext::is_bound() const { return (field_type__gtpc.is_bound()) || (field_nsapi.is_bound()) || (field_spare.is_bound()) || (field_dlgtp__u.is_bound()) || (field_ulgtp__u.is_bound()) || (field_dl__pdcp.is_bound()) || (field_ul__pdcp.is_bound()); } boolean RABContext::is_value() const { return field_type__gtpc.is_value() && field_nsapi.is_value() && field_spare.is_value() && field_dlgtp__u.is_value() && field_ulgtp__u.is_value() && field_dl__pdcp.is_value() && field_ul__pdcp.is_value(); } void RABContext::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ type_gtpc := "); field_type__gtpc.log(); TTCN_Logger::log_event_str(", nsapi := "); field_nsapi.log(); TTCN_Logger::log_event_str(", spare := "); field_spare.log(); TTCN_Logger::log_event_str(", dlgtp_u := "); field_dlgtp__u.log(); TTCN_Logger::log_event_str(", ulgtp_u := "); field_ulgtp__u.log(); TTCN_Logger::log_event_str(", dl_pdcp := "); field_dl__pdcp.log(); TTCN_Logger::log_event_str(", ul_pdcp := "); field_ul__pdcp.log(); TTCN_Logger::log_event_str(" }"); } void RABContext::set_implicit_omit() { if (type__gtpc().is_bound()) type__gtpc().set_implicit_omit(); if (nsapi().is_bound()) nsapi().set_implicit_omit(); if (spare().is_bound()) spare().set_implicit_omit(); if (dlgtp__u().is_bound()) dlgtp__u().set_implicit_omit(); if (ulgtp__u().is_bound()) ulgtp__u().set_implicit_omit(); if (dl__pdcp().is_bound()) dl__pdcp().set_implicit_omit(); if (ul__pdcp().is_bound()) ul__pdcp().set_implicit_omit(); } void RABContext::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 (70 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) nsapi().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) spare().set_param(*param.get_elem(2)); if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) dlgtp__u().set_param(*param.get_elem(3)); if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) ulgtp__u().set_param(*param.get_elem(4)); if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) dl__pdcp().set_param(*param.get_elem(5)); if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) ul__pdcp().set_param(*param.get_elem(6)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "nsapi")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { nsapi().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_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_idxget_id()->get_name(), "dlgtp_u")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { dlgtp__u().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "ulgtp_u")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { ulgtp__u().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "dl_pdcp")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { dl__pdcp().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "ul_pdcp")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { ul__pdcp().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.RABContext: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@GTPC_Types.RABContext"); } } void RABContext::encode_text(Text_Buf& text_buf) const { field_type__gtpc.encode_text(text_buf); field_nsapi.encode_text(text_buf); field_spare.encode_text(text_buf); field_dlgtp__u.encode_text(text_buf); field_ulgtp__u.encode_text(text_buf); field_dl__pdcp.encode_text(text_buf); field_ul__pdcp.encode_text(text_buf); } void RABContext::decode_text(Text_Buf& text_buf) { field_type__gtpc.decode_text(text_buf); field_nsapi.decode_text(text_buf); field_spare.decode_text(text_buf); field_dlgtp__u.decode_text(text_buf); field_ulgtp__u.decode_text(text_buf); field_dl__pdcp.decode_text(text_buf); field_ul__pdcp.decode_text(text_buf); } void RABContext::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;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void RABContext::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;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int RABContext::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) { (void)no_err; int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); limit-=prepaddlength; size_t last_decoded_pos = p_buf.get_pos_bit(); int decoded_length = 0; int decoded_field_length = 0; raw_order_t local_top_order; if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; else local_top_order=ORDER_LSB; RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit); decoded_field_length = field_type__gtpc.RAW_decode(General__Types::OCT1_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, General__Types::BIT4_descr_.raw->forceomit); decoded_field_length = field_nsapi.RAW_decode(General__Types::BIT4_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, General__Types::BIT4_descr_.raw->forceomit); decoded_field_length = field_spare.RAW_decode(General__Types::BIT4_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_2_force_omit); if (decoded_field_length < 0) return decoded_field_length; decoded_length+=decoded_field_length; limit-=decoded_field_length; last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); RAW_Force_Omit field_3_force_omit(3, force_omit, General__Types::OCT2_descr_.raw->forceomit); decoded_field_length = field_dlgtp__u.RAW_decode(General__Types::OCT2_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, General__Types::OCT2_descr_.raw->forceomit); decoded_field_length = field_ulgtp__u.RAW_decode(General__Types::OCT2_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, General__Types::OCT2_descr_.raw->forceomit); decoded_field_length = field_dl__pdcp.RAW_decode(General__Types::OCT2_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, General__Types::OCT2_descr_.raw->forceomit); decoded_field_length = field_ul__pdcp.RAW_decode(General__Types::OCT2_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()); if (field_type__gtpc != os_61) return -1; p_buf.set_pos_bit(last_decoded_pos); return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); } int RABContext::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 = 7; myleaf.body.node.nodes = init_nodes_of_enc_tree(7); myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, General__Types::OCT1_descr_.raw); myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::BIT4_descr_.raw); myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, General__Types::BIT4_descr_.raw); myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, General__Types::OCT2_descr_.raw); myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, General__Types::OCT2_descr_.raw); myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, General__Types::OCT2_descr_.raw); myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, General__Types::OCT2_descr_.raw); encoded_length += field_type__gtpc.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]); encoded_length += field_nsapi.RAW_encode(General__Types::BIT4_descr_, *myleaf.body.node.nodes[1]); encoded_length += field_spare.RAW_encode(General__Types::BIT4_descr_, *myleaf.body.node.nodes[2]); encoded_length += field_dlgtp__u.RAW_encode(General__Types::OCT2_descr_, *myleaf.body.node.nodes[3]); encoded_length += field_ulgtp__u.RAW_encode(General__Types::OCT2_descr_, *myleaf.body.node.nodes[4]); encoded_length += field_dl__pdcp.RAW_encode(General__Types::OCT2_descr_, *myleaf.body.node.nodes[5]); encoded_length += field_ul__pdcp.RAW_encode(General__Types::OCT2_descr_, *myleaf.body.node.nodes[6]); if (field_type__gtpc != os_61) { 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){ os_61.RAW_encode(General__Types::OCT1_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 RABContext_template::single_value_struct { OCTETSTRING_template field_type__gtpc; BITSTRING_template field_nsapi; BITSTRING_template field_spare; OCTETSTRING_template field_dlgtp__u; OCTETSTRING_template field_ulgtp__u; OCTETSTRING_template field_dl__pdcp; OCTETSTRING_template field_ul__pdcp; }; void RABContext_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_type__gtpc = ANY_VALUE; single_value->field_nsapi = ANY_VALUE; single_value->field_spare = ANY_VALUE; single_value->field_dlgtp__u = ANY_VALUE; single_value->field_ulgtp__u = ANY_VALUE; single_value->field_dl__pdcp = ANY_VALUE; single_value->field_ul__pdcp = ANY_VALUE; } } } void RABContext_template::copy_value(const RABContext& other_value) { single_value = new single_value_struct; if (other_value.type__gtpc().is_bound()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (other_value.nsapi().is_bound()) { single_value->field_nsapi = other_value.nsapi(); } else { single_value->field_nsapi.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.dlgtp__u().is_bound()) { single_value->field_dlgtp__u = other_value.dlgtp__u(); } else { single_value->field_dlgtp__u.clean_up(); } if (other_value.ulgtp__u().is_bound()) { single_value->field_ulgtp__u = other_value.ulgtp__u(); } else { single_value->field_ulgtp__u.clean_up(); } if (other_value.dl__pdcp().is_bound()) { single_value->field_dl__pdcp = other_value.dl__pdcp(); } else { single_value->field_dl__pdcp.clean_up(); } if (other_value.ul__pdcp().is_bound()) { single_value->field_ul__pdcp = other_value.ul__pdcp(); } else { single_value->field_ul__pdcp.clean_up(); } set_selection(SPECIFIC_VALUE); } void RABContext_template::copy_template(const RABContext_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.type__gtpc().get_selection()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.nsapi().get_selection()) { single_value->field_nsapi = other_value.nsapi(); } else { single_value->field_nsapi.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.dlgtp__u().get_selection()) { single_value->field_dlgtp__u = other_value.dlgtp__u(); } else { single_value->field_dlgtp__u.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.ulgtp__u().get_selection()) { single_value->field_ulgtp__u = other_value.ulgtp__u(); } else { single_value->field_ulgtp__u.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.dl__pdcp().get_selection()) { single_value->field_dl__pdcp = other_value.dl__pdcp(); } else { single_value->field_dl__pdcp.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.ul__pdcp().get_selection()) { single_value->field_ul__pdcp = other_value.ul__pdcp(); } else { single_value->field_ul__pdcp.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 RABContext_template[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 RABContext_template(*other_value.implication_.precondition); implication_.implied_template = new RABContext_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 @GTPC_Types.RABContext."); break; } set_selection(other_value); } RABContext_template::RABContext_template() { } RABContext_template::RABContext_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } RABContext_template::RABContext_template(const RABContext& other_value) { copy_value(other_value); } RABContext_template::RABContext_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const RABContext&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @GTPC_Types.RABContext from an unbound optional field."); } } RABContext_template::RABContext_template(RABContext_template* p_precondition, RABContext_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } RABContext_template::RABContext_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } RABContext_template::RABContext_template(const RABContext_template& other_value) : Base_Template() { copy_template(other_value); } RABContext_template::~RABContext_template() { clean_up(); } RABContext_template& RABContext_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } RABContext_template& RABContext_template::operator=(const RABContext& other_value) { clean_up(); copy_value(other_value); return *this; } RABContext_template& RABContext_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const RABContext&)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 @GTPC_Types.RABContext."); } return *this; } RABContext_template& RABContext_template::operator=(const RABContext_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean RABContext_template::match(const RABContext& 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.type__gtpc().is_bound()) return FALSE; if(!single_value->field_type__gtpc.match(other_value.type__gtpc(), legacy))return FALSE; if(!other_value.nsapi().is_bound()) return FALSE; if(!single_value->field_nsapi.match(other_value.nsapi(), 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.dlgtp__u().is_bound()) return FALSE; if(!single_value->field_dlgtp__u.match(other_value.dlgtp__u(), legacy))return FALSE; if(!other_value.ulgtp__u().is_bound()) return FALSE; if(!single_value->field_ulgtp__u.match(other_value.ulgtp__u(), legacy))return FALSE; if(!other_value.dl__pdcp().is_bound()) return FALSE; if(!single_value->field_dl__pdcp.match(other_value.dl__pdcp(), legacy))return FALSE; if(!other_value.ul__pdcp().is_bound()) return FALSE; if(!single_value->field_ul__pdcp.match(other_value.ul__pdcp(), 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 @GTPC_Types.RABContext."); } return FALSE; } boolean RABContext_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_type__gtpc.is_bound() || single_value->field_nsapi.is_bound() || single_value->field_spare.is_bound() || single_value->field_dlgtp__u.is_bound() || single_value->field_ulgtp__u.is_bound() || single_value->field_dl__pdcp.is_bound() || single_value->field_ul__pdcp.is_bound(); } boolean RABContext_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_type__gtpc.is_value() && single_value->field_nsapi.is_value() && single_value->field_spare.is_value() && single_value->field_dlgtp__u.is_value() && single_value->field_ulgtp__u.is_value() && single_value->field_dl__pdcp.is_value() && single_value->field_ul__pdcp.is_value(); } void RABContext_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; } RABContext RABContext_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 @GTPC_Types.RABContext."); RABContext ret_val; if (single_value->field_type__gtpc.is_bound()) { ret_val.type__gtpc() = single_value->field_type__gtpc.valueof(); } if (single_value->field_nsapi.is_bound()) { ret_val.nsapi() = single_value->field_nsapi.valueof(); } if (single_value->field_spare.is_bound()) { ret_val.spare() = single_value->field_spare.valueof(); } if (single_value->field_dlgtp__u.is_bound()) { ret_val.dlgtp__u() = single_value->field_dlgtp__u.valueof(); } if (single_value->field_ulgtp__u.is_bound()) { ret_val.ulgtp__u() = single_value->field_ulgtp__u.valueof(); } if (single_value->field_dl__pdcp.is_bound()) { ret_val.dl__pdcp() = single_value->field_dl__pdcp.valueof(); } if (single_value->field_ul__pdcp.is_bound()) { ret_val.ul__pdcp() = single_value->field_ul__pdcp.valueof(); } return ret_val; } void RABContext_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 @GTPC_Types.RABContext."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new RABContext_template[list_length]; } RABContext_template& RABContext_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 @GTPC_Types.RABContext."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @GTPC_Types.RABContext."); return value_list.list_value[list_index]; } OCTETSTRING_template& RABContext_template::type__gtpc() { set_specific(); return single_value->field_type__gtpc; } const OCTETSTRING_template& RABContext_template::type__gtpc() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field type_gtpc of a non-specific template of type @GTPC_Types.RABContext."); return single_value->field_type__gtpc; } BITSTRING_template& RABContext_template::nsapi() { set_specific(); return single_value->field_nsapi; } const BITSTRING_template& RABContext_template::nsapi() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field nsapi of a non-specific template of type @GTPC_Types.RABContext."); return single_value->field_nsapi; } BITSTRING_template& RABContext_template::spare() { set_specific(); return single_value->field_spare; } const BITSTRING_template& RABContext_template::spare() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field spare of a non-specific template of type @GTPC_Types.RABContext."); return single_value->field_spare; } OCTETSTRING_template& RABContext_template::dlgtp__u() { set_specific(); return single_value->field_dlgtp__u; } const OCTETSTRING_template& RABContext_template::dlgtp__u() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field dlgtp_u of a non-specific template of type @GTPC_Types.RABContext."); return single_value->field_dlgtp__u; } OCTETSTRING_template& RABContext_template::ulgtp__u() { set_specific(); return single_value->field_ulgtp__u; } const OCTETSTRING_template& RABContext_template::ulgtp__u() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field ulgtp_u of a non-specific template of type @GTPC_Types.RABContext."); return single_value->field_ulgtp__u; } OCTETSTRING_template& RABContext_template::dl__pdcp() { set_specific(); return single_value->field_dl__pdcp; } const OCTETSTRING_template& RABContext_template::dl__pdcp() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field dl_pdcp of a non-specific template of type @GTPC_Types.RABContext."); return single_value->field_dl__pdcp; } OCTETSTRING_template& RABContext_template::ul__pdcp() { set_specific(); return single_value->field_ul__pdcp; } const OCTETSTRING_template& RABContext_template::ul__pdcp() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field ul_pdcp of a non-specific template of type @GTPC_Types.RABContext."); return single_value->field_ul__pdcp; } int RABContext_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RABContext which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: return 7; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @GTPC_Types.RABContext 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 @GTPC_Types.RABContext containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RABContext containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RABContext containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RABContext containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RABContext containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RABContext containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RABContext containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @GTPC_Types.RABContext."); } return 0; } void RABContext_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ type_gtpc := "); single_value->field_type__gtpc.log(); TTCN_Logger::log_event_str(", nsapi := "); single_value->field_nsapi.log(); TTCN_Logger::log_event_str(", spare := "); single_value->field_spare.log(); TTCN_Logger::log_event_str(", dlgtp_u := "); single_value->field_dlgtp__u.log(); TTCN_Logger::log_event_str(", ulgtp_u := "); single_value->field_ulgtp__u.log(); TTCN_Logger::log_event_str(", dl_pdcp := "); single_value->field_dl__pdcp.log(); TTCN_Logger::log_event_str(", ul_pdcp := "); single_value->field_ul__pdcp.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 RABContext_template::log_match(const RABContext& 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_type__gtpc.match(match_value.type__gtpc(), legacy)){ TTCN_Logger::log_logmatch_info(".type_gtpc"); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_nsapi.match(match_value.nsapi(), legacy)){ TTCN_Logger::log_logmatch_info(".nsapi"); single_value->field_nsapi.log_match(match_value.nsapi(), legacy); 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(!single_value->field_dlgtp__u.match(match_value.dlgtp__u(), legacy)){ TTCN_Logger::log_logmatch_info(".dlgtp_u"); single_value->field_dlgtp__u.log_match(match_value.dlgtp__u(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_ulgtp__u.match(match_value.ulgtp__u(), legacy)){ TTCN_Logger::log_logmatch_info(".ulgtp_u"); single_value->field_ulgtp__u.log_match(match_value.ulgtp__u(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_dl__pdcp.match(match_value.dl__pdcp(), legacy)){ TTCN_Logger::log_logmatch_info(".dl_pdcp"); single_value->field_dl__pdcp.log_match(match_value.dl__pdcp(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_ul__pdcp.match(match_value.ul__pdcp(), legacy)){ TTCN_Logger::log_logmatch_info(".ul_pdcp"); single_value->field_ul__pdcp.log_match(match_value.ul__pdcp(), 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("{ type_gtpc := "); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::log_event_str(", nsapi := "); single_value->field_nsapi.log_match(match_value.nsapi(), legacy); TTCN_Logger::log_event_str(", spare := "); single_value->field_spare.log_match(match_value.spare(), legacy); TTCN_Logger::log_event_str(", dlgtp_u := "); single_value->field_dlgtp__u.log_match(match_value.dlgtp__u(), legacy); TTCN_Logger::log_event_str(", ulgtp_u := "); single_value->field_ulgtp__u.log_match(match_value.ulgtp__u(), legacy); TTCN_Logger::log_event_str(", dl_pdcp := "); single_value->field_dl__pdcp.log_match(match_value.dl__pdcp(), legacy); TTCN_Logger::log_event_str(", ul_pdcp := "); single_value->field_ul__pdcp.log_match(match_value.ul__pdcp(), 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 RABContext_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_type__gtpc.encode_text(text_buf); single_value->field_nsapi.encode_text(text_buf); single_value->field_spare.encode_text(text_buf); single_value->field_dlgtp__u.encode_text(text_buf); single_value->field_ulgtp__u.encode_text(text_buf); single_value->field_dl__pdcp.encode_text(text_buf); single_value->field_ul__pdcp.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 @GTPC_Types.RABContext."); } } void RABContext_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_type__gtpc.decode_text(text_buf); single_value->field_nsapi.decode_text(text_buf); single_value->field_spare.decode_text(text_buf); single_value->field_dlgtp__u.decode_text(text_buf); single_value->field_ulgtp__u.decode_text(text_buf); single_value->field_dl__pdcp.decode_text(text_buf); single_value->field_ul__pdcp.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 RABContext_template[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 @GTPC_Types.RABContext."); } } void RABContext_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: { RABContext_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) nsapi().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) spare().set_param(*param.get_elem(2)); if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) dlgtp__u().set_param(*param.get_elem(3)); if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) ulgtp__u().set_param(*param.get_elem(4)); if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) dl__pdcp().set_param(*param.get_elem(5)); if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) ul__pdcp().set_param(*param.get_elem(6)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "nsapi")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { nsapi().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_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_idxget_id()->get_name(), "dlgtp_u")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { dlgtp__u().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "ulgtp_u")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { ulgtp__u().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "dl_pdcp")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { dl__pdcp().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "ul_pdcp")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { ul__pdcp().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.RABContext: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { RABContext_template* precondition = new RABContext_template; precondition->set_param(*param.get_elem(0)); RABContext_template* implied_template = new RABContext_template; implied_template->set_param(*param.get_elem(1)); *this = RABContext_template(precondition, implied_template); } break; default: param.type_error("record template", "@GTPC_Types.RABContext"); } is_ifpresent = param.get_ifpresent(); } void RABContext_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_type__gtpc.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.RABContext"); single_value->field_nsapi.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.RABContext"); single_value->field_spare.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.RABContext"); single_value->field_dlgtp__u.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.RABContext"); single_value->field_ulgtp__u.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.RABContext"); single_value->field_dl__pdcp.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.RABContext"); single_value->field_ul__pdcp.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.RABContext"); 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 : "@GTPC_Types.RABContext"); } boolean RABContext_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean RABContext_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) radioprioritySMS().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "radioprioritySMS")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { radioprioritySMS().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_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_idxerror("Non existent field name in type @GTPC_Types.RadioPrioritySMS: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@GTPC_Types.RadioPrioritySMS"); } } void RadioPrioritySMS::encode_text(Text_Buf& text_buf) const { field_type__gtpc.encode_text(text_buf); field_radioprioritySMS.encode_text(text_buf); field_reserved.encode_text(text_buf); } void RadioPrioritySMS::decode_text(Text_Buf& text_buf) { field_type__gtpc.decode_text(text_buf); field_radioprioritySMS.decode_text(text_buf); field_reserved.decode_text(text_buf); } void RadioPrioritySMS::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;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void RadioPrioritySMS::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;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int RadioPrioritySMS::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) { (void)no_err; int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); limit-=prepaddlength; size_t last_decoded_pos = p_buf.get_pos_bit(); int decoded_length = 0; int decoded_field_length = 0; raw_order_t local_top_order; if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; else local_top_order=ORDER_LSB; RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit); decoded_field_length = field_type__gtpc.RAW_decode(General__Types::OCT1_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, General__Types::BIT3_descr_.raw->forceomit); decoded_field_length = field_radioprioritySMS.RAW_decode(General__Types::BIT3_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, General__Types::BIT5_descr_.raw->forceomit); decoded_field_length = field_reserved.RAW_decode(General__Types::BIT5_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 (field_type__gtpc != os_62) return -1; p_buf.set_pos_bit(last_decoded_pos); return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); } int RadioPrioritySMS::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, General__Types::OCT1_descr_.raw); myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::BIT3_descr_.raw); myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, General__Types::BIT5_descr_.raw); encoded_length += field_type__gtpc.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]); encoded_length += field_radioprioritySMS.RAW_encode(General__Types::BIT3_descr_, *myleaf.body.node.nodes[1]); encoded_length += field_reserved.RAW_encode(General__Types::BIT5_descr_, *myleaf.body.node.nodes[2]); if (field_type__gtpc != os_62) { 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){ os_62.RAW_encode(General__Types::OCT1_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 RadioPrioritySMS_template::single_value_struct { OCTETSTRING_template field_type__gtpc; BITSTRING_template field_radioprioritySMS; BITSTRING_template field_reserved; }; void RadioPrioritySMS_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_type__gtpc = ANY_VALUE; single_value->field_radioprioritySMS = ANY_VALUE; single_value->field_reserved = ANY_VALUE; } } } void RadioPrioritySMS_template::copy_value(const RadioPrioritySMS& other_value) { single_value = new single_value_struct; if (other_value.type__gtpc().is_bound()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (other_value.radioprioritySMS().is_bound()) { single_value->field_radioprioritySMS = other_value.radioprioritySMS(); } else { single_value->field_radioprioritySMS.clean_up(); } if (other_value.reserved().is_bound()) { single_value->field_reserved = other_value.reserved(); } else { single_value->field_reserved.clean_up(); } set_selection(SPECIFIC_VALUE); } void RadioPrioritySMS_template::copy_template(const RadioPrioritySMS_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.type__gtpc().get_selection()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.radioprioritySMS().get_selection()) { single_value->field_radioprioritySMS = other_value.radioprioritySMS(); } else { single_value->field_radioprioritySMS.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.reserved().get_selection()) { single_value->field_reserved = other_value.reserved(); } else { single_value->field_reserved.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new RadioPrioritySMS_template[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 RadioPrioritySMS_template(*other_value.implication_.precondition); implication_.implied_template = new RadioPrioritySMS_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 @GTPC_Types.RadioPrioritySMS."); break; } set_selection(other_value); } RadioPrioritySMS_template::RadioPrioritySMS_template() { } RadioPrioritySMS_template::RadioPrioritySMS_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } RadioPrioritySMS_template::RadioPrioritySMS_template(const RadioPrioritySMS& other_value) { copy_value(other_value); } RadioPrioritySMS_template::RadioPrioritySMS_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const RadioPrioritySMS&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @GTPC_Types.RadioPrioritySMS from an unbound optional field."); } } RadioPrioritySMS_template::RadioPrioritySMS_template(RadioPrioritySMS_template* p_precondition, RadioPrioritySMS_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } RadioPrioritySMS_template::RadioPrioritySMS_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } RadioPrioritySMS_template::RadioPrioritySMS_template(const RadioPrioritySMS_template& other_value) : Base_Template() { copy_template(other_value); } RadioPrioritySMS_template::~RadioPrioritySMS_template() { clean_up(); } RadioPrioritySMS_template& RadioPrioritySMS_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } RadioPrioritySMS_template& RadioPrioritySMS_template::operator=(const RadioPrioritySMS& other_value) { clean_up(); copy_value(other_value); return *this; } RadioPrioritySMS_template& RadioPrioritySMS_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const RadioPrioritySMS&)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 @GTPC_Types.RadioPrioritySMS."); } return *this; } RadioPrioritySMS_template& RadioPrioritySMS_template::operator=(const RadioPrioritySMS_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean RadioPrioritySMS_template::match(const RadioPrioritySMS& 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.type__gtpc().is_bound()) return FALSE; if(!single_value->field_type__gtpc.match(other_value.type__gtpc(), legacy))return FALSE; if(!other_value.radioprioritySMS().is_bound()) return FALSE; if(!single_value->field_radioprioritySMS.match(other_value.radioprioritySMS(), legacy))return FALSE; if(!other_value.reserved().is_bound()) return FALSE; if(!single_value->field_reserved.match(other_value.reserved(), legacy))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; 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 @GTPC_Types.RadioPrioritySMS."); } return FALSE; } boolean RadioPrioritySMS_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_type__gtpc.is_bound() || single_value->field_radioprioritySMS.is_bound() || single_value->field_reserved.is_bound(); } boolean RadioPrioritySMS_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_type__gtpc.is_value() && single_value->field_radioprioritySMS.is_value() && single_value->field_reserved.is_value(); } void RadioPrioritySMS_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; } RadioPrioritySMS RadioPrioritySMS_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 @GTPC_Types.RadioPrioritySMS."); RadioPrioritySMS ret_val; if (single_value->field_type__gtpc.is_bound()) { ret_val.type__gtpc() = single_value->field_type__gtpc.valueof(); } if (single_value->field_radioprioritySMS.is_bound()) { ret_val.radioprioritySMS() = single_value->field_radioprioritySMS.valueof(); } if (single_value->field_reserved.is_bound()) { ret_val.reserved() = single_value->field_reserved.valueof(); } return ret_val; } void RadioPrioritySMS_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 @GTPC_Types.RadioPrioritySMS."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new RadioPrioritySMS_template[list_length]; } RadioPrioritySMS_template& RadioPrioritySMS_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 @GTPC_Types.RadioPrioritySMS."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @GTPC_Types.RadioPrioritySMS."); return value_list.list_value[list_index]; } OCTETSTRING_template& RadioPrioritySMS_template::type__gtpc() { set_specific(); return single_value->field_type__gtpc; } const OCTETSTRING_template& RadioPrioritySMS_template::type__gtpc() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field type_gtpc of a non-specific template of type @GTPC_Types.RadioPrioritySMS."); return single_value->field_type__gtpc; } BITSTRING_template& RadioPrioritySMS_template::radioprioritySMS() { set_specific(); return single_value->field_radioprioritySMS; } const BITSTRING_template& RadioPrioritySMS_template::radioprioritySMS() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field radioprioritySMS of a non-specific template of type @GTPC_Types.RadioPrioritySMS."); return single_value->field_radioprioritySMS; } BITSTRING_template& RadioPrioritySMS_template::reserved() { set_specific(); return single_value->field_reserved; } const BITSTRING_template& RadioPrioritySMS_template::reserved() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field reserved of a non-specific template of type @GTPC_Types.RadioPrioritySMS."); return single_value->field_reserved; } int RadioPrioritySMS_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RadioPrioritySMS which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: return 3; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @GTPC_Types.RadioPrioritySMS 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 @GTPC_Types.RadioPrioritySMS containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RadioPrioritySMS containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RadioPrioritySMS containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RadioPrioritySMS containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RadioPrioritySMS containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RadioPrioritySMS containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RadioPrioritySMS containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @GTPC_Types.RadioPrioritySMS."); } return 0; } void RadioPrioritySMS_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ type_gtpc := "); single_value->field_type__gtpc.log(); TTCN_Logger::log_event_str(", radioprioritySMS := "); single_value->field_radioprioritySMS.log(); TTCN_Logger::log_event_str(", reserved := "); single_value->field_reserved.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case 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 RadioPrioritySMS_template::log_match(const RadioPrioritySMS& 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_type__gtpc.match(match_value.type__gtpc(), legacy)){ TTCN_Logger::log_logmatch_info(".type_gtpc"); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_radioprioritySMS.match(match_value.radioprioritySMS(), legacy)){ TTCN_Logger::log_logmatch_info(".radioprioritySMS"); single_value->field_radioprioritySMS.log_match(match_value.radioprioritySMS(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_reserved.match(match_value.reserved(), legacy)){ TTCN_Logger::log_logmatch_info(".reserved"); single_value->field_reserved.log_match(match_value.reserved(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ type_gtpc := "); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::log_event_str(", radioprioritySMS := "); single_value->field_radioprioritySMS.log_match(match_value.radioprioritySMS(), legacy); TTCN_Logger::log_event_str(", reserved := "); single_value->field_reserved.log_match(match_value.reserved(), legacy); TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void RadioPrioritySMS_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_type__gtpc.encode_text(text_buf); single_value->field_radioprioritySMS.encode_text(text_buf); single_value->field_reserved.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @GTPC_Types.RadioPrioritySMS."); } } void RadioPrioritySMS_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_type__gtpc.decode_text(text_buf); single_value->field_radioprioritySMS.decode_text(text_buf); single_value->field_reserved.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new RadioPrioritySMS_template[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 @GTPC_Types.RadioPrioritySMS."); } } void RadioPrioritySMS_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: { RadioPrioritySMS_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) radioprioritySMS().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "radioprioritySMS")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { radioprioritySMS().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_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_idxerror("Non existent field name in type @GTPC_Types.RadioPrioritySMS: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { RadioPrioritySMS_template* precondition = new RadioPrioritySMS_template; precondition->set_param(*param.get_elem(0)); RadioPrioritySMS_template* implied_template = new RadioPrioritySMS_template; implied_template->set_param(*param.get_elem(1)); *this = RadioPrioritySMS_template(precondition, implied_template); } break; default: param.type_error("record template", "@GTPC_Types.RadioPrioritySMS"); } is_ifpresent = param.get_ifpresent(); } void RadioPrioritySMS_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_type__gtpc.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.RadioPrioritySMS"); single_value->field_radioprioritySMS.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.RadioPrioritySMS"); single_value->field_reserved.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.RadioPrioritySMS"); 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 : "@GTPC_Types.RadioPrioritySMS"); } boolean RadioPrioritySMS_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean RadioPrioritySMS_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idxref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } RadioPriority__List::RadioPriority__List(const RadioPriority__List& other_value) { if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @GTPC_Types.RadioPriority_List."); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } RadioPriority__List::~RadioPriority__List() { clean_up(); if (val_ptr != NULL) val_ptr = NULL; } void RadioPriority__List::clean_up() { if (val_ptr != NULL) { if (val_ptr->ref_count > 1) { val_ptr->ref_count--; val_ptr = NULL; } else if (val_ptr->ref_count == 1) { for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL) delete val_ptr->value_elements[elem_count]; free_pointers((void**)val_ptr->value_elements); delete val_ptr; val_ptr = NULL; } else TTCN_error("Internal error: Invalid reference counter in a record of/set of value."); } } RadioPriority__List& RadioPriority__List::operator=(null_type) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; return *this; } RadioPriority__List& RadioPriority__List::operator=(const RadioPriority__List& other_value) { if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @GTPC_Types.RadioPriority_List."); if (this != &other_value) { clean_up(); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } return *this; } boolean RadioPriority__List::operator==(null_type) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @GTPC_Types.RadioPriority_List."); return val_ptr->n_elements == 0 ; } boolean RadioPriority__List::operator==(const RadioPriority__List& other_value) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @GTPC_Types.RadioPriority_List."); if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @GTPC_Types.RadioPriority_List."); if (val_ptr == other_value.val_ptr) return TRUE; if (val_ptr->n_elements != (other_value.val_ptr)->n_elements) return FALSE; for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ if ((other_value.val_ptr)->value_elements[elem_count] != NULL){ if (*val_ptr->value_elements[elem_count] != *(other_value.val_ptr)->value_elements[elem_count]) return FALSE; } else return FALSE; } else { if ((other_value.val_ptr)->value_elements[elem_count] != NULL) return FALSE; } } return TRUE; } RadioPriority& RadioPriority__List::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of type @GTPC_Types.RadioPriority_List using a negative index: %d.", index_value); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (index_value >= val_ptr->n_elements) ? index_value + 1 : val_ptr->n_elements; new_val_ptr->value_elements = (RadioPriority**)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 RadioPriority(*(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 RadioPriority; } return *val_ptr->value_elements[index_value]; } RadioPriority& RadioPriority__List::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a value of type @GTPC_Types.RadioPriority_List."); return (*this)[(int)index_value]; } const RadioPriority& RadioPriority__List::operator[](int index_value) const { if (val_ptr == NULL) TTCN_error("Accessing an element in an unbound value of type @GTPC_Types.RadioPriority_List."); if (index_value < 0) TTCN_error("Accessing an element of type @GTPC_Types.RadioPriority_List using a negative index: %d.", index_value); if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @GTPC_Types.RadioPriority_List: The index is %d, but the value has only %d elements.", index_value, val_ptr->n_elements); return (val_ptr->value_elements[index_value] == NULL) ? UNBOUND_ELEM : *val_ptr->value_elements[index_value]; } const RadioPriority& RadioPriority__List::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a value of type @GTPC_Types.RadioPriority_List."); return (*this)[(int)index_value]; } RadioPriority__List RadioPriority__List::operator<<=(int rotate_count) const { return *this >>= (-rotate_count); } RadioPriority__List RadioPriority__List::operator<<=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate left operator."); return *this >>= (int)(-rotate_count); } RadioPriority__List RadioPriority__List::operator>>=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate right operator."); return *this >>= (int)rotate_count; } RadioPriority__List RadioPriority__List::operator>>=(int rotate_count) const { if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @GTPC_Types.RadioPriority_List."); if (val_ptr->n_elements == 0) return *this; int rc; if (rotate_count>=0) rc = rotate_count % val_ptr->n_elements; else rc = val_ptr->n_elements - ((-rotate_count) % val_ptr->n_elements); if (rc == 0) return *this; RadioPriority__List ret_val; ret_val.set_size(val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new RadioPriority(*val_ptr->value_elements[i]); } } return ret_val; } RadioPriority__List RadioPriority__List::operator+(const RadioPriority__List& other_value) const { if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @GTPC_Types.RadioPriority_List concatenation."); if (val_ptr->n_elements == 0) return other_value; if (other_value.val_ptr->n_elements == 0) return *this; RadioPriority__List ret_val; ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new RadioPriority(*val_ptr->value_elements[i]); } } for (int i=0; in_elements; i++) { if (other_value.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new RadioPriority(*other_value.val_ptr->value_elements[i]); } } return ret_val; } RadioPriority__List RadioPriority__List::substr(int index, int returncount) const { if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @GTPC_Types.RadioPriority_List."); check_substr_arguments(val_ptr->n_elements, index, returncount, "@GTPC_Types.RadioPriority_List","element"); RadioPriority__List ret_val; ret_val.set_size(returncount); for (int i=0; ivalue_elements[i+index] != NULL) { ret_val.val_ptr->value_elements[i] = new RadioPriority(*val_ptr->value_elements[i+index]); } } return ret_val; } RadioPriority__List RadioPriority__List::replace(int index, int len, const RadioPriority__List& repl) const { if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @GTPC_Types.RadioPriority_List."); if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @GTPC_Types.RadioPriority_List."); check_replace_arguments(val_ptr->n_elements, index, len, "@GTPC_Types.RadioPriority_List","element"); RadioPriority__List ret_val; ret_val.set_size(val_ptr->n_elements + repl.val_ptr->n_elements - len); for (int i = 0; i < index; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new RadioPriority(*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 RadioPriority(*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 RadioPriority(*val_ptr->value_elements[index+i+len]); } } return ret_val; } RadioPriority__List RadioPriority__List::replace(int index, int len, const RadioPriority__List_template& repl) const { if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return replace(index, len, repl.valueof()); } void RadioPriority__List::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @GTPC_Types.RadioPriority_List."); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (new_size < val_ptr->n_elements) ? new_size : val_ptr->n_elements; new_val_ptr->value_elements = (RadioPriority**)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 RadioPriority(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (new_size > val_ptr->n_elements) { val_ptr->value_elements = (RadioPriority**)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 @GTPC_Types.RadioPriority_List: %d",new_size); #endif val_ptr->n_elements = new_size; } else if (new_size < val_ptr->n_elements) { for (int elem_count = new_size; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL)delete val_ptr->value_elements[elem_count]; val_ptr->value_elements = (RadioPriority**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); val_ptr->n_elements = new_size; } } boolean RadioPriority__List::is_value() const { if (val_ptr == NULL) return FALSE; for(int i = 0; i < val_ptr->n_elements; ++i) { if (val_ptr->value_elements[i] == NULL || !val_ptr->value_elements[i]->is_value()) return FALSE; } return TRUE; } int RadioPriority__List::size_of() const { if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @GTPC_Types.RadioPriority_List."); return val_ptr->n_elements; } int RadioPriority__List::lengthof() const { if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @GTPC_Types.RadioPriority_List."); for (int my_length=val_ptr->n_elements; my_length>0; my_length--) if (val_ptr->value_elements[my_length-1] != NULL) return my_length; return 0; } void RadioPriority__List::log() const { if (val_ptr == NULL) {; TTCN_Logger::log_event_unbound(); return; } switch (val_ptr->n_elements) { case 0: TTCN_Logger::log_event_str("{ }"); break; default: TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); (*this)[elem_count].log(); } TTCN_Logger::log_event_str(" }"); } } void RadioPriority__List::set_implicit_omit() { if (val_ptr == NULL) return; for (int i = 0; i < val_ptr->n_elements; i++) { if (val_ptr->value_elements[i] != NULL) val_ptr->value_elements[i]->set_implicit_omit(); } } void RadioPriority__List::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE|Module_Param::BC_LIST, "record of value"); switch (param.get_operation_type()) { case Module_Param::OT_ASSIGN: if (param.get_type()==Module_Param::MP_Value_List && param.get_size()==0) { *this = NULL_VALUE; return; } switch (param.get_type()) { case Module_Param::MP_Value_List: set_size(param.get_size()); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed) { (*this)[i].set_param(*curr); if (!(*this)[i].is_bound()) { delete val_ptr->value_elements[i]; val_ptr->value_elements[i] = NULL; } } } break; case Module_Param::MP_Indexed_List: for (size_t i=0; iget_id()->get_index()].set_param(*curr); if (!(*this)[curr->get_id()->get_index()].is_bound()) { delete val_ptr->value_elements[curr->get_id()->get_index()]; val_ptr->value_elements[curr->get_id()->get_index()] = NULL; } } break; default: param.type_error("record of value", "@GTPC_Types.RadioPriority_List"); } break; case Module_Param::OT_CONCAT: switch (param.get_type()) { case Module_Param::MP_Value_List: { if (!is_bound()) *this = NULL_VALUE; int start_idx = lengthof(); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed)) { (*this)[start_idx+(int)i].set_param(*curr); } } } break; case Module_Param::MP_Indexed_List: param.error("Cannot concatenate an indexed value list"); break; default: param.type_error("record of value", "@GTPC_Types.RadioPriority_List"); } break; default: TTCN_error("Internal error: Unknown operation type."); } } void RadioPriority__List::encode_text(Text_Buf& text_buf) const { if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @GTPC_Types.RadioPriority_List."); text_buf.push_int(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) (*this)[elem_count].encode_text(text_buf); } void RadioPriority__List::decode_text(Text_Buf& text_buf) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = text_buf.pull_int().get_val(); if (val_ptr->n_elements < 0) TTCN_error("Text decoder: Negative size was received for a value of type @GTPC_Types.RadioPriority_List."); val_ptr->value_elements = (RadioPriority**)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 RadioPriority; val_ptr->value_elements[elem_count]->decode_text(text_buf); } } void RadioPriority__List::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void RadioPriority__List::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int RadioPriority__List::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=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 RadioPriority__List::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;araw); encoded_length+=(*this)[a].RAW_encode(*p_td.oftype_descr,*myleaf.body.node.nodes[a]); } return myleaf.length=encoded_length; } void RadioPriority__List_template::copy_value(const RadioPriority__List& other_value) { if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @GTPC_Types.RadioPriority_List with an unbound value."); single_value.n_elements = other_value.size_of(); single_value.value_elements = (RadioPriority_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 RadioPriority_template(other_value[elem_count]); } else { single_value.value_elements[elem_count] = new RadioPriority_template; } } set_selection(SPECIFIC_VALUE); } void RadioPriority__List_template::copy_template(const RadioPriority__List_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.n_elements = other_value.single_value.n_elements; single_value.value_elements = (RadioPriority_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 RadioPriority_template(*other_value.single_value.value_elements[elem_count]); } else { single_value.value_elements[elem_count] = new RadioPriority_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 RadioPriority__List_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new RadioPriority__List_template(*other_value.implication_.precondition); implication_.implied_template = new RadioPriority__List_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @GTPC_Types.RadioPriority_List."); break; } set_selection(other_value); } boolean RadioPriority__List_template::match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy) { if (value_index >= 0) return ((const RadioPriority__List_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const RadioPriority__List*)value_ptr)[value_index], legacy); else return ((const RadioPriority__List_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); } RadioPriority__List_template::RadioPriority__List_template() { } RadioPriority__List_template::RadioPriority__List_template(template_sel other_value) : Base_Record_Of_Template(other_value) { check_single_selection(other_value); } RadioPriority__List_template::RadioPriority__List_template(null_type) : Base_Record_Of_Template(SPECIFIC_VALUE) { single_value.n_elements = 0; single_value.value_elements = NULL; } RadioPriority__List_template::RadioPriority__List_template(const RadioPriority__List& other_value) { copy_value(other_value); } RadioPriority__List_template::RadioPriority__List_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const RadioPriority__List&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @GTPC_Types.RadioPriority_List from an unbound optional field."); } } RadioPriority__List_template::RadioPriority__List_template(RadioPriority__List_template* p_precondition, RadioPriority__List_template* p_implied_template) : Base_Record_Of_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } RadioPriority__List_template::RadioPriority__List_template(Dynamic_Match_Interface* p_dyn_match) : Base_Record_Of_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } RadioPriority__List_template::RadioPriority__List_template(const RadioPriority__List_template& other_value) : Base_Record_Of_Template() { copy_template(other_value); } RadioPriority__List_template::~RadioPriority__List_template() { clean_up(); } void RadioPriority__List_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; free_pointers((void**)single_value.value_elements); break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } RadioPriority__List_template& RadioPriority__List_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } RadioPriority__List_template& RadioPriority__List_template::operator=(null_type) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; return *this; } RadioPriority__List_template& RadioPriority__List_template::operator=(const RadioPriority__List& other_value) { clean_up(); copy_value(other_value); return *this; } RadioPriority__List_template& RadioPriority__List_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const RadioPriority__List&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @GTPC_Types.RadioPriority_List."); } return *this; } RadioPriority__List_template& RadioPriority__List_template::operator=(const RadioPriority__List_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } RadioPriority_template& RadioPriority__List_template::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of a template for type @GTPC_Types.RadioPriority_List using a negative index: %d.", index_value); switch (template_selection) { case SPECIFIC_VALUE: if(index_value < single_value.n_elements) break; // no break case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: case UNINITIALIZED_TEMPLATE: set_size(index_value + 1); break; default: TTCN_error("Accessing an element of a non-specific template for type @GTPC_Types.RadioPriority_List."); break; } return *single_value.value_elements[index_value]; } RadioPriority_template& RadioPriority__List_template::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a template of type @GTPC_Types.RadioPriority_List."); return (*this)[(int)index_value]; } const RadioPriority_template& RadioPriority__List_template::operator[](int index_value) const { if (index_value < 0) TTCN_error("Accessing an element of a template for type @GTPC_Types.RadioPriority_List using a negative index: %d.", index_value); if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @GTPC_Types.RadioPriority_List."); if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @GTPC_Types.RadioPriority_List: The index is %d, but the template has only %d elements.", index_value, single_value.n_elements); return *single_value.value_elements[index_value]; } const RadioPriority_template& RadioPriority__List_template::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a template of type @GTPC_Types.RadioPriority_List."); return (*this)[(int)index_value]; } void RadioPriority__List_template::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @GTPC_Types.RadioPriority_List."); template_sel old_selection = template_selection; if (old_selection != SPECIFIC_VALUE) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; } if (new_size > single_value.n_elements) { single_value.value_elements = (RadioPriority_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 RadioPriority_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 RadioPriority_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 = (RadioPriority_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); single_value.n_elements = new_size; } } int RadioPriority__List_template::n_elem() const { switch (template_selection) { case SPECIFIC_VALUE: return single_value.n_elements; break; case VALUE_LIST: return value_list.n_values; break; default: TTCN_error("Performing n_elem"); } } int RadioPriority__List_template::size_of(boolean is_size) const { const char* op_name = is_size ? "size" : "length"; int min_size; boolean has_any_or_none; if (is_ifpresent) TTCN_error("Performing %sof() operation on a template of type @GTPC_Types.RadioPriority_List which has an ifpresent attribute.", op_name); switch (template_selection) { case SPECIFIC_VALUE: { min_size = 0; has_any_or_none = FALSE; int elem_count = single_value.n_elements; if (!is_size) { while (elem_count>0 && !single_value.value_elements[elem_count-1]->is_bound()) elem_count--; } for (int i=0; iget_selection()) { case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @GTPC_Types.RadioPriority_List containing omit element.", op_name); case ANY_OR_OMIT: has_any_or_none = TRUE; break; default: min_size++; break; } } } break; case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @GTPC_Types.RadioPriority_List containing omit value.", op_name); case ANY_VALUE: case ANY_OR_OMIT: min_size = 0; has_any_or_none = TRUE; break; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Performing %sof() operation on a template of type @GTPC_Types.RadioPriority_List containing an empty list.", op_name); int item_size = value_list.list_value[0].size_of(is_size); for (unsigned int i = 1; i < value_list.n_values; i++) { if (value_list.list_value[i].size_of(is_size)!=item_size) TTCN_error("Performing %sof() operation on a template of type @GTPC_Types.RadioPriority_List containing a value list with different sizes.", op_name); } min_size = item_size; has_any_or_none = FALSE; break; } case COMPLEMENTED_LIST: TTCN_error("Performing %sof() operation on a template of type @GTPC_Types.RadioPriority_List containing complemented list.", op_name); default: TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @GTPC_Types.RadioPriority_List.", op_name); } return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @GTPC_Types.RadioPriority_List"); } boolean RadioPriority__List_template::match(const RadioPriority__List& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; int value_length = other_value.size_of(); if (!match_length(value_length)) return FALSE; switch (template_selection) { case SPECIFIC_VALUE: return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy); case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching with an uninitialized/unsupported template of type @GTPC_Types.RadioPriority_List."); } return FALSE; } boolean RadioPriority__List_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (!single_value.value_elements[elem_count]->is_value()) return FALSE; return TRUE; } RadioPriority__List RadioPriority__List_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @GTPC_Types.RadioPriority_List."); RadioPriority__List ret_val; ret_val.set_size(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (single_value.value_elements[elem_count]->is_bound()) { ret_val[elem_count] = single_value.value_elements[elem_count]->valueof(); } return ret_val; } RadioPriority__List RadioPriority__List_template::substr(int index, int returncount) const { if (!is_value()) TTCN_error("The first argument of function substr() is a template with non-specific value."); return valueof().substr(index, returncount); } RadioPriority__List RadioPriority__List_template::replace(int index, int len, const RadioPriority__List_template& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl.valueof()); } RadioPriority__List RadioPriority__List_template::replace(int index, int len, const RadioPriority__List& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl); } void RadioPriority__List_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = list_length; value_list.list_value = new RadioPriority__List_template[list_length]; break; default: TTCN_error("Internal error: Setting an invalid type for a template of type @GTPC_Types.RadioPriority_List."); } set_selection(template_type); } RadioPriority__List_template& RadioPriority__List_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of type @GTPC_Types.RadioPriority_List."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @GTPC_Types.RadioPriority_List."); return value_list.list_value[list_index]; } void RadioPriority__List_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: if (single_value.n_elements > 0) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation("); single_value.value_elements[elem_count]->log(); if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')'); } TTCN_Logger::log_event_str(" }"); } else TTCN_Logger::log_event_str("{ }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_restricted(); log_ifpresent(); } void RadioPriority__List_template::log_match(const RadioPriority__List& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); }else{ if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if(!single_value.value_elements[elem_count]->match(match_value[elem_count], legacy)){ TTCN_Logger::log_logmatch_info("[%d]", elem_count); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } log_match_length(single_value.n_elements); } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); } TTCN_Logger::log_event_str(" }"); log_match_length(single_value.n_elements); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void RadioPriority__List_template::encode_text(Text_Buf& text_buf) const { encode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) single_value.value_elements[elem_count]->encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @GTPC_Types.RadioPriority_List."); } } void RadioPriority__List_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value.n_elements = text_buf.pull_int().get_val(); if (single_value.n_elements < 0) TTCN_error("Text decoder: Negative size was received for a template of type @GTPC_Types.RadioPriority_List."); single_value.value_elements = (RadioPriority_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 RadioPriority_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 RadioPriority__List_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of type @GTPC_Types.RadioPriority_List."); } } boolean RadioPriority__List_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean RadioPriority__List_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iget_id()->get_index())].set_param(*param.get_elem(p_i)); } break; case Module_Param::MP_Value_List: { set_size(param.get_size()); int curr_idx = 0; for (size_t p_i=0; p_iget_type()) { case Module_Param::MP_NotUsed: curr_idx++; break; case Module_Param::MP_Permutation_Template: { int perm_start_idx = curr_idx; Module_Param* param_i = param.get_elem(p_i); for (size_t perm_i=0; perm_iget_size(); perm_i++) { (*this)[curr_idx].set_param(*(param_i->get_elem(perm_i))); curr_idx++; } int perm_end_idx = curr_idx - 1; add_permutation(perm_start_idx, perm_end_idx); } break; default: (*this)[curr_idx].set_param(*param.get_elem(p_i)); curr_idx++; } } } break; case Module_Param::MP_Implication_Template: { RadioPriority__List_template* precondition = new RadioPriority__List_template; precondition->set_param(*param.get_elem(0)); RadioPriority__List_template* implied_template = new RadioPriority__List_template; implied_template->set_param(*param.get_elem(1)); *this = RadioPriority__List_template(precondition, implied_template); } break; default: param.type_error("record of template", "@GTPC_Types.RadioPriority_List"); } is_ifpresent = param.get_ifpresent(); set_length_range(param); } void RadioPriority__List_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; for (int i=0; icheck_restriction(t_res, t_name ? t_name : "@GTPC_Types.RadioPriority_List"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@GTPC_Types.RadioPriority_List"); } boolean RadioPriority__List_template::get_istemplate_kind(const char* type) const { if (!strcmp(type, "AnyElement")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_VALUE) { return TRUE; } } return FALSE; } else if (!strcmp(type, "AnyElementsOrNone")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_OR_OMIT) { return TRUE; } } return FALSE; } else if (!strcmp(type, "permutation")) { return number_of_permutations; } else if (!strcmp(type, "length")) { return length_restriction_type != NO_LENGTH_RESTRICTION; } else { return Base_Template::get_istemplate_kind(type); } } RadioPriority::RadioPriority() { } RadioPriority::RadioPriority(const OCTETSTRING& par_type__gtpc, const BITSTRING& par_radiopriority, const BITSTRING& par_reserved, const BITSTRING& par_nsapi) : field_type__gtpc(par_type__gtpc), field_radiopriority(par_radiopriority), field_reserved(par_reserved), field_nsapi(par_nsapi) { } RadioPriority::RadioPriority(const RadioPriority& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @GTPC_Types.RadioPriority."); if (other_value.type__gtpc().is_bound()) field_type__gtpc = other_value.type__gtpc(); else field_type__gtpc.clean_up(); if (other_value.radiopriority().is_bound()) field_radiopriority = other_value.radiopriority(); else field_radiopriority.clean_up(); if (other_value.reserved().is_bound()) field_reserved = other_value.reserved(); else field_reserved.clean_up(); if (other_value.nsapi().is_bound()) field_nsapi = other_value.nsapi(); else field_nsapi.clean_up(); } void RadioPriority::clean_up() { field_type__gtpc.clean_up(); field_radiopriority.clean_up(); field_reserved.clean_up(); field_nsapi.clean_up(); } const TTCN_Typedescriptor_t* RadioPriority::get_descriptor() const { return &RadioPriority_descr_; } RadioPriority& RadioPriority::operator=(const RadioPriority& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @GTPC_Types.RadioPriority."); if (other_value.type__gtpc().is_bound()) field_type__gtpc = other_value.type__gtpc(); else field_type__gtpc.clean_up(); if (other_value.radiopriority().is_bound()) field_radiopriority = other_value.radiopriority(); else field_radiopriority.clean_up(); if (other_value.reserved().is_bound()) field_reserved = other_value.reserved(); else field_reserved.clean_up(); if (other_value.nsapi().is_bound()) field_nsapi = other_value.nsapi(); else field_nsapi.clean_up(); } return *this; } boolean RadioPriority::operator==(const RadioPriority& other_value) const { return field_type__gtpc==other_value.field_type__gtpc && field_radiopriority==other_value.field_radiopriority && field_reserved==other_value.field_reserved && field_nsapi==other_value.field_nsapi; } boolean RadioPriority::is_bound() const { return (field_type__gtpc.is_bound()) || (field_radiopriority.is_bound()) || (field_reserved.is_bound()) || (field_nsapi.is_bound()); } boolean RadioPriority::is_value() const { return field_type__gtpc.is_value() && field_radiopriority.is_value() && field_reserved.is_value() && field_nsapi.is_value(); } void RadioPriority::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ type_gtpc := "); field_type__gtpc.log(); TTCN_Logger::log_event_str(", radiopriority := "); field_radiopriority.log(); TTCN_Logger::log_event_str(", reserved := "); field_reserved.log(); TTCN_Logger::log_event_str(", nsapi := "); field_nsapi.log(); TTCN_Logger::log_event_str(" }"); } void RadioPriority::set_implicit_omit() { if (type__gtpc().is_bound()) type__gtpc().set_implicit_omit(); if (radiopriority().is_bound()) radiopriority().set_implicit_omit(); if (reserved().is_bound()) reserved().set_implicit_omit(); if (nsapi().is_bound()) nsapi().set_implicit_omit(); } void RadioPriority::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (40 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) radiopriority().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved().set_param(*param.get_elem(2)); if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) nsapi().set_param(*param.get_elem(3)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "radiopriority")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { radiopriority().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_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_idxget_id()->get_name(), "nsapi")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { nsapi().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.RadioPriority: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@GTPC_Types.RadioPriority"); } } void RadioPriority::encode_text(Text_Buf& text_buf) const { field_type__gtpc.encode_text(text_buf); field_radiopriority.encode_text(text_buf); field_reserved.encode_text(text_buf); field_nsapi.encode_text(text_buf); } void RadioPriority::decode_text(Text_Buf& text_buf) { field_type__gtpc.decode_text(text_buf); field_radiopriority.decode_text(text_buf); field_reserved.decode_text(text_buf); field_nsapi.decode_text(text_buf); } void RadioPriority::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;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void RadioPriority::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;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int RadioPriority::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) { (void)no_err; int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); limit-=prepaddlength; size_t last_decoded_pos = p_buf.get_pos_bit(); int decoded_length = 0; int decoded_field_length = 0; raw_order_t local_top_order; if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; else local_top_order=ORDER_LSB; RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit); decoded_field_length = field_type__gtpc.RAW_decode(General__Types::OCT1_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, General__Types::BIT3_descr_.raw->forceomit); decoded_field_length = field_radiopriority.RAW_decode(General__Types::BIT3_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, General__Types::BIT1_descr_.raw->forceomit); decoded_field_length = field_reserved.RAW_decode(General__Types::BIT1_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_2_force_omit); if (decoded_field_length < 0) return decoded_field_length; decoded_length+=decoded_field_length; limit-=decoded_field_length; last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); RAW_Force_Omit field_3_force_omit(3, force_omit, General__Types::BIT4_descr_.raw->forceomit); decoded_field_length = field_nsapi.RAW_decode(General__Types::BIT4_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 (field_type__gtpc != os_63) return -1; p_buf.set_pos_bit(last_decoded_pos); return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); } int RadioPriority::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); int encoded_length = 0; myleaf.isleaf = FALSE; myleaf.body.node.num_of_nodes = 4; myleaf.body.node.nodes = init_nodes_of_enc_tree(4); myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, General__Types::OCT1_descr_.raw); myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::BIT3_descr_.raw); myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, General__Types::BIT1_descr_.raw); myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, General__Types::BIT4_descr_.raw); encoded_length += field_type__gtpc.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]); encoded_length += field_radiopriority.RAW_encode(General__Types::BIT3_descr_, *myleaf.body.node.nodes[1]); encoded_length += field_reserved.RAW_encode(General__Types::BIT1_descr_, *myleaf.body.node.nodes[2]); encoded_length += field_nsapi.RAW_encode(General__Types::BIT4_descr_, *myleaf.body.node.nodes[3]); if (field_type__gtpc != os_63) { 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){ os_63.RAW_encode(General__Types::OCT1_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 RadioPriority_template::single_value_struct { OCTETSTRING_template field_type__gtpc; BITSTRING_template field_radiopriority; BITSTRING_template field_reserved; BITSTRING_template field_nsapi; }; void RadioPriority_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_type__gtpc = ANY_VALUE; single_value->field_radiopriority = ANY_VALUE; single_value->field_reserved = ANY_VALUE; single_value->field_nsapi = ANY_VALUE; } } } void RadioPriority_template::copy_value(const RadioPriority& other_value) { single_value = new single_value_struct; if (other_value.type__gtpc().is_bound()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (other_value.radiopriority().is_bound()) { single_value->field_radiopriority = other_value.radiopriority(); } else { single_value->field_radiopriority.clean_up(); } if (other_value.reserved().is_bound()) { single_value->field_reserved = other_value.reserved(); } else { single_value->field_reserved.clean_up(); } if (other_value.nsapi().is_bound()) { single_value->field_nsapi = other_value.nsapi(); } else { single_value->field_nsapi.clean_up(); } set_selection(SPECIFIC_VALUE); } void RadioPriority_template::copy_template(const RadioPriority_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.type__gtpc().get_selection()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.radiopriority().get_selection()) { single_value->field_radiopriority = other_value.radiopriority(); } else { single_value->field_radiopriority.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.nsapi().get_selection()) { single_value->field_nsapi = other_value.nsapi(); } else { single_value->field_nsapi.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 RadioPriority_template[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 RadioPriority_template(*other_value.implication_.precondition); implication_.implied_template = new RadioPriority_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 @GTPC_Types.RadioPriority."); break; } set_selection(other_value); } RadioPriority_template::RadioPriority_template() { } RadioPriority_template::RadioPriority_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } RadioPriority_template::RadioPriority_template(const RadioPriority& other_value) { copy_value(other_value); } RadioPriority_template::RadioPriority_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const RadioPriority&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @GTPC_Types.RadioPriority from an unbound optional field."); } } RadioPriority_template::RadioPriority_template(RadioPriority_template* p_precondition, RadioPriority_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } RadioPriority_template::RadioPriority_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } RadioPriority_template::RadioPriority_template(const RadioPriority_template& other_value) : Base_Template() { copy_template(other_value); } RadioPriority_template::~RadioPriority_template() { clean_up(); } RadioPriority_template& RadioPriority_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } RadioPriority_template& RadioPriority_template::operator=(const RadioPriority& other_value) { clean_up(); copy_value(other_value); return *this; } RadioPriority_template& RadioPriority_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const RadioPriority&)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 @GTPC_Types.RadioPriority."); } return *this; } RadioPriority_template& RadioPriority_template::operator=(const RadioPriority_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean RadioPriority_template::match(const RadioPriority& 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.type__gtpc().is_bound()) return FALSE; if(!single_value->field_type__gtpc.match(other_value.type__gtpc(), legacy))return FALSE; if(!other_value.radiopriority().is_bound()) return FALSE; if(!single_value->field_radiopriority.match(other_value.radiopriority(), legacy))return FALSE; if(!other_value.reserved().is_bound()) return FALSE; if(!single_value->field_reserved.match(other_value.reserved(), legacy))return FALSE; if(!other_value.nsapi().is_bound()) return FALSE; if(!single_value->field_nsapi.match(other_value.nsapi(), 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 @GTPC_Types.RadioPriority."); } return FALSE; } boolean RadioPriority_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_type__gtpc.is_bound() || single_value->field_radiopriority.is_bound() || single_value->field_reserved.is_bound() || single_value->field_nsapi.is_bound(); } boolean RadioPriority_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_type__gtpc.is_value() && single_value->field_radiopriority.is_value() && single_value->field_reserved.is_value() && single_value->field_nsapi.is_value(); } void RadioPriority_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; } RadioPriority RadioPriority_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 @GTPC_Types.RadioPriority."); RadioPriority ret_val; if (single_value->field_type__gtpc.is_bound()) { ret_val.type__gtpc() = single_value->field_type__gtpc.valueof(); } if (single_value->field_radiopriority.is_bound()) { ret_val.radiopriority() = single_value->field_radiopriority.valueof(); } if (single_value->field_reserved.is_bound()) { ret_val.reserved() = single_value->field_reserved.valueof(); } if (single_value->field_nsapi.is_bound()) { ret_val.nsapi() = single_value->field_nsapi.valueof(); } return ret_val; } void RadioPriority_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 @GTPC_Types.RadioPriority."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new RadioPriority_template[list_length]; } RadioPriority_template& RadioPriority_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 @GTPC_Types.RadioPriority."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @GTPC_Types.RadioPriority."); return value_list.list_value[list_index]; } OCTETSTRING_template& RadioPriority_template::type__gtpc() { set_specific(); return single_value->field_type__gtpc; } const OCTETSTRING_template& RadioPriority_template::type__gtpc() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field type_gtpc of a non-specific template of type @GTPC_Types.RadioPriority."); return single_value->field_type__gtpc; } BITSTRING_template& RadioPriority_template::radiopriority() { set_specific(); return single_value->field_radiopriority; } const BITSTRING_template& RadioPriority_template::radiopriority() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field radiopriority of a non-specific template of type @GTPC_Types.RadioPriority."); return single_value->field_radiopriority; } BITSTRING_template& RadioPriority_template::reserved() { set_specific(); return single_value->field_reserved; } const BITSTRING_template& RadioPriority_template::reserved() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field reserved of a non-specific template of type @GTPC_Types.RadioPriority."); return single_value->field_reserved; } BITSTRING_template& RadioPriority_template::nsapi() { set_specific(); return single_value->field_nsapi; } const BITSTRING_template& RadioPriority_template::nsapi() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field nsapi of a non-specific template of type @GTPC_Types.RadioPriority."); return single_value->field_nsapi; } int RadioPriority_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RadioPriority 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 @GTPC_Types.RadioPriority 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 @GTPC_Types.RadioPriority containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RadioPriority containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RadioPriority containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RadioPriority containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RadioPriority containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RadioPriority containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RadioPriority containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @GTPC_Types.RadioPriority."); } return 0; } void RadioPriority_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ type_gtpc := "); single_value->field_type__gtpc.log(); TTCN_Logger::log_event_str(", radiopriority := "); single_value->field_radiopriority.log(); TTCN_Logger::log_event_str(", reserved := "); single_value->field_reserved.log(); TTCN_Logger::log_event_str(", nsapi := "); single_value->field_nsapi.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 RadioPriority_template::log_match(const RadioPriority& 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_type__gtpc.match(match_value.type__gtpc(), legacy)){ TTCN_Logger::log_logmatch_info(".type_gtpc"); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_radiopriority.match(match_value.radiopriority(), legacy)){ TTCN_Logger::log_logmatch_info(".radiopriority"); single_value->field_radiopriority.log_match(match_value.radiopriority(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_reserved.match(match_value.reserved(), legacy)){ TTCN_Logger::log_logmatch_info(".reserved"); single_value->field_reserved.log_match(match_value.reserved(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_nsapi.match(match_value.nsapi(), legacy)){ TTCN_Logger::log_logmatch_info(".nsapi"); single_value->field_nsapi.log_match(match_value.nsapi(), 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("{ type_gtpc := "); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::log_event_str(", radiopriority := "); single_value->field_radiopriority.log_match(match_value.radiopriority(), legacy); TTCN_Logger::log_event_str(", reserved := "); single_value->field_reserved.log_match(match_value.reserved(), legacy); TTCN_Logger::log_event_str(", nsapi := "); single_value->field_nsapi.log_match(match_value.nsapi(), 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 RadioPriority_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_type__gtpc.encode_text(text_buf); single_value->field_radiopriority.encode_text(text_buf); single_value->field_reserved.encode_text(text_buf); single_value->field_nsapi.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 @GTPC_Types.RadioPriority."); } } void RadioPriority_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_type__gtpc.decode_text(text_buf); single_value->field_radiopriority.decode_text(text_buf); single_value->field_reserved.decode_text(text_buf); single_value->field_nsapi.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 RadioPriority_template[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 @GTPC_Types.RadioPriority."); } } void RadioPriority_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: { RadioPriority_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) radiopriority().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved().set_param(*param.get_elem(2)); if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) nsapi().set_param(*param.get_elem(3)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "radiopriority")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { radiopriority().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_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_idxget_id()->get_name(), "nsapi")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { nsapi().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.RadioPriority: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { RadioPriority_template* precondition = new RadioPriority_template; precondition->set_param(*param.get_elem(0)); RadioPriority_template* implied_template = new RadioPriority_template; implied_template->set_param(*param.get_elem(1)); *this = RadioPriority_template(precondition, implied_template); } break; default: param.type_error("record template", "@GTPC_Types.RadioPriority"); } is_ifpresent = param.get_ifpresent(); } void RadioPriority_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_type__gtpc.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.RadioPriority"); single_value->field_radiopriority.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.RadioPriority"); single_value->field_reserved.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.RadioPriority"); single_value->field_nsapi.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.RadioPriority"); 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 : "@GTPC_Types.RadioPriority"); } boolean RadioPriority_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean RadioPriority_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idxref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } PacketFlowID__List::PacketFlowID__List(const PacketFlowID__List& other_value) { if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @GTPC_Types.PacketFlowID_List."); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } PacketFlowID__List::~PacketFlowID__List() { clean_up(); if (val_ptr != NULL) val_ptr = NULL; } void PacketFlowID__List::clean_up() { if (val_ptr != NULL) { if (val_ptr->ref_count > 1) { val_ptr->ref_count--; val_ptr = NULL; } else if (val_ptr->ref_count == 1) { for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL) delete val_ptr->value_elements[elem_count]; free_pointers((void**)val_ptr->value_elements); delete val_ptr; val_ptr = NULL; } else TTCN_error("Internal error: Invalid reference counter in a record of/set of value."); } } PacketFlowID__List& PacketFlowID__List::operator=(null_type) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; return *this; } PacketFlowID__List& PacketFlowID__List::operator=(const PacketFlowID__List& other_value) { if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @GTPC_Types.PacketFlowID_List."); if (this != &other_value) { clean_up(); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } return *this; } boolean PacketFlowID__List::operator==(null_type) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @GTPC_Types.PacketFlowID_List."); return val_ptr->n_elements == 0 ; } boolean PacketFlowID__List::operator==(const PacketFlowID__List& other_value) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @GTPC_Types.PacketFlowID_List."); if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @GTPC_Types.PacketFlowID_List."); if (val_ptr == other_value.val_ptr) return TRUE; if (val_ptr->n_elements != (other_value.val_ptr)->n_elements) return FALSE; for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ if ((other_value.val_ptr)->value_elements[elem_count] != NULL){ if (*val_ptr->value_elements[elem_count] != *(other_value.val_ptr)->value_elements[elem_count]) return FALSE; } else return FALSE; } else { if ((other_value.val_ptr)->value_elements[elem_count] != NULL) return FALSE; } } return TRUE; } PacketFlowID& PacketFlowID__List::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of type @GTPC_Types.PacketFlowID_List using a negative index: %d.", index_value); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (index_value >= val_ptr->n_elements) ? index_value + 1 : val_ptr->n_elements; new_val_ptr->value_elements = (PacketFlowID**)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 PacketFlowID(*(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 PacketFlowID; } return *val_ptr->value_elements[index_value]; } PacketFlowID& PacketFlowID__List::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a value of type @GTPC_Types.PacketFlowID_List."); return (*this)[(int)index_value]; } const PacketFlowID& PacketFlowID__List::operator[](int index_value) const { if (val_ptr == NULL) TTCN_error("Accessing an element in an unbound value of type @GTPC_Types.PacketFlowID_List."); if (index_value < 0) TTCN_error("Accessing an element of type @GTPC_Types.PacketFlowID_List using a negative index: %d.", index_value); if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @GTPC_Types.PacketFlowID_List: The index is %d, but the value has only %d elements.", index_value, val_ptr->n_elements); return (val_ptr->value_elements[index_value] == NULL) ? UNBOUND_ELEM : *val_ptr->value_elements[index_value]; } const PacketFlowID& PacketFlowID__List::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a value of type @GTPC_Types.PacketFlowID_List."); return (*this)[(int)index_value]; } PacketFlowID__List PacketFlowID__List::operator<<=(int rotate_count) const { return *this >>= (-rotate_count); } PacketFlowID__List PacketFlowID__List::operator<<=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate left operator."); return *this >>= (int)(-rotate_count); } PacketFlowID__List PacketFlowID__List::operator>>=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate right operator."); return *this >>= (int)rotate_count; } PacketFlowID__List PacketFlowID__List::operator>>=(int rotate_count) const { if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @GTPC_Types.PacketFlowID_List."); if (val_ptr->n_elements == 0) return *this; int rc; if (rotate_count>=0) rc = rotate_count % val_ptr->n_elements; else rc = val_ptr->n_elements - ((-rotate_count) % val_ptr->n_elements); if (rc == 0) return *this; PacketFlowID__List ret_val; ret_val.set_size(val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new PacketFlowID(*val_ptr->value_elements[i]); } } return ret_val; } PacketFlowID__List PacketFlowID__List::operator+(const PacketFlowID__List& other_value) const { if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @GTPC_Types.PacketFlowID_List concatenation."); if (val_ptr->n_elements == 0) return other_value; if (other_value.val_ptr->n_elements == 0) return *this; PacketFlowID__List ret_val; ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new PacketFlowID(*val_ptr->value_elements[i]); } } for (int i=0; in_elements; i++) { if (other_value.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new PacketFlowID(*other_value.val_ptr->value_elements[i]); } } return ret_val; } PacketFlowID__List PacketFlowID__List::substr(int index, int returncount) const { if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @GTPC_Types.PacketFlowID_List."); check_substr_arguments(val_ptr->n_elements, index, returncount, "@GTPC_Types.PacketFlowID_List","element"); PacketFlowID__List ret_val; ret_val.set_size(returncount); for (int i=0; ivalue_elements[i+index] != NULL) { ret_val.val_ptr->value_elements[i] = new PacketFlowID(*val_ptr->value_elements[i+index]); } } return ret_val; } PacketFlowID__List PacketFlowID__List::replace(int index, int len, const PacketFlowID__List& repl) const { if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @GTPC_Types.PacketFlowID_List."); if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @GTPC_Types.PacketFlowID_List."); check_replace_arguments(val_ptr->n_elements, index, len, "@GTPC_Types.PacketFlowID_List","element"); PacketFlowID__List ret_val; ret_val.set_size(val_ptr->n_elements + repl.val_ptr->n_elements - len); for (int i = 0; i < index; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new PacketFlowID(*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 PacketFlowID(*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 PacketFlowID(*val_ptr->value_elements[index+i+len]); } } return ret_val; } PacketFlowID__List PacketFlowID__List::replace(int index, int len, const PacketFlowID__List_template& repl) const { if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return replace(index, len, repl.valueof()); } void PacketFlowID__List::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @GTPC_Types.PacketFlowID_List."); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (new_size < val_ptr->n_elements) ? new_size : val_ptr->n_elements; new_val_ptr->value_elements = (PacketFlowID**)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 PacketFlowID(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (new_size > val_ptr->n_elements) { val_ptr->value_elements = (PacketFlowID**)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 @GTPC_Types.PacketFlowID_List: %d",new_size); #endif val_ptr->n_elements = new_size; } else if (new_size < val_ptr->n_elements) { for (int elem_count = new_size; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL)delete val_ptr->value_elements[elem_count]; val_ptr->value_elements = (PacketFlowID**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); val_ptr->n_elements = new_size; } } boolean PacketFlowID__List::is_value() const { if (val_ptr == NULL) return FALSE; for(int i = 0; i < val_ptr->n_elements; ++i) { if (val_ptr->value_elements[i] == NULL || !val_ptr->value_elements[i]->is_value()) return FALSE; } return TRUE; } int PacketFlowID__List::size_of() const { if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @GTPC_Types.PacketFlowID_List."); return val_ptr->n_elements; } int PacketFlowID__List::lengthof() const { if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @GTPC_Types.PacketFlowID_List."); for (int my_length=val_ptr->n_elements; my_length>0; my_length--) if (val_ptr->value_elements[my_length-1] != NULL) return my_length; return 0; } void PacketFlowID__List::log() const { if (val_ptr == NULL) {; TTCN_Logger::log_event_unbound(); return; } switch (val_ptr->n_elements) { case 0: TTCN_Logger::log_event_str("{ }"); break; default: TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); (*this)[elem_count].log(); } TTCN_Logger::log_event_str(" }"); } } void PacketFlowID__List::set_implicit_omit() { if (val_ptr == NULL) return; for (int i = 0; i < val_ptr->n_elements; i++) { if (val_ptr->value_elements[i] != NULL) val_ptr->value_elements[i]->set_implicit_omit(); } } void PacketFlowID__List::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE|Module_Param::BC_LIST, "record of value"); switch (param.get_operation_type()) { case Module_Param::OT_ASSIGN: if (param.get_type()==Module_Param::MP_Value_List && param.get_size()==0) { *this = NULL_VALUE; return; } switch (param.get_type()) { case Module_Param::MP_Value_List: set_size(param.get_size()); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed) { (*this)[i].set_param(*curr); if (!(*this)[i].is_bound()) { delete val_ptr->value_elements[i]; val_ptr->value_elements[i] = NULL; } } } break; case Module_Param::MP_Indexed_List: for (size_t i=0; iget_id()->get_index()].set_param(*curr); if (!(*this)[curr->get_id()->get_index()].is_bound()) { delete val_ptr->value_elements[curr->get_id()->get_index()]; val_ptr->value_elements[curr->get_id()->get_index()] = NULL; } } break; default: param.type_error("record of value", "@GTPC_Types.PacketFlowID_List"); } break; case Module_Param::OT_CONCAT: switch (param.get_type()) { case Module_Param::MP_Value_List: { if (!is_bound()) *this = NULL_VALUE; int start_idx = lengthof(); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed)) { (*this)[start_idx+(int)i].set_param(*curr); } } } break; case Module_Param::MP_Indexed_List: param.error("Cannot concatenate an indexed value list"); break; default: param.type_error("record of value", "@GTPC_Types.PacketFlowID_List"); } break; default: TTCN_error("Internal error: Unknown operation type."); } } void PacketFlowID__List::encode_text(Text_Buf& text_buf) const { if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @GTPC_Types.PacketFlowID_List."); text_buf.push_int(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) (*this)[elem_count].encode_text(text_buf); } void PacketFlowID__List::decode_text(Text_Buf& text_buf) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = text_buf.pull_int().get_val(); if (val_ptr->n_elements < 0) TTCN_error("Text decoder: Negative size was received for a value of type @GTPC_Types.PacketFlowID_List."); val_ptr->value_elements = (PacketFlowID**)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 PacketFlowID; val_ptr->value_elements[elem_count]->decode_text(text_buf); } } void PacketFlowID__List::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void PacketFlowID__List::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int PacketFlowID__List::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=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 PacketFlowID__List::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;araw); encoded_length+=(*this)[a].RAW_encode(*p_td.oftype_descr,*myleaf.body.node.nodes[a]); } return myleaf.length=encoded_length; } void PacketFlowID__List_template::copy_value(const PacketFlowID__List& other_value) { if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @GTPC_Types.PacketFlowID_List with an unbound value."); single_value.n_elements = other_value.size_of(); single_value.value_elements = (PacketFlowID_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 PacketFlowID_template(other_value[elem_count]); } else { single_value.value_elements[elem_count] = new PacketFlowID_template; } } set_selection(SPECIFIC_VALUE); } void PacketFlowID__List_template::copy_template(const PacketFlowID__List_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.n_elements = other_value.single_value.n_elements; single_value.value_elements = (PacketFlowID_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 PacketFlowID_template(*other_value.single_value.value_elements[elem_count]); } else { single_value.value_elements[elem_count] = new PacketFlowID_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 PacketFlowID__List_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new PacketFlowID__List_template(*other_value.implication_.precondition); implication_.implied_template = new PacketFlowID__List_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @GTPC_Types.PacketFlowID_List."); break; } set_selection(other_value); } boolean PacketFlowID__List_template::match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy) { if (value_index >= 0) return ((const PacketFlowID__List_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const PacketFlowID__List*)value_ptr)[value_index], legacy); else return ((const PacketFlowID__List_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); } PacketFlowID__List_template::PacketFlowID__List_template() { } PacketFlowID__List_template::PacketFlowID__List_template(template_sel other_value) : Base_Record_Of_Template(other_value) { check_single_selection(other_value); } PacketFlowID__List_template::PacketFlowID__List_template(null_type) : Base_Record_Of_Template(SPECIFIC_VALUE) { single_value.n_elements = 0; single_value.value_elements = NULL; } PacketFlowID__List_template::PacketFlowID__List_template(const PacketFlowID__List& other_value) { copy_value(other_value); } PacketFlowID__List_template::PacketFlowID__List_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const PacketFlowID__List&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @GTPC_Types.PacketFlowID_List from an unbound optional field."); } } PacketFlowID__List_template::PacketFlowID__List_template(PacketFlowID__List_template* p_precondition, PacketFlowID__List_template* p_implied_template) : Base_Record_Of_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } PacketFlowID__List_template::PacketFlowID__List_template(Dynamic_Match_Interface* p_dyn_match) : Base_Record_Of_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } PacketFlowID__List_template::PacketFlowID__List_template(const PacketFlowID__List_template& other_value) : Base_Record_Of_Template() { copy_template(other_value); } PacketFlowID__List_template::~PacketFlowID__List_template() { clean_up(); } void PacketFlowID__List_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; free_pointers((void**)single_value.value_elements); break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } PacketFlowID__List_template& PacketFlowID__List_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } PacketFlowID__List_template& PacketFlowID__List_template::operator=(null_type) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; return *this; } PacketFlowID__List_template& PacketFlowID__List_template::operator=(const PacketFlowID__List& other_value) { clean_up(); copy_value(other_value); return *this; } PacketFlowID__List_template& PacketFlowID__List_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const PacketFlowID__List&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @GTPC_Types.PacketFlowID_List."); } return *this; } PacketFlowID__List_template& PacketFlowID__List_template::operator=(const PacketFlowID__List_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } PacketFlowID_template& PacketFlowID__List_template::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of a template for type @GTPC_Types.PacketFlowID_List using a negative index: %d.", index_value); switch (template_selection) { case SPECIFIC_VALUE: if(index_value < single_value.n_elements) break; // no break case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: case UNINITIALIZED_TEMPLATE: set_size(index_value + 1); break; default: TTCN_error("Accessing an element of a non-specific template for type @GTPC_Types.PacketFlowID_List."); break; } return *single_value.value_elements[index_value]; } PacketFlowID_template& PacketFlowID__List_template::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a template of type @GTPC_Types.PacketFlowID_List."); return (*this)[(int)index_value]; } const PacketFlowID_template& PacketFlowID__List_template::operator[](int index_value) const { if (index_value < 0) TTCN_error("Accessing an element of a template for type @GTPC_Types.PacketFlowID_List using a negative index: %d.", index_value); if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @GTPC_Types.PacketFlowID_List."); if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @GTPC_Types.PacketFlowID_List: The index is %d, but the template has only %d elements.", index_value, single_value.n_elements); return *single_value.value_elements[index_value]; } const PacketFlowID_template& PacketFlowID__List_template::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a template of type @GTPC_Types.PacketFlowID_List."); return (*this)[(int)index_value]; } void PacketFlowID__List_template::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @GTPC_Types.PacketFlowID_List."); template_sel old_selection = template_selection; if (old_selection != SPECIFIC_VALUE) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; } if (new_size > single_value.n_elements) { single_value.value_elements = (PacketFlowID_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 PacketFlowID_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 PacketFlowID_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 = (PacketFlowID_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); single_value.n_elements = new_size; } } int PacketFlowID__List_template::n_elem() const { switch (template_selection) { case SPECIFIC_VALUE: return single_value.n_elements; break; case VALUE_LIST: return value_list.n_values; break; default: TTCN_error("Performing n_elem"); } } int PacketFlowID__List_template::size_of(boolean is_size) const { const char* op_name = is_size ? "size" : "length"; int min_size; boolean has_any_or_none; if (is_ifpresent) TTCN_error("Performing %sof() operation on a template of type @GTPC_Types.PacketFlowID_List which has an ifpresent attribute.", op_name); switch (template_selection) { case SPECIFIC_VALUE: { min_size = 0; has_any_or_none = FALSE; int elem_count = single_value.n_elements; if (!is_size) { while (elem_count>0 && !single_value.value_elements[elem_count-1]->is_bound()) elem_count--; } for (int i=0; iget_selection()) { case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @GTPC_Types.PacketFlowID_List containing omit element.", op_name); case ANY_OR_OMIT: has_any_or_none = TRUE; break; default: min_size++; break; } } } break; case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @GTPC_Types.PacketFlowID_List containing omit value.", op_name); case ANY_VALUE: case ANY_OR_OMIT: min_size = 0; has_any_or_none = TRUE; break; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Performing %sof() operation on a template of type @GTPC_Types.PacketFlowID_List containing an empty list.", op_name); int item_size = value_list.list_value[0].size_of(is_size); for (unsigned int i = 1; i < value_list.n_values; i++) { if (value_list.list_value[i].size_of(is_size)!=item_size) TTCN_error("Performing %sof() operation on a template of type @GTPC_Types.PacketFlowID_List containing a value list with different sizes.", op_name); } min_size = item_size; has_any_or_none = FALSE; break; } case COMPLEMENTED_LIST: TTCN_error("Performing %sof() operation on a template of type @GTPC_Types.PacketFlowID_List containing complemented list.", op_name); default: TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @GTPC_Types.PacketFlowID_List.", op_name); } return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @GTPC_Types.PacketFlowID_List"); } boolean PacketFlowID__List_template::match(const PacketFlowID__List& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; int value_length = other_value.size_of(); if (!match_length(value_length)) return FALSE; switch (template_selection) { case SPECIFIC_VALUE: return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy); case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching with an uninitialized/unsupported template of type @GTPC_Types.PacketFlowID_List."); } return FALSE; } boolean PacketFlowID__List_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (!single_value.value_elements[elem_count]->is_value()) return FALSE; return TRUE; } PacketFlowID__List PacketFlowID__List_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @GTPC_Types.PacketFlowID_List."); PacketFlowID__List ret_val; ret_val.set_size(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (single_value.value_elements[elem_count]->is_bound()) { ret_val[elem_count] = single_value.value_elements[elem_count]->valueof(); } return ret_val; } PacketFlowID__List PacketFlowID__List_template::substr(int index, int returncount) const { if (!is_value()) TTCN_error("The first argument of function substr() is a template with non-specific value."); return valueof().substr(index, returncount); } PacketFlowID__List PacketFlowID__List_template::replace(int index, int len, const PacketFlowID__List_template& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl.valueof()); } PacketFlowID__List PacketFlowID__List_template::replace(int index, int len, const PacketFlowID__List& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl); } void PacketFlowID__List_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = list_length; value_list.list_value = new PacketFlowID__List_template[list_length]; break; default: TTCN_error("Internal error: Setting an invalid type for a template of type @GTPC_Types.PacketFlowID_List."); } set_selection(template_type); } PacketFlowID__List_template& PacketFlowID__List_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of type @GTPC_Types.PacketFlowID_List."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @GTPC_Types.PacketFlowID_List."); return value_list.list_value[list_index]; } void PacketFlowID__List_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: if (single_value.n_elements > 0) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation("); single_value.value_elements[elem_count]->log(); if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')'); } TTCN_Logger::log_event_str(" }"); } else TTCN_Logger::log_event_str("{ }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_restricted(); log_ifpresent(); } void PacketFlowID__List_template::log_match(const PacketFlowID__List& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); }else{ if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if(!single_value.value_elements[elem_count]->match(match_value[elem_count], legacy)){ TTCN_Logger::log_logmatch_info("[%d]", elem_count); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } log_match_length(single_value.n_elements); } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); } TTCN_Logger::log_event_str(" }"); log_match_length(single_value.n_elements); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void PacketFlowID__List_template::encode_text(Text_Buf& text_buf) const { encode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) single_value.value_elements[elem_count]->encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @GTPC_Types.PacketFlowID_List."); } } void PacketFlowID__List_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value.n_elements = text_buf.pull_int().get_val(); if (single_value.n_elements < 0) TTCN_error("Text decoder: Negative size was received for a template of type @GTPC_Types.PacketFlowID_List."); single_value.value_elements = (PacketFlowID_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 PacketFlowID_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 PacketFlowID__List_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of type @GTPC_Types.PacketFlowID_List."); } } boolean PacketFlowID__List_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean PacketFlowID__List_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iget_id()->get_index())].set_param(*param.get_elem(p_i)); } break; case Module_Param::MP_Value_List: { set_size(param.get_size()); int curr_idx = 0; for (size_t p_i=0; p_iget_type()) { case Module_Param::MP_NotUsed: curr_idx++; break; case Module_Param::MP_Permutation_Template: { int perm_start_idx = curr_idx; Module_Param* param_i = param.get_elem(p_i); for (size_t perm_i=0; perm_iget_size(); perm_i++) { (*this)[curr_idx].set_param(*(param_i->get_elem(perm_i))); curr_idx++; } int perm_end_idx = curr_idx - 1; add_permutation(perm_start_idx, perm_end_idx); } break; default: (*this)[curr_idx].set_param(*param.get_elem(p_i)); curr_idx++; } } } break; case Module_Param::MP_Implication_Template: { PacketFlowID__List_template* precondition = new PacketFlowID__List_template; precondition->set_param(*param.get_elem(0)); PacketFlowID__List_template* implied_template = new PacketFlowID__List_template; implied_template->set_param(*param.get_elem(1)); *this = PacketFlowID__List_template(precondition, implied_template); } break; default: param.type_error("record of template", "@GTPC_Types.PacketFlowID_List"); } is_ifpresent = param.get_ifpresent(); set_length_range(param); } void PacketFlowID__List_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; for (int i=0; icheck_restriction(t_res, t_name ? t_name : "@GTPC_Types.PacketFlowID_List"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@GTPC_Types.PacketFlowID_List"); } boolean PacketFlowID__List_template::get_istemplate_kind(const char* type) const { if (!strcmp(type, "AnyElement")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_VALUE) { return TRUE; } } return FALSE; } else if (!strcmp(type, "AnyElementsOrNone")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_OR_OMIT) { return TRUE; } } return FALSE; } else if (!strcmp(type, "permutation")) { return number_of_permutations; } else if (!strcmp(type, "length")) { return length_restriction_type != NO_LENGTH_RESTRICTION; } else { return Base_Template::get_istemplate_kind(type); } } PacketFlowID::PacketFlowID() { } PacketFlowID::PacketFlowID(const OCTETSTRING& par_type__gtpc, const BITSTRING& par_nsapi, const BITSTRING& par_reserved, const OCTETSTRING& par_packflowID) : field_type__gtpc(par_type__gtpc), field_nsapi(par_nsapi), field_reserved(par_reserved), field_packflowID(par_packflowID) { } PacketFlowID::PacketFlowID(const PacketFlowID& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @GTPC_Types.PacketFlowID."); if (other_value.type__gtpc().is_bound()) field_type__gtpc = other_value.type__gtpc(); else field_type__gtpc.clean_up(); if (other_value.nsapi().is_bound()) field_nsapi = other_value.nsapi(); else field_nsapi.clean_up(); if (other_value.reserved().is_bound()) field_reserved = other_value.reserved(); else field_reserved.clean_up(); if (other_value.packflowID().is_bound()) field_packflowID = other_value.packflowID(); else field_packflowID.clean_up(); } void PacketFlowID::clean_up() { field_type__gtpc.clean_up(); field_nsapi.clean_up(); field_reserved.clean_up(); field_packflowID.clean_up(); } const TTCN_Typedescriptor_t* PacketFlowID::get_descriptor() const { return &PacketFlowID_descr_; } PacketFlowID& PacketFlowID::operator=(const PacketFlowID& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @GTPC_Types.PacketFlowID."); if (other_value.type__gtpc().is_bound()) field_type__gtpc = other_value.type__gtpc(); else field_type__gtpc.clean_up(); if (other_value.nsapi().is_bound()) field_nsapi = other_value.nsapi(); else field_nsapi.clean_up(); if (other_value.reserved().is_bound()) field_reserved = other_value.reserved(); else field_reserved.clean_up(); if (other_value.packflowID().is_bound()) field_packflowID = other_value.packflowID(); else field_packflowID.clean_up(); } return *this; } boolean PacketFlowID::operator==(const PacketFlowID& other_value) const { return field_type__gtpc==other_value.field_type__gtpc && field_nsapi==other_value.field_nsapi && field_reserved==other_value.field_reserved && field_packflowID==other_value.field_packflowID; } boolean PacketFlowID::is_bound() const { return (field_type__gtpc.is_bound()) || (field_nsapi.is_bound()) || (field_reserved.is_bound()) || (field_packflowID.is_bound()); } boolean PacketFlowID::is_value() const { return field_type__gtpc.is_value() && field_nsapi.is_value() && field_reserved.is_value() && field_packflowID.is_value(); } void PacketFlowID::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ type_gtpc := "); field_type__gtpc.log(); TTCN_Logger::log_event_str(", nsapi := "); field_nsapi.log(); TTCN_Logger::log_event_str(", reserved := "); field_reserved.log(); TTCN_Logger::log_event_str(", packflowID := "); field_packflowID.log(); TTCN_Logger::log_event_str(" }"); } void PacketFlowID::set_implicit_omit() { if (type__gtpc().is_bound()) type__gtpc().set_implicit_omit(); if (nsapi().is_bound()) nsapi().set_implicit_omit(); if (reserved().is_bound()) reserved().set_implicit_omit(); if (packflowID().is_bound()) packflowID().set_implicit_omit(); } void PacketFlowID::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (40 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) nsapi().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved().set_param(*param.get_elem(2)); if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) packflowID().set_param(*param.get_elem(3)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "nsapi")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { nsapi().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_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_idxget_id()->get_name(), "packflowID")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { packflowID().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.PacketFlowID: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@GTPC_Types.PacketFlowID"); } } void PacketFlowID::encode_text(Text_Buf& text_buf) const { field_type__gtpc.encode_text(text_buf); field_nsapi.encode_text(text_buf); field_reserved.encode_text(text_buf); field_packflowID.encode_text(text_buf); } void PacketFlowID::decode_text(Text_Buf& text_buf) { field_type__gtpc.decode_text(text_buf); field_nsapi.decode_text(text_buf); field_reserved.decode_text(text_buf); field_packflowID.decode_text(text_buf); } void PacketFlowID::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;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void PacketFlowID::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;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int PacketFlowID::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) { (void)no_err; int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); limit-=prepaddlength; size_t last_decoded_pos = p_buf.get_pos_bit(); int decoded_length = 0; int decoded_field_length = 0; raw_order_t local_top_order; if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; else local_top_order=ORDER_LSB; RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit); decoded_field_length = field_type__gtpc.RAW_decode(General__Types::OCT1_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, General__Types::BIT4_descr_.raw->forceomit); decoded_field_length = field_nsapi.RAW_decode(General__Types::BIT4_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, General__Types::BIT4_descr_.raw->forceomit); decoded_field_length = field_reserved.RAW_decode(General__Types::BIT4_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_2_force_omit); if (decoded_field_length < 0) return decoded_field_length; decoded_length+=decoded_field_length; limit-=decoded_field_length; last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); RAW_Force_Omit field_3_force_omit(3, force_omit, General__Types::OCT1_descr_.raw->forceomit); decoded_field_length = field_packflowID.RAW_decode(General__Types::OCT1_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 (field_type__gtpc != os_64) return -1; p_buf.set_pos_bit(last_decoded_pos); return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); } int PacketFlowID::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); int encoded_length = 0; myleaf.isleaf = FALSE; myleaf.body.node.num_of_nodes = 4; myleaf.body.node.nodes = init_nodes_of_enc_tree(4); myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, General__Types::OCT1_descr_.raw); myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::BIT4_descr_.raw); myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, General__Types::BIT4_descr_.raw); myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, General__Types::OCT1_descr_.raw); encoded_length += field_type__gtpc.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]); encoded_length += field_nsapi.RAW_encode(General__Types::BIT4_descr_, *myleaf.body.node.nodes[1]); encoded_length += field_reserved.RAW_encode(General__Types::BIT4_descr_, *myleaf.body.node.nodes[2]); encoded_length += field_packflowID.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[3]); if (field_type__gtpc != os_64) { 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){ os_64.RAW_encode(General__Types::OCT1_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 PacketFlowID_template::single_value_struct { OCTETSTRING_template field_type__gtpc; BITSTRING_template field_nsapi; BITSTRING_template field_reserved; OCTETSTRING_template field_packflowID; }; void PacketFlowID_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_type__gtpc = ANY_VALUE; single_value->field_nsapi = ANY_VALUE; single_value->field_reserved = ANY_VALUE; single_value->field_packflowID = ANY_VALUE; } } } void PacketFlowID_template::copy_value(const PacketFlowID& other_value) { single_value = new single_value_struct; if (other_value.type__gtpc().is_bound()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (other_value.nsapi().is_bound()) { single_value->field_nsapi = other_value.nsapi(); } else { single_value->field_nsapi.clean_up(); } if (other_value.reserved().is_bound()) { single_value->field_reserved = other_value.reserved(); } else { single_value->field_reserved.clean_up(); } if (other_value.packflowID().is_bound()) { single_value->field_packflowID = other_value.packflowID(); } else { single_value->field_packflowID.clean_up(); } set_selection(SPECIFIC_VALUE); } void PacketFlowID_template::copy_template(const PacketFlowID_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.type__gtpc().get_selection()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.nsapi().get_selection()) { single_value->field_nsapi = other_value.nsapi(); } else { single_value->field_nsapi.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.packflowID().get_selection()) { single_value->field_packflowID = other_value.packflowID(); } else { single_value->field_packflowID.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 PacketFlowID_template[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 PacketFlowID_template(*other_value.implication_.precondition); implication_.implied_template = new PacketFlowID_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 @GTPC_Types.PacketFlowID."); break; } set_selection(other_value); } PacketFlowID_template::PacketFlowID_template() { } PacketFlowID_template::PacketFlowID_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } PacketFlowID_template::PacketFlowID_template(const PacketFlowID& other_value) { copy_value(other_value); } PacketFlowID_template::PacketFlowID_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const PacketFlowID&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @GTPC_Types.PacketFlowID from an unbound optional field."); } } PacketFlowID_template::PacketFlowID_template(PacketFlowID_template* p_precondition, PacketFlowID_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } PacketFlowID_template::PacketFlowID_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } PacketFlowID_template::PacketFlowID_template(const PacketFlowID_template& other_value) : Base_Template() { copy_template(other_value); } PacketFlowID_template::~PacketFlowID_template() { clean_up(); } PacketFlowID_template& PacketFlowID_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } PacketFlowID_template& PacketFlowID_template::operator=(const PacketFlowID& other_value) { clean_up(); copy_value(other_value); return *this; } PacketFlowID_template& PacketFlowID_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const PacketFlowID&)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 @GTPC_Types.PacketFlowID."); } return *this; } PacketFlowID_template& PacketFlowID_template::operator=(const PacketFlowID_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean PacketFlowID_template::match(const PacketFlowID& 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.type__gtpc().is_bound()) return FALSE; if(!single_value->field_type__gtpc.match(other_value.type__gtpc(), legacy))return FALSE; if(!other_value.nsapi().is_bound()) return FALSE; if(!single_value->field_nsapi.match(other_value.nsapi(), legacy))return FALSE; if(!other_value.reserved().is_bound()) return FALSE; if(!single_value->field_reserved.match(other_value.reserved(), legacy))return FALSE; if(!other_value.packflowID().is_bound()) return FALSE; if(!single_value->field_packflowID.match(other_value.packflowID(), 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 @GTPC_Types.PacketFlowID."); } return FALSE; } boolean PacketFlowID_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_type__gtpc.is_bound() || single_value->field_nsapi.is_bound() || single_value->field_reserved.is_bound() || single_value->field_packflowID.is_bound(); } boolean PacketFlowID_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_type__gtpc.is_value() && single_value->field_nsapi.is_value() && single_value->field_reserved.is_value() && single_value->field_packflowID.is_value(); } void PacketFlowID_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; } PacketFlowID PacketFlowID_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 @GTPC_Types.PacketFlowID."); PacketFlowID ret_val; if (single_value->field_type__gtpc.is_bound()) { ret_val.type__gtpc() = single_value->field_type__gtpc.valueof(); } if (single_value->field_nsapi.is_bound()) { ret_val.nsapi() = single_value->field_nsapi.valueof(); } if (single_value->field_reserved.is_bound()) { ret_val.reserved() = single_value->field_reserved.valueof(); } if (single_value->field_packflowID.is_bound()) { ret_val.packflowID() = single_value->field_packflowID.valueof(); } return ret_val; } void PacketFlowID_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 @GTPC_Types.PacketFlowID."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new PacketFlowID_template[list_length]; } PacketFlowID_template& PacketFlowID_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 @GTPC_Types.PacketFlowID."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @GTPC_Types.PacketFlowID."); return value_list.list_value[list_index]; } OCTETSTRING_template& PacketFlowID_template::type__gtpc() { set_specific(); return single_value->field_type__gtpc; } const OCTETSTRING_template& PacketFlowID_template::type__gtpc() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field type_gtpc of a non-specific template of type @GTPC_Types.PacketFlowID."); return single_value->field_type__gtpc; } BITSTRING_template& PacketFlowID_template::nsapi() { set_specific(); return single_value->field_nsapi; } const BITSTRING_template& PacketFlowID_template::nsapi() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field nsapi of a non-specific template of type @GTPC_Types.PacketFlowID."); return single_value->field_nsapi; } BITSTRING_template& PacketFlowID_template::reserved() { set_specific(); return single_value->field_reserved; } const BITSTRING_template& PacketFlowID_template::reserved() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field reserved of a non-specific template of type @GTPC_Types.PacketFlowID."); return single_value->field_reserved; } OCTETSTRING_template& PacketFlowID_template::packflowID() { set_specific(); return single_value->field_packflowID; } const OCTETSTRING_template& PacketFlowID_template::packflowID() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field packflowID of a non-specific template of type @GTPC_Types.PacketFlowID."); return single_value->field_packflowID; } int PacketFlowID_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.PacketFlowID 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 @GTPC_Types.PacketFlowID 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 @GTPC_Types.PacketFlowID containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.PacketFlowID containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.PacketFlowID containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.PacketFlowID containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.PacketFlowID containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.PacketFlowID containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.PacketFlowID containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @GTPC_Types.PacketFlowID."); } return 0; } void PacketFlowID_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ type_gtpc := "); single_value->field_type__gtpc.log(); TTCN_Logger::log_event_str(", nsapi := "); single_value->field_nsapi.log(); TTCN_Logger::log_event_str(", reserved := "); single_value->field_reserved.log(); TTCN_Logger::log_event_str(", packflowID := "); single_value->field_packflowID.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 PacketFlowID_template::log_match(const PacketFlowID& 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_type__gtpc.match(match_value.type__gtpc(), legacy)){ TTCN_Logger::log_logmatch_info(".type_gtpc"); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_nsapi.match(match_value.nsapi(), legacy)){ TTCN_Logger::log_logmatch_info(".nsapi"); single_value->field_nsapi.log_match(match_value.nsapi(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_reserved.match(match_value.reserved(), legacy)){ TTCN_Logger::log_logmatch_info(".reserved"); single_value->field_reserved.log_match(match_value.reserved(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_packflowID.match(match_value.packflowID(), legacy)){ TTCN_Logger::log_logmatch_info(".packflowID"); single_value->field_packflowID.log_match(match_value.packflowID(), 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("{ type_gtpc := "); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::log_event_str(", nsapi := "); single_value->field_nsapi.log_match(match_value.nsapi(), legacy); TTCN_Logger::log_event_str(", reserved := "); single_value->field_reserved.log_match(match_value.reserved(), legacy); TTCN_Logger::log_event_str(", packflowID := "); single_value->field_packflowID.log_match(match_value.packflowID(), 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 PacketFlowID_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_type__gtpc.encode_text(text_buf); single_value->field_nsapi.encode_text(text_buf); single_value->field_reserved.encode_text(text_buf); single_value->field_packflowID.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 @GTPC_Types.PacketFlowID."); } } void PacketFlowID_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_type__gtpc.decode_text(text_buf); single_value->field_nsapi.decode_text(text_buf); single_value->field_reserved.decode_text(text_buf); single_value->field_packflowID.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 PacketFlowID_template[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 @GTPC_Types.PacketFlowID."); } } void PacketFlowID_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: { PacketFlowID_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) nsapi().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved().set_param(*param.get_elem(2)); if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) packflowID().set_param(*param.get_elem(3)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "nsapi")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { nsapi().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_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_idxget_id()->get_name(), "packflowID")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { packflowID().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.PacketFlowID: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { PacketFlowID_template* precondition = new PacketFlowID_template; precondition->set_param(*param.get_elem(0)); PacketFlowID_template* implied_template = new PacketFlowID_template; implied_template->set_param(*param.get_elem(1)); *this = PacketFlowID_template(precondition, implied_template); } break; default: param.type_error("record template", "@GTPC_Types.PacketFlowID"); } is_ifpresent = param.get_ifpresent(); } void PacketFlowID_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_type__gtpc.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.PacketFlowID"); single_value->field_nsapi.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.PacketFlowID"); single_value->field_reserved.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.PacketFlowID"); single_value->field_packflowID.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.PacketFlowID"); 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 : "@GTPC_Types.PacketFlowID"); } boolean PacketFlowID_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean PacketFlowID_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idxref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } ChargingCharacteristics__List__GTPC::ChargingCharacteristics__List__GTPC(const ChargingCharacteristics__List__GTPC& other_value) { if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @GTPC_Types.ChargingCharacteristics_List_GTPC."); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } ChargingCharacteristics__List__GTPC::~ChargingCharacteristics__List__GTPC() { clean_up(); if (val_ptr != NULL) val_ptr = NULL; } void ChargingCharacteristics__List__GTPC::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."); } } ChargingCharacteristics__List__GTPC& ChargingCharacteristics__List__GTPC::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; } ChargingCharacteristics__List__GTPC& ChargingCharacteristics__List__GTPC::operator=(const ChargingCharacteristics__List__GTPC& other_value) { if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @GTPC_Types.ChargingCharacteristics_List_GTPC."); if (this != &other_value) { clean_up(); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } return *this; } boolean ChargingCharacteristics__List__GTPC::operator==(null_type) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @GTPC_Types.ChargingCharacteristics_List_GTPC."); return val_ptr->n_elements == 0 ; } boolean ChargingCharacteristics__List__GTPC::operator==(const ChargingCharacteristics__List__GTPC& other_value) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @GTPC_Types.ChargingCharacteristics_List_GTPC."); if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @GTPC_Types.ChargingCharacteristics_List_GTPC."); 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; } ChargingCharacteristics__GTPC& ChargingCharacteristics__List__GTPC::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of type @GTPC_Types.ChargingCharacteristics_List_GTPC 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 = (ChargingCharacteristics__GTPC**)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 ChargingCharacteristics__GTPC(*(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 ChargingCharacteristics__GTPC; } return *val_ptr->value_elements[index_value]; } ChargingCharacteristics__GTPC& ChargingCharacteristics__List__GTPC::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a value of type @GTPC_Types.ChargingCharacteristics_List_GTPC."); return (*this)[(int)index_value]; } const ChargingCharacteristics__GTPC& ChargingCharacteristics__List__GTPC::operator[](int index_value) const { if (val_ptr == NULL) TTCN_error("Accessing an element in an unbound value of type @GTPC_Types.ChargingCharacteristics_List_GTPC."); if (index_value < 0) TTCN_error("Accessing an element of type @GTPC_Types.ChargingCharacteristics_List_GTPC using a negative index: %d.", index_value); if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @GTPC_Types.ChargingCharacteristics_List_GTPC: 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 ChargingCharacteristics__GTPC& ChargingCharacteristics__List__GTPC::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a value of type @GTPC_Types.ChargingCharacteristics_List_GTPC."); return (*this)[(int)index_value]; } ChargingCharacteristics__List__GTPC ChargingCharacteristics__List__GTPC::operator<<=(int rotate_count) const { return *this >>= (-rotate_count); } ChargingCharacteristics__List__GTPC ChargingCharacteristics__List__GTPC::operator<<=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate left operator."); return *this >>= (int)(-rotate_count); } ChargingCharacteristics__List__GTPC ChargingCharacteristics__List__GTPC::operator>>=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate right operator."); return *this >>= (int)rotate_count; } ChargingCharacteristics__List__GTPC ChargingCharacteristics__List__GTPC::operator>>=(int rotate_count) const { if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @GTPC_Types.ChargingCharacteristics_List_GTPC."); 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; ChargingCharacteristics__List__GTPC ret_val; ret_val.set_size(val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new ChargingCharacteristics__GTPC(*val_ptr->value_elements[i]); } } return ret_val; } ChargingCharacteristics__List__GTPC ChargingCharacteristics__List__GTPC::operator+(const ChargingCharacteristics__List__GTPC& other_value) const { if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @GTPC_Types.ChargingCharacteristics_List_GTPC concatenation."); if (val_ptr->n_elements == 0) return other_value; if (other_value.val_ptr->n_elements == 0) return *this; ChargingCharacteristics__List__GTPC ret_val; ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new ChargingCharacteristics__GTPC(*val_ptr->value_elements[i]); } } for (int i=0; in_elements; i++) { if (other_value.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new ChargingCharacteristics__GTPC(*other_value.val_ptr->value_elements[i]); } } return ret_val; } ChargingCharacteristics__List__GTPC ChargingCharacteristics__List__GTPC::substr(int index, int returncount) const { if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @GTPC_Types.ChargingCharacteristics_List_GTPC."); check_substr_arguments(val_ptr->n_elements, index, returncount, "@GTPC_Types.ChargingCharacteristics_List_GTPC","element"); ChargingCharacteristics__List__GTPC ret_val; ret_val.set_size(returncount); for (int i=0; ivalue_elements[i+index] != NULL) { ret_val.val_ptr->value_elements[i] = new ChargingCharacteristics__GTPC(*val_ptr->value_elements[i+index]); } } return ret_val; } ChargingCharacteristics__List__GTPC ChargingCharacteristics__List__GTPC::replace(int index, int len, const ChargingCharacteristics__List__GTPC& repl) const { if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @GTPC_Types.ChargingCharacteristics_List_GTPC."); if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @GTPC_Types.ChargingCharacteristics_List_GTPC."); check_replace_arguments(val_ptr->n_elements, index, len, "@GTPC_Types.ChargingCharacteristics_List_GTPC","element"); ChargingCharacteristics__List__GTPC 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 ChargingCharacteristics__GTPC(*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 ChargingCharacteristics__GTPC(*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 ChargingCharacteristics__GTPC(*val_ptr->value_elements[index+i+len]); } } return ret_val; } ChargingCharacteristics__List__GTPC ChargingCharacteristics__List__GTPC::replace(int index, int len, const ChargingCharacteristics__List__GTPC_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 ChargingCharacteristics__List__GTPC::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @GTPC_Types.ChargingCharacteristics_List_GTPC."); 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 = (ChargingCharacteristics__GTPC**)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 ChargingCharacteristics__GTPC(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (new_size > val_ptr->n_elements) { val_ptr->value_elements = (ChargingCharacteristics__GTPC**)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 @GTPC_Types.ChargingCharacteristics_List_GTPC: %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 = (ChargingCharacteristics__GTPC**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); val_ptr->n_elements = new_size; } } boolean ChargingCharacteristics__List__GTPC::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 ChargingCharacteristics__List__GTPC::size_of() const { if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @GTPC_Types.ChargingCharacteristics_List_GTPC."); return val_ptr->n_elements; } int ChargingCharacteristics__List__GTPC::lengthof() const { if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @GTPC_Types.ChargingCharacteristics_List_GTPC."); 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 ChargingCharacteristics__List__GTPC::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 ChargingCharacteristics__List__GTPC::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 ChargingCharacteristics__List__GTPC::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE|Module_Param::BC_LIST, "record of value"); switch (param.get_operation_type()) { case Module_Param::OT_ASSIGN: if (param.get_type()==Module_Param::MP_Value_List && param.get_size()==0) { *this = NULL_VALUE; return; } switch (param.get_type()) { case Module_Param::MP_Value_List: set_size(param.get_size()); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed) { (*this)[i].set_param(*curr); if (!(*this)[i].is_bound()) { delete val_ptr->value_elements[i]; val_ptr->value_elements[i] = NULL; } } } break; case Module_Param::MP_Indexed_List: for (size_t i=0; iget_id()->get_index()].set_param(*curr); if (!(*this)[curr->get_id()->get_index()].is_bound()) { delete val_ptr->value_elements[curr->get_id()->get_index()]; val_ptr->value_elements[curr->get_id()->get_index()] = NULL; } } break; default: param.type_error("record of value", "@GTPC_Types.ChargingCharacteristics_List_GTPC"); } break; case Module_Param::OT_CONCAT: switch (param.get_type()) { case Module_Param::MP_Value_List: { if (!is_bound()) *this = NULL_VALUE; int start_idx = lengthof(); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed)) { (*this)[start_idx+(int)i].set_param(*curr); } } } break; case Module_Param::MP_Indexed_List: param.error("Cannot concatenate an indexed value list"); break; default: param.type_error("record of value", "@GTPC_Types.ChargingCharacteristics_List_GTPC"); } break; default: TTCN_error("Internal error: Unknown operation type."); } } void ChargingCharacteristics__List__GTPC::encode_text(Text_Buf& text_buf) const { if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @GTPC_Types.ChargingCharacteristics_List_GTPC."); 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 ChargingCharacteristics__List__GTPC::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 @GTPC_Types.ChargingCharacteristics_List_GTPC."); val_ptr->value_elements = (ChargingCharacteristics__GTPC**)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 ChargingCharacteristics__GTPC; val_ptr->value_elements[elem_count]->decode_text(text_buf); } } void ChargingCharacteristics__List__GTPC::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;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void ChargingCharacteristics__List__GTPC::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;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int ChargingCharacteristics__List__GTPC::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=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 ChargingCharacteristics__List__GTPC::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;araw); encoded_length+=(*this)[a].RAW_encode(*p_td.oftype_descr,*myleaf.body.node.nodes[a]); } return myleaf.length=encoded_length; } void ChargingCharacteristics__List__GTPC_template::copy_value(const ChargingCharacteristics__List__GTPC& other_value) { if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @GTPC_Types.ChargingCharacteristics_List_GTPC with an unbound value."); single_value.n_elements = other_value.size_of(); single_value.value_elements = (ChargingCharacteristics__GTPC_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 ChargingCharacteristics__GTPC_template(other_value[elem_count]); } else { single_value.value_elements[elem_count] = new ChargingCharacteristics__GTPC_template; } } set_selection(SPECIFIC_VALUE); } void ChargingCharacteristics__List__GTPC_template::copy_template(const ChargingCharacteristics__List__GTPC_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 = (ChargingCharacteristics__GTPC_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 ChargingCharacteristics__GTPC_template(*other_value.single_value.value_elements[elem_count]); } else { single_value.value_elements[elem_count] = new ChargingCharacteristics__GTPC_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 ChargingCharacteristics__List__GTPC_template[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 ChargingCharacteristics__List__GTPC_template(*other_value.implication_.precondition); implication_.implied_template = new ChargingCharacteristics__List__GTPC_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 @GTPC_Types.ChargingCharacteristics_List_GTPC."); break; } set_selection(other_value); } boolean ChargingCharacteristics__List__GTPC_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 ChargingCharacteristics__List__GTPC_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const ChargingCharacteristics__List__GTPC*)value_ptr)[value_index], legacy); else return ((const ChargingCharacteristics__List__GTPC_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); } ChargingCharacteristics__List__GTPC_template::ChargingCharacteristics__List__GTPC_template() { } ChargingCharacteristics__List__GTPC_template::ChargingCharacteristics__List__GTPC_template(template_sel other_value) : Base_Record_Of_Template(other_value) { check_single_selection(other_value); } ChargingCharacteristics__List__GTPC_template::ChargingCharacteristics__List__GTPC_template(null_type) : Base_Record_Of_Template(SPECIFIC_VALUE) { single_value.n_elements = 0; single_value.value_elements = NULL; } ChargingCharacteristics__List__GTPC_template::ChargingCharacteristics__List__GTPC_template(const ChargingCharacteristics__List__GTPC& other_value) { copy_value(other_value); } ChargingCharacteristics__List__GTPC_template::ChargingCharacteristics__List__GTPC_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const ChargingCharacteristics__List__GTPC&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @GTPC_Types.ChargingCharacteristics_List_GTPC from an unbound optional field."); } } ChargingCharacteristics__List__GTPC_template::ChargingCharacteristics__List__GTPC_template(ChargingCharacteristics__List__GTPC_template* p_precondition, ChargingCharacteristics__List__GTPC_template* p_implied_template) : Base_Record_Of_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } ChargingCharacteristics__List__GTPC_template::ChargingCharacteristics__List__GTPC_template(Dynamic_Match_Interface* p_dyn_match) : Base_Record_Of_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } ChargingCharacteristics__List__GTPC_template::ChargingCharacteristics__List__GTPC_template(const ChargingCharacteristics__List__GTPC_template& other_value) : Base_Record_Of_Template() { copy_template(other_value); } ChargingCharacteristics__List__GTPC_template::~ChargingCharacteristics__List__GTPC_template() { clean_up(); } void ChargingCharacteristics__List__GTPC_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; } ChargingCharacteristics__List__GTPC_template& ChargingCharacteristics__List__GTPC_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } ChargingCharacteristics__List__GTPC_template& ChargingCharacteristics__List__GTPC_template::operator=(null_type) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; return *this; } ChargingCharacteristics__List__GTPC_template& ChargingCharacteristics__List__GTPC_template::operator=(const ChargingCharacteristics__List__GTPC& other_value) { clean_up(); copy_value(other_value); return *this; } ChargingCharacteristics__List__GTPC_template& ChargingCharacteristics__List__GTPC_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const ChargingCharacteristics__List__GTPC&)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 @GTPC_Types.ChargingCharacteristics_List_GTPC."); } return *this; } ChargingCharacteristics__List__GTPC_template& ChargingCharacteristics__List__GTPC_template::operator=(const ChargingCharacteristics__List__GTPC_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } ChargingCharacteristics__GTPC_template& ChargingCharacteristics__List__GTPC_template::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of a template for type @GTPC_Types.ChargingCharacteristics_List_GTPC 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 @GTPC_Types.ChargingCharacteristics_List_GTPC."); break; } return *single_value.value_elements[index_value]; } ChargingCharacteristics__GTPC_template& ChargingCharacteristics__List__GTPC_template::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a template of type @GTPC_Types.ChargingCharacteristics_List_GTPC."); return (*this)[(int)index_value]; } const ChargingCharacteristics__GTPC_template& ChargingCharacteristics__List__GTPC_template::operator[](int index_value) const { if (index_value < 0) TTCN_error("Accessing an element of a template for type @GTPC_Types.ChargingCharacteristics_List_GTPC using a negative index: %d.", index_value); if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @GTPC_Types.ChargingCharacteristics_List_GTPC."); if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @GTPC_Types.ChargingCharacteristics_List_GTPC: 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 ChargingCharacteristics__GTPC_template& ChargingCharacteristics__List__GTPC_template::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a template of type @GTPC_Types.ChargingCharacteristics_List_GTPC."); return (*this)[(int)index_value]; } void ChargingCharacteristics__List__GTPC_template::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @GTPC_Types.ChargingCharacteristics_List_GTPC."); 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 = (ChargingCharacteristics__GTPC_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 ChargingCharacteristics__GTPC_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 ChargingCharacteristics__GTPC_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 = (ChargingCharacteristics__GTPC_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); single_value.n_elements = new_size; } } int ChargingCharacteristics__List__GTPC_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 ChargingCharacteristics__List__GTPC_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 @GTPC_Types.ChargingCharacteristics_List_GTPC which has an ifpresent attribute.", op_name); switch (template_selection) { case SPECIFIC_VALUE: { min_size = 0; has_any_or_none = FALSE; int elem_count = single_value.n_elements; if (!is_size) { while (elem_count>0 && !single_value.value_elements[elem_count-1]->is_bound()) elem_count--; } for (int i=0; iget_selection()) { case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @GTPC_Types.ChargingCharacteristics_List_GTPC 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 @GTPC_Types.ChargingCharacteristics_List_GTPC 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 @GTPC_Types.ChargingCharacteristics_List_GTPC 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 @GTPC_Types.ChargingCharacteristics_List_GTPC 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 @GTPC_Types.ChargingCharacteristics_List_GTPC containing complemented list.", op_name); default: TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @GTPC_Types.ChargingCharacteristics_List_GTPC.", op_name); } return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @GTPC_Types.ChargingCharacteristics_List_GTPC"); } boolean ChargingCharacteristics__List__GTPC_template::match(const ChargingCharacteristics__List__GTPC& 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 @GTPC_Types.ChargingCharacteristics_List_GTPC."); } return FALSE; } boolean ChargingCharacteristics__List__GTPC_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; } ChargingCharacteristics__List__GTPC ChargingCharacteristics__List__GTPC_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 @GTPC_Types.ChargingCharacteristics_List_GTPC."); ChargingCharacteristics__List__GTPC 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; } ChargingCharacteristics__List__GTPC ChargingCharacteristics__List__GTPC_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); } ChargingCharacteristics__List__GTPC ChargingCharacteristics__List__GTPC_template::replace(int index, int len, const ChargingCharacteristics__List__GTPC_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()); } ChargingCharacteristics__List__GTPC ChargingCharacteristics__List__GTPC_template::replace(int index, int len, const ChargingCharacteristics__List__GTPC& 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 ChargingCharacteristics__List__GTPC_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 ChargingCharacteristics__List__GTPC_template[list_length]; break; default: TTCN_error("Internal error: Setting an invalid type for a template of type @GTPC_Types.ChargingCharacteristics_List_GTPC."); } set_selection(template_type); } ChargingCharacteristics__List__GTPC_template& ChargingCharacteristics__List__GTPC_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 @GTPC_Types.ChargingCharacteristics_List_GTPC."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @GTPC_Types.ChargingCharacteristics_List_GTPC."); return value_list.list_value[list_index]; } void ChargingCharacteristics__List__GTPC_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 ChargingCharacteristics__List__GTPC_template::log_match(const ChargingCharacteristics__List__GTPC& 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 ChargingCharacteristics__List__GTPC_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 @GTPC_Types.ChargingCharacteristics_List_GTPC."); } } void ChargingCharacteristics__List__GTPC_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 @GTPC_Types.ChargingCharacteristics_List_GTPC."); single_value.value_elements = (ChargingCharacteristics__GTPC_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 ChargingCharacteristics__GTPC_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 ChargingCharacteristics__List__GTPC_template[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 @GTPC_Types.ChargingCharacteristics_List_GTPC."); } } boolean ChargingCharacteristics__List__GTPC_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean ChargingCharacteristics__List__GTPC_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iget_id()->get_index())].set_param(*param.get_elem(p_i)); } break; case Module_Param::MP_Value_List: { set_size(param.get_size()); int curr_idx = 0; for (size_t p_i=0; p_iget_type()) { case Module_Param::MP_NotUsed: curr_idx++; break; case Module_Param::MP_Permutation_Template: { int perm_start_idx = curr_idx; Module_Param* param_i = param.get_elem(p_i); for (size_t perm_i=0; perm_iget_size(); perm_i++) { (*this)[curr_idx].set_param(*(param_i->get_elem(perm_i))); curr_idx++; } int perm_end_idx = curr_idx - 1; add_permutation(perm_start_idx, perm_end_idx); } break; default: (*this)[curr_idx].set_param(*param.get_elem(p_i)); curr_idx++; } } } break; case Module_Param::MP_Implication_Template: { ChargingCharacteristics__List__GTPC_template* precondition = new ChargingCharacteristics__List__GTPC_template; precondition->set_param(*param.get_elem(0)); ChargingCharacteristics__List__GTPC_template* implied_template = new ChargingCharacteristics__List__GTPC_template; implied_template->set_param(*param.get_elem(1)); *this = ChargingCharacteristics__List__GTPC_template(precondition, implied_template); } break; default: param.type_error("record of template", "@GTPC_Types.ChargingCharacteristics_List_GTPC"); } is_ifpresent = param.get_ifpresent(); set_length_range(param); } void ChargingCharacteristics__List__GTPC_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; for (int i=0; icheck_restriction(t_res, t_name ? t_name : "@GTPC_Types.ChargingCharacteristics_List_GTPC"); 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 : "@GTPC_Types.ChargingCharacteristics_List_GTPC"); } boolean ChargingCharacteristics__List__GTPC_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); } } ChargingCharacteristics__GTPC::ChargingCharacteristics__GTPC() { } ChargingCharacteristics__GTPC::ChargingCharacteristics__GTPC(const OCTETSTRING& par_type__gtpc, const OCTETSTRING& par_chargingChar) : field_type__gtpc(par_type__gtpc), field_chargingChar(par_chargingChar) { } ChargingCharacteristics__GTPC::ChargingCharacteristics__GTPC(const ChargingCharacteristics__GTPC& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @GTPC_Types.ChargingCharacteristics_GTPC."); if (other_value.type__gtpc().is_bound()) field_type__gtpc = other_value.type__gtpc(); else field_type__gtpc.clean_up(); if (other_value.chargingChar().is_bound()) field_chargingChar = other_value.chargingChar(); else field_chargingChar.clean_up(); } void ChargingCharacteristics__GTPC::clean_up() { field_type__gtpc.clean_up(); field_chargingChar.clean_up(); } const TTCN_Typedescriptor_t* ChargingCharacteristics__GTPC::get_descriptor() const { return &ChargingCharacteristics__GTPC_descr_; } ChargingCharacteristics__GTPC& ChargingCharacteristics__GTPC::operator=(const ChargingCharacteristics__GTPC& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @GTPC_Types.ChargingCharacteristics_GTPC."); if (other_value.type__gtpc().is_bound()) field_type__gtpc = other_value.type__gtpc(); else field_type__gtpc.clean_up(); if (other_value.chargingChar().is_bound()) field_chargingChar = other_value.chargingChar(); else field_chargingChar.clean_up(); } return *this; } boolean ChargingCharacteristics__GTPC::operator==(const ChargingCharacteristics__GTPC& other_value) const { return field_type__gtpc==other_value.field_type__gtpc && field_chargingChar==other_value.field_chargingChar; } boolean ChargingCharacteristics__GTPC::is_bound() const { return (field_type__gtpc.is_bound()) || (field_chargingChar.is_bound()); } boolean ChargingCharacteristics__GTPC::is_value() const { return field_type__gtpc.is_value() && field_chargingChar.is_value(); } void ChargingCharacteristics__GTPC::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ type_gtpc := "); field_type__gtpc.log(); TTCN_Logger::log_event_str(", chargingChar := "); field_chargingChar.log(); TTCN_Logger::log_event_str(" }"); } void ChargingCharacteristics__GTPC::set_implicit_omit() { if (type__gtpc().is_bound()) type__gtpc().set_implicit_omit(); if (chargingChar().is_bound()) chargingChar().set_implicit_omit(); } void ChargingCharacteristics__GTPC::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (20 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) chargingChar().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "chargingChar")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { chargingChar().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.ChargingCharacteristics_GTPC: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@GTPC_Types.ChargingCharacteristics_GTPC"); } } void ChargingCharacteristics__GTPC::encode_text(Text_Buf& text_buf) const { field_type__gtpc.encode_text(text_buf); field_chargingChar.encode_text(text_buf); } void ChargingCharacteristics__GTPC::decode_text(Text_Buf& text_buf) { field_type__gtpc.decode_text(text_buf); field_chargingChar.decode_text(text_buf); } void ChargingCharacteristics__GTPC::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;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void ChargingCharacteristics__GTPC::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;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int ChargingCharacteristics__GTPC::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) { (void)no_err; int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); limit-=prepaddlength; size_t last_decoded_pos = p_buf.get_pos_bit(); int decoded_length = 0; int decoded_field_length = 0; raw_order_t local_top_order; if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; else local_top_order=ORDER_LSB; RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit); decoded_field_length = field_type__gtpc.RAW_decode(General__Types::OCT1_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, General__Types::OCT2_descr_.raw->forceomit); decoded_field_length = field_chargingChar.RAW_decode(General__Types::OCT2_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 (field_type__gtpc != os_8) return -1; p_buf.set_pos_bit(last_decoded_pos); return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); } int ChargingCharacteristics__GTPC::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, General__Types::OCT1_descr_.raw); myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::OCT2_descr_.raw); encoded_length += field_type__gtpc.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]); encoded_length += field_chargingChar.RAW_encode(General__Types::OCT2_descr_, *myleaf.body.node.nodes[1]); if (field_type__gtpc != os_8) { 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){ os_8.RAW_encode(General__Types::OCT1_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 ChargingCharacteristics__GTPC_template::single_value_struct { OCTETSTRING_template field_type__gtpc; OCTETSTRING_template field_chargingChar; }; void ChargingCharacteristics__GTPC_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_type__gtpc = ANY_VALUE; single_value->field_chargingChar = ANY_VALUE; } } } void ChargingCharacteristics__GTPC_template::copy_value(const ChargingCharacteristics__GTPC& other_value) { single_value = new single_value_struct; if (other_value.type__gtpc().is_bound()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (other_value.chargingChar().is_bound()) { single_value->field_chargingChar = other_value.chargingChar(); } else { single_value->field_chargingChar.clean_up(); } set_selection(SPECIFIC_VALUE); } void ChargingCharacteristics__GTPC_template::copy_template(const ChargingCharacteristics__GTPC_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.type__gtpc().get_selection()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.chargingChar().get_selection()) { single_value->field_chargingChar = other_value.chargingChar(); } else { single_value->field_chargingChar.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 ChargingCharacteristics__GTPC_template[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 ChargingCharacteristics__GTPC_template(*other_value.implication_.precondition); implication_.implied_template = new ChargingCharacteristics__GTPC_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 @GTPC_Types.ChargingCharacteristics_GTPC."); break; } set_selection(other_value); } ChargingCharacteristics__GTPC_template::ChargingCharacteristics__GTPC_template() { } ChargingCharacteristics__GTPC_template::ChargingCharacteristics__GTPC_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } ChargingCharacteristics__GTPC_template::ChargingCharacteristics__GTPC_template(const ChargingCharacteristics__GTPC& other_value) { copy_value(other_value); } ChargingCharacteristics__GTPC_template::ChargingCharacteristics__GTPC_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const ChargingCharacteristics__GTPC&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @GTPC_Types.ChargingCharacteristics_GTPC from an unbound optional field."); } } ChargingCharacteristics__GTPC_template::ChargingCharacteristics__GTPC_template(ChargingCharacteristics__GTPC_template* p_precondition, ChargingCharacteristics__GTPC_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } ChargingCharacteristics__GTPC_template::ChargingCharacteristics__GTPC_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } ChargingCharacteristics__GTPC_template::ChargingCharacteristics__GTPC_template(const ChargingCharacteristics__GTPC_template& other_value) : Base_Template() { copy_template(other_value); } ChargingCharacteristics__GTPC_template::~ChargingCharacteristics__GTPC_template() { clean_up(); } ChargingCharacteristics__GTPC_template& ChargingCharacteristics__GTPC_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } ChargingCharacteristics__GTPC_template& ChargingCharacteristics__GTPC_template::operator=(const ChargingCharacteristics__GTPC& other_value) { clean_up(); copy_value(other_value); return *this; } ChargingCharacteristics__GTPC_template& ChargingCharacteristics__GTPC_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const ChargingCharacteristics__GTPC&)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 @GTPC_Types.ChargingCharacteristics_GTPC."); } return *this; } ChargingCharacteristics__GTPC_template& ChargingCharacteristics__GTPC_template::operator=(const ChargingCharacteristics__GTPC_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean ChargingCharacteristics__GTPC_template::match(const ChargingCharacteristics__GTPC& 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.type__gtpc().is_bound()) return FALSE; if(!single_value->field_type__gtpc.match(other_value.type__gtpc(), legacy))return FALSE; if(!other_value.chargingChar().is_bound()) return FALSE; if(!single_value->field_chargingChar.match(other_value.chargingChar(), 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 @GTPC_Types.ChargingCharacteristics_GTPC."); } return FALSE; } boolean ChargingCharacteristics__GTPC_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_type__gtpc.is_bound() || single_value->field_chargingChar.is_bound(); } boolean ChargingCharacteristics__GTPC_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_type__gtpc.is_value() && single_value->field_chargingChar.is_value(); } void ChargingCharacteristics__GTPC_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; } ChargingCharacteristics__GTPC ChargingCharacteristics__GTPC_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 @GTPC_Types.ChargingCharacteristics_GTPC."); ChargingCharacteristics__GTPC ret_val; if (single_value->field_type__gtpc.is_bound()) { ret_val.type__gtpc() = single_value->field_type__gtpc.valueof(); } if (single_value->field_chargingChar.is_bound()) { ret_val.chargingChar() = single_value->field_chargingChar.valueof(); } return ret_val; } void ChargingCharacteristics__GTPC_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 @GTPC_Types.ChargingCharacteristics_GTPC."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new ChargingCharacteristics__GTPC_template[list_length]; } ChargingCharacteristics__GTPC_template& ChargingCharacteristics__GTPC_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 @GTPC_Types.ChargingCharacteristics_GTPC."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @GTPC_Types.ChargingCharacteristics_GTPC."); return value_list.list_value[list_index]; } OCTETSTRING_template& ChargingCharacteristics__GTPC_template::type__gtpc() { set_specific(); return single_value->field_type__gtpc; } const OCTETSTRING_template& ChargingCharacteristics__GTPC_template::type__gtpc() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field type_gtpc of a non-specific template of type @GTPC_Types.ChargingCharacteristics_GTPC."); return single_value->field_type__gtpc; } OCTETSTRING_template& ChargingCharacteristics__GTPC_template::chargingChar() { set_specific(); return single_value->field_chargingChar; } const OCTETSTRING_template& ChargingCharacteristics__GTPC_template::chargingChar() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field chargingChar of a non-specific template of type @GTPC_Types.ChargingCharacteristics_GTPC."); return single_value->field_chargingChar; } int ChargingCharacteristics__GTPC_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.ChargingCharacteristics_GTPC 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 @GTPC_Types.ChargingCharacteristics_GTPC 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 @GTPC_Types.ChargingCharacteristics_GTPC containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.ChargingCharacteristics_GTPC containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.ChargingCharacteristics_GTPC containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.ChargingCharacteristics_GTPC containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.ChargingCharacteristics_GTPC containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.ChargingCharacteristics_GTPC containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.ChargingCharacteristics_GTPC containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @GTPC_Types.ChargingCharacteristics_GTPC."); } return 0; } void ChargingCharacteristics__GTPC_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ type_gtpc := "); single_value->field_type__gtpc.log(); TTCN_Logger::log_event_str(", chargingChar := "); single_value->field_chargingChar.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 ChargingCharacteristics__GTPC_template::log_match(const ChargingCharacteristics__GTPC& 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_type__gtpc.match(match_value.type__gtpc(), legacy)){ TTCN_Logger::log_logmatch_info(".type_gtpc"); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_chargingChar.match(match_value.chargingChar(), legacy)){ TTCN_Logger::log_logmatch_info(".chargingChar"); single_value->field_chargingChar.log_match(match_value.chargingChar(), 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("{ type_gtpc := "); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::log_event_str(", chargingChar := "); single_value->field_chargingChar.log_match(match_value.chargingChar(), 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 ChargingCharacteristics__GTPC_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_type__gtpc.encode_text(text_buf); single_value->field_chargingChar.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 @GTPC_Types.ChargingCharacteristics_GTPC."); } } void ChargingCharacteristics__GTPC_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_type__gtpc.decode_text(text_buf); single_value->field_chargingChar.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 ChargingCharacteristics__GTPC_template[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 @GTPC_Types.ChargingCharacteristics_GTPC."); } } void ChargingCharacteristics__GTPC_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: { ChargingCharacteristics__GTPC_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) chargingChar().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "chargingChar")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { chargingChar().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.ChargingCharacteristics_GTPC: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { ChargingCharacteristics__GTPC_template* precondition = new ChargingCharacteristics__GTPC_template; precondition->set_param(*param.get_elem(0)); ChargingCharacteristics__GTPC_template* implied_template = new ChargingCharacteristics__GTPC_template; implied_template->set_param(*param.get_elem(1)); *this = ChargingCharacteristics__GTPC_template(precondition, implied_template); } break; default: param.type_error("record template", "@GTPC_Types.ChargingCharacteristics_GTPC"); } is_ifpresent = param.get_ifpresent(); } void ChargingCharacteristics__GTPC_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_type__gtpc.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.ChargingCharacteristics_GTPC"); single_value->field_chargingChar.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.ChargingCharacteristics_GTPC"); 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 : "@GTPC_Types.ChargingCharacteristics_GTPC"); } boolean ChargingCharacteristics__GTPC_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean ChargingCharacteristics__GTPC_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) trace__ref().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "trace_ref")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { trace__ref().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.TraceRef: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@GTPC_Types.TraceRef"); } } void TraceRef::encode_text(Text_Buf& text_buf) const { field_type__gtpc.encode_text(text_buf); field_trace__ref.encode_text(text_buf); } void TraceRef::decode_text(Text_Buf& text_buf) { field_type__gtpc.decode_text(text_buf); field_trace__ref.decode_text(text_buf); } void TraceRef::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;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void TraceRef::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;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int TraceRef::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) { (void)no_err; int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); limit-=prepaddlength; size_t last_decoded_pos = p_buf.get_pos_bit(); int decoded_length = 0; int decoded_field_length = 0; raw_order_t local_top_order; if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; else local_top_order=ORDER_LSB; RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit); decoded_field_length = field_type__gtpc.RAW_decode(General__Types::OCT1_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, General__Types::OCT2_descr_.raw->forceomit); decoded_field_length = field_trace__ref.RAW_decode(General__Types::OCT2_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 (field_type__gtpc != os_9) return -1; p_buf.set_pos_bit(last_decoded_pos); return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); } int TraceRef::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, General__Types::OCT1_descr_.raw); myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::OCT2_descr_.raw); encoded_length += field_type__gtpc.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]); encoded_length += field_trace__ref.RAW_encode(General__Types::OCT2_descr_, *myleaf.body.node.nodes[1]); if (field_type__gtpc != os_9) { 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){ os_9.RAW_encode(General__Types::OCT1_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 TraceRef_template::single_value_struct { OCTETSTRING_template field_type__gtpc; OCTETSTRING_template field_trace__ref; }; void TraceRef_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_type__gtpc = ANY_VALUE; single_value->field_trace__ref = ANY_VALUE; } } } void TraceRef_template::copy_value(const TraceRef& other_value) { single_value = new single_value_struct; if (other_value.type__gtpc().is_bound()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (other_value.trace__ref().is_bound()) { single_value->field_trace__ref = other_value.trace__ref(); } else { single_value->field_trace__ref.clean_up(); } set_selection(SPECIFIC_VALUE); } void TraceRef_template::copy_template(const TraceRef_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.type__gtpc().get_selection()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.trace__ref().get_selection()) { single_value->field_trace__ref = other_value.trace__ref(); } else { single_value->field_trace__ref.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 TraceRef_template[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 TraceRef_template(*other_value.implication_.precondition); implication_.implied_template = new TraceRef_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 @GTPC_Types.TraceRef."); break; } set_selection(other_value); } TraceRef_template::TraceRef_template() { } TraceRef_template::TraceRef_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } TraceRef_template::TraceRef_template(const TraceRef& other_value) { copy_value(other_value); } TraceRef_template::TraceRef_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const TraceRef&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @GTPC_Types.TraceRef from an unbound optional field."); } } TraceRef_template::TraceRef_template(TraceRef_template* p_precondition, TraceRef_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } TraceRef_template::TraceRef_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } TraceRef_template::TraceRef_template(const TraceRef_template& other_value) : Base_Template() { copy_template(other_value); } TraceRef_template::~TraceRef_template() { clean_up(); } TraceRef_template& TraceRef_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } TraceRef_template& TraceRef_template::operator=(const TraceRef& other_value) { clean_up(); copy_value(other_value); return *this; } TraceRef_template& TraceRef_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const TraceRef&)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 @GTPC_Types.TraceRef."); } return *this; } TraceRef_template& TraceRef_template::operator=(const TraceRef_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean TraceRef_template::match(const TraceRef& 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.type__gtpc().is_bound()) return FALSE; if(!single_value->field_type__gtpc.match(other_value.type__gtpc(), legacy))return FALSE; if(!other_value.trace__ref().is_bound()) return FALSE; if(!single_value->field_trace__ref.match(other_value.trace__ref(), 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 @GTPC_Types.TraceRef."); } return FALSE; } boolean TraceRef_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_type__gtpc.is_bound() || single_value->field_trace__ref.is_bound(); } boolean TraceRef_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_type__gtpc.is_value() && single_value->field_trace__ref.is_value(); } void TraceRef_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; } TraceRef TraceRef_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 @GTPC_Types.TraceRef."); TraceRef ret_val; if (single_value->field_type__gtpc.is_bound()) { ret_val.type__gtpc() = single_value->field_type__gtpc.valueof(); } if (single_value->field_trace__ref.is_bound()) { ret_val.trace__ref() = single_value->field_trace__ref.valueof(); } return ret_val; } void TraceRef_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 @GTPC_Types.TraceRef."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new TraceRef_template[list_length]; } TraceRef_template& TraceRef_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 @GTPC_Types.TraceRef."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @GTPC_Types.TraceRef."); return value_list.list_value[list_index]; } OCTETSTRING_template& TraceRef_template::type__gtpc() { set_specific(); return single_value->field_type__gtpc; } const OCTETSTRING_template& TraceRef_template::type__gtpc() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field type_gtpc of a non-specific template of type @GTPC_Types.TraceRef."); return single_value->field_type__gtpc; } OCTETSTRING_template& TraceRef_template::trace__ref() { set_specific(); return single_value->field_trace__ref; } const OCTETSTRING_template& TraceRef_template::trace__ref() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field trace_ref of a non-specific template of type @GTPC_Types.TraceRef."); return single_value->field_trace__ref; } int TraceRef_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TraceRef 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 @GTPC_Types.TraceRef 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 @GTPC_Types.TraceRef containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TraceRef containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TraceRef containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TraceRef containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TraceRef containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TraceRef containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.TraceRef containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @GTPC_Types.TraceRef."); } return 0; } void TraceRef_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ type_gtpc := "); single_value->field_type__gtpc.log(); TTCN_Logger::log_event_str(", trace_ref := "); single_value->field_trace__ref.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 TraceRef_template::log_match(const TraceRef& 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_type__gtpc.match(match_value.type__gtpc(), legacy)){ TTCN_Logger::log_logmatch_info(".type_gtpc"); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_trace__ref.match(match_value.trace__ref(), legacy)){ TTCN_Logger::log_logmatch_info(".trace_ref"); single_value->field_trace__ref.log_match(match_value.trace__ref(), 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("{ type_gtpc := "); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::log_event_str(", trace_ref := "); single_value->field_trace__ref.log_match(match_value.trace__ref(), 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 TraceRef_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_type__gtpc.encode_text(text_buf); single_value->field_trace__ref.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 @GTPC_Types.TraceRef."); } } void TraceRef_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_type__gtpc.decode_text(text_buf); single_value->field_trace__ref.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 TraceRef_template[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 @GTPC_Types.TraceRef."); } } void TraceRef_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: { TraceRef_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) trace__ref().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "trace_ref")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { trace__ref().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.TraceRef: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { TraceRef_template* precondition = new TraceRef_template; precondition->set_param(*param.get_elem(0)); TraceRef_template* implied_template = new TraceRef_template; implied_template->set_param(*param.get_elem(1)); *this = TraceRef_template(precondition, implied_template); } break; default: param.type_error("record template", "@GTPC_Types.TraceRef"); } is_ifpresent = param.get_ifpresent(); } void TraceRef_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_type__gtpc.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.TraceRef"); single_value->field_trace__ref.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.TraceRef"); 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 : "@GTPC_Types.TraceRef"); } boolean TraceRef_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean TraceRef_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) trace__type().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "trace_type")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { trace__type().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.GTP_TraceType: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@GTPC_Types.GTP_TraceType"); } } void GTP__TraceType::encode_text(Text_Buf& text_buf) const { field_type__gtpc.encode_text(text_buf); field_trace__type.encode_text(text_buf); } void GTP__TraceType::decode_text(Text_Buf& text_buf) { field_type__gtpc.decode_text(text_buf); field_trace__type.decode_text(text_buf); } void GTP__TraceType::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;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void GTP__TraceType::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;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int GTP__TraceType::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) { (void)no_err; int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); limit-=prepaddlength; size_t last_decoded_pos = p_buf.get_pos_bit(); int decoded_length = 0; int decoded_field_length = 0; raw_order_t local_top_order; if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; else local_top_order=ORDER_LSB; RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit); decoded_field_length = field_type__gtpc.RAW_decode(General__Types::OCT1_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, General__Types::OCT2_descr_.raw->forceomit); decoded_field_length = field_trace__type.RAW_decode(General__Types::OCT2_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 (field_type__gtpc != os_10) return -1; p_buf.set_pos_bit(last_decoded_pos); return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); } int GTP__TraceType::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, General__Types::OCT1_descr_.raw); myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::OCT2_descr_.raw); encoded_length += field_type__gtpc.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]); encoded_length += field_trace__type.RAW_encode(General__Types::OCT2_descr_, *myleaf.body.node.nodes[1]); if (field_type__gtpc != os_10) { 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){ os_10.RAW_encode(General__Types::OCT1_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 GTP__TraceType_template::single_value_struct { OCTETSTRING_template field_type__gtpc; OCTETSTRING_template field_trace__type; }; void GTP__TraceType_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_type__gtpc = ANY_VALUE; single_value->field_trace__type = ANY_VALUE; } } } void GTP__TraceType_template::copy_value(const GTP__TraceType& other_value) { single_value = new single_value_struct; if (other_value.type__gtpc().is_bound()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (other_value.trace__type().is_bound()) { single_value->field_trace__type = other_value.trace__type(); } else { single_value->field_trace__type.clean_up(); } set_selection(SPECIFIC_VALUE); } void GTP__TraceType_template::copy_template(const GTP__TraceType_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.type__gtpc().get_selection()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.trace__type().get_selection()) { single_value->field_trace__type = other_value.trace__type(); } else { single_value->field_trace__type.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 GTP__TraceType_template[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 GTP__TraceType_template(*other_value.implication_.precondition); implication_.implied_template = new GTP__TraceType_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 @GTPC_Types.GTP_TraceType."); break; } set_selection(other_value); } GTP__TraceType_template::GTP__TraceType_template() { } GTP__TraceType_template::GTP__TraceType_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } GTP__TraceType_template::GTP__TraceType_template(const GTP__TraceType& other_value) { copy_value(other_value); } GTP__TraceType_template::GTP__TraceType_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const GTP__TraceType&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @GTPC_Types.GTP_TraceType from an unbound optional field."); } } GTP__TraceType_template::GTP__TraceType_template(GTP__TraceType_template* p_precondition, GTP__TraceType_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } GTP__TraceType_template::GTP__TraceType_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } GTP__TraceType_template::GTP__TraceType_template(const GTP__TraceType_template& other_value) : Base_Template() { copy_template(other_value); } GTP__TraceType_template::~GTP__TraceType_template() { clean_up(); } GTP__TraceType_template& GTP__TraceType_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } GTP__TraceType_template& GTP__TraceType_template::operator=(const GTP__TraceType& other_value) { clean_up(); copy_value(other_value); return *this; } GTP__TraceType_template& GTP__TraceType_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const GTP__TraceType&)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 @GTPC_Types.GTP_TraceType."); } return *this; } GTP__TraceType_template& GTP__TraceType_template::operator=(const GTP__TraceType_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean GTP__TraceType_template::match(const GTP__TraceType& 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.type__gtpc().is_bound()) return FALSE; if(!single_value->field_type__gtpc.match(other_value.type__gtpc(), legacy))return FALSE; if(!other_value.trace__type().is_bound()) return FALSE; if(!single_value->field_trace__type.match(other_value.trace__type(), 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 @GTPC_Types.GTP_TraceType."); } return FALSE; } boolean GTP__TraceType_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_type__gtpc.is_bound() || single_value->field_trace__type.is_bound(); } boolean GTP__TraceType_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_type__gtpc.is_value() && single_value->field_trace__type.is_value(); } void GTP__TraceType_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; } GTP__TraceType GTP__TraceType_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 @GTPC_Types.GTP_TraceType."); GTP__TraceType ret_val; if (single_value->field_type__gtpc.is_bound()) { ret_val.type__gtpc() = single_value->field_type__gtpc.valueof(); } if (single_value->field_trace__type.is_bound()) { ret_val.trace__type() = single_value->field_trace__type.valueof(); } return ret_val; } void GTP__TraceType_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 @GTPC_Types.GTP_TraceType."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new GTP__TraceType_template[list_length]; } GTP__TraceType_template& GTP__TraceType_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 @GTPC_Types.GTP_TraceType."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @GTPC_Types.GTP_TraceType."); return value_list.list_value[list_index]; } OCTETSTRING_template& GTP__TraceType_template::type__gtpc() { set_specific(); return single_value->field_type__gtpc; } const OCTETSTRING_template& GTP__TraceType_template::type__gtpc() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field type_gtpc of a non-specific template of type @GTPC_Types.GTP_TraceType."); return single_value->field_type__gtpc; } OCTETSTRING_template& GTP__TraceType_template::trace__type() { set_specific(); return single_value->field_trace__type; } const OCTETSTRING_template& GTP__TraceType_template::trace__type() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field trace_type of a non-specific template of type @GTPC_Types.GTP_TraceType."); return single_value->field_trace__type; } int GTP__TraceType_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.GTP_TraceType 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 @GTPC_Types.GTP_TraceType 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 @GTPC_Types.GTP_TraceType containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.GTP_TraceType containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.GTP_TraceType containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.GTP_TraceType containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.GTP_TraceType containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.GTP_TraceType containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.GTP_TraceType containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @GTPC_Types.GTP_TraceType."); } return 0; } void GTP__TraceType_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ type_gtpc := "); single_value->field_type__gtpc.log(); TTCN_Logger::log_event_str(", trace_type := "); single_value->field_trace__type.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 GTP__TraceType_template::log_match(const GTP__TraceType& 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_type__gtpc.match(match_value.type__gtpc(), legacy)){ TTCN_Logger::log_logmatch_info(".type_gtpc"); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_trace__type.match(match_value.trace__type(), legacy)){ TTCN_Logger::log_logmatch_info(".trace_type"); single_value->field_trace__type.log_match(match_value.trace__type(), 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("{ type_gtpc := "); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::log_event_str(", trace_type := "); single_value->field_trace__type.log_match(match_value.trace__type(), 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 GTP__TraceType_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_type__gtpc.encode_text(text_buf); single_value->field_trace__type.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 @GTPC_Types.GTP_TraceType."); } } void GTP__TraceType_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_type__gtpc.decode_text(text_buf); single_value->field_trace__type.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 GTP__TraceType_template[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 @GTPC_Types.GTP_TraceType."); } } void GTP__TraceType_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: { GTP__TraceType_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) trace__type().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "trace_type")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { trace__type().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.GTP_TraceType: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { GTP__TraceType_template* precondition = new GTP__TraceType_template; precondition->set_param(*param.get_elem(0)); GTP__TraceType_template* implied_template = new GTP__TraceType_template; implied_template->set_param(*param.get_elem(1)); *this = GTP__TraceType_template(precondition, implied_template); } break; default: param.type_error("record template", "@GTPC_Types.GTP_TraceType"); } is_ifpresent = param.get_ifpresent(); } void GTP__TraceType_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_type__gtpc.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.GTP_TraceType"); single_value->field_trace__type.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.GTP_TraceType"); 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 : "@GTPC_Types.GTP_TraceType"); } boolean GTP__TraceType_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean GTP__TraceType_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reason__for__absence().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "reason_for_absence")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { reason__for__absence().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.MSNotReachableReason: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@GTPC_Types.MSNotReachableReason"); } } void MSNotReachableReason::encode_text(Text_Buf& text_buf) const { field_type__gtpc.encode_text(text_buf); field_reason__for__absence.encode_text(text_buf); } void MSNotReachableReason::decode_text(Text_Buf& text_buf) { field_type__gtpc.decode_text(text_buf); field_reason__for__absence.decode_text(text_buf); } void MSNotReachableReason::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;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void MSNotReachableReason::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;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int MSNotReachableReason::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) { (void)no_err; int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); limit-=prepaddlength; size_t last_decoded_pos = p_buf.get_pos_bit(); int decoded_length = 0; int decoded_field_length = 0; raw_order_t local_top_order; if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; else local_top_order=ORDER_LSB; RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit); decoded_field_length = field_type__gtpc.RAW_decode(General__Types::OCT1_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, General__Types::OCT1_descr_.raw->forceomit); decoded_field_length = field_reason__for__absence.RAW_decode(General__Types::OCT1_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 (field_type__gtpc != os_51) return -1; p_buf.set_pos_bit(last_decoded_pos); return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); } int MSNotReachableReason::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, General__Types::OCT1_descr_.raw); myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::OCT1_descr_.raw); encoded_length += field_type__gtpc.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]); encoded_length += field_reason__for__absence.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[1]); if (field_type__gtpc != os_51) { 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){ os_51.RAW_encode(General__Types::OCT1_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 MSNotReachableReason_template::single_value_struct { OCTETSTRING_template field_type__gtpc; OCTETSTRING_template field_reason__for__absence; }; void MSNotReachableReason_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_type__gtpc = ANY_VALUE; single_value->field_reason__for__absence = ANY_VALUE; } } } void MSNotReachableReason_template::copy_value(const MSNotReachableReason& other_value) { single_value = new single_value_struct; if (other_value.type__gtpc().is_bound()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (other_value.reason__for__absence().is_bound()) { single_value->field_reason__for__absence = other_value.reason__for__absence(); } else { single_value->field_reason__for__absence.clean_up(); } set_selection(SPECIFIC_VALUE); } void MSNotReachableReason_template::copy_template(const MSNotReachableReason_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.type__gtpc().get_selection()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.reason__for__absence().get_selection()) { single_value->field_reason__for__absence = other_value.reason__for__absence(); } else { single_value->field_reason__for__absence.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 MSNotReachableReason_template[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 MSNotReachableReason_template(*other_value.implication_.precondition); implication_.implied_template = new MSNotReachableReason_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 @GTPC_Types.MSNotReachableReason."); break; } set_selection(other_value); } MSNotReachableReason_template::MSNotReachableReason_template() { } MSNotReachableReason_template::MSNotReachableReason_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } MSNotReachableReason_template::MSNotReachableReason_template(const MSNotReachableReason& other_value) { copy_value(other_value); } MSNotReachableReason_template::MSNotReachableReason_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const MSNotReachableReason&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @GTPC_Types.MSNotReachableReason from an unbound optional field."); } } MSNotReachableReason_template::MSNotReachableReason_template(MSNotReachableReason_template* p_precondition, MSNotReachableReason_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } MSNotReachableReason_template::MSNotReachableReason_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } MSNotReachableReason_template::MSNotReachableReason_template(const MSNotReachableReason_template& other_value) : Base_Template() { copy_template(other_value); } MSNotReachableReason_template::~MSNotReachableReason_template() { clean_up(); } MSNotReachableReason_template& MSNotReachableReason_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } MSNotReachableReason_template& MSNotReachableReason_template::operator=(const MSNotReachableReason& other_value) { clean_up(); copy_value(other_value); return *this; } MSNotReachableReason_template& MSNotReachableReason_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const MSNotReachableReason&)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 @GTPC_Types.MSNotReachableReason."); } return *this; } MSNotReachableReason_template& MSNotReachableReason_template::operator=(const MSNotReachableReason_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean MSNotReachableReason_template::match(const MSNotReachableReason& 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.type__gtpc().is_bound()) return FALSE; if(!single_value->field_type__gtpc.match(other_value.type__gtpc(), legacy))return FALSE; if(!other_value.reason__for__absence().is_bound()) return FALSE; if(!single_value->field_reason__for__absence.match(other_value.reason__for__absence(), 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 @GTPC_Types.MSNotReachableReason."); } return FALSE; } boolean MSNotReachableReason_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_type__gtpc.is_bound() || single_value->field_reason__for__absence.is_bound(); } boolean MSNotReachableReason_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_type__gtpc.is_value() && single_value->field_reason__for__absence.is_value(); } void MSNotReachableReason_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; } MSNotReachableReason MSNotReachableReason_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 @GTPC_Types.MSNotReachableReason."); MSNotReachableReason ret_val; if (single_value->field_type__gtpc.is_bound()) { ret_val.type__gtpc() = single_value->field_type__gtpc.valueof(); } if (single_value->field_reason__for__absence.is_bound()) { ret_val.reason__for__absence() = single_value->field_reason__for__absence.valueof(); } return ret_val; } void MSNotReachableReason_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 @GTPC_Types.MSNotReachableReason."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new MSNotReachableReason_template[list_length]; } MSNotReachableReason_template& MSNotReachableReason_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 @GTPC_Types.MSNotReachableReason."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @GTPC_Types.MSNotReachableReason."); return value_list.list_value[list_index]; } OCTETSTRING_template& MSNotReachableReason_template::type__gtpc() { set_specific(); return single_value->field_type__gtpc; } const OCTETSTRING_template& MSNotReachableReason_template::type__gtpc() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field type_gtpc of a non-specific template of type @GTPC_Types.MSNotReachableReason."); return single_value->field_type__gtpc; } OCTETSTRING_template& MSNotReachableReason_template::reason__for__absence() { set_specific(); return single_value->field_reason__for__absence; } const OCTETSTRING_template& MSNotReachableReason_template::reason__for__absence() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field reason_for_absence of a non-specific template of type @GTPC_Types.MSNotReachableReason."); return single_value->field_reason__for__absence; } int MSNotReachableReason_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.MSNotReachableReason 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 @GTPC_Types.MSNotReachableReason 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 @GTPC_Types.MSNotReachableReason containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.MSNotReachableReason containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.MSNotReachableReason containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.MSNotReachableReason containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.MSNotReachableReason containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.MSNotReachableReason containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.MSNotReachableReason containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @GTPC_Types.MSNotReachableReason."); } return 0; } void MSNotReachableReason_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ type_gtpc := "); single_value->field_type__gtpc.log(); TTCN_Logger::log_event_str(", reason_for_absence := "); single_value->field_reason__for__absence.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 MSNotReachableReason_template::log_match(const MSNotReachableReason& 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_type__gtpc.match(match_value.type__gtpc(), legacy)){ TTCN_Logger::log_logmatch_info(".type_gtpc"); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_reason__for__absence.match(match_value.reason__for__absence(), legacy)){ TTCN_Logger::log_logmatch_info(".reason_for_absence"); single_value->field_reason__for__absence.log_match(match_value.reason__for__absence(), 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("{ type_gtpc := "); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::log_event_str(", reason_for_absence := "); single_value->field_reason__for__absence.log_match(match_value.reason__for__absence(), 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 MSNotReachableReason_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_type__gtpc.encode_text(text_buf); single_value->field_reason__for__absence.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 @GTPC_Types.MSNotReachableReason."); } } void MSNotReachableReason_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_type__gtpc.decode_text(text_buf); single_value->field_reason__for__absence.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 MSNotReachableReason_template[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 @GTPC_Types.MSNotReachableReason."); } } void MSNotReachableReason_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: { MSNotReachableReason_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reason__for__absence().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "reason_for_absence")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { reason__for__absence().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.MSNotReachableReason: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { MSNotReachableReason_template* precondition = new MSNotReachableReason_template; precondition->set_param(*param.get_elem(0)); MSNotReachableReason_template* implied_template = new MSNotReachableReason_template; implied_template->set_param(*param.get_elem(1)); *this = MSNotReachableReason_template(precondition, implied_template); } break; default: param.type_error("record template", "@GTPC_Types.MSNotReachableReason"); } is_ifpresent = param.get_ifpresent(); } void MSNotReachableReason_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_type__gtpc.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.MSNotReachableReason"); single_value->field_reason__for__absence.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.MSNotReachableReason"); 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 : "@GTPC_Types.MSNotReachableReason"); } boolean MSNotReachableReason_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean MSNotReachableReason_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) lengthf().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) radioPriorityLCS().set_param(*param.get_elem(2)); if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved().set_param(*param.get_elem(3)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "lengthf")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { lengthf().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "radioPriorityLCS")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { radioPriorityLCS().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_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_idxerror("Non existent field name in type @GTPC_Types.RadioPriorityLCS: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@GTPC_Types.RadioPriorityLCS"); } } void RadioPriorityLCS::encode_text(Text_Buf& text_buf) const { field_type__gtpc.encode_text(text_buf); field_lengthf.encode_text(text_buf); field_radioPriorityLCS.encode_text(text_buf); field_reserved.encode_text(text_buf); } void RadioPriorityLCS::decode_text(Text_Buf& text_buf) { field_type__gtpc.decode_text(text_buf); field_lengthf.decode_text(text_buf); field_radioPriorityLCS.decode_text(text_buf); field_reserved.decode_text(text_buf); } void RadioPriorityLCS::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;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void RadioPriorityLCS::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;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int RadioPriorityLCS::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_field1 = 0; RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit); decoded_field_length = field_type__gtpc.RAW_decode(General__Types::OCT1_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, RadioPriorityLCS_lengthf_descr_.raw->forceomit); decoded_field_length = field_lengthf.RAW_decode(RadioPriorityLCS_lengthf_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()); INTEGER tmp1 = field_lengthf.convert_to_Integer(RadioPriorityLCS_lengthf_descr_); field_lengthf = tmp1; value_of_length_field1 += tmp1.get_long_long_val() * 8; RAW_Force_Omit field_2_force_omit(2, force_omit, General__Types::BIT3_descr_.raw->forceomit); decoded_field_length = field_radioPriorityLCS.RAW_decode(General__Types::BIT3_descr_, p_buf, min_of_ints(2, limit, value_of_length_field1), local_top_order, no_err, -1, TRUE, &field_2_force_omit); if (decoded_field_length < 0) return decoded_field_length; decoded_length+=decoded_field_length; limit-=decoded_field_length; last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); value_of_length_field1 -= decoded_field_length; RAW_Force_Omit field_3_force_omit(3, force_omit, General__Types::BIT5_descr_.raw->forceomit); decoded_field_length = field_reserved.RAW_decode(General__Types::BIT5_descr_, p_buf, min_of_ints(2, limit, value_of_length_field1), 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_field1 -= decoded_field_length; if (field_type__gtpc != os_68) return -1; p_buf.set_pos_bit(last_decoded_pos); return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); } int RadioPriorityLCS::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); int encoded_length = 0; myleaf.isleaf = FALSE; myleaf.body.node.num_of_nodes = 4; myleaf.body.node.nodes = init_nodes_of_enc_tree(4); myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, General__Types::OCT1_descr_.raw); myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, RadioPriorityLCS_lengthf_descr_.raw); myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, General__Types::BIT3_descr_.raw); myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, General__Types::BIT5_descr_.raw); encoded_length += field_type__gtpc.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]); encoded_length += 16; myleaf.body.node.nodes[1]->calc = CALC_LENGTH; myleaf.body.node.nodes[1]->coding_descr = &RadioPriorityLCS_lengthf_descr_; myleaf.body.node.nodes[1]->calcof.lengthto.num_of_fields = 2; myleaf.body.node.nodes[1]->calcof.lengthto.unit = 8; myleaf.body.node.nodes[1]->calcof.lengthto.offset = 0; myleaf.body.node.nodes[1]->calcof.lengthto.fields = init_lengthto_fields_list(2); myleaf.body.node.nodes[1]->length = 16; myleaf.body.node.nodes[1]->calcof.lengthto.fields[0].level = myleaf.body.node.nodes[2]->curr_pos.level; myleaf.body.node.nodes[1]->calcof.lengthto.fields[0].pos = myleaf.body.node.nodes[2]->curr_pos.pos; myleaf.body.node.nodes[1]->calcof.lengthto.fields[1].level = myleaf.body.node.nodes[3]->curr_pos.level; myleaf.body.node.nodes[1]->calcof.lengthto.fields[1].pos = myleaf.body.node.nodes[3]->curr_pos.pos; encoded_length += field_radioPriorityLCS.RAW_encode(General__Types::BIT3_descr_, *myleaf.body.node.nodes[2]); encoded_length += field_reserved.RAW_encode(General__Types::BIT5_descr_, *myleaf.body.node.nodes[3]); if (field_type__gtpc != os_68) { 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){ os_68.RAW_encode(General__Types::OCT1_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 RadioPriorityLCS_template::single_value_struct { OCTETSTRING_template field_type__gtpc; INTEGER_template field_lengthf; BITSTRING_template field_radioPriorityLCS; BITSTRING_template field_reserved; }; void RadioPriorityLCS_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_type__gtpc = ANY_VALUE; single_value->field_lengthf = ANY_VALUE; single_value->field_radioPriorityLCS = ANY_VALUE; single_value->field_reserved = ANY_VALUE; } } } void RadioPriorityLCS_template::copy_value(const RadioPriorityLCS& other_value) { single_value = new single_value_struct; if (other_value.type__gtpc().is_bound()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (other_value.lengthf().is_bound()) { single_value->field_lengthf = other_value.lengthf(); } else { single_value->field_lengthf.clean_up(); } if (other_value.radioPriorityLCS().is_bound()) { single_value->field_radioPriorityLCS = other_value.radioPriorityLCS(); } else { single_value->field_radioPriorityLCS.clean_up(); } if (other_value.reserved().is_bound()) { single_value->field_reserved = other_value.reserved(); } else { single_value->field_reserved.clean_up(); } set_selection(SPECIFIC_VALUE); } void RadioPriorityLCS_template::copy_template(const RadioPriorityLCS_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.type__gtpc().get_selection()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.lengthf().get_selection()) { single_value->field_lengthf = other_value.lengthf(); } else { single_value->field_lengthf.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.radioPriorityLCS().get_selection()) { single_value->field_radioPriorityLCS = other_value.radioPriorityLCS(); } else { single_value->field_radioPriorityLCS.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.reserved().get_selection()) { single_value->field_reserved = other_value.reserved(); } else { single_value->field_reserved.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new RadioPriorityLCS_template[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 RadioPriorityLCS_template(*other_value.implication_.precondition); implication_.implied_template = new RadioPriorityLCS_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 @GTPC_Types.RadioPriorityLCS."); break; } set_selection(other_value); } RadioPriorityLCS_template::RadioPriorityLCS_template() { } RadioPriorityLCS_template::RadioPriorityLCS_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } RadioPriorityLCS_template::RadioPriorityLCS_template(const RadioPriorityLCS& other_value) { copy_value(other_value); } RadioPriorityLCS_template::RadioPriorityLCS_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const RadioPriorityLCS&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @GTPC_Types.RadioPriorityLCS from an unbound optional field."); } } RadioPriorityLCS_template::RadioPriorityLCS_template(RadioPriorityLCS_template* p_precondition, RadioPriorityLCS_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } RadioPriorityLCS_template::RadioPriorityLCS_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } RadioPriorityLCS_template::RadioPriorityLCS_template(const RadioPriorityLCS_template& other_value) : Base_Template() { copy_template(other_value); } RadioPriorityLCS_template::~RadioPriorityLCS_template() { clean_up(); } RadioPriorityLCS_template& RadioPriorityLCS_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } RadioPriorityLCS_template& RadioPriorityLCS_template::operator=(const RadioPriorityLCS& other_value) { clean_up(); copy_value(other_value); return *this; } RadioPriorityLCS_template& RadioPriorityLCS_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const RadioPriorityLCS&)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 @GTPC_Types.RadioPriorityLCS."); } return *this; } RadioPriorityLCS_template& RadioPriorityLCS_template::operator=(const RadioPriorityLCS_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean RadioPriorityLCS_template::match(const RadioPriorityLCS& 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.type__gtpc().is_bound()) return FALSE; if(!single_value->field_type__gtpc.match(other_value.type__gtpc(), legacy))return FALSE; if(!other_value.lengthf().is_bound()) return FALSE; if(!single_value->field_lengthf.match(other_value.lengthf(), legacy))return FALSE; if(!other_value.radioPriorityLCS().is_bound()) return FALSE; if(!single_value->field_radioPriorityLCS.match(other_value.radioPriorityLCS(), legacy))return FALSE; if(!other_value.reserved().is_bound()) return FALSE; if(!single_value->field_reserved.match(other_value.reserved(), legacy))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; 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 @GTPC_Types.RadioPriorityLCS."); } return FALSE; } boolean RadioPriorityLCS_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_type__gtpc.is_bound() || single_value->field_lengthf.is_bound() || single_value->field_radioPriorityLCS.is_bound() || single_value->field_reserved.is_bound(); } boolean RadioPriorityLCS_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_type__gtpc.is_value() && single_value->field_lengthf.is_value() && single_value->field_radioPriorityLCS.is_value() && single_value->field_reserved.is_value(); } void RadioPriorityLCS_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; } RadioPriorityLCS RadioPriorityLCS_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 @GTPC_Types.RadioPriorityLCS."); RadioPriorityLCS ret_val; if (single_value->field_type__gtpc.is_bound()) { ret_val.type__gtpc() = single_value->field_type__gtpc.valueof(); } if (single_value->field_lengthf.is_bound()) { ret_val.lengthf() = single_value->field_lengthf.valueof(); } if (single_value->field_radioPriorityLCS.is_bound()) { ret_val.radioPriorityLCS() = single_value->field_radioPriorityLCS.valueof(); } if (single_value->field_reserved.is_bound()) { ret_val.reserved() = single_value->field_reserved.valueof(); } return ret_val; } void RadioPriorityLCS_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 @GTPC_Types.RadioPriorityLCS."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new RadioPriorityLCS_template[list_length]; } RadioPriorityLCS_template& RadioPriorityLCS_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 @GTPC_Types.RadioPriorityLCS."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @GTPC_Types.RadioPriorityLCS."); return value_list.list_value[list_index]; } OCTETSTRING_template& RadioPriorityLCS_template::type__gtpc() { set_specific(); return single_value->field_type__gtpc; } const OCTETSTRING_template& RadioPriorityLCS_template::type__gtpc() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field type_gtpc of a non-specific template of type @GTPC_Types.RadioPriorityLCS."); return single_value->field_type__gtpc; } INTEGER_template& RadioPriorityLCS_template::lengthf() { set_specific(); return single_value->field_lengthf; } const INTEGER_template& RadioPriorityLCS_template::lengthf() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field lengthf of a non-specific template of type @GTPC_Types.RadioPriorityLCS."); return single_value->field_lengthf; } BITSTRING_template& RadioPriorityLCS_template::radioPriorityLCS() { set_specific(); return single_value->field_radioPriorityLCS; } const BITSTRING_template& RadioPriorityLCS_template::radioPriorityLCS() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field radioPriorityLCS of a non-specific template of type @GTPC_Types.RadioPriorityLCS."); return single_value->field_radioPriorityLCS; } BITSTRING_template& RadioPriorityLCS_template::reserved() { set_specific(); return single_value->field_reserved; } const BITSTRING_template& RadioPriorityLCS_template::reserved() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field reserved of a non-specific template of type @GTPC_Types.RadioPriorityLCS."); return single_value->field_reserved; } int RadioPriorityLCS_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RadioPriorityLCS 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 @GTPC_Types.RadioPriorityLCS 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 @GTPC_Types.RadioPriorityLCS containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RadioPriorityLCS containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RadioPriorityLCS containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RadioPriorityLCS containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RadioPriorityLCS containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RadioPriorityLCS containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.RadioPriorityLCS containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @GTPC_Types.RadioPriorityLCS."); } return 0; } void RadioPriorityLCS_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ type_gtpc := "); single_value->field_type__gtpc.log(); TTCN_Logger::log_event_str(", lengthf := "); single_value->field_lengthf.log(); TTCN_Logger::log_event_str(", radioPriorityLCS := "); single_value->field_radioPriorityLCS.log(); TTCN_Logger::log_event_str(", reserved := "); single_value->field_reserved.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case 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 RadioPriorityLCS_template::log_match(const RadioPriorityLCS& 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_type__gtpc.match(match_value.type__gtpc(), legacy)){ TTCN_Logger::log_logmatch_info(".type_gtpc"); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_lengthf.match(match_value.lengthf(), legacy)){ TTCN_Logger::log_logmatch_info(".lengthf"); single_value->field_lengthf.log_match(match_value.lengthf(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_radioPriorityLCS.match(match_value.radioPriorityLCS(), legacy)){ TTCN_Logger::log_logmatch_info(".radioPriorityLCS"); single_value->field_radioPriorityLCS.log_match(match_value.radioPriorityLCS(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_reserved.match(match_value.reserved(), legacy)){ TTCN_Logger::log_logmatch_info(".reserved"); single_value->field_reserved.log_match(match_value.reserved(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ type_gtpc := "); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::log_event_str(", lengthf := "); single_value->field_lengthf.log_match(match_value.lengthf(), legacy); TTCN_Logger::log_event_str(", radioPriorityLCS := "); single_value->field_radioPriorityLCS.log_match(match_value.radioPriorityLCS(), legacy); TTCN_Logger::log_event_str(", reserved := "); single_value->field_reserved.log_match(match_value.reserved(), legacy); TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void RadioPriorityLCS_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_type__gtpc.encode_text(text_buf); single_value->field_lengthf.encode_text(text_buf); single_value->field_radioPriorityLCS.encode_text(text_buf); single_value->field_reserved.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @GTPC_Types.RadioPriorityLCS."); } } void RadioPriorityLCS_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_type__gtpc.decode_text(text_buf); single_value->field_lengthf.decode_text(text_buf); single_value->field_radioPriorityLCS.decode_text(text_buf); single_value->field_reserved.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new RadioPriorityLCS_template[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 @GTPC_Types.RadioPriorityLCS."); } } void RadioPriorityLCS_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: { RadioPriorityLCS_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) lengthf().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) radioPriorityLCS().set_param(*param.get_elem(2)); if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved().set_param(*param.get_elem(3)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "lengthf")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { lengthf().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "radioPriorityLCS")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { radioPriorityLCS().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_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_idxerror("Non existent field name in type @GTPC_Types.RadioPriorityLCS: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { RadioPriorityLCS_template* precondition = new RadioPriorityLCS_template; precondition->set_param(*param.get_elem(0)); RadioPriorityLCS_template* implied_template = new RadioPriorityLCS_template; implied_template->set_param(*param.get_elem(1)); *this = RadioPriorityLCS_template(precondition, implied_template); } break; default: param.type_error("record template", "@GTPC_Types.RadioPriorityLCS"); } is_ifpresent = param.get_ifpresent(); } void RadioPriorityLCS_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_type__gtpc.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.RadioPriorityLCS"); single_value->field_lengthf.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.RadioPriorityLCS"); single_value->field_radioPriorityLCS.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.RadioPriorityLCS"); single_value->field_reserved.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.RadioPriorityLCS"); 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 : "@GTPC_Types.RadioPriorityLCS"); } boolean RadioPriorityLCS_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean RadioPriorityLCS_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) chargingID().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "chargingID")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { chargingID().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.ChargingID: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@GTPC_Types.ChargingID"); } } void ChargingID::encode_text(Text_Buf& text_buf) const { field_type__gtpc.encode_text(text_buf); field_chargingID.encode_text(text_buf); } void ChargingID::decode_text(Text_Buf& text_buf) { field_type__gtpc.decode_text(text_buf); field_chargingID.decode_text(text_buf); } void ChargingID::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;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void ChargingID::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;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int ChargingID::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) { (void)no_err; int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); limit-=prepaddlength; size_t last_decoded_pos = p_buf.get_pos_bit(); int decoded_length = 0; int decoded_field_length = 0; raw_order_t local_top_order; if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; else local_top_order=ORDER_LSB; RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit); decoded_field_length = field_type__gtpc.RAW_decode(General__Types::OCT1_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, General__Types::OCT4_descr_.raw->forceomit); decoded_field_length = field_chargingID.RAW_decode(General__Types::OCT4_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 (field_type__gtpc != os_41) return -1; p_buf.set_pos_bit(last_decoded_pos); return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); } int ChargingID::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, General__Types::OCT1_descr_.raw); myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::OCT4_descr_.raw); encoded_length += field_type__gtpc.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]); encoded_length += field_chargingID.RAW_encode(General__Types::OCT4_descr_, *myleaf.body.node.nodes[1]); if (field_type__gtpc != os_41) { 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){ os_41.RAW_encode(General__Types::OCT1_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 ChargingID_template::single_value_struct { OCTETSTRING_template field_type__gtpc; OCTETSTRING_template field_chargingID; }; void ChargingID_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_type__gtpc = ANY_VALUE; single_value->field_chargingID = ANY_VALUE; } } } void ChargingID_template::copy_value(const ChargingID& other_value) { single_value = new single_value_struct; if (other_value.type__gtpc().is_bound()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (other_value.chargingID().is_bound()) { single_value->field_chargingID = other_value.chargingID(); } else { single_value->field_chargingID.clean_up(); } set_selection(SPECIFIC_VALUE); } void ChargingID_template::copy_template(const ChargingID_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.type__gtpc().get_selection()) { single_value->field_type__gtpc = other_value.type__gtpc(); } else { single_value->field_type__gtpc.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.chargingID().get_selection()) { single_value->field_chargingID = other_value.chargingID(); } else { single_value->field_chargingID.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 ChargingID_template[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 ChargingID_template(*other_value.implication_.precondition); implication_.implied_template = new ChargingID_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 @GTPC_Types.ChargingID."); break; } set_selection(other_value); } ChargingID_template::ChargingID_template() { } ChargingID_template::ChargingID_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } ChargingID_template::ChargingID_template(const ChargingID& other_value) { copy_value(other_value); } ChargingID_template::ChargingID_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const ChargingID&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @GTPC_Types.ChargingID from an unbound optional field."); } } ChargingID_template::ChargingID_template(ChargingID_template* p_precondition, ChargingID_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } ChargingID_template::ChargingID_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } ChargingID_template::ChargingID_template(const ChargingID_template& other_value) : Base_Template() { copy_template(other_value); } ChargingID_template::~ChargingID_template() { clean_up(); } ChargingID_template& ChargingID_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } ChargingID_template& ChargingID_template::operator=(const ChargingID& other_value) { clean_up(); copy_value(other_value); return *this; } ChargingID_template& ChargingID_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const ChargingID&)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 @GTPC_Types.ChargingID."); } return *this; } ChargingID_template& ChargingID_template::operator=(const ChargingID_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean ChargingID_template::match(const ChargingID& 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.type__gtpc().is_bound()) return FALSE; if(!single_value->field_type__gtpc.match(other_value.type__gtpc(), legacy))return FALSE; if(!other_value.chargingID().is_bound()) return FALSE; if(!single_value->field_chargingID.match(other_value.chargingID(), 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 @GTPC_Types.ChargingID."); } return FALSE; } boolean ChargingID_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_type__gtpc.is_bound() || single_value->field_chargingID.is_bound(); } boolean ChargingID_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_type__gtpc.is_value() && single_value->field_chargingID.is_value(); } void ChargingID_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; } ChargingID ChargingID_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 @GTPC_Types.ChargingID."); ChargingID ret_val; if (single_value->field_type__gtpc.is_bound()) { ret_val.type__gtpc() = single_value->field_type__gtpc.valueof(); } if (single_value->field_chargingID.is_bound()) { ret_val.chargingID() = single_value->field_chargingID.valueof(); } return ret_val; } void ChargingID_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 @GTPC_Types.ChargingID."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new ChargingID_template[list_length]; } ChargingID_template& ChargingID_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 @GTPC_Types.ChargingID."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @GTPC_Types.ChargingID."); return value_list.list_value[list_index]; } OCTETSTRING_template& ChargingID_template::type__gtpc() { set_specific(); return single_value->field_type__gtpc; } const OCTETSTRING_template& ChargingID_template::type__gtpc() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field type_gtpc of a non-specific template of type @GTPC_Types.ChargingID."); return single_value->field_type__gtpc; } OCTETSTRING_template& ChargingID_template::chargingID() { set_specific(); return single_value->field_chargingID; } const OCTETSTRING_template& ChargingID_template::chargingID() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field chargingID of a non-specific template of type @GTPC_Types.ChargingID."); return single_value->field_chargingID; } int ChargingID_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.ChargingID 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 @GTPC_Types.ChargingID 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 @GTPC_Types.ChargingID containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.ChargingID containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.ChargingID containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.ChargingID containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.ChargingID containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.ChargingID containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @GTPC_Types.ChargingID containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @GTPC_Types.ChargingID."); } return 0; } void ChargingID_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ type_gtpc := "); single_value->field_type__gtpc.log(); TTCN_Logger::log_event_str(", chargingID := "); single_value->field_chargingID.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 ChargingID_template::log_match(const ChargingID& 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_type__gtpc.match(match_value.type__gtpc(), legacy)){ TTCN_Logger::log_logmatch_info(".type_gtpc"); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_chargingID.match(match_value.chargingID(), legacy)){ TTCN_Logger::log_logmatch_info(".chargingID"); single_value->field_chargingID.log_match(match_value.chargingID(), 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("{ type_gtpc := "); single_value->field_type__gtpc.log_match(match_value.type__gtpc(), legacy); TTCN_Logger::log_event_str(", chargingID := "); single_value->field_chargingID.log_match(match_value.chargingID(), 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 ChargingID_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_type__gtpc.encode_text(text_buf); single_value->field_chargingID.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 @GTPC_Types.ChargingID."); } } void ChargingID_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_type__gtpc.decode_text(text_buf); single_value->field_chargingID.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 ChargingID_template[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 @GTPC_Types.ChargingID."); } } void ChargingID_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: { ChargingID_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) type__gtpc().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) chargingID().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "type_gtpc")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { type__gtpc().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "chargingID")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { chargingID().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @GTPC_Types.ChargingID: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { ChargingID_template* precondition = new ChargingID_template; precondition->set_param(*param.get_elem(0)); ChargingID_template* implied_template = new ChargingID_template; implied_template->set_param(*param.get_elem(1)); *this = ChargingID_template(precondition, implied_template); } break; default: param.type_error("record template", "@GTPC_Types.ChargingID"); } is_ifpresent = param.get_ifpresent(); } void ChargingID_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_type__gtpc.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.ChargingID"); single_value->field_chargingID.check_restriction(t_res, t_name ? t_name : "@GTPC_Types.ChargingID"); 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 : "@GTPC_Types.ChargingID"); } boolean ChargingID_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean ChargingID_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idxis_value(); case ALT_endUserAddressIPv6: return field_endUserAddressIPv6->is_value(); case ALT_endUserAddressPPP: return field_endUserAddressPPP->is_value(); case ALT_endUserAddressIPv4andIPv6: return field_endUserAddressIPv4andIPv6->is_value(); case ALT_endUserAddressOSPIHOS: return field_endUserAddressOSPIHOS->is_value(); default: TTCN_error("Invalid selection in union is_bound");} } void EndUserAddress__types::clean_up() { switch (union_selection) { case ALT_endUserAddressIPv4: delete field_endUserAddressIPv4; break; case ALT_endUserAddressIPv6: delete field_endUserAddressIPv6; break; case ALT_endUserAddressPPP: delete field_endUserAddressPPP; break; case ALT_endUserAddressIPv4andIPv6: delete field_endUserAddressIPv4andIPv6; break; case ALT_endUserAddressOSPIHOS: delete field_endUserAddressOSPIHOS; break; default: break; } union_selection = UNBOUND_VALUE; } void EndUserAddress__types::log() const { switch (union_selection) { case ALT_endUserAddressIPv4: TTCN_Logger::log_event_str("{ endUserAddressIPv4 := "); field_endUserAddressIPv4->log(); TTCN_Logger::log_event_str(" }"); break; case ALT_endUserAddressIPv6: TTCN_Logger::log_event_str("{ endUserAddressIPv6 := "); field_endUserAddressIPv6->log(); TTCN_Logger::log_event_str(" }"); break; case ALT_endUserAddressPPP: TTCN_Logger::log_event_str("{ endUserAddressPPP := "); field_endUserAddressPPP->log(); TTCN_Logger::log_event_str(" }"); break; case ALT_endUserAddressIPv4andIPv6: TTCN_Logger::log_event_str("{ endUserAddressIPv4andIPv6 := "); field_endUserAddressIPv4andIPv6->log(); TTCN_Logger::log_event_str(" }"); break; case ALT_endUserAddressOSPIHOS: TTCN_Logger::log_event_str("{ endUserAddressOSPIHOS := "); field_endUserAddressOSPIHOS->log(); TTCN_Logger::log_event_str(" }"); break; default: TTCN_Logger::log_event_unbound(); } } void EndUserAddress__types::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "union value"); Module_Param_Ptr m_p = ¶m; if (m_p->get_type()==Module_Param::MP_Value_List && m_p->get_size()==0) return; if (m_p->get_type()!=Module_Param::MP_Assignment_List) { param.error("union value with field name was expected"); } Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); if (!strcmp(last_name, "endUserAddressIPv4")) { endUserAddressIPv4().set_param(*mp_last); if (!endUserAddressIPv4().is_bound()) clean_up(); return; } if (!strcmp(last_name, "endUserAddressIPv6")) { endUserAddressIPv6().set_param(*mp_last); if (!endUserAddressIPv6().is_bound()) clean_up(); return; } if (!strcmp(last_name, "endUserAddressPPP")) { endUserAddressPPP().set_param(*mp_last); if (!endUserAddressPPP().is_bound()) clean_up(); return; } if (!strcmp(last_name, "endUserAddressIPv4andIPv6")) { endUserAddressIPv4andIPv6().set_param(*mp_last); if (!endUserAddressIPv4andIPv6().is_bound()) clean_up(); return; } if (!strcmp(last_name, "endUserAddressOSPIHOS")) { endUserAddressOSPIHOS().set_param(*mp_last); if (!endUserAddressOSPIHOS().is_bound()) clean_up(); return; } mp_last->error("Field %s does not exist in type @GTPC_Types.EndUserAddress_types.", last_name); } void EndUserAddress__types::set_implicit_omit() { switch (union_selection) { case ALT_endUserAddressIPv4: field_endUserAddressIPv4->set_implicit_omit(); break; case ALT_endUserAddressIPv6: field_endUserAddressIPv6->set_implicit_omit(); break; case ALT_endUserAddressPPP: field_endUserAddressPPP->set_implicit_omit(); break; case ALT_endUserAddressIPv4andIPv6: field_endUserAddressIPv4andIPv6->set_implicit_omit(); break; case ALT_endUserAddressOSPIHOS: field_endUserAddressOSPIHOS->set_implicit_omit(); break; default: break; } } void EndUserAddress__types::encode_text(Text_Buf& text_buf) const { text_buf.push_int(union_selection); switch (union_selection) { case ALT_endUserAddressIPv4: field_endUserAddressIPv4->encode_text(text_buf); break; case ALT_endUserAddressIPv6: field_endUserAddressIPv6->encode_text(text_buf); break; case ALT_endUserAddressPPP: field_endUserAddressPPP->encode_text(text_buf); break; case ALT_endUserAddressIPv4andIPv6: field_endUserAddressIPv4andIPv6->encode_text(text_buf); break; case ALT_endUserAddressOSPIHOS: field_endUserAddressOSPIHOS->encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an unbound value of union type @GTPC_Types.EndUserAddress_types."); } } void EndUserAddress__types::decode_text(Text_Buf& text_buf) { switch ((union_selection_type)text_buf.pull_int().get_val()) { case ALT_endUserAddressIPv4: endUserAddressIPv4().decode_text(text_buf); break; case ALT_endUserAddressIPv6: endUserAddressIPv6().decode_text(text_buf); break; case ALT_endUserAddressPPP: endUserAddressPPP().decode_text(text_buf); break; case ALT_endUserAddressIPv4andIPv6: endUserAddressIPv4andIPv6().decode_text(text_buf); break; case ALT_endUserAddressOSPIHOS: endUserAddressOSPIHOS().decode_text(text_buf); break; default: TTCN_error("Text decoder: Unrecognized union selector was received for type @GTPC_Types.EndUserAddress_types."); } } void EndUserAddress__types::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;} default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void EndUserAddress__types::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;} default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } int EndUserAddress__types::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, EndUserAddressIPv4_descr_.raw->forceomit); decoded_length = endUserAddressIPv4().RAW_decode(EndUserAddressIPv4_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, EndUserAddressIPv6_descr_.raw->forceomit); decoded_length = endUserAddressIPv6().RAW_decode(EndUserAddressIPv6_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); break; } case 2: { RAW_Force_Omit field_force_omit(2, force_omit, EndUserAddressPPP_descr_.raw->forceomit); decoded_length = endUserAddressPPP().RAW_decode(EndUserAddressPPP_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); break; } case 3: { RAW_Force_Omit field_force_omit(3, force_omit, EndUserAddressIPv4andIPv6_descr_.raw->forceomit); decoded_length = endUserAddressIPv4andIPv6().RAW_decode(EndUserAddressIPv4andIPv6_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); break; } case 4: { RAW_Force_Omit field_force_omit(4, force_omit, EndUserAddressOSPIHOS_descr_.raw->forceomit); decoded_length = endUserAddressOSPIHOS().RAW_decode(EndUserAddressOSPIHOS_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); break; } default: break; } return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; } else { boolean already_failed = FALSE; OCTETSTRING temporal_0; int decoded_0_length; already_failed = FALSE; if (!already_failed) { p_buf.set_pos_bit(starting_pos + 24); decoded_0_length = temporal_0.RAW_decode(General__Types::OCT1_descr_, p_buf, limit, top_bit_ord, TRUE); if (decoded_0_length > 0) { if (temporal_0 == os_11) { p_buf.set_pos_bit(starting_pos); RAW_Force_Omit field_force_omit(0, force_omit, EndUserAddressIPv4_descr_.raw->forceomit); decoded_length = endUserAddressIPv4().RAW_decode(EndUserAddressIPv4_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit); if (decoded_length > 0) { if ((*field_endUserAddressIPv4).pdp__typenum() == os_11) { return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; }else already_failed = TRUE; } } } } already_failed = FALSE; if (!already_failed) { if (decoded_0_length > 0) { if (temporal_0 == os_12) { p_buf.set_pos_bit(starting_pos); RAW_Force_Omit field_force_omit(1, force_omit, EndUserAddressIPv6_descr_.raw->forceomit); decoded_length = endUserAddressIPv6().RAW_decode(EndUserAddressIPv6_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit); if (decoded_length > 0) { if ((*field_endUserAddressIPv6).pdp__typenum() == os_12) { return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; }else already_failed = TRUE; } } } } already_failed = FALSE; if (!already_failed) { if (decoded_0_length > 0) { if (temporal_0 == os_13) { p_buf.set_pos_bit(starting_pos); RAW_Force_Omit field_force_omit(2, force_omit, EndUserAddressPPP_descr_.raw->forceomit); decoded_length = endUserAddressPPP().RAW_decode(EndUserAddressPPP_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit); if (decoded_length > 0) { if ((*field_endUserAddressPPP).pdp__typenum() == os_13) { return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; }else already_failed = TRUE; } } } } already_failed = FALSE; if (!already_failed) { if (decoded_0_length > 0) { if (temporal_0 == os_14) { p_buf.set_pos_bit(starting_pos); RAW_Force_Omit field_force_omit(3, force_omit, EndUserAddressIPv4andIPv6_descr_.raw->forceomit); decoded_length = endUserAddressIPv4andIPv6().RAW_decode(EndUserAddressIPv4andIPv6_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit); if (decoded_length > 0) { if ((*field_endUserAddressIPv4andIPv6).pdp__typenum() == os_14) { return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; }else already_failed = TRUE; } } } } p_buf.set_pos_bit(starting_pos); RAW_Force_Omit field_4_force_omit(4, force_omit, EndUserAddressOSPIHOS_descr_.raw->forceomit); decoded_length = endUserAddressOSPIHOS().RAW_decode(EndUserAddressOSPIHOS_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_4_force_omit); if (decoded_length >= 0) { return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; } } clean_up(); return -1; } int EndUserAddress__types::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { int encoded_length = 0; myleaf.isleaf = FALSE; myleaf.body.node.num_of_nodes = 5; myleaf.body.node.nodes = init_nodes_of_enc_tree(5); memset(myleaf.body.node.nodes, 0, 5 * sizeof(RAW_enc_tree *)); switch (union_selection) { case ALT_endUserAddressIPv4: myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 0, EndUserAddressIPv4_descr_.raw); encoded_length = field_endUserAddressIPv4->RAW_encode(EndUserAddressIPv4_descr_, *myleaf.body.node.nodes[0]); myleaf.body.node.nodes[0]->coding_descr = &EndUserAddressIPv4_descr_; if ((*field_endUserAddressIPv4).pdp__typenum() != os_11) { RAW_enc_tree* temp_leaf; { RAW_enc_tr_pos pr_pos0; pr_pos0.level=myleaf.curr_pos.level+2; int new_pos0[]={0,3}; pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0); temp_leaf = myleaf.get_node(pr_pos0); if(temp_leaf != NULL){ os_11.RAW_encode(General__Types::OCT1_descr_,*temp_leaf); } else { TTCN_EncDec_ErrorContext::error (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); } free_tree_pos(pr_pos0.pos); } } break; case ALT_endUserAddressIPv6: myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 1, EndUserAddressIPv6_descr_.raw); encoded_length = field_endUserAddressIPv6->RAW_encode(EndUserAddressIPv6_descr_, *myleaf.body.node.nodes[1]); myleaf.body.node.nodes[1]->coding_descr = &EndUserAddressIPv6_descr_; if ((*field_endUserAddressIPv6).pdp__typenum() != os_12) { RAW_enc_tree* temp_leaf; { RAW_enc_tr_pos pr_pos0; pr_pos0.level=myleaf.curr_pos.level+2; int new_pos0[]={1,3}; pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0); temp_leaf = myleaf.get_node(pr_pos0); if(temp_leaf != NULL){ os_12.RAW_encode(General__Types::OCT1_descr_,*temp_leaf); } else { TTCN_EncDec_ErrorContext::error (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); } free_tree_pos(pr_pos0.pos); } } break; case ALT_endUserAddressPPP: myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 2, EndUserAddressPPP_descr_.raw); encoded_length = field_endUserAddressPPP->RAW_encode(EndUserAddressPPP_descr_, *myleaf.body.node.nodes[2]); myleaf.body.node.nodes[2]->coding_descr = &EndUserAddressPPP_descr_; if ((*field_endUserAddressPPP).pdp__typenum() != os_13) { RAW_enc_tree* temp_leaf; { RAW_enc_tr_pos pr_pos0; pr_pos0.level=myleaf.curr_pos.level+2; int new_pos0[]={2,3}; pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0); temp_leaf = myleaf.get_node(pr_pos0); if(temp_leaf != NULL){ os_13.RAW_encode(General__Types::OCT1_descr_,*temp_leaf); } else { TTCN_EncDec_ErrorContext::error (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); } free_tree_pos(pr_pos0.pos); } } break; case ALT_endUserAddressIPv4andIPv6: myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 3, EndUserAddressIPv4andIPv6_descr_.raw); encoded_length = field_endUserAddressIPv4andIPv6->RAW_encode(EndUserAddressIPv4andIPv6_descr_, *myleaf.body.node.nodes[3]); myleaf.body.node.nodes[3]->coding_descr = &EndUserAddressIPv4andIPv6_descr_; if ((*field_endUserAddressIPv4andIPv6).pdp__typenum() != os_14) { RAW_enc_tree* temp_leaf; { RAW_enc_tr_pos pr_pos0; pr_pos0.level=myleaf.curr_pos.level+2; int new_pos0[]={3,3}; pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0); temp_leaf = myleaf.get_node(pr_pos0); if(temp_leaf != NULL){ os_14.RAW_encode(General__Types::OCT1_descr_,*temp_leaf); } else { TTCN_EncDec_ErrorContext::error (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); } free_tree_pos(pr_pos0.pos); } } break; case ALT_endUserAddressOSPIHOS: myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 4, EndUserAddressOSPIHOS_descr_.raw); encoded_length = field_endUserAddressOSPIHOS->RAW_encode(EndUserAddressOSPIHOS_descr_, *myleaf.body.node.nodes[4]); myleaf.body.node.nodes[4]->coding_descr = &EndUserAddressOSPIHOS_descr_; break; default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); } return encoded_length; } void EndUserAddress__types_template::copy_value(const EndUserAddress__types& other_value) { single_value.union_selection = other_value.get_selection(); switch (single_value.union_selection) { case EndUserAddress__types::ALT_endUserAddressIPv4: single_value.field_endUserAddressIPv4 = new EndUserAddressIPv4_template(other_value.endUserAddressIPv4()); break; case EndUserAddress__types::ALT_endUserAddressIPv6: single_value.field_endUserAddressIPv6 = new EndUserAddressIPv6_template(other_value.endUserAddressIPv6()); break; case EndUserAddress__types::ALT_endUserAddressPPP: single_value.field_endUserAddressPPP = new EndUserAddressPPP_template(other_value.endUserAddressPPP()); break; case EndUserAddress__types::ALT_endUserAddressIPv4andIPv6: single_value.field_endUserAddressIPv4andIPv6 = new EndUserAddressIPv4andIPv6_template(other_value.endUserAddressIPv4andIPv6()); break; case EndUserAddress__types::ALT_endUserAddressOSPIHOS: single_value.field_endUserAddressOSPIHOS = new EndUserAddressOSPIHOS_template(other_value.endUserAddressOSPIHOS()); break; default: TTCN_error("Initializing a template with an unbound value of type @GTPC_Types.EndUserAddress_types."); } set_selection(SPECIFIC_VALUE); } void EndUserAddress__types_template::copy_template(const EndUserAddress__types_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 EndUserAddress__types::ALT_endUserAddressIPv4: single_value.field_endUserAddressIPv4 = new EndUserAddressIPv4_template(*other_value.single_value.field_endUserAddressIPv4); break; case EndUserAddress__types::ALT_endUserAddressIPv6: single_value.field_endUserAddressIPv6 = new EndUserAddressIPv6_template(*other_value.single_value.field_endUserAddressIPv6); break; case EndUserAddress__types::ALT_endUserAddressPPP: single_value.field_endUserAddressPPP = new EndUserAddressPPP_template(*other_value.single_value.field_endUserAddressPPP); break; case EndUserAddress__types::ALT_endUserAddressIPv4andIPv6: single_value.field_endUserAddressIPv4andIPv6 = new EndUserAddressIPv4andIPv6_template(*other_value.single_value.field_endUserAddressIPv4andIPv6); break; case EndUserAddress__types::ALT_endUserAddressOSPIHOS: single_value.field_endUserAddressOSPIHOS = new EndUserAddressOSPIHOS_template(*other_value.single_value.field_endUserAddressOSPIHOS); break; default: TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @GTPC_Types.EndUserAddress_types."); } 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 EndUserAddress__types_template[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 EndUserAddress__types_template(*other_value.implication_.precondition); implication_.implied_template = new EndUserAddress__types_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 @GTPC_Types.EndUserAddress_types."); } set_selection(other_value); } EndUserAddress__types_template::EndUserAddress__types_template() { } EndUserAddress__types_template::EndUserAddress__types_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } EndUserAddress__types_template::EndUserAddress__types_template(const EndUserAddress__types& other_value) { copy_value(other_value); } EndUserAddress__types_template::EndUserAddress__types_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const EndUserAddress__types&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of union type @GTPC_Types.EndUserAddress_types from an unbound optional field."); } } EndUserAddress__types_template::EndUserAddress__types_template(EndUserAddress__types_template* p_precondition, EndUserAddress__types_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } EndUserAddress__types_template::EndUserAddress__types_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } EndUserAddress__types_template::EndUserAddress__types_template(const EndUserAddress__types_template& other_value) : Base_Template(){ copy_template(other_value); } EndUserAddress__types_template::~EndUserAddress__types_template() { clean_up(); } void EndUserAddress__types_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { case EndUserAddress__types::ALT_endUserAddressIPv4: delete single_value.field_endUserAddressIPv4; break; case EndUserAddress__types::ALT_endUserAddressIPv6: delete single_value.field_endUserAddressIPv6; break; case EndUserAddress__types::ALT_endUserAddressPPP: delete single_value.field_endUserAddressPPP; break; case EndUserAddress__types::ALT_endUserAddressIPv4andIPv6: delete single_value.field_endUserAddressIPv4andIPv6; break; case EndUserAddress__types::ALT_endUserAddressOSPIHOS: delete single_value.field_endUserAddressOSPIHOS; 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; } EndUserAddress__types_template& EndUserAddress__types_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } EndUserAddress__types_template& EndUserAddress__types_template::operator=(const EndUserAddress__types& other_value) { clean_up(); copy_value(other_value); return *this; } EndUserAddress__types_template& EndUserAddress__types_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const EndUserAddress__types&)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 @GTPC_Types.EndUserAddress_types."); } return *this; } EndUserAddress__types_template& EndUserAddress__types_template::operator=(const EndUserAddress__types_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean EndUserAddress__types_template::match(const EndUserAddress__types& 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: { EndUserAddress__types::union_selection_type value_selection = other_value.get_selection(); if (value_selection == EndUserAddress__types::UNBOUND_VALUE) return FALSE; if (value_selection != single_value.union_selection) return FALSE; switch (value_selection) { case EndUserAddress__types::ALT_endUserAddressIPv4: return single_value.field_endUserAddressIPv4->match(other_value.endUserAddressIPv4(), legacy); case EndUserAddress__types::ALT_endUserAddressIPv6: return single_value.field_endUserAddressIPv6->match(other_value.endUserAddressIPv6(), legacy); case EndUserAddress__types::ALT_endUserAddressPPP: return single_value.field_endUserAddressPPP->match(other_value.endUserAddressPPP(), legacy); case EndUserAddress__types::ALT_endUserAddressIPv4andIPv6: return single_value.field_endUserAddressIPv4andIPv6->match(other_value.endUserAddressIPv4andIPv6(), legacy); case EndUserAddress__types::ALT_endUserAddressOSPIHOS: return single_value.field_endUserAddressOSPIHOS->match(other_value.endUserAddressOSPIHOS(), legacy); default: TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @GTPC_Types.EndUserAddress_types."); } } 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 @GTPC_Types.EndUserAddress_types."); } return FALSE; } boolean EndUserAddress__types_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; switch (single_value.union_selection) { case EndUserAddress__types::ALT_endUserAddressIPv4: return single_value.field_endUserAddressIPv4->is_value(); case EndUserAddress__types::ALT_endUserAddressIPv6: return single_value.field_endUserAddressIPv6->is_value(); case EndUserAddress__types::ALT_endUserAddressPPP: return single_value.field_endUserAddressPPP->is_value(); case EndUserAddress__types::ALT_endUserAddressIPv4andIPv6: return single_value.field_endUserAddressIPv4andIPv6->is_value(); case EndUserAddress__types::ALT_endUserAddressOSPIHOS: return single_value.field_endUserAddressOSPIHOS->is_value(); default: TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @GTPC_Types.EndUserAddress_types."); } } EndUserAddress__types EndUserAddress__types_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 @GTPC_Types.EndUserAddress_types."); EndUserAddress__types ret_val; switch (single_value.union_selection) { case EndUserAddress__types::ALT_endUserAddressIPv4: ret_val.endUserAddressIPv4() = single_value.field_endUserAddressIPv4->valueof(); break; case EndUserAddress__types::ALT_endUserAddressIPv6: ret_val.endUserAddressIPv6() = single_value.field_endUserAddressIPv6->valueof(); break; case EndUserAddress__types::ALT_endUserAddressPPP: ret_val.endUserAddressPPP() = single_value.field_endUserAddressPPP->valueof(); break; case EndUserAddress__types::ALT_endUserAddressIPv4andIPv6: ret_val.endUserAddressIPv4andIPv6() = single_value.field_endUserAddressIPv4andIPv6->valueof(); break; case EndUserAddress__types::ALT_endUserAddressOSPIHOS: ret_val.endUserAddressOSPIHOS() = single_value.field_endUserAddressOSPIHOS->valueof(); break; default: TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @GTPC_Types.EndUserAddress_types."); } return ret_val; } EndUserAddress__types_template& EndUserAddress__types_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 @GTPC_Types.EndUserAddress_types."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @GTPC_Types.EndUserAddress_types."); return value_list.list_value[list_index]; } void EndUserAddress__types_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 @GTPC_Types.EndUserAddress_types."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new EndUserAddress__types_template[list_length]; } EndUserAddressIPv4_template& EndUserAddress__types_template::endUserAddressIPv4() { if (template_selection != SPECIFIC_VALUE || single_value.union_selection != EndUserAddress__types::ALT_endUserAddressIPv4) { template_sel old_selection = template_selection; clean_up(); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_endUserAddressIPv4 = new EndUserAddressIPv4_template(ANY_VALUE); else single_value.field_endUserAddressIPv4 = new EndUserAddressIPv4_template; single_value.union_selection = EndUserAddress__types::ALT_endUserAddressIPv4; set_selection(SPECIFIC_VALUE); } return *single_value.field_endUserAddressIPv4; } const EndUserAddressIPv4_template& EndUserAddress__types_template::endUserAddressIPv4() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field endUserAddressIPv4 in a non-specific template of union type @GTPC_Types.EndUserAddress_types."); if (single_value.union_selection != EndUserAddress__types::ALT_endUserAddressIPv4) TTCN_error("Accessing non-selected field endUserAddressIPv4 in a template of union type @GTPC_Types.EndUserAddress_types."); return *single_value.field_endUserAddressIPv4; } EndUserAddressIPv6_template& EndUserAddress__types_template::endUserAddressIPv6() { if (template_selection != SPECIFIC_VALUE || single_value.union_selection != EndUserAddress__types::ALT_endUserAddressIPv6) { template_sel old_selection = template_selection; clean_up(); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_endUserAddressIPv6 = new EndUserAddressIPv6_template(ANY_VALUE); else single_value.field_endUserAddressIPv6 = new EndUserAddressIPv6_template; single_value.union_selection = EndUserAddress__types::ALT_endUserAddressIPv6; set_selection(SPECIFIC_VALUE); } return *single_value.field_endUserAddressIPv6; } const EndUserAddressIPv6_template& EndUserAddress__types_template::endUserAddressIPv6() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field endUserAddressIPv6 in a non-specific template of union type @GTPC_Types.EndUserAddress_types."); if (single_value.union_selection != EndUserAddress__types::ALT_endUserAddressIPv6) TTCN_error("Accessing non-selected field endUserAddressIPv6 in a template of union type @GTPC_Types.EndUserAddress_types."); return *single_value.field_endUserAddressIPv6; } EndUserAddressPPP_template& EndUserAddress__types_template::endUserAddressPPP() { if (template_selection != SPECIFIC_VALUE || single_value.union_selection != EndUserAddress__types::ALT_endUserAddressPPP) { template_sel old_selection = template_selection; clean_up(); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_endUserAddressPPP = new EndUserAddressPPP_template(ANY_VALUE); else single_value.field_endUserAddressPPP = new EndUserAddressPPP_template; single_value.union_selection = EndUserAddress__types::ALT_endUserAddressPPP; set_selection(SPECIFIC_VALUE); } return *single_value.field_endUserAddressPPP; } const EndUserAddressPPP_template& EndUserAddress__types_template::endUserAddressPPP() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field endUserAddressPPP in a non-specific template of union type @GTPC_Types.EndUserAddress_types."); if (single_value.union_selection != EndUserAddress__types::ALT_endUserAddressPPP) TTCN_error("Accessing non-selected field endUserAddressPPP in a template of union type @GTPC_Types.EndUserAddress_types."); return *single_value.field_endUserAddressPPP; } EndUserAddressIPv4andIPv6_template& EndUserAddress__types_template::endUserAddressIPv4andIPv6() { if (template_selection != SPECIFIC_VALUE || single_value.union_selection != EndUserAddress__types::ALT_endUserAddressIPv4andIPv6) { template_sel old_selection = template_selection; clean_up(); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_endUserAddressIPv4andIPv6 = new EndUserAddressIPv4andIPv6_template(ANY_VALUE); else single_value.field_endUserAddressIPv4andIPv6 = new EndUserAddressIPv4andIPv6_template; single_value.union_selection = EndUserAddress__types::ALT_endUserAddressIPv4andIPv6; set_selection(SPECIFIC_VALUE); } return *single_value.field_endUserAddressIPv4andIPv6; } const EndUserAddressIPv4andIPv6_template& EndUserAddress__types_template::endUserAddressIPv4andIPv6() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field endUserAddressIPv4andIPv6 in a non-specific template of union type @GTPC_Types.EndUserAddress_types."); if (single_value.union_selection != EndUserAddress__types::ALT_endUserAddressIPv4andIPv6) TTCN_error("Accessing non-selected field endUserAddressIPv4andIPv6 in a template of union type @GTPC_Types.EndUserAddress_types."); return *single_value.field_endUserAddressIPv4andIPv6; } EndUserAddressOSPIHOS_template& EndUserAddress__types_template::endUserAddressOSPIHOS() { if (template_selection != SPECIFIC_VALUE || single_value.union_selection != EndUserAddress__types::ALT_endUserAddressOSPIHOS) { template_sel old_selection = template_selection; clean_up(); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_endUserAddressOSPIHOS = new EndUserAddressOSPIHOS_template(ANY_VALUE); else single_value.field_endUserAddressOSPIHOS = new EndUserAddressOSPIHOS_template; single_value.union_selection = EndUserAddress__types::ALT_endUserAddressOSPIHOS; set_selection(SPECIFIC_VALUE); } return *single_value.field_endUserAddressOSPIHOS; } const EndUserAddressOSPIHOS_template& EndUserAddress__types_template::endUserAddressOSPIHOS() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field endUserAddressOSPIHOS in a non-specific template of union type @GTPC_Types.EndUserAddress_types."); if (single_value.union_selection != EndUserAddress__types::ALT_endUserAddressOSPIHOS) TTCN_error("Accessing non-selected field endUserAddressOSPIHOS in a template of union type @GTPC_Types.EndUserAddress_types."); return *single_value.field_endUserAddressOSPIHOS; } boolean EndUserAddress__types_template::ischosen(EndUserAddress__types::union_selection_type checked_selection) const { if (checked_selection == EndUserAddress__types::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @GTPC_Types.EndUserAddress_types."); switch (template_selection) { case SPECIFIC_VALUE: if (single_value.union_selection == EndUserAddress__types::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @GTPC_Types.EndUserAddress_types."); 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 @GTPC_Types.EndUserAddress_types 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 EndUserAddress__types_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { case EndUserAddress__types::ALT_endUserAddressIPv4: TTCN_Logger::log_event_str("{ endUserAddressIPv4 := "); single_value.field_endUserAddressIPv4->log(); TTCN_Logger::log_event_str(" }"); break; case EndUserAddress__types::ALT_endUserAddressIPv6: TTCN_Logger::log_event_str("{ endUserAddressIPv6 := "); single_value.field_endUserAddressIPv6->log(); TTCN_Logger::log_event_str(" }"); break; case EndUserAddress__types::ALT_endUserAddressPPP: TTCN_Logger::log_event_str("{ endUserAddressPPP := "); single_value.field_endUserAddressPPP->log(); TTCN_Logger::log_event_str(" }"); break; case EndUserAddress__types::ALT_endUserAddressIPv4andIPv6: TTCN_Logger::log_event_str("{ endUserAddressIPv4andIPv6 := "); single_value.field_endUserAddressIPv4andIPv6->log(); TTCN_Logger::log_event_str(" }"); break; case EndUserAddress__types::ALT_endUserAddressOSPIHOS: TTCN_Logger::log_event_str("{ endUserAddressOSPIHOS := "); single_value.field_endUserAddressOSPIHOS->log(); TTCN_Logger::log_event_str(" }"); break; default: TTCN_Logger::log_event_str(""); } break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void EndUserAddress__types_template::log_match(const EndUserAddress__types& 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 EndUserAddress__types::ALT_endUserAddressIPv4: if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ TTCN_Logger::log_logmatch_info(".endUserAddressIPv4"); single_value.field_endUserAddressIPv4->log_match(match_value.endUserAddressIPv4(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } else { TTCN_Logger::log_event_str("{ endUserAddressIPv4 := "); single_value.field_endUserAddressIPv4->log_match(match_value.endUserAddressIPv4(), legacy); TTCN_Logger::log_event_str(" }"); } break; case EndUserAddress__types::ALT_endUserAddressIPv6: if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ TTCN_Logger::log_logmatch_info(".endUserAddressIPv6"); single_value.field_endUserAddressIPv6->log_match(match_value.endUserAddressIPv6(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } else { TTCN_Logger::log_event_str("{ endUserAddressIPv6 := "); single_value.field_endUserAddressIPv6->log_match(match_value.endUserAddressIPv6(), legacy); TTCN_Logger::log_event_str(" }"); } break; case EndUserAddress__types::ALT_endUserAddressPPP: if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ TTCN_Logger::log_logmatch_info(".endUserAddressPPP"); single_value.field_endUserAddressPPP->log_match(match_value.endUserAddressPPP(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } else { TTCN_Logger::log_event_str("{ endUserAddressPPP := "); single_value.field_endUserAddressPPP->log_match(match_value.endUserAddressPPP(), legacy); TTCN_Logger::log_event_str(" }"); } break; case EndUserAddress__types::ALT_endUserAddressIPv4andIPv6: if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ TTCN_Logger::log_logmatch_info(".endUserAddressIPv4andIPv6"); single_value.field_endUserAddressIPv4andIPv6->log_match(match_value.endUserAddressIPv4andIPv6(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } else { TTCN_Logger::log_event_str("{ endUserAddressIPv4andIPv6 := "); single_value.field_endUserAddressIPv4andIPv6->log_match(match_value.endUserAddressIPv4andIPv6(), legacy); TTCN_Logger::log_event_str(" }"); } break; case EndUserAddress__types::ALT_endUserAddressOSPIHOS: if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ TTCN_Logger::log_logmatch_info(".endUserAddressOSPIHOS"); single_value.field_endUserAddressOSPIHOS->log_match(match_value.endUserAddressOSPIHOS(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } else { TTCN_Logger::log_event_str("{ endUserAddressOSPIHOS := "); single_value.field_endUserAddressOSPIHOS->log_match(match_value.endUserAddressOSPIHOS(), legacy); TTCN_Logger::log_event_str(" }"); } break; default: TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(""); } } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void EndUserAddress__types_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 EndUserAddress__types::ALT_endUserAddressIPv4: single_value.field_endUserAddressIPv4->encode_text(text_buf); break; case EndUserAddress__types::ALT_endUserAddressIPv6: single_value.field_endUserAddressIPv6->encode_text(text_buf); break; case EndUserAddress__types::ALT_endUserAddressPPP: single_value.field_endUserAddressPPP->encode_text(text_buf); break; case EndUserAddress__types::ALT_endUserAddressIPv4andIPv6: single_value.field_endUserAddressIPv4andIPv6->encode_text(text_buf); break; case EndUserAddress__types::ALT_endUserAddressOSPIHOS: single_value.field_endUserAddressOSPIHOS->encode_text(text_buf); break; default: TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @GTPC_Types.EndUserAddress_types."); } 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 @GTPC_Types.EndUserAddress_types."); } } void EndUserAddress__types_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: { single_value.union_selection = EndUserAddress__types::UNBOUND_VALUE; EndUserAddress__types::union_selection_type new_selection = (EndUserAddress__types::union_selection_type)text_buf.pull_int().get_val(); switch (new_selection) { case EndUserAddress__types::ALT_endUserAddressIPv4: single_value.field_endUserAddressIPv4 = new EndUserAddressIPv4_template; single_value.field_endUserAddressIPv4->decode_text(text_buf); break; case EndUserAddress__types::ALT_endUserAddressIPv6: single_value.field_endUserAddressIPv6 = new EndUserAddressIPv6_template; single_value.field_endUserAddressIPv6->decode_text(text_buf); break; case EndUserAddress__types::ALT_endUserAddressPPP: single_value.field_endUserAddressPPP = new EndUserAddressPPP_template; single_value.field_endUserAddressPPP->decode_text(text_buf); break; case EndUserAddress__types::ALT_endUserAddressIPv4andIPv6: single_value.field_endUserAddressIPv4andIPv6 = new EndUserAddressIPv4andIPv6_template; single_value.field_endUserAddressIPv4andIPv6->decode_text(text_buf); break; case EndUserAddress__types::ALT_endUserAddressOSPIHOS: single_value.field_endUserAddressOSPIHOS = new EndUserAddressOSPIHOS_template; single_value.field_endUserAddressOSPIHOS->decode_text(text_buf); break; default: TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @GTPC_Types.EndUserAddress_types."); } 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 EndUserAddress__types_template[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 @GTPC_Types.EndUserAddress_types."); } } boolean EndUserAddress__types_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean EndUserAddress__types_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int v_idx=0; v_idx(param.get_id()) != NULL && param.get_id()->next_name()) { char* param_field = param.get_id()->get_current_name(); if (param_field[0] >= '0' && param_field[0] <= '9') { param.error("Unexpected array index in module parameter, expected a valid field" " name for union template type `@GTPC_Types.EndUserAddress_types'"); } if (strcmp("endUserAddressIPv4", param_field) == 0) { endUserAddressIPv4().set_param(param); return; } else if (strcmp("endUserAddressIPv6", param_field) == 0) { endUserAddressIPv6().set_param(param); return; } else if (strcmp("endUserAddressPPP", param_field) == 0) { endUserAddressPPP().set_param(param); return; } else if (strcmp("endUserAddressIPv4andIPv6", param_field) == 0) { endUserAddressIPv4andIPv6().set_param(param); return; } else if (strcmp("endUserAddressOSPIHOS", param_field) == 0) { endUserAddressOSPIHOS().set_param(param); return; } else param.error("Field `%s' not found in union template type `@GTPC_Types.EndUserAddress_types'", param_field); } param.basic_check(Module_Param::BC_TEMPLATE, "union template"); Module_Param_Ptr m_p = ¶m; switch (m_p->get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { EndUserAddress__types_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Value_List: if (m_p->get_size()==0) break; param.type_error("union template", "@GTPC_Types.EndUserAddress_types"); 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, "endUserAddressIPv4")) { endUserAddressIPv4().set_param(*mp_last); break; } if (!strcmp(last_name, "endUserAddressIPv6")) { endUserAddressIPv6().set_param(*mp_last); break; } if (!strcmp(last_name, "endUserAddressPPP")) { endUserAddressPPP().set_param(*mp_last); break; } if (!strcmp(last_name, "endUserAddressIPv4andIPv6")) { endUserAddressIPv4andIPv6().set_param(*mp_last); break; } if (!strcmp(last_name, "endUserAddressOSPIHOS")) { endUserAddressOSPIHOS().set_param(*mp_last); break; } mp_last->error("Field %s does not exist in type @GTPC_Types.EndUserAddress_types.", last_name); } break; case Module_Param::MP_Implication_Template: { EndUserAddress__types_template* precondition = new EndUserAddress__types_template; precondition->set_param(*m_p->get_elem(0)); EndUserAddress__types_template* implied_template = new EndUserAddress__types_template; implied_template->set_param(*m_p->get_elem(1)); *this = EndUserAddress__types_template(precondition, implied_template); } break; default: param.type_error("union template", "@GTPC_Types.EndUserAddress_types"); } is_ifpresent = param.get_ifpresent(); } void EndUserAddress__types_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 EndUserAddress__types::ALT_endUserAddressIPv4: single_value.field_endUserAddressIPv4->check_restriction(t_res, t_name ? t_name : "@GTPC_Types.EndUserAddress_types"); return; case EndUserAddress__types::ALT_endUserAddressIPv6: single_value.field_endUserAddressIPv6->check_restriction(t_res, t_name ? t_name : "@GTPC_Types.EndUserAddress_types"); return; case EndUserAddress__types::ALT_endUserAddressPPP: single_value.field_endUserAddressPPP->check_restriction(t_res, t_name ? t_name : "@GTPC_Types.EndUserAddress_types"); return; case EndUserAddress__types::ALT_endUserAddressIPv4andIPv6: single_value.field_endUserAddressIPv4andIPv6->check_restriction(t_res, t_name ? t_name : "@GTPC_Types.EndUserAddress_types"); return; case EndUserAddress__types::ALT_endUserAddressOSPIHOS: single_value.field_endUserAddressOSPIHOS->check_restriction(t_res, t_name ? t_name : "@GTPC_Types.EndUserAddress_types"); return; default: TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @GTPC_Types.EndUserAddress_types."); } 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 : "@GTPC_Types.EndUserAddress_types"); } } /* end of namespace */