From 670659c28c298a6383838bdb5c94da36312c26f3 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Mon, 26 Mar 2018 19:02:08 +0200 Subject: add TITAN support for MNCC/PCU interface decoding --- .gitignore | 1 + Makefile | 19 +- titan/General_Types.cc | 14382 ++++++++++++++++++++ titan/General_Types.hh | 2464 ++++ titan/MNCC_EncDec.cc | 321 + titan/MNCC_Types.cc | 33991 +++++++++++++++++++++++++++++++++++++++++++++++ titan/MNCC_Types.hh | 4049 ++++++ titan/Makefile | 19 + titan/Osmocom_Types.cc | 2348 ++++ titan/Osmocom_Types.hh | 389 + titan/PCUIF_Types.cc | 31065 +++++++++++++++++++++++++++++++++++++++++++ titan/PCUIF_Types.hh | 3579 +++++ titan/hello.cc | 44 + titan/mncc.h | 304 + utils.c | 25 +- 15 files changed, 92995 insertions(+), 5 deletions(-) create mode 100644 titan/General_Types.cc create mode 100644 titan/General_Types.hh create mode 100644 titan/MNCC_EncDec.cc create mode 100644 titan/MNCC_Types.cc create mode 100644 titan/MNCC_Types.hh create mode 100644 titan/Makefile create mode 100644 titan/Osmocom_Types.cc create mode 100644 titan/Osmocom_Types.hh create mode 100644 titan/PCUIF_Types.cc create mode 100644 titan/PCUIF_Types.hh create mode 100644 titan/hello.cc create mode 100644 titan/mncc.h diff --git a/.gitignore b/.gitignore index 9d22eb4..33ec174 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ *.o *.so +*.a diff --git a/Makefile b/Makefile index 9978e73..7901891 100644 --- a/Makefile +++ b/Makefile @@ -1,11 +1,26 @@ LIB_SRCS = utils.c sock_events.c libc_overrides.c +LIB_OBJS = $(LIB_SRCS:.c=.o) + +EXTRA_LIBS = + CFLAGS = -Wall +LDFLAGS=-L/usr/lib/titan -fPIC -lttcn3-dynamic +ifdef ENABLE_TITAN +EXTRA_LIBS += titan/titan.a +CFLAGS += -DENABLE_TITAN +endif default: libudtrace.so -libudtrace.so: $(LIB_SRCS) - $(CC) $(CFLAGS) -fPIC -shared -Wl,-soname,libudtrace.so -o $@ $^ -ldl +%.o: %.c + $(CC) $(CFLAGS) -fPIC -o $@ -c $^ + +libudtrace.so: $(LIB_OBJS) $(EXTRA_LIBS) + $(CC) $(LDFLAGS) -fPIC -shared -Wl,-soname,libudtrace.so -o $@ $^ -ldl + +titan/titan.a: + $(MAKE) -C titan titan.a clean: rm -f *.o libudtrace.so diff --git a/titan/General_Types.cc b/titan/General_Types.cc new file mode 100644 index 0000000..cd2d70c --- /dev/null +++ b/titan/General_Types.cc @@ -0,0 +1,14382 @@ +// This C++ source file was generated by the TTCN-3 compiler +// of the TTCN-3 Test Executor version CRL 113 200/6 R3B +// for Harald Welte (laforge@nataraja) on Mon Mar 26 16:56:01 2018 + +// Copyright (c) 2000-2017 Ericsson Telecom AB + +// Do not edit this file unless you know what you are doing. + +/* Including header files */ + +#include "General_Types.hh" + +namespace General__Types { + +/* Prototypes of static functions */ + +static boolean init_comp_type(const char *component_type, boolean init_base_comps); + +/* Literal string constants */ + +static const unsigned char module_checksum[] = { 0xe4, 0xf9, 0x7d, 0x9e, 0x63, 0x8b, 0x6b, 0x3c, 0xee, 0x34, 0x63, 0x47, 0x30, 0x5f, 0x6b, 0x1b }; + +/* Global variable definitions */ + +const TTCN_RAWdescriptor_t BIT1n_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t BIT1n_xer_ = { {"BIT1n>\n", "BIT1n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT1n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT1n_descr_ = { "@General_Types.BIT1n", &BITSTRING_ber_, &BIT1n_raw_, NULL, &BIT1n_xer_, &BIT1n_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT1n_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT2n_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}; +const XERdescriptor_t BIT2n_xer_ = { {"BIT2n>\n", "BIT2n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT2n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT2n_descr_ = { "@General_Types.BIT2n", &BITSTRING_ber_, &BIT2n_raw_, NULL, &BIT2n_xer_, &BIT2n_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT2n_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT3n_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}; +const XERdescriptor_t BIT3n_xer_ = { {"BIT3n>\n", "BIT3n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT3n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT3n_descr_ = { "@General_Types.BIT3n", &BITSTRING_ber_, &BIT3n_raw_, NULL, &BIT3n_xer_, &BIT3n_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT3n_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT4n_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}; +const XERdescriptor_t BIT4n_xer_ = { {"BIT4n>\n", "BIT4n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT4n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT4n_descr_ = { "@General_Types.BIT4n", &BITSTRING_ber_, &BIT4n_raw_, NULL, &BIT4n_xer_, &BIT4n_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT4n_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT5n_raw_ = {5,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t BIT5n_xer_ = { {"BIT5n>\n", "BIT5n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT5n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT5n_descr_ = { "@General_Types.BIT5n", &BITSTRING_ber_, &BIT5n_raw_, NULL, &BIT5n_xer_, &BIT5n_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT5n_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT6n_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}; +const XERdescriptor_t BIT6n_xer_ = { {"BIT6n>\n", "BIT6n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT6n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT6n_descr_ = { "@General_Types.BIT6n", &BITSTRING_ber_, &BIT6n_raw_, NULL, &BIT6n_xer_, &BIT6n_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT6n_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT7n_raw_ = {7,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t BIT7n_xer_ = { {"BIT7n>\n", "BIT7n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT7n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT7n_descr_ = { "@General_Types.BIT7n", &BITSTRING_ber_, &BIT7n_raw_, NULL, &BIT7n_xer_, &BIT7n_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT7n_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT8n_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}; +const XERdescriptor_t BIT8n_xer_ = { {"BIT8n>\n", "BIT8n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT8n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT8n_descr_ = { "@General_Types.BIT8n", &BITSTRING_ber_, &BIT8n_raw_, NULL, &BIT8n_xer_, &BIT8n_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT8n_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT9n_raw_ = {9,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t BIT9n_xer_ = { {"BIT9n>\n", "BIT9n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT9n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT9n_descr_ = { "@General_Types.BIT9n", &BITSTRING_ber_, &BIT9n_raw_, NULL, &BIT9n_xer_, &BIT9n_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT9n_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT12n_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}; +const XERdescriptor_t BIT12n_xer_ = { {"BIT12n>\n", "BIT12n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT12n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT12n_descr_ = { "@General_Types.BIT12n", &BITSTRING_ber_, &BIT12n_raw_, NULL, &BIT12n_xer_, &BIT12n_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT12n_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT14n_raw_ = {14,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t BIT14n_xer_ = { {"BIT14n>\n", "BIT14n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT14n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT14n_descr_ = { "@General_Types.BIT14n", &BITSTRING_ber_, &BIT14n_raw_, NULL, &BIT14n_xer_, &BIT14n_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT14n_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT15n_raw_ = {15,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t BIT15n_xer_ = { {"BIT15n>\n", "BIT15n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT15n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT15n_descr_ = { "@General_Types.BIT15n", &BITSTRING_ber_, &BIT15n_raw_, NULL, &BIT15n_xer_, &BIT15n_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT15n_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT16n_raw_ = {16,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t BIT16n_xer_ = { {"BIT16n>\n", "BIT16n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT16n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT16n_descr_ = { "@General_Types.BIT16n", &BITSTRING_ber_, &BIT16n_raw_, NULL, &BIT16n_xer_, &BIT16n_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT16n_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT56n_raw_ = {56,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t BIT56n_xer_ = { {"BIT56n>\n", "BIT56n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT56n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT56n_descr_ = { "@General_Types.BIT56n", &BITSTRING_ber_, &BIT56n_raw_, NULL, &BIT56n_xer_, &BIT56n_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT56n_default_coding("RAW"); +const XERdescriptor_t BIT14__24n_xer_ = { {"BIT14_24n>\n", "BIT14_24n>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT14__24n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT14__24n_descr_ = { "@General_Types.BIT14_24n", &BITSTRING_ber_, &BITSTRING_raw_, NULL, &BIT14__24n_xer_, &BIT14__24n_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT14__24n_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT1np_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t BIT1np_xer_ = { {"BIT1np>\n", "BIT1np>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT1np_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT1np_descr_ = { "@General_Types.BIT1np", &BITSTRING_ber_, &BIT1np_raw_, NULL, &BIT1np_xer_, &BIT1np_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT1np_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT2np_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}; +const XERdescriptor_t BIT2np_xer_ = { {"BIT2np>\n", "BIT2np>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT2np_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT2np_descr_ = { "@General_Types.BIT2np", &BITSTRING_ber_, &BIT2np_raw_, NULL, &BIT2np_xer_, &BIT2np_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT2np_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT3np_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}; +const XERdescriptor_t BIT3np_xer_ = { {"BIT3np>\n", "BIT3np>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT3np_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT3np_descr_ = { "@General_Types.BIT3np", &BITSTRING_ber_, &BIT3np_raw_, NULL, &BIT3np_xer_, &BIT3np_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT3np_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT4np_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}; +const XERdescriptor_t BIT4np_xer_ = { {"BIT4np>\n", "BIT4np>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT4np_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT4np_descr_ = { "@General_Types.BIT4np", &BITSTRING_ber_, &BIT4np_raw_, NULL, &BIT4np_xer_, &BIT4np_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT4np_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT5np_raw_ = {5,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t BIT5np_xer_ = { {"BIT5np>\n", "BIT5np>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT5np_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT5np_descr_ = { "@General_Types.BIT5np", &BITSTRING_ber_, &BIT5np_raw_, NULL, &BIT5np_xer_, &BIT5np_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT5np_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT6np_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}; +const XERdescriptor_t BIT6np_xer_ = { {"BIT6np>\n", "BIT6np>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT6np_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT6np_descr_ = { "@General_Types.BIT6np", &BITSTRING_ber_, &BIT6np_raw_, NULL, &BIT6np_xer_, &BIT6np_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT6np_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT7np_raw_ = {7,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t BIT7np_xer_ = { {"BIT7np>\n", "BIT7np>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT7np_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT7np_descr_ = { "@General_Types.BIT7np", &BITSTRING_ber_, &BIT7np_raw_, NULL, &BIT7np_xer_, &BIT7np_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT7np_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT15np_raw_ = {15,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t BIT15np_xer_ = { {"BIT15np>\n", "BIT15np>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT15np_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT15np_descr_ = { "@General_Types.BIT15np", &BITSTRING_ber_, &BIT15np_raw_, NULL, &BIT15np_xer_, &BIT15np_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT15np_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT1_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN}; +const XERdescriptor_t BIT1_xer_ = { {"BIT1>\n", "BIT1>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT1_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT1_descr_ = { "@General_Types.BIT1", &BITSTRING_ber_, &BIT1_raw_, NULL, &BIT1_xer_, &BIT1_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT1_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT2_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,2,CharCoding::UNKNOWN}; +const XERdescriptor_t BIT2_xer_ = { {"BIT2>\n", "BIT2>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT2_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t BIT2_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t BIT2_descr_ = { "@General_Types.BIT2", &BITSTRING_ber_, &BIT2_raw_, NULL, &BIT2_xer_, &BIT2_json_, &BIT2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT2_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT3_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,3,CharCoding::UNKNOWN}; +const XERdescriptor_t BIT3_xer_ = { {"BIT3>\n", "BIT3>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT3_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t BIT3_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t BIT3_descr_ = { "@General_Types.BIT3", &BITSTRING_ber_, &BIT3_raw_, NULL, &BIT3_xer_, &BIT3_json_, &BIT3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT3_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT4_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,4,CharCoding::UNKNOWN}; +const XERdescriptor_t BIT4_xer_ = { {"BIT4>\n", "BIT4>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT4_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t BIT4_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t BIT4_descr_ = { "@General_Types.BIT4", &BITSTRING_ber_, &BIT4_raw_, NULL, &BIT4_xer_, &BIT4_json_, &BIT4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT4_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT5_raw_ = {5,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,5,CharCoding::UNKNOWN}; +const XERdescriptor_t BIT5_xer_ = { {"BIT5>\n", "BIT5>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT5_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT5_descr_ = { "@General_Types.BIT5", &BITSTRING_ber_, &BIT5_raw_, NULL, &BIT5_xer_, &BIT5_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT5_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT6_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,6,CharCoding::UNKNOWN}; +const XERdescriptor_t BIT6_xer_ = { {"BIT6>\n", "BIT6>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT6_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT6_descr_ = { "@General_Types.BIT6", &BITSTRING_ber_, &BIT6_raw_, NULL, &BIT6_xer_, &BIT6_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT6_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT7_raw_ = {7,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,7,CharCoding::UNKNOWN}; +const XERdescriptor_t BIT7_xer_ = { {"BIT7>\n", "BIT7>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT7_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT7_descr_ = { "@General_Types.BIT7", &BITSTRING_ber_, &BIT7_raw_, NULL, &BIT7_xer_, &BIT7_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT7_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT8_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,8,CharCoding::UNKNOWN}; +const XERdescriptor_t BIT8_xer_ = { {"BIT8>\n", "BIT8>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT8_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT8_descr_ = { "@General_Types.BIT8", &BITSTRING_ber_, &BIT8_raw_, NULL, &BIT8_xer_, &BIT8_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT8_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT9_raw_ = {9,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,9,CharCoding::UNKNOWN}; +const XERdescriptor_t BIT9_xer_ = { {"BIT9>\n", "BIT9>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT9_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT9_descr_ = { "@General_Types.BIT9", &BITSTRING_ber_, &BIT9_raw_, NULL, &BIT9_xer_, &BIT9_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT9_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT10_raw_ = {10,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,10,CharCoding::UNKNOWN}; +const XERdescriptor_t BIT10_xer_ = { {"BIT10>\n", "BIT10>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT10_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT10_descr_ = { "@General_Types.BIT10", &BITSTRING_ber_, &BIT10_raw_, NULL, &BIT10_xer_, &BIT10_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT10_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT11_raw_ = {11,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,11,CharCoding::UNKNOWN}; +const XERdescriptor_t BIT11_xer_ = { {"BIT11>\n", "BIT11>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT11_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT11_descr_ = { "@General_Types.BIT11", &BITSTRING_ber_, &BIT11_raw_, NULL, &BIT11_xer_, &BIT11_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT11_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT12_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,12,CharCoding::UNKNOWN}; +const XERdescriptor_t BIT12_xer_ = { {"BIT12>\n", "BIT12>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT12_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT12_descr_ = { "@General_Types.BIT12", &BITSTRING_ber_, &BIT12_raw_, NULL, &BIT12_xer_, &BIT12_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT12_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT14_raw_ = {14,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,14,CharCoding::UNKNOWN}; +const XERdescriptor_t BIT14_xer_ = { {"BIT14>\n", "BIT14>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT14_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT14_descr_ = { "@General_Types.BIT14", &BITSTRING_ber_, &BIT14_raw_, NULL, &BIT14_xer_, &BIT14_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT14_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT15_raw_ = {15,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,15,CharCoding::UNKNOWN}; +const XERdescriptor_t BIT15_xer_ = { {"BIT15>\n", "BIT15>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT15_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT15_descr_ = { "@General_Types.BIT15", &BITSTRING_ber_, &BIT15_raw_, NULL, &BIT15_xer_, &BIT15_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT15_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT16_raw_ = {16,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,16,CharCoding::UNKNOWN}; +const XERdescriptor_t BIT16_xer_ = { {"BIT16>\n", "BIT16>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT16_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT16_descr_ = { "@General_Types.BIT16", &BITSTRING_ber_, &BIT16_raw_, NULL, &BIT16_xer_, &BIT16_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT16_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT24_raw_ = {24,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,24,CharCoding::UNKNOWN}; +const XERdescriptor_t BIT24_xer_ = { {"BIT24>\n", "BIT24>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT24_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT24_descr_ = { "@General_Types.BIT24", &BITSTRING_ber_, &BIT24_raw_, NULL, &BIT24_xer_, &BIT24_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT24_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT31_raw_ = {31,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,31,CharCoding::UNKNOWN}; +const XERdescriptor_t BIT31_xer_ = { {"BIT31>\n", "BIT31>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT31_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT31_descr_ = { "@General_Types.BIT31", &BITSTRING_ber_, &BIT31_raw_, NULL, &BIT31_xer_, &BIT31_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT31_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT32_raw_ = {32,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,32,CharCoding::UNKNOWN}; +const XERdescriptor_t BIT32_xer_ = { {"BIT32>\n", "BIT32>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT32_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT32_descr_ = { "@General_Types.BIT32", &BITSTRING_ber_, &BIT32_raw_, NULL, &BIT32_xer_, &BIT32_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT32_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT56_raw_ = {56,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,56,CharCoding::UNKNOWN}; +const XERdescriptor_t BIT56_xer_ = { {"BIT56>\n", "BIT56>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT56_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT56_descr_ = { "@General_Types.BIT56", &BITSTRING_ber_, &BIT56_raw_, NULL, &BIT56_xer_, &BIT56_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT56_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT0n_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT0n_xer_ = { {"OCT0n>\n", "OCT0n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT0n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT0n_oer_ext_arr_[0] = {}; +const int OCT0n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT0n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT0n_oer_ext_arr_, 0, OCT0n_oer_p_}; +const TTCN_Typedescriptor_t OCT0n_descr_ = { "@General_Types.OCT0n", &OCTETSTRING_ber_, &OCT0n_raw_, &OCTETSTRING_text_, &OCT0n_xer_, &OCT0n_json_, &OCT0n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT0n_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT1n_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}; +const XERdescriptor_t OCT1n_xer_ = { {"OCT1n>\n", "OCT1n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT1n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT1n_oer_ext_arr_[0] = {}; +const int OCT1n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT1n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT1n_oer_ext_arr_, 0, OCT1n_oer_p_}; +const TTCN_Typedescriptor_t OCT1n_descr_ = { "@General_Types.OCT1n", &OCTETSTRING_ber_, &OCT1n_raw_, &OCTETSTRING_text_, &OCT1n_xer_, &OCT1n_json_, &OCT1n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT1n_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT2n_raw_ = {16,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT2n_xer_ = { {"OCT2n>\n", "OCT2n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT2n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT2n_oer_ext_arr_[0] = {}; +const int OCT2n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT2n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT2n_oer_ext_arr_, 0, OCT2n_oer_p_}; +const TTCN_Typedescriptor_t OCT2n_descr_ = { "@General_Types.OCT2n", &OCTETSTRING_ber_, &OCT2n_raw_, &OCTETSTRING_text_, &OCT2n_xer_, &OCT2n_json_, &OCT2n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT2n_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT3n_raw_ = {24,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT3n_xer_ = { {"OCT3n>\n", "OCT3n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT3n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT3n_oer_ext_arr_[0] = {}; +const int OCT3n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT3n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT3n_oer_ext_arr_, 0, OCT3n_oer_p_}; +const TTCN_Typedescriptor_t OCT3n_descr_ = { "@General_Types.OCT3n", &OCTETSTRING_ber_, &OCT3n_raw_, &OCTETSTRING_text_, &OCT3n_xer_, &OCT3n_json_, &OCT3n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT3n_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT4n_raw_ = {32,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT4n_xer_ = { {"OCT4n>\n", "OCT4n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT4n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT4n_oer_ext_arr_[0] = {}; +const int OCT4n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT4n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT4n_oer_ext_arr_, 0, OCT4n_oer_p_}; +const TTCN_Typedescriptor_t OCT4n_descr_ = { "@General_Types.OCT4n", &OCTETSTRING_ber_, &OCT4n_raw_, &OCTETSTRING_text_, &OCT4n_xer_, &OCT4n_json_, &OCT4n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT4n_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT5n_raw_ = {40,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT5n_xer_ = { {"OCT5n>\n", "OCT5n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT5n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT5n_oer_ext_arr_[0] = {}; +const int OCT5n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT5n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT5n_oer_ext_arr_, 0, OCT5n_oer_p_}; +const TTCN_Typedescriptor_t OCT5n_descr_ = { "@General_Types.OCT5n", &OCTETSTRING_ber_, &OCT5n_raw_, &OCTETSTRING_text_, &OCT5n_xer_, &OCT5n_json_, &OCT5n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT5n_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT6n_raw_ = {48,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT6n_xer_ = { {"OCT6n>\n", "OCT6n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT6n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT6n_oer_ext_arr_[0] = {}; +const int OCT6n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT6n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT6n_oer_ext_arr_, 0, OCT6n_oer_p_}; +const TTCN_Typedescriptor_t OCT6n_descr_ = { "@General_Types.OCT6n", &OCTETSTRING_ber_, &OCT6n_raw_, &OCTETSTRING_text_, &OCT6n_xer_, &OCT6n_json_, &OCT6n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT6n_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT7n_raw_ = {56,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT7n_xer_ = { {"OCT7n>\n", "OCT7n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT7n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT7n_oer_ext_arr_[0] = {}; +const int OCT7n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT7n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT7n_oer_ext_arr_, 0, OCT7n_oer_p_}; +const TTCN_Typedescriptor_t OCT7n_descr_ = { "@General_Types.OCT7n", &OCTETSTRING_ber_, &OCT7n_raw_, &OCTETSTRING_text_, &OCT7n_xer_, &OCT7n_json_, &OCT7n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT7n_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT8n_raw_ = {64,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT8n_xer_ = { {"OCT8n>\n", "OCT8n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT8n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT8n_oer_ext_arr_[0] = {}; +const int OCT8n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT8n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT8n_oer_ext_arr_, 0, OCT8n_oer_p_}; +const TTCN_Typedescriptor_t OCT8n_descr_ = { "@General_Types.OCT8n", &OCTETSTRING_ber_, &OCT8n_raw_, &OCTETSTRING_text_, &OCT8n_xer_, &OCT8n_json_, &OCT8n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT8n_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT9n_raw_ = {72,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT9n_xer_ = { {"OCT9n>\n", "OCT9n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT9n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT9n_oer_ext_arr_[0] = {}; +const int OCT9n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT9n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT9n_oer_ext_arr_, 0, OCT9n_oer_p_}; +const TTCN_Typedescriptor_t OCT9n_descr_ = { "@General_Types.OCT9n", &OCTETSTRING_ber_, &OCT9n_raw_, &OCTETSTRING_text_, &OCT9n_xer_, &OCT9n_json_, &OCT9n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT9n_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT10n_raw_ = {80,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT10n_xer_ = { {"OCT10n>\n", "OCT10n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT10n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT10n_oer_ext_arr_[0] = {}; +const int OCT10n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT10n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT10n_oer_ext_arr_, 0, OCT10n_oer_p_}; +const TTCN_Typedescriptor_t OCT10n_descr_ = { "@General_Types.OCT10n", &OCTETSTRING_ber_, &OCT10n_raw_, &OCTETSTRING_text_, &OCT10n_xer_, &OCT10n_json_, &OCT10n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT10n_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT11n_raw_ = {88,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT11n_xer_ = { {"OCT11n>\n", "OCT11n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT11n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT11n_oer_ext_arr_[0] = {}; +const int OCT11n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT11n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT11n_oer_ext_arr_, 0, OCT11n_oer_p_}; +const TTCN_Typedescriptor_t OCT11n_descr_ = { "@General_Types.OCT11n", &OCTETSTRING_ber_, &OCT11n_raw_, &OCTETSTRING_text_, &OCT11n_xer_, &OCT11n_json_, &OCT11n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT11n_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT12n_raw_ = {96,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT12n_xer_ = { {"OCT12n>\n", "OCT12n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT12n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT12n_oer_ext_arr_[0] = {}; +const int OCT12n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT12n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT12n_oer_ext_arr_, 0, OCT12n_oer_p_}; +const TTCN_Typedescriptor_t OCT12n_descr_ = { "@General_Types.OCT12n", &OCTETSTRING_ber_, &OCT12n_raw_, &OCTETSTRING_text_, &OCT12n_xer_, &OCT12n_json_, &OCT12n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT12n_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT13n_raw_ = {104,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT13n_xer_ = { {"OCT13n>\n", "OCT13n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT13n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT13n_oer_ext_arr_[0] = {}; +const int OCT13n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT13n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT13n_oer_ext_arr_, 0, OCT13n_oer_p_}; +const TTCN_Typedescriptor_t OCT13n_descr_ = { "@General_Types.OCT13n", &OCTETSTRING_ber_, &OCT13n_raw_, &OCTETSTRING_text_, &OCT13n_xer_, &OCT13n_json_, &OCT13n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT13n_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT14n_raw_ = {112,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT14n_xer_ = { {"OCT14n>\n", "OCT14n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT14n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT14n_oer_ext_arr_[0] = {}; +const int OCT14n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT14n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT14n_oer_ext_arr_, 0, OCT14n_oer_p_}; +const TTCN_Typedescriptor_t OCT14n_descr_ = { "@General_Types.OCT14n", &OCTETSTRING_ber_, &OCT14n_raw_, &OCTETSTRING_text_, &OCT14n_xer_, &OCT14n_json_, &OCT14n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT14n_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT15n_raw_ = {120,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT15n_xer_ = { {"OCT15n>\n", "OCT15n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT15n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT15n_oer_ext_arr_[0] = {}; +const int OCT15n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT15n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT15n_oer_ext_arr_, 0, OCT15n_oer_p_}; +const TTCN_Typedescriptor_t OCT15n_descr_ = { "@General_Types.OCT15n", &OCTETSTRING_ber_, &OCT15n_raw_, &OCTETSTRING_text_, &OCT15n_xer_, &OCT15n_json_, &OCT15n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT15n_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT16n_raw_ = {128,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT16n_xer_ = { {"OCT16n>\n", "OCT16n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT16n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT16n_oer_ext_arr_[0] = {}; +const int OCT16n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT16n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT16n_oer_ext_arr_, 0, OCT16n_oer_p_}; +const TTCN_Typedescriptor_t OCT16n_descr_ = { "@General_Types.OCT16n", &OCTETSTRING_ber_, &OCT16n_raw_, &OCTETSTRING_text_, &OCT16n_xer_, &OCT16n_json_, &OCT16n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT16n_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT17n_raw_ = {136,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT17n_xer_ = { {"OCT17n>\n", "OCT17n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT17n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT17n_oer_ext_arr_[0] = {}; +const int OCT17n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT17n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT17n_oer_ext_arr_, 0, OCT17n_oer_p_}; +const TTCN_Typedescriptor_t OCT17n_descr_ = { "@General_Types.OCT17n", &OCTETSTRING_ber_, &OCT17n_raw_, &OCTETSTRING_text_, &OCT17n_xer_, &OCT17n_json_, &OCT17n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT17n_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT18n_raw_ = {144,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT18n_xer_ = { {"OCT18n>\n", "OCT18n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT18n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT18n_oer_ext_arr_[0] = {}; +const int OCT18n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT18n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT18n_oer_ext_arr_, 0, OCT18n_oer_p_}; +const TTCN_Typedescriptor_t OCT18n_descr_ = { "@General_Types.OCT18n", &OCTETSTRING_ber_, &OCT18n_raw_, &OCTETSTRING_text_, &OCT18n_xer_, &OCT18n_json_, &OCT18n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT18n_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT19n_raw_ = {152,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT19n_xer_ = { {"OCT19n>\n", "OCT19n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT19n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT19n_oer_ext_arr_[0] = {}; +const int OCT19n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT19n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT19n_oer_ext_arr_, 0, OCT19n_oer_p_}; +const TTCN_Typedescriptor_t OCT19n_descr_ = { "@General_Types.OCT19n", &OCTETSTRING_ber_, &OCT19n_raw_, &OCTETSTRING_text_, &OCT19n_xer_, &OCT19n_json_, &OCT19n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT19n_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT20n_raw_ = {160,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT20n_xer_ = { {"OCT20n>\n", "OCT20n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT20n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT20n_oer_ext_arr_[0] = {}; +const int OCT20n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT20n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT20n_oer_ext_arr_, 0, OCT20n_oer_p_}; +const TTCN_Typedescriptor_t OCT20n_descr_ = { "@General_Types.OCT20n", &OCTETSTRING_ber_, &OCT20n_raw_, &OCTETSTRING_text_, &OCT20n_xer_, &OCT20n_json_, &OCT20n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT20n_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT28n_raw_ = {224,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT28n_xer_ = { {"OCT28n>\n", "OCT28n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT28n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT28n_oer_ext_arr_[0] = {}; +const int OCT28n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT28n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT28n_oer_ext_arr_, 0, OCT28n_oer_p_}; +const TTCN_Typedescriptor_t OCT28n_descr_ = { "@General_Types.OCT28n", &OCTETSTRING_ber_, &OCT28n_raw_, &OCTETSTRING_text_, &OCT28n_xer_, &OCT28n_json_, &OCT28n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT28n_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT32n_raw_ = {256,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT32n_xer_ = { {"OCT32n>\n", "OCT32n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT32n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT32n_oer_ext_arr_[0] = {}; +const int OCT32n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT32n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT32n_oer_ext_arr_, 0, OCT32n_oer_p_}; +const TTCN_Typedescriptor_t OCT32n_descr_ = { "@General_Types.OCT32n", &OCTETSTRING_ber_, &OCT32n_raw_, &OCTETSTRING_text_, &OCT32n_xer_, &OCT32n_json_, &OCT32n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT32n_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT34n_raw_ = {272,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT34n_xer_ = { {"OCT34n>\n", "OCT34n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT34n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT34n_oer_ext_arr_[0] = {}; +const int OCT34n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT34n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT34n_oer_ext_arr_, 0, OCT34n_oer_p_}; +const TTCN_Typedescriptor_t OCT34n_descr_ = { "@General_Types.OCT34n", &OCTETSTRING_ber_, &OCT34n_raw_, &OCTETSTRING_text_, &OCT34n_xer_, &OCT34n_json_, &OCT34n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT34n_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT46n_raw_ = {368,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT46n_xer_ = { {"OCT46n>\n", "OCT46n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT46n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT46n_oer_ext_arr_[0] = {}; +const int OCT46n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT46n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT46n_oer_ext_arr_, 0, OCT46n_oer_p_}; +const TTCN_Typedescriptor_t OCT46n_descr_ = { "@General_Types.OCT46n", &OCTETSTRING_ber_, &OCT46n_raw_, &OCTETSTRING_text_, &OCT46n_xer_, &OCT46n_json_, &OCT46n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT46n_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT50n_raw_ = {400,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT50n_xer_ = { {"OCT50n>\n", "OCT50n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT50n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT50n_oer_ext_arr_[0] = {}; +const int OCT50n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT50n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT50n_oer_ext_arr_, 0, OCT50n_oer_p_}; +const TTCN_Typedescriptor_t OCT50n_descr_ = { "@General_Types.OCT50n", &OCTETSTRING_ber_, &OCT50n_raw_, &OCTETSTRING_text_, &OCT50n_xer_, &OCT50n_json_, &OCT50n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT50n_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT69n_raw_ = {552,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT69n_xer_ = { {"OCT69n>\n", "OCT69n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT69n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT69n_oer_ext_arr_[0] = {}; +const int OCT69n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT69n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT69n_oer_ext_arr_, 0, OCT69n_oer_p_}; +const TTCN_Typedescriptor_t OCT69n_descr_ = { "@General_Types.OCT69n", &OCTETSTRING_ber_, &OCT69n_raw_, &OCTETSTRING_text_, &OCT69n_xer_, &OCT69n_json_, &OCT69n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT69n_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT100n_raw_ = {800,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT100n_xer_ = { {"OCT100n>\n", "OCT100n>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT100n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT100n_oer_ext_arr_[0] = {}; +const int OCT100n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT100n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT100n_oer_ext_arr_, 0, OCT100n_oer_p_}; +const TTCN_Typedescriptor_t OCT100n_descr_ = { "@General_Types.OCT100n", &OCTETSTRING_ber_, &OCT100n_raw_, &OCTETSTRING_text_, &OCT100n_xer_, &OCT100n_json_, &OCT100n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT100n_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT128n_raw_ = {1024,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT128n_xer_ = { {"OCT128n>\n", "OCT128n>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT128n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT128n_oer_ext_arr_[0] = {}; +const int OCT128n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT128n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT128n_oer_ext_arr_, 0, OCT128n_oer_p_}; +const TTCN_Typedescriptor_t OCT128n_descr_ = { "@General_Types.OCT128n", &OCTETSTRING_ber_, &OCT128n_raw_, &OCTETSTRING_text_, &OCT128n_xer_, &OCT128n_json_, &OCT128n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT128n_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT500n_raw_ = {4000,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT500n_xer_ = { {"OCT500n>\n", "OCT500n>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT500n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT500n_oer_ext_arr_[0] = {}; +const int OCT500n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT500n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT500n_oer_ext_arr_, 0, OCT500n_oer_p_}; +const TTCN_Typedescriptor_t OCT500n_descr_ = { "@General_Types.OCT500n", &OCTETSTRING_ber_, &OCT500n_raw_, &OCTETSTRING_text_, &OCT500n_xer_, &OCT500n_json_, &OCT500n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT500n_default_coding("RAW"); +const XERdescriptor_t OCTNn_xer_ = { {"OCTNn>\n", "OCTNn>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCTNn_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCTNn_oer_ext_arr_[0] = {}; +const int OCTNn_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCTNn_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCTNn_oer_ext_arr_, 0, OCTNn_oer_p_}; +const TTCN_Typedescriptor_t OCTNn_descr_ = { "@General_Types.OCTNn", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &OCTNn_xer_, &OCTNn_json_, &OCTNn_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCTNn_default_coding("RAW"); +const XERdescriptor_t OCT1__3n_xer_ = { {"OCT1_3n>\n", "OCT1_3n>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT1__3n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT1__3n_oer_ext_arr_[0] = {}; +const int OCT1__3n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT1__3n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT1__3n_oer_ext_arr_, 0, OCT1__3n_oer_p_}; +const TTCN_Typedescriptor_t OCT1__3n_descr_ = { "@General_Types.OCT1_3n", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &OCT1__3n_xer_, &OCT1__3n_json_, &OCT1__3n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT1__3n_default_coding("RAW"); +const XERdescriptor_t OCT1__4n_xer_ = { {"OCT1_4n>\n", "OCT1_4n>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT1__4n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT1__4n_oer_ext_arr_[0] = {}; +const int OCT1__4n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT1__4n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT1__4n_oer_ext_arr_, 0, OCT1__4n_oer_p_}; +const TTCN_Typedescriptor_t OCT1__4n_descr_ = { "@General_Types.OCT1_4n", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &OCT1__4n_xer_, &OCT1__4n_json_, &OCT1__4n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT1__4n_default_coding("RAW"); +const XERdescriptor_t OCT1__5n_xer_ = { {"OCT1_5n>\n", "OCT1_5n>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT1__5n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT1__5n_oer_ext_arr_[0] = {}; +const int OCT1__5n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT1__5n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT1__5n_oer_ext_arr_, 0, OCT1__5n_oer_p_}; +const TTCN_Typedescriptor_t OCT1__5n_descr_ = { "@General_Types.OCT1_5n", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &OCT1__5n_xer_, &OCT1__5n_json_, &OCT1__5n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT1__5n_default_coding("RAW"); +const XERdescriptor_t OCT1__6n_xer_ = { {"OCT1_6n>\n", "OCT1_6n>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT1__6n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT1__6n_oer_ext_arr_[0] = {}; +const int OCT1__6n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT1__6n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT1__6n_oer_ext_arr_, 0, OCT1__6n_oer_p_}; +const TTCN_Typedescriptor_t OCT1__6n_descr_ = { "@General_Types.OCT1_6n", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &OCT1__6n_xer_, &OCT1__6n_json_, &OCT1__6n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT1__6n_default_coding("RAW"); +const XERdescriptor_t OCT1__7n_xer_ = { {"OCT1_7n>\n", "OCT1_7n>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT1__7n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT1__7n_oer_ext_arr_[0] = {}; +const int OCT1__7n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT1__7n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT1__7n_oer_ext_arr_, 0, OCT1__7n_oer_p_}; +const TTCN_Typedescriptor_t OCT1__7n_descr_ = { "@General_Types.OCT1_7n", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &OCT1__7n_xer_, &OCT1__7n_json_, &OCT1__7n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT1__7n_default_coding("RAW"); +const XERdescriptor_t OCT1__8n_xer_ = { {"OCT1_8n>\n", "OCT1_8n>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT1__8n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT1__8n_oer_ext_arr_[0] = {}; +const int OCT1__8n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT1__8n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT1__8n_oer_ext_arr_, 0, OCT1__8n_oer_p_}; +const TTCN_Typedescriptor_t OCT1__8n_descr_ = { "@General_Types.OCT1_8n", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &OCT1__8n_xer_, &OCT1__8n_json_, &OCT1__8n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT1__8n_default_coding("RAW"); +const XERdescriptor_t OCT1__12n_xer_ = { {"OCT1_12n>\n", "OCT1_12n>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT1__12n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT1__12n_oer_ext_arr_[0] = {}; +const int OCT1__12n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT1__12n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT1__12n_oer_ext_arr_, 0, OCT1__12n_oer_p_}; +const TTCN_Typedescriptor_t OCT1__12n_descr_ = { "@General_Types.OCT1_12n", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &OCT1__12n_xer_, &OCT1__12n_json_, &OCT1__12n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT1__12n_default_coding("RAW"); +const XERdescriptor_t OCT1__15n_xer_ = { {"OCT1_15n>\n", "OCT1_15n>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT1__15n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT1__15n_oer_ext_arr_[0] = {}; +const int OCT1__15n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT1__15n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT1__15n_oer_ext_arr_, 0, OCT1__15n_oer_p_}; +const TTCN_Typedescriptor_t OCT1__15n_descr_ = { "@General_Types.OCT1_15n", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &OCT1__15n_xer_, &OCT1__15n_json_, &OCT1__15n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT1__15n_default_coding("RAW"); +const XERdescriptor_t OCT1__16n_xer_ = { {"OCT1_16n>\n", "OCT1_16n>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT1__16n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT1__16n_oer_ext_arr_[0] = {}; +const int OCT1__16n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT1__16n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT1__16n_oer_ext_arr_, 0, OCT1__16n_oer_p_}; +const TTCN_Typedescriptor_t OCT1__16n_descr_ = { "@General_Types.OCT1_16n", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &OCT1__16n_xer_, &OCT1__16n_json_, &OCT1__16n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT1__16n_default_coding("RAW"); +const XERdescriptor_t OCT1__18n_xer_ = { {"OCT1_18n>\n", "OCT1_18n>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT1__18n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT1__18n_oer_ext_arr_[0] = {}; +const int OCT1__18n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT1__18n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT1__18n_oer_ext_arr_, 0, OCT1__18n_oer_p_}; +const TTCN_Typedescriptor_t OCT1__18n_descr_ = { "@General_Types.OCT1_18n", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &OCT1__18n_xer_, &OCT1__18n_json_, &OCT1__18n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT1__18n_default_coding("RAW"); +const XERdescriptor_t OCT1__20n_xer_ = { {"OCT1_20n>\n", "OCT1_20n>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT1__20n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT1__20n_oer_ext_arr_[0] = {}; +const int OCT1__20n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT1__20n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT1__20n_oer_ext_arr_, 0, OCT1__20n_oer_p_}; +const TTCN_Typedescriptor_t OCT1__20n_descr_ = { "@General_Types.OCT1_20n", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &OCT1__20n_xer_, &OCT1__20n_json_, &OCT1__20n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT1__20n_default_coding("RAW"); +const XERdescriptor_t OCT1__24n_xer_ = { {"OCT1_24n>\n", "OCT1_24n>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT1__24n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT1__24n_oer_ext_arr_[0] = {}; +const int OCT1__24n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT1__24n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT1__24n_oer_ext_arr_, 0, OCT1__24n_oer_p_}; +const TTCN_Typedescriptor_t OCT1__24n_descr_ = { "@General_Types.OCT1_24n", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &OCT1__24n_xer_, &OCT1__24n_json_, &OCT1__24n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT1__24n_default_coding("RAW"); +const XERdescriptor_t OCT1__32n_xer_ = { {"OCT1_32n>\n", "OCT1_32n>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT1__32n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT1__32n_oer_ext_arr_[0] = {}; +const int OCT1__32n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT1__32n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT1__32n_oer_ext_arr_, 0, OCT1__32n_oer_p_}; +const TTCN_Typedescriptor_t OCT1__32n_descr_ = { "@General_Types.OCT1_32n", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &OCT1__32n_xer_, &OCT1__32n_json_, &OCT1__32n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT1__32n_default_coding("RAW"); +const XERdescriptor_t OCT1__34n_xer_ = { {"OCT1_34n>\n", "OCT1_34n>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT1__34n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT1__34n_oer_ext_arr_[0] = {}; +const int OCT1__34n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT1__34n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT1__34n_oer_ext_arr_, 0, OCT1__34n_oer_p_}; +const TTCN_Typedescriptor_t OCT1__34n_descr_ = { "@General_Types.OCT1_34n", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &OCT1__34n_xer_, &OCT1__34n_json_, &OCT1__34n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT1__34n_default_coding("RAW"); +const XERdescriptor_t OCT1__46n_xer_ = { {"OCT1_46n>\n", "OCT1_46n>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT1__46n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT1__46n_oer_ext_arr_[0] = {}; +const int OCT1__46n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT1__46n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT1__46n_oer_ext_arr_, 0, OCT1__46n_oer_p_}; +const TTCN_Typedescriptor_t OCT1__46n_descr_ = { "@General_Types.OCT1_46n", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &OCT1__46n_xer_, &OCT1__46n_json_, &OCT1__46n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT1__46n_default_coding("RAW"); +const XERdescriptor_t OCT1__50n_xer_ = { {"OCT1_50n>\n", "OCT1_50n>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT1__50n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT1__50n_oer_ext_arr_[0] = {}; +const int OCT1__50n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT1__50n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT1__50n_oer_ext_arr_, 0, OCT1__50n_oer_p_}; +const TTCN_Typedescriptor_t OCT1__50n_descr_ = { "@General_Types.OCT1_50n", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &OCT1__50n_xer_, &OCT1__50n_json_, &OCT1__50n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT1__50n_default_coding("RAW"); +const XERdescriptor_t OCT1__112n_xer_ = { {"OCT1_112n>\n", "OCT1_112n>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT1__112n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT1__112n_oer_ext_arr_[0] = {}; +const int OCT1__112n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT1__112n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT1__112n_oer_ext_arr_, 0, OCT1__112n_oer_p_}; +const TTCN_Typedescriptor_t OCT1__112n_descr_ = { "@General_Types.OCT1_112n", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &OCT1__112n_xer_, &OCT1__112n_json_, &OCT1__112n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT1__112n_default_coding("RAW"); +const XERdescriptor_t OCT1__127n_xer_ = { {"OCT1_127n>\n", "OCT1_127n>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT1__127n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT1__127n_oer_ext_arr_[0] = {}; +const int OCT1__127n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT1__127n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT1__127n_oer_ext_arr_, 0, OCT1__127n_oer_p_}; +const TTCN_Typedescriptor_t OCT1__127n_descr_ = { "@General_Types.OCT1_127n", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &OCT1__127n_xer_, &OCT1__127n_json_, &OCT1__127n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT1__127n_default_coding("RAW"); +const XERdescriptor_t OCT1__128n_xer_ = { {"OCT1_128n>\n", "OCT1_128n>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT1__128n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT1__128n_oer_ext_arr_[0] = {}; +const int OCT1__128n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT1__128n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT1__128n_oer_ext_arr_, 0, OCT1__128n_oer_p_}; +const TTCN_Typedescriptor_t OCT1__128n_descr_ = { "@General_Types.OCT1_128n", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &OCT1__128n_xer_, &OCT1__128n_json_, &OCT1__128n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT1__128n_default_coding("RAW"); +const XERdescriptor_t OCT1__172n_xer_ = { {"OCT1_172n>\n", "OCT1_172n>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT1__172n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT1__172n_oer_ext_arr_[0] = {}; +const int OCT1__172n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT1__172n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT1__172n_oer_ext_arr_, 0, OCT1__172n_oer_p_}; +const TTCN_Typedescriptor_t OCT1__172n_descr_ = { "@General_Types.OCT1_172n", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &OCT1__172n_xer_, &OCT1__172n_json_, &OCT1__172n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT1__172n_default_coding("RAW"); +const XERdescriptor_t OCT3__5n_xer_ = { {"OCT3_5n>\n", "OCT3_5n>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT3__5n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT3__5n_oer_ext_arr_[0] = {}; +const int OCT3__5n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT3__5n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT3__5n_oer_ext_arr_, 0, OCT3__5n_oer_p_}; +const TTCN_Typedescriptor_t OCT3__5n_descr_ = { "@General_Types.OCT3_5n", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &OCT3__5n_xer_, &OCT3__5n_json_, &OCT3__5n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT3__5n_default_coding("RAW"); +const XERdescriptor_t OCT3__7n_xer_ = { {"OCT3_7n>\n", "OCT3_7n>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT3__7n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT3__7n_oer_ext_arr_[0] = {}; +const int OCT3__7n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT3__7n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT3__7n_oer_ext_arr_, 0, OCT3__7n_oer_p_}; +const TTCN_Typedescriptor_t OCT3__7n_descr_ = { "@General_Types.OCT3_7n", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &OCT3__7n_xer_, &OCT3__7n_json_, &OCT3__7n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT3__7n_default_coding("RAW"); +const XERdescriptor_t OCT3__8n_xer_ = { {"OCT3_8n>\n", "OCT3_8n>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT3__8n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT3__8n_oer_ext_arr_[0] = {}; +const int OCT3__8n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT3__8n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT3__8n_oer_ext_arr_, 0, OCT3__8n_oer_p_}; +const TTCN_Typedescriptor_t OCT3__8n_descr_ = { "@General_Types.OCT3_8n", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &OCT3__8n_xer_, &OCT3__8n_json_, &OCT3__8n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT3__8n_default_coding("RAW"); +const XERdescriptor_t OCT3__14n_xer_ = { {"OCT3_14n>\n", "OCT3_14n>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT3__14n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT3__14n_oer_ext_arr_[0] = {}; +const int OCT3__14n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT3__14n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT3__14n_oer_ext_arr_, 0, OCT3__14n_oer_p_}; +const TTCN_Typedescriptor_t OCT3__14n_descr_ = { "@General_Types.OCT3_14n", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &OCT3__14n_xer_, &OCT3__14n_json_, &OCT3__14n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT3__14n_default_coding("RAW"); +const XERdescriptor_t OCT3__17n_xer_ = { {"OCT3_17n>\n", "OCT3_17n>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT3__17n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT3__17n_oer_ext_arr_[0] = {}; +const int OCT3__17n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT3__17n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT3__17n_oer_ext_arr_, 0, OCT3__17n_oer_p_}; +const TTCN_Typedescriptor_t OCT3__17n_descr_ = { "@General_Types.OCT3_17n", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &OCT3__17n_xer_, &OCT3__17n_json_, &OCT3__17n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT3__17n_default_coding("RAW"); +const XERdescriptor_t OCT4__8n_xer_ = { {"OCT4_8n>\n", "OCT4_8n>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT4__8n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT4__8n_oer_ext_arr_[0] = {}; +const int OCT4__8n_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT4__8n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT4__8n_oer_ext_arr_, 0, OCT4__8n_oer_p_}; +const TTCN_Typedescriptor_t OCT4__8n_descr_ = { "@General_Types.OCT4_8n", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &OCT4__8n_xer_, &OCT4__8n_json_, &OCT4__8n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT4__8n_default_coding("RAW"); +const TTCN_RAWdescriptor_t CHAR4_raw_ = {32,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t CHAR4_xer_ = { {"CHAR4>\n", "CHAR4>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t CHAR4_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t CHAR4_descr_ = { "@General_Types.CHAR4", NULL, &CHAR4_raw_, &CHARSTRING_text_, &CHAR4_xer_, &CHAR4_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING CHAR4_default_coding("RAW"); +const TTCN_RAWdescriptor_t HEX4n_raw_ = {16,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t HEX4n_xer_ = { {"HEX4n>\n", "HEX4n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t HEX4n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t HEX4n_descr_ = { "@General_Types.HEX4n", NULL, &HEX4n_raw_, NULL, &HEX4n_xer_, &HEX4n_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING HEX4n_default_coding("RAW"); +const TTCN_RAWdescriptor_t HEX6n_raw_ = {24,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t HEX6n_xer_ = { {"HEX6n>\n", "HEX6n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t HEX6n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t HEX6n_descr_ = { "@General_Types.HEX6n", NULL, &HEX6n_raw_, NULL, &HEX6n_xer_, &HEX6n_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING HEX6n_default_coding("RAW"); +const TTCN_RAWdescriptor_t HEX8n_raw_ = {32,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t HEX8n_xer_ = { {"HEX8n>\n", "HEX8n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t HEX8n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t HEX8n_descr_ = { "@General_Types.HEX8n", NULL, &HEX8n_raw_, NULL, &HEX8n_xer_, &HEX8n_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING HEX8n_default_coding("RAW"); +const TTCN_RAWdescriptor_t HEX15n_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}; +const XERdescriptor_t HEX15n_xer_ = { {"HEX15n>\n", "HEX15n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t HEX15n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t HEX15n_descr_ = { "@General_Types.HEX15n", NULL, &HEX15n_raw_, NULL, &HEX15n_xer_, &HEX15n_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING HEX15n_default_coding("RAW"); +const TTCN_RAWdescriptor_t HEX16n_raw_ = {64,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t HEX16n_xer_ = { {"HEX16n>\n", "HEX16n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t HEX16n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t HEX16n_descr_ = { "@General_Types.HEX16n", NULL, &HEX16n_raw_, NULL, &HEX16n_xer_, &HEX16n_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING HEX16n_default_coding("RAW"); +const TTCN_RAWdescriptor_t HEX24n_raw_ = {96,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t HEX24n_xer_ = { {"HEX24n>\n", "HEX24n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t HEX24n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t HEX24n_descr_ = { "@General_Types.HEX24n", NULL, &HEX24n_raw_, NULL, &HEX24n_xer_, &HEX24n_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING HEX24n_default_coding("RAW"); +const XERdescriptor_t HEX0__3n_xer_ = { {"HEX0_3n>\n", "HEX0_3n>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t HEX0__3n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t HEX0__3n_descr_ = { "@General_Types.HEX0_3n", NULL, &HEXSTRING_raw_, NULL, &HEX0__3n_xer_, &HEX0__3n_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING HEX0__3n_default_coding("RAW"); +const XERdescriptor_t HEX0__18n_xer_ = { {"HEX0_18n>\n", "HEX0_18n>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t HEX0__18n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t HEX0__18n_descr_ = { "@General_Types.HEX0_18n", NULL, &HEXSTRING_raw_, NULL, &HEX0__18n_xer_, &HEX0__18n_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING HEX0__18n_default_coding("RAW"); +const XERdescriptor_t HEX1__20n_xer_ = { {"HEX1_20n>\n", "HEX1_20n>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t HEX1__20n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t HEX1__20n_descr_ = { "@General_Types.HEX1_20n", NULL, &HEXSTRING_raw_, NULL, &HEX1__20n_xer_, &HEX1__20n_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING HEX1__20n_default_coding("RAW"); +const XERdescriptor_t HEX1__34n_xer_ = { {"HEX1_34n>\n", "HEX1_34n>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t HEX1__34n_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t HEX1__34n_descr_ = { "@General_Types.HEX1_34n", NULL, &HEXSTRING_raw_, NULL, &HEX1__34n_xer_, &HEX1__34n_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING HEX1__34n_default_coding("RAW"); +const XERdescriptor_t INT3nb_xer_ = { {"INT3nb>\n", "INT3nb>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t INT3nb_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t INT3nb_descr_ = { "@General_Types.INT3nb", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &INT3nb_xer_, &INT3nb_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING INT3nb_default_coding("RAW"); +const XERdescriptor_t INT4nb_xer_ = { {"INT4nb>\n", "INT4nb>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t INT4nb_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t INT4nb_descr_ = { "@General_Types.INT4nb", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &INT4nb_xer_, &INT4nb_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING INT4nb_default_coding("RAW"); +const XERdescriptor_t INT5nb_xer_ = { {"INT5nb>\n", "INT5nb>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t INT5nb_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t INT5nb_descr_ = { "@General_Types.INT5nb", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &INT5nb_xer_, &INT5nb_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING INT5nb_default_coding("RAW"); +const XERdescriptor_t INT8nb_xer_ = { {"INT8nb>\n", "INT8nb>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t INT8nb_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t INT8nb_descr_ = { "@General_Types.INT8nb", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &INT8nb_xer_, &INT8nb_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING INT8nb_default_coding("RAW"); +const XERdescriptor_t INT2nbp_xer_ = { {"INT2nbp>\n", "INT2nbp>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t INT2nbp_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t INT2nbp_descr_ = { "@General_Types.INT2nbp", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &INT2nbp_xer_, &INT2nbp_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING INT2nbp_default_coding("RAW"); +const XERdescriptor_t INT1nbp_xer_ = { {"INT1nbp>\n", "INT1nbp>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t INT1nbp_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t INT1nbp_descr_ = { "@General_Types.INT1nbp", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &INT1nbp_xer_, &INT1nbp_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING INT1nbp_default_coding("RAW"); +const XERdescriptor_t INT3nbp_xer_ = { {"INT3nbp>\n", "INT3nbp>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t INT3nbp_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t INT3nbp_descr_ = { "@General_Types.INT3nbp", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &INT3nbp_xer_, &INT3nbp_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING INT3nbp_default_coding("RAW"); +const XERdescriptor_t INT5nbp_xer_ = { {"INT5nbp>\n", "INT5nbp>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t INT5nbp_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t INT5nbp_descr_ = { "@General_Types.INT5nbp", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &INT5nbp_xer_, &INT5nbp_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING INT5nbp_default_coding("RAW"); +const XERdescriptor_t INT9nbp_xer_ = { {"INT9nbp>\n", "INT9nbp>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t INT9nbp_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t INT9nbp_descr_ = { "@General_Types.INT9nbp", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &INT9nbp_xer_, &INT9nbp_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING INT9nbp_default_coding("RAW"); +const XERdescriptor_t INT13nbp_xer_ = { {"INT13nbp>\n", "INT13nbp>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t INT13nbp_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t INT13nbp_descr_ = { "@General_Types.INT13nbp", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &INT13nbp_xer_, &INT13nbp_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING INT13nbp_default_coding("RAW"); +const XERdescriptor_t INT15nbp_xer_ = { {"INT15nbp>\n", "INT15nbp>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t INT15nbp_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t INT15nbp_descr_ = { "@General_Types.INT15nbp", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &INT15nbp_xer_, &INT15nbp_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING INT15nbp_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT6__BO__LAST_raw_ = {6,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}; +const XERdescriptor_t BIT6__BO__LAST_xer_ = { {"BIT6_BO_LAST>\n", "BIT6_BO_LAST>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT6__BO__LAST_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT6__BO__LAST_descr_ = { "@General_Types.BIT6_BO_LAST", &BITSTRING_ber_, &BIT6__BO__LAST_raw_, NULL, &BIT6__BO__LAST_xer_, &BIT6__BO__LAST_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT6__BO__LAST_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT16__BO__LAST_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}; +const XERdescriptor_t BIT16__BO__LAST_xer_ = { {"BIT16_BO_LAST>\n", "BIT16_BO_LAST>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT16__BO__LAST_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT16__BO__LAST_descr_ = { "@General_Types.BIT16_BO_LAST", &BITSTRING_ber_, &BIT16__BO__LAST_raw_, NULL, &BIT16__BO__LAST_xer_, &BIT16__BO__LAST_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT16__BO__LAST_default_coding("RAW"); +const TTCN_RAWdescriptor_t BIT32__BO__LAST_raw_ = {32,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}; +const XERdescriptor_t BIT32__BO__LAST_xer_ = { {"BIT32_BO_LAST>\n", "BIT32_BO_LAST>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t BIT32__BO__LAST_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t BIT32__BO__LAST_descr_ = { "@General_Types.BIT32_BO_LAST", &BITSTRING_ber_, &BIT32__BO__LAST_raw_, NULL, &BIT32__BO__LAST_xer_, &BIT32__BO__LAST_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING BIT32__BO__LAST_default_coding("RAW"); +const TTCN_RAWdescriptor_t Dummy_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t Dummy_xer_ = { {"Dummy>\n", "Dummy>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t Dummy_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int Dummy_oer_ext_arr_[0] = {}; +const int Dummy_oer_p_[0] = {}; +const TTCN_OERdescriptor_t Dummy_oer_ = { -1, FALSE, -1, FALSE, 0, 0, Dummy_oer_ext_arr_, 0, Dummy_oer_p_}; +const TTCN_Typedescriptor_t Dummy_descr_ = { "@General_Types.Dummy", &OCTETSTRING_ber_, &Dummy_raw_, &OCTETSTRING_text_, &Dummy_xer_, &Dummy_json_, &Dummy_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING Dummy_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT0_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT0_xer_ = { {"OCT0>\n", "OCT0>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT0_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT0_oer_ext_arr_[0] = {}; +const int OCT0_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT0_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT0_oer_ext_arr_, 0, OCT0_oer_p_}; +const TTCN_Typedescriptor_t OCT0_descr_ = { "@General_Types.OCT0", &OCTETSTRING_ber_, &OCT0_raw_, &OCTETSTRING_text_, &OCT0_xer_, &OCT0_json_, &OCT0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT0_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT1_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}; +const XERdescriptor_t OCT1_xer_ = { {"OCT1>\n", "OCT1>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT1_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT1_oer_ext_arr_[0] = {}; +const int OCT1_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT1_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT1_oer_ext_arr_, 0, OCT1_oer_p_}; +const TTCN_Typedescriptor_t OCT1_descr_ = { "@General_Types.OCT1", &OCTETSTRING_ber_, &OCT1_raw_, &OCTETSTRING_text_, &OCT1_xer_, &OCT1_json_, &OCT1_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT1_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT2_raw_ = {16,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT2_xer_ = { {"OCT2>\n", "OCT2>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT2_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT2_oer_ext_arr_[0] = {}; +const int OCT2_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT2_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT2_oer_ext_arr_, 0, OCT2_oer_p_}; +const TTCN_Typedescriptor_t OCT2_descr_ = { "@General_Types.OCT2", &OCTETSTRING_ber_, &OCT2_raw_, &OCTETSTRING_text_, &OCT2_xer_, &OCT2_json_, &OCT2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT2_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT3_raw_ = {24,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,3,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT3_xer_ = { {"OCT3>\n", "OCT3>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT3_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT3_oer_ext_arr_[0] = {}; +const int OCT3_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT3_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT3_oer_ext_arr_, 0, OCT3_oer_p_}; +const TTCN_Typedescriptor_t OCT3_descr_ = { "@General_Types.OCT3", &OCTETSTRING_ber_, &OCT3_raw_, &OCTETSTRING_text_, &OCT3_xer_, &OCT3_json_, &OCT3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT3_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT4_raw_ = {32,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,4,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT4_xer_ = { {"OCT4>\n", "OCT4>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT4_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT4_oer_ext_arr_[0] = {}; +const int OCT4_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT4_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT4_oer_ext_arr_, 0, OCT4_oer_p_}; +const TTCN_Typedescriptor_t OCT4_descr_ = { "@General_Types.OCT4", &OCTETSTRING_ber_, &OCT4_raw_, &OCTETSTRING_text_, &OCT4_xer_, &OCT4_json_, &OCT4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT4_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT5_raw_ = {40,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,5,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT5_xer_ = { {"OCT5>\n", "OCT5>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT5_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT5_oer_ext_arr_[0] = {}; +const int OCT5_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT5_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT5_oer_ext_arr_, 0, OCT5_oer_p_}; +const TTCN_Typedescriptor_t OCT5_descr_ = { "@General_Types.OCT5", &OCTETSTRING_ber_, &OCT5_raw_, &OCTETSTRING_text_, &OCT5_xer_, &OCT5_json_, &OCT5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT5_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT6_raw_ = {48,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,6,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT6_xer_ = { {"OCT6>\n", "OCT6>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT6_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT6_oer_ext_arr_[0] = {}; +const int OCT6_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT6_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT6_oer_ext_arr_, 0, OCT6_oer_p_}; +const TTCN_Typedescriptor_t OCT6_descr_ = { "@General_Types.OCT6", &OCTETSTRING_ber_, &OCT6_raw_, &OCTETSTRING_text_, &OCT6_xer_, &OCT6_json_, &OCT6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT6_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT7_raw_ = {56,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,7,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT7_xer_ = { {"OCT7>\n", "OCT7>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT7_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT7_oer_ext_arr_[0] = {}; +const int OCT7_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT7_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT7_oer_ext_arr_, 0, OCT7_oer_p_}; +const TTCN_Typedescriptor_t OCT7_descr_ = { "@General_Types.OCT7", &OCTETSTRING_ber_, &OCT7_raw_, &OCTETSTRING_text_, &OCT7_xer_, &OCT7_json_, &OCT7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT7_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT8_raw_ = {64,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,8,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT8_xer_ = { {"OCT8>\n", "OCT8>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT8_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT8_oer_ext_arr_[0] = {}; +const int OCT8_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT8_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT8_oer_ext_arr_, 0, OCT8_oer_p_}; +const TTCN_Typedescriptor_t OCT8_descr_ = { "@General_Types.OCT8", &OCTETSTRING_ber_, &OCT8_raw_, &OCTETSTRING_text_, &OCT8_xer_, &OCT8_json_, &OCT8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT8_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT9_raw_ = {72,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,9,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT9_xer_ = { {"OCT9>\n", "OCT9>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT9_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT9_oer_ext_arr_[0] = {}; +const int OCT9_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT9_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT9_oer_ext_arr_, 0, OCT9_oer_p_}; +const TTCN_Typedescriptor_t OCT9_descr_ = { "@General_Types.OCT9", &OCTETSTRING_ber_, &OCT9_raw_, &OCTETSTRING_text_, &OCT9_xer_, &OCT9_json_, &OCT9_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT9_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT10_raw_ = {80,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,10,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT10_xer_ = { {"OCT10>\n", "OCT10>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT10_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT10_oer_ext_arr_[0] = {}; +const int OCT10_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT10_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT10_oer_ext_arr_, 0, OCT10_oer_p_}; +const TTCN_Typedescriptor_t OCT10_descr_ = { "@General_Types.OCT10", &OCTETSTRING_ber_, &OCT10_raw_, &OCTETSTRING_text_, &OCT10_xer_, &OCT10_json_, &OCT10_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT10_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT11_raw_ = {88,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,11,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT11_xer_ = { {"OCT11>\n", "OCT11>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT11_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT11_oer_ext_arr_[0] = {}; +const int OCT11_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT11_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT11_oer_ext_arr_, 0, OCT11_oer_p_}; +const TTCN_Typedescriptor_t OCT11_descr_ = { "@General_Types.OCT11", &OCTETSTRING_ber_, &OCT11_raw_, &OCTETSTRING_text_, &OCT11_xer_, &OCT11_json_, &OCT11_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT11_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT12_raw_ = {96,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,12,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT12_xer_ = { {"OCT12>\n", "OCT12>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT12_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT12_oer_ext_arr_[0] = {}; +const int OCT12_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT12_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT12_oer_ext_arr_, 0, OCT12_oer_p_}; +const TTCN_Typedescriptor_t OCT12_descr_ = { "@General_Types.OCT12", &OCTETSTRING_ber_, &OCT12_raw_, &OCTETSTRING_text_, &OCT12_xer_, &OCT12_json_, &OCT12_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT12_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT13_raw_ = {104,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,13,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT13_xer_ = { {"OCT13>\n", "OCT13>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT13_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT13_oer_ext_arr_[0] = {}; +const int OCT13_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT13_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT13_oer_ext_arr_, 0, OCT13_oer_p_}; +const TTCN_Typedescriptor_t OCT13_descr_ = { "@General_Types.OCT13", &OCTETSTRING_ber_, &OCT13_raw_, &OCTETSTRING_text_, &OCT13_xer_, &OCT13_json_, &OCT13_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT13_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT14_raw_ = {112,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,14,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT14_xer_ = { {"OCT14>\n", "OCT14>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT14_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT14_oer_ext_arr_[0] = {}; +const int OCT14_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT14_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT14_oer_ext_arr_, 0, OCT14_oer_p_}; +const TTCN_Typedescriptor_t OCT14_descr_ = { "@General_Types.OCT14", &OCTETSTRING_ber_, &OCT14_raw_, &OCTETSTRING_text_, &OCT14_xer_, &OCT14_json_, &OCT14_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT14_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT15_raw_ = {120,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,15,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT15_xer_ = { {"OCT15>\n", "OCT15>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT15_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT15_oer_ext_arr_[0] = {}; +const int OCT15_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT15_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT15_oer_ext_arr_, 0, OCT15_oer_p_}; +const TTCN_Typedescriptor_t OCT15_descr_ = { "@General_Types.OCT15", &OCTETSTRING_ber_, &OCT15_raw_, &OCTETSTRING_text_, &OCT15_xer_, &OCT15_json_, &OCT15_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT15_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT16_raw_ = {128,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,16,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT16_xer_ = { {"OCT16>\n", "OCT16>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT16_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT16_oer_ext_arr_[0] = {}; +const int OCT16_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT16_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT16_oer_ext_arr_, 0, OCT16_oer_p_}; +const TTCN_Typedescriptor_t OCT16_descr_ = { "@General_Types.OCT16", &OCTETSTRING_ber_, &OCT16_raw_, &OCTETSTRING_text_, &OCT16_xer_, &OCT16_json_, &OCT16_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT16_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT17_raw_ = {136,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,17,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT17_xer_ = { {"OCT17>\n", "OCT17>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT17_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT17_oer_ext_arr_[0] = {}; +const int OCT17_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT17_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT17_oer_ext_arr_, 0, OCT17_oer_p_}; +const TTCN_Typedescriptor_t OCT17_descr_ = { "@General_Types.OCT17", &OCTETSTRING_ber_, &OCT17_raw_, &OCTETSTRING_text_, &OCT17_xer_, &OCT17_json_, &OCT17_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT17_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT18_raw_ = {144,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,18,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT18_xer_ = { {"OCT18>\n", "OCT18>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT18_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT18_oer_ext_arr_[0] = {}; +const int OCT18_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT18_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT18_oer_ext_arr_, 0, OCT18_oer_p_}; +const TTCN_Typedescriptor_t OCT18_descr_ = { "@General_Types.OCT18", &OCTETSTRING_ber_, &OCT18_raw_, &OCTETSTRING_text_, &OCT18_xer_, &OCT18_json_, &OCT18_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT18_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT19_raw_ = {152,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,19,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT19_xer_ = { {"OCT19>\n", "OCT19>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT19_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT19_oer_ext_arr_[0] = {}; +const int OCT19_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT19_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT19_oer_ext_arr_, 0, OCT19_oer_p_}; +const TTCN_Typedescriptor_t OCT19_descr_ = { "@General_Types.OCT19", &OCTETSTRING_ber_, &OCT19_raw_, &OCTETSTRING_text_, &OCT19_xer_, &OCT19_json_, &OCT19_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT19_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT20_raw_ = {160,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,20,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT20_xer_ = { {"OCT20>\n", "OCT20>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT20_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT20_oer_ext_arr_[0] = {}; +const int OCT20_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT20_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT20_oer_ext_arr_, 0, OCT20_oer_p_}; +const TTCN_Typedescriptor_t OCT20_descr_ = { "@General_Types.OCT20", &OCTETSTRING_ber_, &OCT20_raw_, &OCTETSTRING_text_, &OCT20_xer_, &OCT20_json_, &OCT20_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT20_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT32_raw_ = {256,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,32,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT32_xer_ = { {"OCT32>\n", "OCT32>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT32_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT32_oer_ext_arr_[0] = {}; +const int OCT32_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT32_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT32_oer_ext_arr_, 0, OCT32_oer_p_}; +const TTCN_Typedescriptor_t OCT32_descr_ = { "@General_Types.OCT32", &OCTETSTRING_ber_, &OCT32_raw_, &OCTETSTRING_text_, &OCT32_xer_, &OCT32_json_, &OCT32_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT32_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT34_raw_ = {272,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,34,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT34_xer_ = { {"OCT34>\n", "OCT34>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT34_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT34_oer_ext_arr_[0] = {}; +const int OCT34_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT34_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT34_oer_ext_arr_, 0, OCT34_oer_p_}; +const TTCN_Typedescriptor_t OCT34_descr_ = { "@General_Types.OCT34", &OCTETSTRING_ber_, &OCT34_raw_, &OCTETSTRING_text_, &OCT34_xer_, &OCT34_json_, &OCT34_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT34_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT46_raw_ = {368,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,46,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT46_xer_ = { {"OCT46>\n", "OCT46>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT46_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT46_oer_ext_arr_[0] = {}; +const int OCT46_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT46_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT46_oer_ext_arr_, 0, OCT46_oer_p_}; +const TTCN_Typedescriptor_t OCT46_descr_ = { "@General_Types.OCT46", &OCTETSTRING_ber_, &OCT46_raw_, &OCTETSTRING_text_, &OCT46_xer_, &OCT46_json_, &OCT46_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT46_default_coding("RAW"); +const XERdescriptor_t OCT1__260_xer_ = { {"OCT1_260>\n", "OCT1_260>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT1__260_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT1__260_oer_ext_arr_[0] = {}; +const int OCT1__260_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT1__260_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT1__260_oer_ext_arr_, 0, OCT1__260_oer_p_}; +const TTCN_Typedescriptor_t OCT1__260_descr_ = { "@General_Types.OCT1_260", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &OCT1__260_xer_, &OCT1__260_json_, &OCT1__260_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT1__260_default_coding("RAW"); +const XERdescriptor_t OCT1__8_xer_ = { {"OCT1_8>\n", "OCT1_8>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT1__8_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT1__8_oer_ext_arr_[0] = {}; +const int OCT1__8_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT1__8_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT1__8_oer_ext_arr_, 0, OCT1__8_oer_p_}; +const TTCN_Typedescriptor_t OCT1__8_descr_ = { "@General_Types.OCT1_8", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &OCT1__8_xer_, &OCT1__8_json_, &OCT1__8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT1__8_default_coding("RAW"); +const XERdescriptor_t OCT1__12_xer_ = { {"OCT1_12>\n", "OCT1_12>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT1__12_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT1__12_oer_ext_arr_[0] = {}; +const int OCT1__12_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT1__12_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT1__12_oer_ext_arr_, 0, OCT1__12_oer_p_}; +const TTCN_Typedescriptor_t OCT1__12_descr_ = { "@General_Types.OCT1_12", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &OCT1__12_xer_, &OCT1__12_json_, &OCT1__12_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT1__12_default_coding("RAW"); +const XERdescriptor_t OCT1__32_xer_ = { {"OCT1_32>\n", "OCT1_32>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT1__32_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT1__32_oer_ext_arr_[0] = {}; +const int OCT1__32_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT1__32_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT1__32_oer_ext_arr_, 0, OCT1__32_oer_p_}; +const TTCN_Typedescriptor_t OCT1__32_descr_ = { "@General_Types.OCT1_32", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &OCT1__32_xer_, &OCT1__32_json_, &OCT1__32_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT1__32_default_coding("RAW"); +const XERdescriptor_t OCT1__50_xer_ = { {"OCT1_50>\n", "OCT1_50>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT1__50_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT1__50_oer_ext_arr_[0] = {}; +const int OCT1__50_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT1__50_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT1__50_oer_ext_arr_, 0, OCT1__50_oer_p_}; +const TTCN_Typedescriptor_t OCT1__50_descr_ = { "@General_Types.OCT1_50", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &OCT1__50_xer_, &OCT1__50_json_, &OCT1__50_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT1__50_default_coding("RAW"); +const XERdescriptor_t OCT3__8_xer_ = { {"OCT3_8>\n", "OCT3_8>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT3__8_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT3__8_oer_ext_arr_[0] = {}; +const int OCT3__8_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT3__8_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT3__8_oer_ext_arr_, 0, OCT3__8_oer_p_}; +const TTCN_Typedescriptor_t OCT3__8_descr_ = { "@General_Types.OCT3_8", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &OCT3__8_xer_, &OCT3__8_json_, &OCT3__8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT3__8_default_coding("RAW"); +const XERdescriptor_t OCTN_xer_ = { {"OCTN>\n", "OCTN>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCTN_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCTN_oer_ext_arr_[0] = {}; +const int OCTN_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCTN_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCTN_oer_ext_arr_, 0, OCTN_oer_p_}; +const TTCN_Typedescriptor_t OCTN_descr_ = { "@General_Types.OCTN", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &OCTN_xer_, &OCTN_json_, &OCTN_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCTN_default_coding("RAW"); +const TTCN_RAWdescriptor_t HEX1_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}; +const XERdescriptor_t HEX1_xer_ = { {"HEX1>\n", "HEX1>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t HEX1_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t HEX1_descr_ = { "@General_Types.HEX1", NULL, &HEX1_raw_, NULL, &HEX1_xer_, &HEX1_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING HEX1_default_coding("RAW"); +const XERdescriptor_t HEX0__16_xer_ = { {"HEX0_16>\n", "HEX0_16>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t HEX0__16_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t HEX0__16_descr_ = { "@General_Types.HEX0_16", NULL, &HEXSTRING_raw_, NULL, &HEX0__16_xer_, &HEX0__16_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING HEX0__16_default_coding("RAW"); +const XERdescriptor_t HEX5__16_xer_ = { {"HEX5_16>\n", "HEX5_16>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t HEX5__16_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t HEX5__16_descr_ = { "@General_Types.HEX5_16", NULL, &HEXSTRING_raw_, NULL, &HEX5__16_xer_, &HEX5__16_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING HEX5__16_default_coding("RAW"); +const XERdescriptor_t HEX1__32_xer_ = { {"HEX1_32>\n", "HEX1_32>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t HEX1__32_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t HEX1__32_descr_ = { "@General_Types.HEX1_32", NULL, &HEXSTRING_raw_, NULL, &HEX1__32_xer_, &HEX1__32_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING HEX1__32_default_coding("RAW"); +const TTCN_RAWdescriptor_t INT1_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}; +const XERdescriptor_t INT1_xer_ = { {"INT1>\n", "INT1>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t INT1_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t INT1_descr_ = { "@General_Types.INT1", &INTEGER_ber_, &INT1_raw_, &INTEGER_text_, &INT1_xer_, &INT1_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING INT1_default_coding("RAW"); +const TTCN_RAWdescriptor_t LIN1_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}; +const XERdescriptor_t LIN1_xer_ = { {"LIN1>\n", "LIN1>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t LIN1_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t LIN1_descr_ = { "@General_Types.LIN1", &INTEGER_ber_, &LIN1_raw_, &INTEGER_text_, &LIN1_xer_, &LIN1_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING LIN1_default_coding("RAW"); +const TTCN_RAWdescriptor_t LIN2_raw_ = {16,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t LIN2_xer_ = { {"LIN2>\n", "LIN2>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t LIN2_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t LIN2_descr_ = { "@General_Types.LIN2", &INTEGER_ber_, &LIN2_raw_, &INTEGER_text_, &LIN2_xer_, &LIN2_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING LIN2_default_coding("RAW"); +const TTCN_RAWdescriptor_t LIN2__BO__LAST_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}; +const XERdescriptor_t LIN2__BO__LAST_xer_ = { {"LIN2_BO_LAST>\n", "LIN2_BO_LAST>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t LIN2__BO__LAST_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t LIN2__BO__LAST_descr_ = { "@General_Types.LIN2_BO_LAST", &INTEGER_ber_, &LIN2__BO__LAST_raw_, &INTEGER_text_, &LIN2__BO__LAST_xer_, &LIN2__BO__LAST_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING LIN2__BO__LAST_default_coding("RAW"); +const TTCN_RAWdescriptor_t LIN3__BO__LAST_raw_ = {24,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}; +const XERdescriptor_t LIN3__BO__LAST_xer_ = { {"LIN3_BO_LAST>\n", "LIN3_BO_LAST>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t LIN3__BO__LAST_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t LIN3__BO__LAST_descr_ = { "@General_Types.LIN3_BO_LAST", &INTEGER_ber_, &LIN3__BO__LAST_raw_, &INTEGER_text_, &LIN3__BO__LAST_xer_, &LIN3__BO__LAST_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING LIN3__BO__LAST_default_coding("RAW"); +const TTCN_RAWdescriptor_t LIN4__BO__LAST_raw_ = {32,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}; +const XERdescriptor_t LIN4__BO__LAST_xer_ = { {"LIN4_BO_LAST>\n", "LIN4_BO_LAST>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t LIN4__BO__LAST_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t LIN4__BO__LAST_descr_ = { "@General_Types.LIN4_BO_LAST", &INTEGER_ber_, &LIN4__BO__LAST_raw_, &INTEGER_text_, &LIN4__BO__LAST_xer_, &LIN4__BO__LAST_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING LIN4__BO__LAST_default_coding("RAW"); +const TTCN_RAWdescriptor_t INT1b_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t INT1b_xer_ = { {"INT1b>\n", "INT1b>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t INT1b_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t INT1b_descr_ = { "@General_Types.INT1b", &INTEGER_ber_, &INT1b_raw_, &INTEGER_text_, &INT1b_xer_, &INT1b_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING INT1b_default_coding("RAW"); +const TTCN_RAWdescriptor_t INT2b_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}; +const XERdescriptor_t INT2b_xer_ = { {"INT2b>\n", "INT2b>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t INT2b_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t INT2b_descr_ = { "@General_Types.INT2b", &INTEGER_ber_, &INT2b_raw_, &INTEGER_text_, &INT2b_xer_, &INT2b_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING INT2b_default_coding("RAW"); +const TTCN_RAWdescriptor_t INT3b_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}; +const XERdescriptor_t INT3b_xer_ = { {"INT3b>\n", "INT3b>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t INT3b_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t INT3b_descr_ = { "@General_Types.INT3b", &INTEGER_ber_, &INT3b_raw_, &INTEGER_text_, &INT3b_xer_, &INT3b_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING INT3b_default_coding("RAW"); +const TTCN_RAWdescriptor_t INT4b_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}; +const XERdescriptor_t INT4b_xer_ = { {"INT4b>\n", "INT4b>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t INT4b_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t INT4b_descr_ = { "@General_Types.INT4b", &INTEGER_ber_, &INT4b_raw_, &INTEGER_text_, &INT4b_xer_, &INT4b_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING INT4b_default_coding("RAW"); +const TTCN_RAWdescriptor_t INT5b_raw_ = {5,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t INT5b_xer_ = { {"INT5b>\n", "INT5b>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t INT5b_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t INT5b_descr_ = { "@General_Types.INT5b", &INTEGER_ber_, &INT5b_raw_, &INTEGER_text_, &INT5b_xer_, &INT5b_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING INT5b_default_coding("RAW"); +const TTCN_RAWdescriptor_t INT6b_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}; +const XERdescriptor_t INT6b_xer_ = { {"INT6b>\n", "INT6b>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t INT6b_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t INT6b_descr_ = { "@General_Types.INT6b", &INTEGER_ber_, &INT6b_raw_, &INTEGER_text_, &INT6b_xer_, &INT6b_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING INT6b_default_coding("RAW"); +const TTCN_RAWdescriptor_t INT7b_raw_ = {7,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t INT7b_xer_ = { {"INT7b>\n", "INT7b>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t INT7b_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t INT7b_descr_ = { "@General_Types.INT7b", &INTEGER_ber_, &INT7b_raw_, &INTEGER_text_, &INT7b_xer_, &INT7b_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING INT7b_default_coding("RAW"); +const TTCN_RAWdescriptor_t INT11b__BO__LAST_raw_ = {11,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}; +const XERdescriptor_t INT11b__BO__LAST_xer_ = { {"INT11b_BO_LAST>\n", "INT11b_BO_LAST>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t INT11b__BO__LAST_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t INT11b__BO__LAST_descr_ = { "@General_Types.INT11b_BO_LAST", &INTEGER_ber_, &INT11b__BO__LAST_raw_, &INTEGER_text_, &INT11b__BO__LAST_xer_, &INT11b__BO__LAST_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING INT11b__BO__LAST_default_coding("RAW"); +const TTCN_RAWdescriptor_t INT12b__BO__LAST_raw_ = {12,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}; +const XERdescriptor_t INT12b__BO__LAST_xer_ = { {"INT12b_BO_LAST>\n", "INT12b_BO_LAST>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t INT12b__BO__LAST_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t INT12b__BO__LAST_descr_ = { "@General_Types.INT12b_BO_LAST", &INTEGER_ber_, &INT12b__BO__LAST_raw_, &INTEGER_text_, &INT12b__BO__LAST_xer_, &INT12b__BO__LAST_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING INT12b__BO__LAST_default_coding("RAW"); +const TTCN_RAWdescriptor_t INT13b__BO__LAST_raw_ = {13,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}; +const XERdescriptor_t INT13b__BO__LAST_xer_ = { {"INT13b_BO_LAST>\n", "INT13b_BO_LAST>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t INT13b__BO__LAST_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t INT13b__BO__LAST_descr_ = { "@General_Types.INT13b_BO_LAST", &INTEGER_ber_, &INT13b__BO__LAST_raw_, &INTEGER_text_, &INT13b__BO__LAST_xer_, &INT13b__BO__LAST_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING INT13b__BO__LAST_default_coding("RAW"); +const TTCN_RAWdescriptor_t INT14b__BO__LAST_raw_ = {14,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}; +const XERdescriptor_t INT14b__BO__LAST_xer_ = { {"INT14b_BO_LAST>\n", "INT14b_BO_LAST>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t INT14b__BO__LAST_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t INT14b__BO__LAST_descr_ = { "@General_Types.INT14b_BO_LAST", &INTEGER_ber_, &INT14b__BO__LAST_raw_, &INTEGER_text_, &INT14b__BO__LAST_xer_, &INT14b__BO__LAST_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING INT14b__BO__LAST_default_coding("RAW"); +const TTCN_RAWdescriptor_t INT18b__BO__LAST_raw_ = {18,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}; +const XERdescriptor_t INT18b__BO__LAST_xer_ = { {"INT18b_BO_LAST>\n", "INT18b_BO_LAST>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t INT18b__BO__LAST_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t INT18b__BO__LAST_descr_ = { "@General_Types.INT18b_BO_LAST", &INTEGER_ber_, &INT18b__BO__LAST_raw_, &INTEGER_text_, &INT18b__BO__LAST_xer_, &INT18b__BO__LAST_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING INT18b__BO__LAST_default_coding("RAW"); +const TTCN_RAWdescriptor_t INT20b__BO__LAST_raw_ = {20,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}; +const XERdescriptor_t INT20b__BO__LAST_xer_ = { {"INT20b_BO_LAST>\n", "INT20b_BO_LAST>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t INT20b__BO__LAST_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t INT20b__BO__LAST_descr_ = { "@General_Types.INT20b_BO_LAST", &INTEGER_ber_, &INT20b__BO__LAST_raw_, &INTEGER_text_, &INT20b__BO__LAST_xer_, &INT20b__BO__LAST_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING INT20b__BO__LAST_default_coding("RAW"); +const TTCN_RAWdescriptor_t INT31b__BO__LAST_raw_ = {31,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}; +const XERdescriptor_t INT31b__BO__LAST_xer_ = { {"INT31b_BO_LAST>\n", "INT31b_BO_LAST>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t INT31b__BO__LAST_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t INT31b__BO__LAST_descr_ = { "@General_Types.INT31b_BO_LAST", &INTEGER_ber_, &INT31b__BO__LAST_raw_, &INTEGER_text_, &INT31b__BO__LAST_xer_, &INT31b__BO__LAST_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING INT31b__BO__LAST_default_coding("RAW"); +const TTCN_RAWdescriptor_t Integers_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for Integers +const TTCN_Typedescriptor_t Integers_descr_ = { "@General_Types.Integers", NULL, &Integers_raw_, NULL, NULL, NULL, NULL, &INTEGER_descr_, TTCN_Typedescriptor_t::DONTCARE }; +const XERdescriptor_t Integers_0_xer_ = { {"INTEGER>\n", "INTEGER>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t Integers_0_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t Integers_0_descr_ = { "@General_Types.Integers.INTEGER", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &Integers_0_xer_, &Integers_0_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING Integers_0_default_coding("RAW"); +UNIVERSAL_CHARSTRING Integers_default_coding("RAW"); +const TTCN_RAWdescriptor_t Integer__array_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for Integer__array +const TTCN_Typedescriptor_t Integer__array_descr_ = { "@General_Types.Integer_array", NULL, &Integer__array_raw_, NULL, NULL, NULL, NULL, &Integers_descr_, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING Integer__array_0_default_coding("RAW"); +UNIVERSAL_CHARSTRING Integer__array_default_coding("RAW"); +const TTCN_Typedescriptor_t& Dummy__comptype_descr_ = COMPONENT_descr_; +const TTCN_Typedescriptor_t& Dummy__CT_descr_ = COMPONENT_descr_; +const TTCN_RAWdescriptor_t Protocols_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for Protocols +const TTCN_Typedescriptor_t Protocols_descr_ = { "@General_Types.Protocols", NULL, &Protocols_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING Protocols_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT1List_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for OCT1List +const TTCN_Typedescriptor_t OCT1List_descr_ = { "@General_Types.OCT1List", NULL, &OCT1List_raw_, NULL, NULL, NULL, NULL, &OCT1_descr_, TTCN_Typedescriptor_t::DONTCARE }; +const XERdescriptor_t OCT1List_0_xer_ = { {"OCT1>\n", "OCT1>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT1List_0_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT1List_0_oer_ext_arr_[0] = {}; +const int OCT1List_0_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT1List_0_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT1List_0_oer_ext_arr_, 0, OCT1List_0_oer_p_}; +const TTCN_Typedescriptor_t OCT1List_0_descr_ = { "@General_Types.OCT1List.", &OCTETSTRING_ber_, &OCT1_raw_, &OCTETSTRING_text_, &OCT1List_0_xer_, &OCT1List_0_json_, &OCT1List_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT1List_0_default_coding("RAW"); +UNIVERSAL_CHARSTRING OCT1List_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT2List_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for OCT2List +const TTCN_Typedescriptor_t OCT2List_descr_ = { "@General_Types.OCT2List", NULL, &OCT2List_raw_, NULL, NULL, NULL, NULL, &OCT2_descr_, TTCN_Typedescriptor_t::DONTCARE }; +const XERdescriptor_t OCT2List_0_xer_ = { {"OCT2>\n", "OCT2>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT2List_0_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT2List_0_oer_ext_arr_[0] = {}; +const int OCT2List_0_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT2List_0_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT2List_0_oer_ext_arr_, 0, OCT2List_0_oer_p_}; +const TTCN_Typedescriptor_t OCT2List_0_descr_ = { "@General_Types.OCT2List.", &OCTETSTRING_ber_, &OCT2_raw_, &OCTETSTRING_text_, &OCT2List_0_xer_, &OCT2List_0_json_, &OCT2List_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT2List_0_default_coding("RAW"); +UNIVERSAL_CHARSTRING OCT2List_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT3List_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for OCT3List +const TTCN_Typedescriptor_t OCT3List_descr_ = { "@General_Types.OCT3List", NULL, &OCT3List_raw_, NULL, NULL, NULL, NULL, &OCT3_descr_, TTCN_Typedescriptor_t::DONTCARE }; +const XERdescriptor_t OCT3List_0_xer_ = { {"OCT3>\n", "OCT3>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT3List_0_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT3List_0_oer_ext_arr_[0] = {}; +const int OCT3List_0_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT3List_0_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT3List_0_oer_ext_arr_, 0, OCT3List_0_oer_p_}; +const TTCN_Typedescriptor_t OCT3List_0_descr_ = { "@General_Types.OCT3List.", &OCTETSTRING_ber_, &OCT3_raw_, &OCTETSTRING_text_, &OCT3List_0_xer_, &OCT3List_0_json_, &OCT3List_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT3List_0_default_coding("RAW"); +UNIVERSAL_CHARSTRING OCT3List_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT4List_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for OCT4List +const TTCN_Typedescriptor_t OCT4List_descr_ = { "@General_Types.OCT4List", NULL, &OCT4List_raw_, NULL, NULL, NULL, NULL, &OCT4_descr_, TTCN_Typedescriptor_t::DONTCARE }; +const XERdescriptor_t OCT4List_0_xer_ = { {"OCT4>\n", "OCT4>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT4List_0_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT4List_0_oer_ext_arr_[0] = {}; +const int OCT4List_0_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT4List_0_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT4List_0_oer_ext_arr_, 0, OCT4List_0_oer_p_}; +const TTCN_Typedescriptor_t OCT4List_0_descr_ = { "@General_Types.OCT4List.", &OCTETSTRING_ber_, &OCT4_raw_, &OCTETSTRING_text_, &OCT4List_0_xer_, &OCT4List_0_json_, &OCT4List_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT4List_0_default_coding("RAW"); +UNIVERSAL_CHARSTRING OCT4List_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT5List_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for OCT5List +const TTCN_Typedescriptor_t OCT5List_descr_ = { "@General_Types.OCT5List", NULL, &OCT5List_raw_, NULL, NULL, NULL, NULL, &OCT5_descr_, TTCN_Typedescriptor_t::DONTCARE }; +const XERdescriptor_t OCT5List_0_xer_ = { {"OCT5>\n", "OCT5>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT5List_0_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT5List_0_oer_ext_arr_[0] = {}; +const int OCT5List_0_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT5List_0_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT5List_0_oer_ext_arr_, 0, OCT5List_0_oer_p_}; +const TTCN_Typedescriptor_t OCT5List_0_descr_ = { "@General_Types.OCT5List.", &OCTETSTRING_ber_, &OCT5_raw_, &OCTETSTRING_text_, &OCT5List_0_xer_, &OCT5List_0_json_, &OCT5List_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT5List_0_default_coding("RAW"); +UNIVERSAL_CHARSTRING OCT5List_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT6List_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for OCT6List +const TTCN_Typedescriptor_t OCT6List_descr_ = { "@General_Types.OCT6List", NULL, &OCT6List_raw_, NULL, NULL, NULL, NULL, &OCT6_descr_, TTCN_Typedescriptor_t::DONTCARE }; +const XERdescriptor_t OCT6List_0_xer_ = { {"OCT6>\n", "OCT6>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT6List_0_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT6List_0_oer_ext_arr_[0] = {}; +const int OCT6List_0_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT6List_0_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT6List_0_oer_ext_arr_, 0, OCT6List_0_oer_p_}; +const TTCN_Typedescriptor_t OCT6List_0_descr_ = { "@General_Types.OCT6List.", &OCTETSTRING_ber_, &OCT6_raw_, &OCTETSTRING_text_, &OCT6List_0_xer_, &OCT6List_0_json_, &OCT6List_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT6List_0_default_coding("RAW"); +UNIVERSAL_CHARSTRING OCT6List_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT7List_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for OCT7List +const TTCN_Typedescriptor_t OCT7List_descr_ = { "@General_Types.OCT7List", NULL, &OCT7List_raw_, NULL, NULL, NULL, NULL, &OCT7_descr_, TTCN_Typedescriptor_t::DONTCARE }; +const XERdescriptor_t OCT7List_0_xer_ = { {"OCT7>\n", "OCT7>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT7List_0_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT7List_0_oer_ext_arr_[0] = {}; +const int OCT7List_0_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT7List_0_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT7List_0_oer_ext_arr_, 0, OCT7List_0_oer_p_}; +const TTCN_Typedescriptor_t OCT7List_0_descr_ = { "@General_Types.OCT7List.", &OCTETSTRING_ber_, &OCT7_raw_, &OCTETSTRING_text_, &OCT7List_0_xer_, &OCT7List_0_json_, &OCT7List_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT7List_0_default_coding("RAW"); +UNIVERSAL_CHARSTRING OCT7List_default_coding("RAW"); +// No XER for ListOfDummy__comptype +const TTCN_Typedescriptor_t ListOfDummy__comptype_descr_ = { "@General_Types.ListOfDummy_comptype", NULL, NULL, NULL, NULL, NULL, NULL, &COMPONENT_descr_, TTCN_Typedescriptor_t::DONTCARE }; +// No XER for ListOfDummy__CT +const TTCN_Typedescriptor_t ListOfDummy__CT_descr_ = { "@General_Types.ListOfDummy_CT", NULL, NULL, NULL, NULL, NULL, NULL, &COMPONENT_descr_, TTCN_Typedescriptor_t::DONTCARE }; +const TTCN_RAWdescriptor_t ProtocolList_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for ProtocolList +const TTCN_Typedescriptor_t ProtocolList_descr_ = { "@General_Types.ProtocolList", NULL, &ProtocolList_raw_, NULL, NULL, NULL, NULL, &Protocols_descr_, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING ProtocolList_0_default_coding("RAW"); +UNIVERSAL_CHARSTRING ProtocolList_default_coding("RAW"); +TTCN_Module module_object("General_Types", __DATE__, __TIME__, module_checksum, NULL, NULL, 0U, 4294967295U, 4294967295U, 4294967295U, NULL, 0LU, 0, NULL, NULL, NULL, NULL, init_comp_type, NULL, NULL); + +static const RuntimeVersionChecker ver_checker( current_runtime_version.requires_major_version_6, + current_runtime_version.requires_minor_version_3, + current_runtime_version.requires_patch_level_1, current_runtime_version.requires_runtime_1); + +/* Member functions of C++ classes */ + + +const Integers Integer__array::UNBOUND_ELEM; +Integer__array::Integer__array() +{ +val_ptr = NULL; +} + +Integer__array::Integer__array(null_type) +{ +val_ptr = new recordof_setof_struct; +val_ptr->ref_count = 1; +val_ptr->n_elements = 0; +val_ptr->value_elements = NULL; +} + +Integer__array::Integer__array(const Integer__array& other_value) +{ +if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @General_Types.Integer_array."); +val_ptr = other_value.val_ptr; +val_ptr->ref_count++; +} + +Integer__array::~Integer__array() +{ +clean_up(); +if (val_ptr != NULL) val_ptr = NULL; +} + +void Integer__array::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."); +} +} + +Integer__array& Integer__array::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; +} + +Integer__array& Integer__array::operator=(const Integer__array& other_value) +{ +if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @General_Types.Integer_array."); +if (this != &other_value) { +clean_up(); +val_ptr = other_value.val_ptr; +val_ptr->ref_count++; +} +return *this; +} + +boolean Integer__array::operator==(null_type) const +{ +if (val_ptr == NULL) +TTCN_error("The left operand of comparison is an unbound value of type @General_Types.Integer_array."); +return val_ptr->n_elements == 0 ; +} + +boolean Integer__array::operator==(const Integer__array& other_value) const +{ +if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @General_Types.Integer_array."); +if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @General_Types.Integer_array."); +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; +} + +Integers& Integer__array::operator[](int index_value) +{ +if (index_value < 0) TTCN_error("Accessing an element of type @General_Types.Integer_array 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 = (Integers**)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 Integers(*(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 Integers; +} +return *val_ptr->value_elements[index_value]; +} + +Integers& Integer__array::operator[](const INTEGER& index_value) +{ +index_value.must_bound("Using an unbound integer value for indexing a value of type @General_Types.Integer_array."); +return (*this)[(int)index_value]; +} + +const Integers& Integer__array::operator[](int index_value) const +{ +if (val_ptr == NULL) +TTCN_error("Accessing an element in an unbound value of type @General_Types.Integer_array."); +if (index_value < 0) TTCN_error("Accessing an element of type @General_Types.Integer_array using a negative index: %d.", index_value); +if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @General_Types.Integer_array: 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) ? +*val_ptr->value_elements[index_value] : UNBOUND_ELEM; +} + +const Integers& Integer__array::operator[](const INTEGER& index_value) const +{ +index_value.must_bound("Using an unbound integer value for indexing a value of type @General_Types.Integer_array."); +return (*this)[(int)index_value]; +} + +Integer__array Integer__array::operator<<=(int rotate_count) const +{ +return *this >>= (-rotate_count); +} + +Integer__array Integer__array::operator<<=(const INTEGER& rotate_count) const +{ +rotate_count.must_bound("Unbound integer operand of rotate left operator."); +return *this >>= (int)(-rotate_count); +} + +Integer__array Integer__array::operator>>=(const INTEGER& rotate_count) const +{ +rotate_count.must_bound("Unbound integer operand of rotate right operator."); +return *this >>= (int)rotate_count; +} + +Integer__array Integer__array::operator>>=(int rotate_count) const +{ +if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @General_Types.Integer_array."); +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; +Integer__array 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 Integers(*val_ptr->value_elements[i]); +} +} +return ret_val; +} + +Integer__array Integer__array::operator+(const Integer__array& other_value) const +{ +if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @General_Types.Integer_array concatenation."); +if (val_ptr->n_elements == 0) return other_value; +if (other_value.val_ptr->n_elements == 0) return *this; +Integer__array 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 Integers(*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 Integers(*other_value.val_ptr->value_elements[i]); +} +} +return ret_val; +} + +Integer__array Integer__array::substr(int index, int returncount) const +{ +if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @General_Types.Integer_array."); +check_substr_arguments(val_ptr->n_elements, index, returncount, "@General_Types.Integer_array","element"); +Integer__array ret_val; +ret_val.set_size(returncount); +for (int i=0; ivalue_elements[i+index] != NULL) { +ret_val.val_ptr->value_elements[i] = new Integers(*val_ptr->value_elements[i+index]); +} +} +return ret_val; +} + +Integer__array Integer__array::replace(int index, int len, const Integer__array& repl) const +{ +if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @General_Types.Integer_array."); +if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @General_Types.Integer_array."); +check_replace_arguments(val_ptr->n_elements, index, len, "@General_Types.Integer_array","element"); +Integer__array 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 Integers(*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 Integers(*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 Integers(*val_ptr->value_elements[index+i+len]); +} +} +return ret_val; +} + +Integer__array Integer__array::replace(int index, int len, const Integer__array_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 Integer__array::set_size(int new_size) +{ +if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @General_Types.Integer_array."); +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 = (Integers**)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 Integers(*(val_ptr->value_elements[elem_count])); +} +} +clean_up(); +val_ptr = new_val_ptr; +} +if (new_size > val_ptr->n_elements) { +val_ptr->value_elements = (Integers**)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 @General_Types.Integer_array: %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 = (Integers**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); +val_ptr->n_elements = new_size; +} +} + +boolean Integer__array::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 Integer__array::size_of() const +{ +if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @General_Types.Integer_array."); +return val_ptr->n_elements; +} + +int Integer__array::lengthof() const +{ +if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @General_Types.Integer_array."); +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 Integer__array::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 Integer__array::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", "@General_Types.Integer_array"); + } + 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", "@General_Types.Integer_array"); + } + break; + default: + TTCN_error("Internal error: Unknown operation type."); + } +} + +void Integer__array::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 Integer__array::encode_text(Text_Buf& text_buf) const +{ +if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @General_Types.Integer_array."); +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 Integer__array::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 @General_Types.Integer_array."); +val_ptr->value_elements = (Integers**)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 Integers; +val_ptr->value_elements[elem_count]->decode_text(text_buf); +} +} + +void Integer__array::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void Integer__array::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int Integer__array::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){ + int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); + limit-=prepaddlength; + int decoded_length=0; + int decoded_field_length=0; + size_t start_of_field=0; + if(first_call) { + clean_up(); + val_ptr=new recordof_setof_struct; + val_ptr->ref_count=1; + val_ptr->n_elements=0; + val_ptr->value_elements=NULL; + } + int start_field=val_ptr->n_elements; + if(p_td.raw->fieldlength || sel_field!=-1){ + int a=0; + if(sel_field==-1) sel_field=p_td.raw->fieldlength; + for(a=0;an_elements=0; + } else { + int a=start_field; + 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; + } + 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 Integer__array::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 Integer__array_template::copy_value(const Integer__array& other_value) +{ +if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @General_Types.Integer_array with an unbound value."); +single_value.n_elements = other_value.size_of(); +single_value.value_elements = (Integers_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 Integers_template(other_value[elem_count]); +} else { +single_value.value_elements[elem_count] = new Integers_template; +} +} +set_selection(SPECIFIC_VALUE); +} + +void Integer__array_template::copy_template(const Integer__array_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 = (Integers_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 Integers_template(*other_value.single_value.value_elements[elem_count]); +} else { +single_value.value_elements[elem_count] = new Integers_template; +} +} +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new Integer__array_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of type @General_Types.Integer_array."); +break; +} +set_selection(other_value); +} + +boolean Integer__array_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 Integer__array_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const Integer__array*)value_ptr)[value_index], legacy); +else return ((const Integer__array_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); +} + +Integer__array_template::Integer__array_template() +{ +} + +Integer__array_template::Integer__array_template(template_sel other_value) + : Record_Of_Template(other_value) +{ +check_single_selection(other_value); +} + +Integer__array_template::Integer__array_template(null_type) + : Record_Of_Template(SPECIFIC_VALUE) +{ +single_value.n_elements = 0; +single_value.value_elements = NULL; +} + +Integer__array_template::Integer__array_template(const Integer__array& other_value) +{ +copy_value(other_value); +} + +Integer__array_template::Integer__array_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const Integer__array&)other_value); +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of type @General_Types.Integer_array from an unbound optional field."); +} +} + +Integer__array_template::Integer__array_template(const Integer__array_template& other_value) + : Record_Of_Template() +{ +copy_template(other_value); +} + +Integer__array_template::~Integer__array_template() +{ +clean_up(); +} + +void Integer__array_template::clean_up() +{ +switch (template_selection) { +case SPECIFIC_VALUE: +for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) +delete single_value.value_elements[elem_count]; +free_pointers((void**)single_value.value_elements); +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +delete [] value_list.list_value; +default: +break; +} +template_selection = UNINITIALIZED_TEMPLATE; +} + +Integer__array_template& Integer__array_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +Integer__array_template& Integer__array_template::operator=(null_type) +{ +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value.n_elements = 0; +single_value.value_elements = NULL; +return *this; +} + +Integer__array_template& Integer__array_template::operator=(const Integer__array& other_value) +{ +clean_up(); +copy_value(other_value); +return *this; +} + +Integer__array_template& Integer__array_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const Integer__array&)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 @General_Types.Integer_array."); +} +return *this; +} + +Integer__array_template& Integer__array_template::operator=(const Integer__array_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +Integers_template& Integer__array_template::operator[](int index_value) +{ +if (index_value < 0) TTCN_error("Accessing an element of a template for type @General_Types.Integer_array 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 @General_Types.Integer_array."); + break; +} +return *single_value.value_elements[index_value]; +} + +Integers_template& Integer__array_template::operator[](const INTEGER& index_value) +{ +index_value.must_bound("Using an unbound integer value for indexing a template of type @General_Types.Integer_array."); +return (*this)[(int)index_value]; +} + +const Integers_template& Integer__array_template::operator[](int index_value) const +{ +if (index_value < 0) TTCN_error("Accessing an element of a template for type @General_Types.Integer_array using a negative index: %d.", index_value); +if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @General_Types.Integer_array."); +if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @General_Types.Integer_array: 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 Integers_template& Integer__array_template::operator[](const INTEGER& index_value) const +{ +index_value.must_bound("Using an unbound integer value for indexing a template of type @General_Types.Integer_array."); +return (*this)[(int)index_value]; +} + +void Integer__array_template::set_size(int new_size) +{ +if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @General_Types.Integer_array."); +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 = (Integers_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 Integers_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 Integers_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 = (Integers_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); +single_value.n_elements = new_size; +} +} + +int Integer__array_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 Integer__array_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 @General_Types.Integer_array 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 @General_Types.Integer_array 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 @General_Types.Integer_array 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 @General_Types.Integer_array 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 @General_Types.Integer_array 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 @General_Types.Integer_array containing complemented list.", op_name); +default: + TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @General_Types.Integer_array.", op_name); +} +return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @General_Types.Integer_array"); +} + +boolean Integer__array_template::match(const Integer__array& other_value, boolean legacy) const +{ +if (!other_value.is_bound()) return FALSE; +int value_length = other_value.size_of(); +if (!match_length(value_length)) return FALSE; +switch (template_selection) { +case SPECIFIC_VALUE: +return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy); +case OMIT_VALUE: +return FALSE; +case ANY_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching with an uninitialized/unsupported template of type @General_Types.Integer_array."); +} +return FALSE; +} + +boolean Integer__array_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; +} + +Integer__array Integer__array_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 @General_Types.Integer_array."); +Integer__array 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; +} + +Integer__array Integer__array_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); +} + +Integer__array Integer__array_template::replace(int index, int len, const Integer__array_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()); +} + +Integer__array Integer__array_template::replace(int index, int len, const Integer__array& 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 Integer__array_template::set_type(template_sel template_type, unsigned int list_length) +{ +clean_up(); +switch (template_type) { +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = list_length; +value_list.list_value = new Integer__array_template[list_length]; +break; +default: +TTCN_error("Internal error: Setting an invalid type for a template of type @General_Types.Integer_array."); +} +set_selection(template_type); +} + +Integer__array_template& Integer__array_template::list_item(unsigned int list_index) +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of type @General_Types.Integer_array."); +if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @General_Types.Integer_array."); +return value_list.list_value[list_index]; +} + +void Integer__array_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +if (single_value.n_elements > 0) { +TTCN_Logger::log_event_str("{ "); +for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { +if (elem_count > 0) TTCN_Logger::log_event_str(", "); +if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation("); +single_value.value_elements[elem_count]->log(); +if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')'); +} +TTCN_Logger::log_event_str(" }"); +} else TTCN_Logger::log_event_str("{ }"); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { +if (list_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[list_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_restricted(); +log_ifpresent(); +} + +void Integer__array_template::log_match(const Integer__array& 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 Integer__array_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 @General_Types.Integer_array."); +} +} + +void Integer__array_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 @General_Types.Integer_array."); +single_value.value_elements = (Integers_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 Integers_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 Integer__array_template[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 @General_Types.Integer_array."); +} +} + +boolean Integer__array_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean Integer__array_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int i=0; 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; + for (size_t perm_i=0; perm_iget_size(); perm_i++) { + (*this)[curr_idx].set_param(*(param.get_elem(p_i)->get_elem(perm_i))); + curr_idx++; + } + int perm_end_idx = curr_idx - 1; + add_permutation(perm_start_idx, perm_end_idx); + } break; + default: + (*this)[curr_idx].set_param(*param.get_elem(p_i)); + curr_idx++; + } + } + } break; + default: + param.type_error("record of template", "@General_Types.Integer_array"); + } + is_ifpresent = param.get_ifpresent(); + set_length_range(param); +} + +void Integer__array_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 : "@General_Types.Integer_array"); +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 : "@General_Types.Integer_array"); +} + +boolean Integer__array_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); +} +} +Protocols::Protocols() +{ +enum_value = UNBOUND_VALUE; +} + +Protocols::Protocols(int other_value) +{ +if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @General_Types.Protocols with invalid numeric value %d.", other_value); +enum_value = (enum_type)other_value; +} + +Protocols::Protocols(enum_type other_value) +{ +enum_value = other_value; +} + +Protocols::Protocols(const Protocols& other_value) +: Base_Type() +{ +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @General_Types.Protocols."); +enum_value = other_value.enum_value; +} + +Protocols& Protocols::operator=(int other_value) +{ +if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @General_Types.Protocols.", other_value); +enum_value = (enum_type)other_value; +return *this; +} + +Protocols& Protocols::operator=(enum_type other_value) +{ +enum_value = other_value; +return *this; +} + +Protocols& Protocols::operator=(const Protocols& other_value) +{ +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @General_Types.Protocols."); +enum_value = other_value.enum_value; +return *this; +} + +boolean Protocols::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 @General_Types.Protocols."); +return enum_value == other_value; +} + +boolean Protocols::operator==(const Protocols& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @General_Types.Protocols."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @General_Types.Protocols."); +return enum_value == other_value.enum_value; +} + +boolean Protocols::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 @General_Types.Protocols."); +return enum_value < other_value; +} + +boolean Protocols::operator<(const Protocols& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @General_Types.Protocols."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @General_Types.Protocols."); +return enum_value < other_value.enum_value; +} + +boolean Protocols::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 @General_Types.Protocols."); +return enum_value > other_value; +} + +boolean Protocols::operator>(const Protocols& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @General_Types.Protocols."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @General_Types.Protocols."); +return enum_value > other_value.enum_value; +} + +const char *Protocols::enum_to_str(enum_type enum_par) +{ +switch (enum_par) { +case mtp3: return "mtp3"; +case sccp: return "sccp"; +case isup: return "isup"; +case bicc: return "bicc"; +case qaal2: return "qaal2"; +case gcp: return "gcp"; +case bssap: return "bssap"; +case bssmap: return "bssmap"; +case ranap: return "ranap"; +case dtap: return "dtap"; +default: return ""; +} +} + +Protocols::enum_type Protocols::str_to_enum(const char *str_par) +{ +if (!strcmp(str_par, "mtp3")) return mtp3; +else if (!strcmp(str_par, "sccp")) return sccp; +else if (!strcmp(str_par, "isup")) return isup; +else if (!strcmp(str_par, "bicc")) return bicc; +else if (!strcmp(str_par, "qaal2")) return qaal2; +else if (!strcmp(str_par, "gcp")) return gcp; +else if (!strcmp(str_par, "bssap")) return bssap; +else if (!strcmp(str_par, "bssmap")) return bssmap; +else if (!strcmp(str_par, "ranap")) return ranap; +else if (!strcmp(str_par, "dtap")) return dtap; +else return UNKNOWN_VALUE; +} + +boolean Protocols::is_valid_enum(int int_par) +{ +switch (int_par) { +case 0: +case 1: +case 2: +case 3: +case 4: +case 5: +case 6: +case 7: +case 8: +case 9: +return TRUE; +default: +return FALSE; +} +} + +int Protocols::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 @General_Types.Protocols.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); +return enum_par; +} + +int Protocols::enum2int(const Protocols& 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 @General_Types.Protocols.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); +return enum_par.enum_value; +} + +void Protocols::int2enum(int int_val) +{ +if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @General_Types.Protocols.", int_val); +enum_value = (enum_type)int_val; +} + +Protocols::operator Protocols::enum_type() const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @General_Types.Protocols."); +return enum_value; +} + +void Protocols::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 Protocols::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", "@General_Types.Protocols"); + enum_value = str_to_enum(param.get_enumerated()); + if (!is_valid_enum(enum_value)) { + param.error("Invalid enumerated value for type @General_Types.Protocols."); + } +} + +void Protocols::encode_text(Text_Buf& text_buf) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @General_Types.Protocols."); +text_buf.push_int(enum_value); +} + +void Protocols::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 @General_Types.Protocols.", enum_value); +} + +void Protocols::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void Protocols::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int Protocols::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) +{ + int decoded_value = 0; + int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 4, no_err); + if (decoded_length < 0) return decoded_length; + if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value; + else { + if(no_err){ + return -1; + } else { + TTCN_EncDec_ErrorContext::error + (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name); + enum_value = UNKNOWN_VALUE; + } + } + return decoded_length; +} + +int Protocols::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const +{ + return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 4); +} + +void Protocols_template::copy_template(const Protocols_template& other_value) +{ +set_selection(other_value); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = other_value.single_value; +break; +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new Protocols_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of enumerated type @General_Types.Protocols."); +} +} + +Protocols_template::Protocols_template() +{ +} + +Protocols_template::Protocols_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +Protocols_template::Protocols_template(int other_value) + : Base_Template(SPECIFIC_VALUE) +{ +if (!Protocols::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @General_Types.Protocols with unknown numeric value %d.", other_value); +single_value = (Protocols::enum_type)other_value; +} + +Protocols_template::Protocols_template(Protocols::enum_type other_value) + : Base_Template(SPECIFIC_VALUE) +{ +single_value = other_value; +} + +Protocols_template::Protocols_template(const Protocols& other_value) + : Base_Template(SPECIFIC_VALUE) +{ +if (other_value.enum_value == Protocols::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @General_Types.Protocols."); +single_value = other_value.enum_value; +} + +Protocols_template::Protocols_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +set_selection(SPECIFIC_VALUE); +single_value = (Protocols::enum_type)(const Protocols&)other_value; +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of enumerated type @General_Types.Protocols from an unbound optional field."); +} +} + +Protocols_template::Protocols_template(const Protocols_template& other_value) + : Base_Template() +{ +copy_template(other_value); +} + +Protocols_template::~Protocols_template() +{ +clean_up(); +} + +boolean Protocols_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +return TRUE; +} + +boolean Protocols_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +return single_value != Protocols::UNBOUND_VALUE; +} + +void Protocols_template::clean_up() +{ +if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value; +template_selection = UNINITIALIZED_TEMPLATE; +} + +Protocols_template& Protocols_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +Protocols_template& Protocols_template::operator=(int other_value) +{ +if (!Protocols::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @General_Types.Protocols.", other_value); +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = (Protocols::enum_type)other_value; +return *this; +} + +Protocols_template& Protocols_template::operator=(Protocols::enum_type other_value) +{ +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = other_value; +return *this; +} + +Protocols_template& Protocols_template::operator=(const Protocols& other_value) +{ +if (other_value.enum_value == Protocols::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @General_Types.Protocols to a template."); +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = other_value.enum_value; +return *this; +} + +Protocols_template& Protocols_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +set_selection(SPECIFIC_VALUE); +single_value = (Protocols::enum_type)(const Protocols&)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 @General_Types.Protocols."); +} +return *this; +} + +Protocols_template& Protocols_template::operator=(const Protocols_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean Protocols_template::match(Protocols::enum_type other_value, boolean) const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +return single_value == other_value; +case OMIT_VALUE: +return FALSE; +case ANY_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of enumerated type @General_Types.Protocols."); +} +return FALSE; +} + +boolean Protocols_template::match(const Protocols& other_value, boolean) const +{ +if (other_value.enum_value == Protocols::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @General_Types.Protocols with an unbound value."); +return match(other_value.enum_value); +} + +Protocols::enum_type Protocols_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 @General_Types.Protocols."); +return single_value; +} + +void Protocols_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @General_Types.Protocols."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new Protocols_template[list_length]; +} + +Protocols_template& Protocols_template::list_item(unsigned int list_index) +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @General_Types.Protocols."); +if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @General_Types.Protocols."); +return value_list.list_value[list_index]; +} + +void Protocols_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_enum(Protocols::enum_to_str(single_value), single_value); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { +if (elem_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[elem_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void Protocols_template::log_match(const Protocols& 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 Protocols_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 @General_Types.Protocols."); +} +} + +void Protocols_template::decode_text(Text_Buf& text_buf) +{ +clean_up(); +decode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = (Protocols::enum_type)text_buf.pull_int().get_val(); +if (!Protocols::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @General_Types.Protocols.", 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 Protocols_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 @General_Types.Protocols."); +} +} + +boolean Protocols_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean Protocols_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int i=0; 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: { + Protocols_template new_temp; + new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, m_p->get_size()); + for (size_t p_i=0; p_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: { + Protocols::enum_type enum_val = Protocols::str_to_enum(m_p->get_enumerated()); + if (!Protocols::is_valid_enum(enum_val)) { + param.error("Invalid enumerated value for type @General_Types.Protocols."); + } + *this = enum_val; + } break; + default: + param.type_error("enumerated template", "@General_Types.Protocols"); + } + is_ifpresent = param.get_ifpresent(); +} + +void Protocols_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 : "@General_Types.Protocols"); +} + + +const COMPONENT ListOfDummy__comptype::UNBOUND_ELEM; +ListOfDummy__comptype::ListOfDummy__comptype() +{ +val_ptr = NULL; +} + +ListOfDummy__comptype::ListOfDummy__comptype(null_type) +{ +val_ptr = new recordof_setof_struct; +val_ptr->ref_count = 1; +val_ptr->n_elements = 0; +val_ptr->value_elements = NULL; +} + +ListOfDummy__comptype::ListOfDummy__comptype(const ListOfDummy__comptype& other_value) +{ +if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @General_Types.ListOfDummy_comptype."); +val_ptr = other_value.val_ptr; +val_ptr->ref_count++; +} + +ListOfDummy__comptype::~ListOfDummy__comptype() +{ +clean_up(); +if (val_ptr != NULL) val_ptr = NULL; +} + +void ListOfDummy__comptype::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."); +} +} + +ListOfDummy__comptype& ListOfDummy__comptype::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; +} + +ListOfDummy__comptype& ListOfDummy__comptype::operator=(const ListOfDummy__comptype& other_value) +{ +if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @General_Types.ListOfDummy_comptype."); +if (this != &other_value) { +clean_up(); +val_ptr = other_value.val_ptr; +val_ptr->ref_count++; +} +return *this; +} + +boolean ListOfDummy__comptype::operator==(null_type) const +{ +if (val_ptr == NULL) +TTCN_error("The left operand of comparison is an unbound value of type @General_Types.ListOfDummy_comptype."); +return val_ptr->n_elements == 0 ; +} + +boolean ListOfDummy__comptype::operator==(const ListOfDummy__comptype& other_value) const +{ +if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @General_Types.ListOfDummy_comptype."); +if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @General_Types.ListOfDummy_comptype."); +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; +} + +COMPONENT& ListOfDummy__comptype::operator[](int index_value) +{ +if (index_value < 0) TTCN_error("Accessing an element of type @General_Types.ListOfDummy_comptype 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 = (COMPONENT**)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 COMPONENT(*(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 COMPONENT; +} +return *val_ptr->value_elements[index_value]; +} + +COMPONENT& ListOfDummy__comptype::operator[](const INTEGER& index_value) +{ +index_value.must_bound("Using an unbound integer value for indexing a value of type @General_Types.ListOfDummy_comptype."); +return (*this)[(int)index_value]; +} + +const COMPONENT& ListOfDummy__comptype::operator[](int index_value) const +{ +if (val_ptr == NULL) +TTCN_error("Accessing an element in an unbound value of type @General_Types.ListOfDummy_comptype."); +if (index_value < 0) TTCN_error("Accessing an element of type @General_Types.ListOfDummy_comptype using a negative index: %d.", index_value); +if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @General_Types.ListOfDummy_comptype: 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) ? +*val_ptr->value_elements[index_value] : UNBOUND_ELEM; +} + +const COMPONENT& ListOfDummy__comptype::operator[](const INTEGER& index_value) const +{ +index_value.must_bound("Using an unbound integer value for indexing a value of type @General_Types.ListOfDummy_comptype."); +return (*this)[(int)index_value]; +} + +ListOfDummy__comptype ListOfDummy__comptype::operator<<=(int rotate_count) const +{ +return *this >>= (-rotate_count); +} + +ListOfDummy__comptype ListOfDummy__comptype::operator<<=(const INTEGER& rotate_count) const +{ +rotate_count.must_bound("Unbound integer operand of rotate left operator."); +return *this >>= (int)(-rotate_count); +} + +ListOfDummy__comptype ListOfDummy__comptype::operator>>=(const INTEGER& rotate_count) const +{ +rotate_count.must_bound("Unbound integer operand of rotate right operator."); +return *this >>= (int)rotate_count; +} + +ListOfDummy__comptype ListOfDummy__comptype::operator>>=(int rotate_count) const +{ +if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @General_Types.ListOfDummy_comptype."); +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; +ListOfDummy__comptype 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 COMPONENT(*val_ptr->value_elements[i]); +} +} +return ret_val; +} + +ListOfDummy__comptype ListOfDummy__comptype::operator+(const ListOfDummy__comptype& other_value) const +{ +if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @General_Types.ListOfDummy_comptype concatenation."); +if (val_ptr->n_elements == 0) return other_value; +if (other_value.val_ptr->n_elements == 0) return *this; +ListOfDummy__comptype 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 COMPONENT(*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 COMPONENT(*other_value.val_ptr->value_elements[i]); +} +} +return ret_val; +} + +ListOfDummy__comptype ListOfDummy__comptype::substr(int index, int returncount) const +{ +if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @General_Types.ListOfDummy_comptype."); +check_substr_arguments(val_ptr->n_elements, index, returncount, "@General_Types.ListOfDummy_comptype","element"); +ListOfDummy__comptype ret_val; +ret_val.set_size(returncount); +for (int i=0; ivalue_elements[i+index] != NULL) { +ret_val.val_ptr->value_elements[i] = new COMPONENT(*val_ptr->value_elements[i+index]); +} +} +return ret_val; +} + +ListOfDummy__comptype ListOfDummy__comptype::replace(int index, int len, const ListOfDummy__comptype& repl) const +{ +if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @General_Types.ListOfDummy_comptype."); +if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @General_Types.ListOfDummy_comptype."); +check_replace_arguments(val_ptr->n_elements, index, len, "@General_Types.ListOfDummy_comptype","element"); +ListOfDummy__comptype 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 COMPONENT(*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 COMPONENT(*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 COMPONENT(*val_ptr->value_elements[index+i+len]); +} +} +return ret_val; +} + +ListOfDummy__comptype ListOfDummy__comptype::replace(int index, int len, const ListOfDummy__comptype_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 ListOfDummy__comptype::set_size(int new_size) +{ +if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @General_Types.ListOfDummy_comptype."); +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 = (COMPONENT**)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 COMPONENT(*(val_ptr->value_elements[elem_count])); +} +} +clean_up(); +val_ptr = new_val_ptr; +} +if (new_size > val_ptr->n_elements) { +val_ptr->value_elements = (COMPONENT**)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 @General_Types.ListOfDummy_comptype: %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 = (COMPONENT**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); +val_ptr->n_elements = new_size; +} +} + +boolean ListOfDummy__comptype::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 ListOfDummy__comptype::size_of() const +{ +if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @General_Types.ListOfDummy_comptype."); +return val_ptr->n_elements; +} + +int ListOfDummy__comptype::lengthof() const +{ +if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @General_Types.ListOfDummy_comptype."); +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 ListOfDummy__comptype::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 ListOfDummy__comptype::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", "@General_Types.ListOfDummy_comptype"); + } + 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", "@General_Types.ListOfDummy_comptype"); + } + break; + default: + TTCN_error("Internal error: Unknown operation type."); + } +} + +void ListOfDummy__comptype::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 ListOfDummy__comptype::encode_text(Text_Buf& text_buf) const +{ +if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @General_Types.ListOfDummy_comptype."); +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 ListOfDummy__comptype::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 @General_Types.ListOfDummy_comptype."); +val_ptr->value_elements = (COMPONENT**)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 COMPONENT; +val_ptr->value_elements[elem_count]->decode_text(text_buf); +} +} + +void ListOfDummy__comptype_template::copy_value(const ListOfDummy__comptype& other_value) +{ +if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @General_Types.ListOfDummy_comptype with an unbound value."); +single_value.n_elements = other_value.size_of(); +single_value.value_elements = (COMPONENT_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 COMPONENT_template(other_value[elem_count]); +} else { +single_value.value_elements[elem_count] = new COMPONENT_template; +} +} +set_selection(SPECIFIC_VALUE); +} + +void ListOfDummy__comptype_template::copy_template(const ListOfDummy__comptype_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 = (COMPONENT_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 COMPONENT_template(*other_value.single_value.value_elements[elem_count]); +} else { +single_value.value_elements[elem_count] = new COMPONENT_template; +} +} +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new ListOfDummy__comptype_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of type @General_Types.ListOfDummy_comptype."); +break; +} +set_selection(other_value); +} + +boolean ListOfDummy__comptype_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 ListOfDummy__comptype_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const ListOfDummy__comptype*)value_ptr)[value_index], legacy); +else return ((const ListOfDummy__comptype_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); +} + +ListOfDummy__comptype_template::ListOfDummy__comptype_template() +{ +} + +ListOfDummy__comptype_template::ListOfDummy__comptype_template(template_sel other_value) + : Record_Of_Template(other_value) +{ +check_single_selection(other_value); +} + +ListOfDummy__comptype_template::ListOfDummy__comptype_template(null_type) + : Record_Of_Template(SPECIFIC_VALUE) +{ +single_value.n_elements = 0; +single_value.value_elements = NULL; +} + +ListOfDummy__comptype_template::ListOfDummy__comptype_template(const ListOfDummy__comptype& other_value) +{ +copy_value(other_value); +} + +ListOfDummy__comptype_template::ListOfDummy__comptype_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const ListOfDummy__comptype&)other_value); +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of type @General_Types.ListOfDummy_comptype from an unbound optional field."); +} +} + +ListOfDummy__comptype_template::ListOfDummy__comptype_template(const ListOfDummy__comptype_template& other_value) + : Record_Of_Template() +{ +copy_template(other_value); +} + +ListOfDummy__comptype_template::~ListOfDummy__comptype_template() +{ +clean_up(); +} + +void ListOfDummy__comptype_template::clean_up() +{ +switch (template_selection) { +case SPECIFIC_VALUE: +for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) +delete single_value.value_elements[elem_count]; +free_pointers((void**)single_value.value_elements); +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +delete [] value_list.list_value; +default: +break; +} +template_selection = UNINITIALIZED_TEMPLATE; +} + +ListOfDummy__comptype_template& ListOfDummy__comptype_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +ListOfDummy__comptype_template& ListOfDummy__comptype_template::operator=(null_type) +{ +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value.n_elements = 0; +single_value.value_elements = NULL; +return *this; +} + +ListOfDummy__comptype_template& ListOfDummy__comptype_template::operator=(const ListOfDummy__comptype& other_value) +{ +clean_up(); +copy_value(other_value); +return *this; +} + +ListOfDummy__comptype_template& ListOfDummy__comptype_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const ListOfDummy__comptype&)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 @General_Types.ListOfDummy_comptype."); +} +return *this; +} + +ListOfDummy__comptype_template& ListOfDummy__comptype_template::operator=(const ListOfDummy__comptype_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +COMPONENT_template& ListOfDummy__comptype_template::operator[](int index_value) +{ +if (index_value < 0) TTCN_error("Accessing an element of a template for type @General_Types.ListOfDummy_comptype 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 @General_Types.ListOfDummy_comptype."); + break; +} +return *single_value.value_elements[index_value]; +} + +COMPONENT_template& ListOfDummy__comptype_template::operator[](const INTEGER& index_value) +{ +index_value.must_bound("Using an unbound integer value for indexing a template of type @General_Types.ListOfDummy_comptype."); +return (*this)[(int)index_value]; +} + +const COMPONENT_template& ListOfDummy__comptype_template::operator[](int index_value) const +{ +if (index_value < 0) TTCN_error("Accessing an element of a template for type @General_Types.ListOfDummy_comptype using a negative index: %d.", index_value); +if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @General_Types.ListOfDummy_comptype."); +if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @General_Types.ListOfDummy_comptype: 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 COMPONENT_template& ListOfDummy__comptype_template::operator[](const INTEGER& index_value) const +{ +index_value.must_bound("Using an unbound integer value for indexing a template of type @General_Types.ListOfDummy_comptype."); +return (*this)[(int)index_value]; +} + +void ListOfDummy__comptype_template::set_size(int new_size) +{ +if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @General_Types.ListOfDummy_comptype."); +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 = (COMPONENT_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 COMPONENT_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 COMPONENT_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 = (COMPONENT_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); +single_value.n_elements = new_size; +} +} + +int ListOfDummy__comptype_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 ListOfDummy__comptype_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 @General_Types.ListOfDummy_comptype 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 @General_Types.ListOfDummy_comptype 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 @General_Types.ListOfDummy_comptype 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 @General_Types.ListOfDummy_comptype 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 @General_Types.ListOfDummy_comptype 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 @General_Types.ListOfDummy_comptype containing complemented list.", op_name); +default: + TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @General_Types.ListOfDummy_comptype.", op_name); +} +return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @General_Types.ListOfDummy_comptype"); +} + +boolean ListOfDummy__comptype_template::match(const ListOfDummy__comptype& other_value, boolean legacy) const +{ +if (!other_value.is_bound()) return FALSE; +int value_length = other_value.size_of(); +if (!match_length(value_length)) return FALSE; +switch (template_selection) { +case SPECIFIC_VALUE: +return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy); +case OMIT_VALUE: +return FALSE; +case ANY_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching with an uninitialized/unsupported template of type @General_Types.ListOfDummy_comptype."); +} +return FALSE; +} + +boolean ListOfDummy__comptype_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; +} + +ListOfDummy__comptype ListOfDummy__comptype_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 @General_Types.ListOfDummy_comptype."); +ListOfDummy__comptype 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; +} + +ListOfDummy__comptype ListOfDummy__comptype_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); +} + +ListOfDummy__comptype ListOfDummy__comptype_template::replace(int index, int len, const ListOfDummy__comptype_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()); +} + +ListOfDummy__comptype ListOfDummy__comptype_template::replace(int index, int len, const ListOfDummy__comptype& 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 ListOfDummy__comptype_template::set_type(template_sel template_type, unsigned int list_length) +{ +clean_up(); +switch (template_type) { +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = list_length; +value_list.list_value = new ListOfDummy__comptype_template[list_length]; +break; +default: +TTCN_error("Internal error: Setting an invalid type for a template of type @General_Types.ListOfDummy_comptype."); +} +set_selection(template_type); +} + +ListOfDummy__comptype_template& ListOfDummy__comptype_template::list_item(unsigned int list_index) +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of type @General_Types.ListOfDummy_comptype."); +if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @General_Types.ListOfDummy_comptype."); +return value_list.list_value[list_index]; +} + +void ListOfDummy__comptype_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +if (single_value.n_elements > 0) { +TTCN_Logger::log_event_str("{ "); +for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { +if (elem_count > 0) TTCN_Logger::log_event_str(", "); +if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation("); +single_value.value_elements[elem_count]->log(); +if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')'); +} +TTCN_Logger::log_event_str(" }"); +} else TTCN_Logger::log_event_str("{ }"); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { +if (list_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[list_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_restricted(); +log_ifpresent(); +} + +void ListOfDummy__comptype_template::log_match(const ListOfDummy__comptype& 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 ListOfDummy__comptype_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 @General_Types.ListOfDummy_comptype."); +} +} + +void ListOfDummy__comptype_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 @General_Types.ListOfDummy_comptype."); +single_value.value_elements = (COMPONENT_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 COMPONENT_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 ListOfDummy__comptype_template[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 @General_Types.ListOfDummy_comptype."); +} +} + +boolean ListOfDummy__comptype_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean ListOfDummy__comptype_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int i=0; 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; + for (size_t perm_i=0; perm_iget_size(); perm_i++) { + (*this)[curr_idx].set_param(*(param.get_elem(p_i)->get_elem(perm_i))); + curr_idx++; + } + int perm_end_idx = curr_idx - 1; + add_permutation(perm_start_idx, perm_end_idx); + } break; + default: + (*this)[curr_idx].set_param(*param.get_elem(p_i)); + curr_idx++; + } + } + } break; + default: + param.type_error("record of template", "@General_Types.ListOfDummy_comptype"); + } + is_ifpresent = param.get_ifpresent(); + set_length_range(param); +} + +void ListOfDummy__comptype_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 : "@General_Types.ListOfDummy_comptype"); +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 : "@General_Types.ListOfDummy_comptype"); +} + +boolean ListOfDummy__comptype_template::get_istemplate_kind(const char* type) const { +if (!strcmp(type, "AnyElement")) { + if (template_selection != SPECIFIC_VALUE) { + return FALSE; + } + for (int i = 0; i < single_value.n_elements; i++) { + if (single_value.value_elements[i]->get_selection() == ANY_VALUE) { + return TRUE; + } + } + return FALSE; +} else if (!strcmp(type, "AnyElementsOrNone")) { + if (template_selection != SPECIFIC_VALUE) { + return FALSE; + } + for (int i = 0; i < single_value.n_elements; i++) { + if (single_value.value_elements[i]->get_selection() == ANY_OR_OMIT) { + return TRUE; + } + } + return FALSE; +} else if (!strcmp(type, "permutation")) { + return number_of_permutations; +} else if (!strcmp(type, "length")) { + return length_restriction_type != NO_LENGTH_RESTRICTION; +} else { + return Base_Template::get_istemplate_kind(type); +} +} + +const COMPONENT ListOfDummy__CT::UNBOUND_ELEM; +ListOfDummy__CT::ListOfDummy__CT() +{ +val_ptr = NULL; +} + +ListOfDummy__CT::ListOfDummy__CT(null_type) +{ +val_ptr = new recordof_setof_struct; +val_ptr->ref_count = 1; +val_ptr->n_elements = 0; +val_ptr->value_elements = NULL; +} + +ListOfDummy__CT::ListOfDummy__CT(const ListOfDummy__CT& other_value) +{ +if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @General_Types.ListOfDummy_CT."); +val_ptr = other_value.val_ptr; +val_ptr->ref_count++; +} + +ListOfDummy__CT::~ListOfDummy__CT() +{ +clean_up(); +if (val_ptr != NULL) val_ptr = NULL; +} + +void ListOfDummy__CT::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."); +} +} + +ListOfDummy__CT& ListOfDummy__CT::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; +} + +ListOfDummy__CT& ListOfDummy__CT::operator=(const ListOfDummy__CT& other_value) +{ +if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @General_Types.ListOfDummy_CT."); +if (this != &other_value) { +clean_up(); +val_ptr = other_value.val_ptr; +val_ptr->ref_count++; +} +return *this; +} + +boolean ListOfDummy__CT::operator==(null_type) const +{ +if (val_ptr == NULL) +TTCN_error("The left operand of comparison is an unbound value of type @General_Types.ListOfDummy_CT."); +return val_ptr->n_elements == 0 ; +} + +boolean ListOfDummy__CT::operator==(const ListOfDummy__CT& other_value) const +{ +if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @General_Types.ListOfDummy_CT."); +if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @General_Types.ListOfDummy_CT."); +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; +} + +COMPONENT& ListOfDummy__CT::operator[](int index_value) +{ +if (index_value < 0) TTCN_error("Accessing an element of type @General_Types.ListOfDummy_CT 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 = (COMPONENT**)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 COMPONENT(*(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 COMPONENT; +} +return *val_ptr->value_elements[index_value]; +} + +COMPONENT& ListOfDummy__CT::operator[](const INTEGER& index_value) +{ +index_value.must_bound("Using an unbound integer value for indexing a value of type @General_Types.ListOfDummy_CT."); +return (*this)[(int)index_value]; +} + +const COMPONENT& ListOfDummy__CT::operator[](int index_value) const +{ +if (val_ptr == NULL) +TTCN_error("Accessing an element in an unbound value of type @General_Types.ListOfDummy_CT."); +if (index_value < 0) TTCN_error("Accessing an element of type @General_Types.ListOfDummy_CT using a negative index: %d.", index_value); +if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @General_Types.ListOfDummy_CT: 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) ? +*val_ptr->value_elements[index_value] : UNBOUND_ELEM; +} + +const COMPONENT& ListOfDummy__CT::operator[](const INTEGER& index_value) const +{ +index_value.must_bound("Using an unbound integer value for indexing a value of type @General_Types.ListOfDummy_CT."); +return (*this)[(int)index_value]; +} + +ListOfDummy__CT ListOfDummy__CT::operator<<=(int rotate_count) const +{ +return *this >>= (-rotate_count); +} + +ListOfDummy__CT ListOfDummy__CT::operator<<=(const INTEGER& rotate_count) const +{ +rotate_count.must_bound("Unbound integer operand of rotate left operator."); +return *this >>= (int)(-rotate_count); +} + +ListOfDummy__CT ListOfDummy__CT::operator>>=(const INTEGER& rotate_count) const +{ +rotate_count.must_bound("Unbound integer operand of rotate right operator."); +return *this >>= (int)rotate_count; +} + +ListOfDummy__CT ListOfDummy__CT::operator>>=(int rotate_count) const +{ +if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @General_Types.ListOfDummy_CT."); +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; +ListOfDummy__CT 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 COMPONENT(*val_ptr->value_elements[i]); +} +} +return ret_val; +} + +ListOfDummy__CT ListOfDummy__CT::operator+(const ListOfDummy__CT& other_value) const +{ +if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @General_Types.ListOfDummy_CT concatenation."); +if (val_ptr->n_elements == 0) return other_value; +if (other_value.val_ptr->n_elements == 0) return *this; +ListOfDummy__CT 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 COMPONENT(*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 COMPONENT(*other_value.val_ptr->value_elements[i]); +} +} +return ret_val; +} + +ListOfDummy__CT ListOfDummy__CT::substr(int index, int returncount) const +{ +if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @General_Types.ListOfDummy_CT."); +check_substr_arguments(val_ptr->n_elements, index, returncount, "@General_Types.ListOfDummy_CT","element"); +ListOfDummy__CT ret_val; +ret_val.set_size(returncount); +for (int i=0; ivalue_elements[i+index] != NULL) { +ret_val.val_ptr->value_elements[i] = new COMPONENT(*val_ptr->value_elements[i+index]); +} +} +return ret_val; +} + +ListOfDummy__CT ListOfDummy__CT::replace(int index, int len, const ListOfDummy__CT& repl) const +{ +if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @General_Types.ListOfDummy_CT."); +if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @General_Types.ListOfDummy_CT."); +check_replace_arguments(val_ptr->n_elements, index, len, "@General_Types.ListOfDummy_CT","element"); +ListOfDummy__CT 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 COMPONENT(*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 COMPONENT(*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 COMPONENT(*val_ptr->value_elements[index+i+len]); +} +} +return ret_val; +} + +ListOfDummy__CT ListOfDummy__CT::replace(int index, int len, const ListOfDummy__CT_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 ListOfDummy__CT::set_size(int new_size) +{ +if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @General_Types.ListOfDummy_CT."); +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 = (COMPONENT**)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 COMPONENT(*(val_ptr->value_elements[elem_count])); +} +} +clean_up(); +val_ptr = new_val_ptr; +} +if (new_size > val_ptr->n_elements) { +val_ptr->value_elements = (COMPONENT**)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 @General_Types.ListOfDummy_CT: %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 = (COMPONENT**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); +val_ptr->n_elements = new_size; +} +} + +boolean ListOfDummy__CT::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 ListOfDummy__CT::size_of() const +{ +if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @General_Types.ListOfDummy_CT."); +return val_ptr->n_elements; +} + +int ListOfDummy__CT::lengthof() const +{ +if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @General_Types.ListOfDummy_CT."); +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 ListOfDummy__CT::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 ListOfDummy__CT::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", "@General_Types.ListOfDummy_CT"); + } + 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", "@General_Types.ListOfDummy_CT"); + } + break; + default: + TTCN_error("Internal error: Unknown operation type."); + } +} + +void ListOfDummy__CT::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 ListOfDummy__CT::encode_text(Text_Buf& text_buf) const +{ +if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @General_Types.ListOfDummy_CT."); +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 ListOfDummy__CT::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 @General_Types.ListOfDummy_CT."); +val_ptr->value_elements = (COMPONENT**)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 COMPONENT; +val_ptr->value_elements[elem_count]->decode_text(text_buf); +} +} + +void ListOfDummy__CT_template::copy_value(const ListOfDummy__CT& other_value) +{ +if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @General_Types.ListOfDummy_CT with an unbound value."); +single_value.n_elements = other_value.size_of(); +single_value.value_elements = (COMPONENT_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 COMPONENT_template(other_value[elem_count]); +} else { +single_value.value_elements[elem_count] = new COMPONENT_template; +} +} +set_selection(SPECIFIC_VALUE); +} + +void ListOfDummy__CT_template::copy_template(const ListOfDummy__CT_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 = (COMPONENT_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 COMPONENT_template(*other_value.single_value.value_elements[elem_count]); +} else { +single_value.value_elements[elem_count] = new COMPONENT_template; +} +} +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new ListOfDummy__CT_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of type @General_Types.ListOfDummy_CT."); +break; +} +set_selection(other_value); +} + +boolean ListOfDummy__CT_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 ListOfDummy__CT_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const ListOfDummy__CT*)value_ptr)[value_index], legacy); +else return ((const ListOfDummy__CT_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); +} + +ListOfDummy__CT_template::ListOfDummy__CT_template() +{ +} + +ListOfDummy__CT_template::ListOfDummy__CT_template(template_sel other_value) + : Record_Of_Template(other_value) +{ +check_single_selection(other_value); +} + +ListOfDummy__CT_template::ListOfDummy__CT_template(null_type) + : Record_Of_Template(SPECIFIC_VALUE) +{ +single_value.n_elements = 0; +single_value.value_elements = NULL; +} + +ListOfDummy__CT_template::ListOfDummy__CT_template(const ListOfDummy__CT& other_value) +{ +copy_value(other_value); +} + +ListOfDummy__CT_template::ListOfDummy__CT_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const ListOfDummy__CT&)other_value); +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of type @General_Types.ListOfDummy_CT from an unbound optional field."); +} +} + +ListOfDummy__CT_template::ListOfDummy__CT_template(const ListOfDummy__CT_template& other_value) + : Record_Of_Template() +{ +copy_template(other_value); +} + +ListOfDummy__CT_template::~ListOfDummy__CT_template() +{ +clean_up(); +} + +void ListOfDummy__CT_template::clean_up() +{ +switch (template_selection) { +case SPECIFIC_VALUE: +for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) +delete single_value.value_elements[elem_count]; +free_pointers((void**)single_value.value_elements); +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +delete [] value_list.list_value; +default: +break; +} +template_selection = UNINITIALIZED_TEMPLATE; +} + +ListOfDummy__CT_template& ListOfDummy__CT_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +ListOfDummy__CT_template& ListOfDummy__CT_template::operator=(null_type) +{ +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value.n_elements = 0; +single_value.value_elements = NULL; +return *this; +} + +ListOfDummy__CT_template& ListOfDummy__CT_template::operator=(const ListOfDummy__CT& other_value) +{ +clean_up(); +copy_value(other_value); +return *this; +} + +ListOfDummy__CT_template& ListOfDummy__CT_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const ListOfDummy__CT&)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 @General_Types.ListOfDummy_CT."); +} +return *this; +} + +ListOfDummy__CT_template& ListOfDummy__CT_template::operator=(const ListOfDummy__CT_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +COMPONENT_template& ListOfDummy__CT_template::operator[](int index_value) +{ +if (index_value < 0) TTCN_error("Accessing an element of a template for type @General_Types.ListOfDummy_CT 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 @General_Types.ListOfDummy_CT."); + break; +} +return *single_value.value_elements[index_value]; +} + +COMPONENT_template& ListOfDummy__CT_template::operator[](const INTEGER& index_value) +{ +index_value.must_bound("Using an unbound integer value for indexing a template of type @General_Types.ListOfDummy_CT."); +return (*this)[(int)index_value]; +} + +const COMPONENT_template& ListOfDummy__CT_template::operator[](int index_value) const +{ +if (index_value < 0) TTCN_error("Accessing an element of a template for type @General_Types.ListOfDummy_CT using a negative index: %d.", index_value); +if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @General_Types.ListOfDummy_CT."); +if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @General_Types.ListOfDummy_CT: 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 COMPONENT_template& ListOfDummy__CT_template::operator[](const INTEGER& index_value) const +{ +index_value.must_bound("Using an unbound integer value for indexing a template of type @General_Types.ListOfDummy_CT."); +return (*this)[(int)index_value]; +} + +void ListOfDummy__CT_template::set_size(int new_size) +{ +if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @General_Types.ListOfDummy_CT."); +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 = (COMPONENT_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 COMPONENT_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 COMPONENT_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 = (COMPONENT_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); +single_value.n_elements = new_size; +} +} + +int ListOfDummy__CT_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 ListOfDummy__CT_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 @General_Types.ListOfDummy_CT 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 @General_Types.ListOfDummy_CT 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 @General_Types.ListOfDummy_CT 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 @General_Types.ListOfDummy_CT 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 @General_Types.ListOfDummy_CT 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 @General_Types.ListOfDummy_CT containing complemented list.", op_name); +default: + TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @General_Types.ListOfDummy_CT.", op_name); +} +return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @General_Types.ListOfDummy_CT"); +} + +boolean ListOfDummy__CT_template::match(const ListOfDummy__CT& other_value, boolean legacy) const +{ +if (!other_value.is_bound()) return FALSE; +int value_length = other_value.size_of(); +if (!match_length(value_length)) return FALSE; +switch (template_selection) { +case SPECIFIC_VALUE: +return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy); +case OMIT_VALUE: +return FALSE; +case ANY_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching with an uninitialized/unsupported template of type @General_Types.ListOfDummy_CT."); +} +return FALSE; +} + +boolean ListOfDummy__CT_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; +} + +ListOfDummy__CT ListOfDummy__CT_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 @General_Types.ListOfDummy_CT."); +ListOfDummy__CT 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; +} + +ListOfDummy__CT ListOfDummy__CT_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); +} + +ListOfDummy__CT ListOfDummy__CT_template::replace(int index, int len, const ListOfDummy__CT_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()); +} + +ListOfDummy__CT ListOfDummy__CT_template::replace(int index, int len, const ListOfDummy__CT& 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 ListOfDummy__CT_template::set_type(template_sel template_type, unsigned int list_length) +{ +clean_up(); +switch (template_type) { +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = list_length; +value_list.list_value = new ListOfDummy__CT_template[list_length]; +break; +default: +TTCN_error("Internal error: Setting an invalid type for a template of type @General_Types.ListOfDummy_CT."); +} +set_selection(template_type); +} + +ListOfDummy__CT_template& ListOfDummy__CT_template::list_item(unsigned int list_index) +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of type @General_Types.ListOfDummy_CT."); +if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @General_Types.ListOfDummy_CT."); +return value_list.list_value[list_index]; +} + +void ListOfDummy__CT_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +if (single_value.n_elements > 0) { +TTCN_Logger::log_event_str("{ "); +for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { +if (elem_count > 0) TTCN_Logger::log_event_str(", "); +if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation("); +single_value.value_elements[elem_count]->log(); +if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')'); +} +TTCN_Logger::log_event_str(" }"); +} else TTCN_Logger::log_event_str("{ }"); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { +if (list_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[list_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_restricted(); +log_ifpresent(); +} + +void ListOfDummy__CT_template::log_match(const ListOfDummy__CT& 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 ListOfDummy__CT_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 @General_Types.ListOfDummy_CT."); +} +} + +void ListOfDummy__CT_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 @General_Types.ListOfDummy_CT."); +single_value.value_elements = (COMPONENT_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 COMPONENT_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 ListOfDummy__CT_template[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 @General_Types.ListOfDummy_CT."); +} +} + +boolean ListOfDummy__CT_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean ListOfDummy__CT_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int i=0; 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; + for (size_t perm_i=0; perm_iget_size(); perm_i++) { + (*this)[curr_idx].set_param(*(param.get_elem(p_i)->get_elem(perm_i))); + curr_idx++; + } + int perm_end_idx = curr_idx - 1; + add_permutation(perm_start_idx, perm_end_idx); + } break; + default: + (*this)[curr_idx].set_param(*param.get_elem(p_i)); + curr_idx++; + } + } + } break; + default: + param.type_error("record of template", "@General_Types.ListOfDummy_CT"); + } + is_ifpresent = param.get_ifpresent(); + set_length_range(param); +} + +void ListOfDummy__CT_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 : "@General_Types.ListOfDummy_CT"); +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 : "@General_Types.ListOfDummy_CT"); +} + +boolean ListOfDummy__CT_template::get_istemplate_kind(const char* type) const { +if (!strcmp(type, "AnyElement")) { + if (template_selection != SPECIFIC_VALUE) { + return FALSE; + } + for (int i = 0; i < single_value.n_elements; i++) { + if (single_value.value_elements[i]->get_selection() == ANY_VALUE) { + return TRUE; + } + } + return FALSE; +} else if (!strcmp(type, "AnyElementsOrNone")) { + if (template_selection != SPECIFIC_VALUE) { + return FALSE; + } + for (int i = 0; i < single_value.n_elements; i++) { + if (single_value.value_elements[i]->get_selection() == ANY_OR_OMIT) { + return TRUE; + } + } + return FALSE; +} else if (!strcmp(type, "permutation")) { + return number_of_permutations; +} else if (!strcmp(type, "length")) { + return length_restriction_type != NO_LENGTH_RESTRICTION; +} else { + return Base_Template::get_istemplate_kind(type); +} +} + +const Protocols ProtocolList::UNBOUND_ELEM; +ProtocolList::ProtocolList() +{ +val_ptr = NULL; +} + +ProtocolList::ProtocolList(null_type) +{ +val_ptr = new recordof_setof_struct; +val_ptr->ref_count = 1; +val_ptr->n_elements = 0; +val_ptr->value_elements = NULL; +} + +ProtocolList::ProtocolList(const ProtocolList& other_value) +{ +if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @General_Types.ProtocolList."); +val_ptr = other_value.val_ptr; +val_ptr->ref_count++; +} + +ProtocolList::~ProtocolList() +{ +clean_up(); +if (val_ptr != NULL) val_ptr = NULL; +} + +void ProtocolList::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."); +} +} + +ProtocolList& ProtocolList::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; +} + +ProtocolList& ProtocolList::operator=(const ProtocolList& other_value) +{ +if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @General_Types.ProtocolList."); +if (this != &other_value) { +clean_up(); +val_ptr = other_value.val_ptr; +val_ptr->ref_count++; +} +return *this; +} + +boolean ProtocolList::operator==(null_type) const +{ +if (val_ptr == NULL) +TTCN_error("The left operand of comparison is an unbound value of type @General_Types.ProtocolList."); +return val_ptr->n_elements == 0 ; +} + +boolean ProtocolList::operator==(const ProtocolList& other_value) const +{ +if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @General_Types.ProtocolList."); +if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @General_Types.ProtocolList."); +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; +} + +Protocols& ProtocolList::operator[](int index_value) +{ +if (index_value < 0) TTCN_error("Accessing an element of type @General_Types.ProtocolList 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 = (Protocols**)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 Protocols(*(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 Protocols; +} +return *val_ptr->value_elements[index_value]; +} + +Protocols& ProtocolList::operator[](const INTEGER& index_value) +{ +index_value.must_bound("Using an unbound integer value for indexing a value of type @General_Types.ProtocolList."); +return (*this)[(int)index_value]; +} + +const Protocols& ProtocolList::operator[](int index_value) const +{ +if (val_ptr == NULL) +TTCN_error("Accessing an element in an unbound value of type @General_Types.ProtocolList."); +if (index_value < 0) TTCN_error("Accessing an element of type @General_Types.ProtocolList using a negative index: %d.", index_value); +if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @General_Types.ProtocolList: 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) ? +*val_ptr->value_elements[index_value] : UNBOUND_ELEM; +} + +const Protocols& ProtocolList::operator[](const INTEGER& index_value) const +{ +index_value.must_bound("Using an unbound integer value for indexing a value of type @General_Types.ProtocolList."); +return (*this)[(int)index_value]; +} + +ProtocolList ProtocolList::operator<<=(int rotate_count) const +{ +return *this >>= (-rotate_count); +} + +ProtocolList ProtocolList::operator<<=(const INTEGER& rotate_count) const +{ +rotate_count.must_bound("Unbound integer operand of rotate left operator."); +return *this >>= (int)(-rotate_count); +} + +ProtocolList ProtocolList::operator>>=(const INTEGER& rotate_count) const +{ +rotate_count.must_bound("Unbound integer operand of rotate right operator."); +return *this >>= (int)rotate_count; +} + +ProtocolList ProtocolList::operator>>=(int rotate_count) const +{ +if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @General_Types.ProtocolList."); +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; +ProtocolList 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 Protocols(*val_ptr->value_elements[i]); +} +} +return ret_val; +} + +ProtocolList ProtocolList::operator+(const ProtocolList& other_value) const +{ +if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @General_Types.ProtocolList concatenation."); +if (val_ptr->n_elements == 0) return other_value; +if (other_value.val_ptr->n_elements == 0) return *this; +ProtocolList 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 Protocols(*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 Protocols(*other_value.val_ptr->value_elements[i]); +} +} +return ret_val; +} + +ProtocolList ProtocolList::substr(int index, int returncount) const +{ +if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @General_Types.ProtocolList."); +check_substr_arguments(val_ptr->n_elements, index, returncount, "@General_Types.ProtocolList","element"); +ProtocolList ret_val; +ret_val.set_size(returncount); +for (int i=0; ivalue_elements[i+index] != NULL) { +ret_val.val_ptr->value_elements[i] = new Protocols(*val_ptr->value_elements[i+index]); +} +} +return ret_val; +} + +ProtocolList ProtocolList::replace(int index, int len, const ProtocolList& repl) const +{ +if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @General_Types.ProtocolList."); +if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @General_Types.ProtocolList."); +check_replace_arguments(val_ptr->n_elements, index, len, "@General_Types.ProtocolList","element"); +ProtocolList 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 Protocols(*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 Protocols(*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 Protocols(*val_ptr->value_elements[index+i+len]); +} +} +return ret_val; +} + +ProtocolList ProtocolList::replace(int index, int len, const ProtocolList_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 ProtocolList::set_size(int new_size) +{ +if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @General_Types.ProtocolList."); +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 = (Protocols**)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 Protocols(*(val_ptr->value_elements[elem_count])); +} +} +clean_up(); +val_ptr = new_val_ptr; +} +if (new_size > val_ptr->n_elements) { +val_ptr->value_elements = (Protocols**)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 @General_Types.ProtocolList: %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 = (Protocols**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); +val_ptr->n_elements = new_size; +} +} + +boolean ProtocolList::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 ProtocolList::size_of() const +{ +if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @General_Types.ProtocolList."); +return val_ptr->n_elements; +} + +int ProtocolList::lengthof() const +{ +if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @General_Types.ProtocolList."); +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 ProtocolList::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 ProtocolList::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", "@General_Types.ProtocolList"); + } + 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", "@General_Types.ProtocolList"); + } + break; + default: + TTCN_error("Internal error: Unknown operation type."); + } +} + +void ProtocolList::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 ProtocolList::encode_text(Text_Buf& text_buf) const +{ +if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @General_Types.ProtocolList."); +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 ProtocolList::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 @General_Types.ProtocolList."); +val_ptr->value_elements = (Protocols**)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 Protocols; +val_ptr->value_elements[elem_count]->decode_text(text_buf); +} +} + +void ProtocolList::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void ProtocolList::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int ProtocolList::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){ + int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); + limit-=prepaddlength; + int decoded_length=0; + int decoded_field_length=0; + size_t start_of_field=0; + if(first_call) { + clean_up(); + val_ptr=new recordof_setof_struct; + val_ptr->ref_count=1; + val_ptr->n_elements=0; + val_ptr->value_elements=NULL; + } + int start_field=val_ptr->n_elements; + if(p_td.raw->fieldlength || sel_field!=-1){ + int a=0; + if(sel_field==-1) sel_field=p_td.raw->fieldlength; + for(a=0;an_elements=0; + } else { + int a=start_field; + 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; + } + 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 ProtocolList::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 ProtocolList_template::copy_value(const ProtocolList& other_value) +{ +if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @General_Types.ProtocolList with an unbound value."); +single_value.n_elements = other_value.size_of(); +single_value.value_elements = (Protocols_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 Protocols_template(other_value[elem_count]); +} else { +single_value.value_elements[elem_count] = new Protocols_template; +} +} +set_selection(SPECIFIC_VALUE); +} + +void ProtocolList_template::copy_template(const ProtocolList_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 = (Protocols_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 Protocols_template(*other_value.single_value.value_elements[elem_count]); +} else { +single_value.value_elements[elem_count] = new Protocols_template; +} +} +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new ProtocolList_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of type @General_Types.ProtocolList."); +break; +} +set_selection(other_value); +} + +boolean ProtocolList_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 ProtocolList_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const ProtocolList*)value_ptr)[value_index], legacy); +else return ((const ProtocolList_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); +} + +ProtocolList_template::ProtocolList_template() +{ +} + +ProtocolList_template::ProtocolList_template(template_sel other_value) + : Record_Of_Template(other_value) +{ +check_single_selection(other_value); +} + +ProtocolList_template::ProtocolList_template(null_type) + : Record_Of_Template(SPECIFIC_VALUE) +{ +single_value.n_elements = 0; +single_value.value_elements = NULL; +} + +ProtocolList_template::ProtocolList_template(const ProtocolList& other_value) +{ +copy_value(other_value); +} + +ProtocolList_template::ProtocolList_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const ProtocolList&)other_value); +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of type @General_Types.ProtocolList from an unbound optional field."); +} +} + +ProtocolList_template::ProtocolList_template(const ProtocolList_template& other_value) + : Record_Of_Template() +{ +copy_template(other_value); +} + +ProtocolList_template::~ProtocolList_template() +{ +clean_up(); +} + +void ProtocolList_template::clean_up() +{ +switch (template_selection) { +case SPECIFIC_VALUE: +for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) +delete single_value.value_elements[elem_count]; +free_pointers((void**)single_value.value_elements); +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +delete [] value_list.list_value; +default: +break; +} +template_selection = UNINITIALIZED_TEMPLATE; +} + +ProtocolList_template& ProtocolList_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +ProtocolList_template& ProtocolList_template::operator=(null_type) +{ +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value.n_elements = 0; +single_value.value_elements = NULL; +return *this; +} + +ProtocolList_template& ProtocolList_template::operator=(const ProtocolList& other_value) +{ +clean_up(); +copy_value(other_value); +return *this; +} + +ProtocolList_template& ProtocolList_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const ProtocolList&)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 @General_Types.ProtocolList."); +} +return *this; +} + +ProtocolList_template& ProtocolList_template::operator=(const ProtocolList_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +Protocols_template& ProtocolList_template::operator[](int index_value) +{ +if (index_value < 0) TTCN_error("Accessing an element of a template for type @General_Types.ProtocolList 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 @General_Types.ProtocolList."); + break; +} +return *single_value.value_elements[index_value]; +} + +Protocols_template& ProtocolList_template::operator[](const INTEGER& index_value) +{ +index_value.must_bound("Using an unbound integer value for indexing a template of type @General_Types.ProtocolList."); +return (*this)[(int)index_value]; +} + +const Protocols_template& ProtocolList_template::operator[](int index_value) const +{ +if (index_value < 0) TTCN_error("Accessing an element of a template for type @General_Types.ProtocolList using a negative index: %d.", index_value); +if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @General_Types.ProtocolList."); +if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @General_Types.ProtocolList: 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 Protocols_template& ProtocolList_template::operator[](const INTEGER& index_value) const +{ +index_value.must_bound("Using an unbound integer value for indexing a template of type @General_Types.ProtocolList."); +return (*this)[(int)index_value]; +} + +void ProtocolList_template::set_size(int new_size) +{ +if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @General_Types.ProtocolList."); +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 = (Protocols_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 Protocols_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 Protocols_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 = (Protocols_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); +single_value.n_elements = new_size; +} +} + +int ProtocolList_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 ProtocolList_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 @General_Types.ProtocolList 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 @General_Types.ProtocolList 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 @General_Types.ProtocolList 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 @General_Types.ProtocolList 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 @General_Types.ProtocolList 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 @General_Types.ProtocolList containing complemented list.", op_name); +default: + TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @General_Types.ProtocolList.", op_name); +} +return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @General_Types.ProtocolList"); +} + +boolean ProtocolList_template::match(const ProtocolList& other_value, boolean legacy) const +{ +if (!other_value.is_bound()) return FALSE; +int value_length = other_value.size_of(); +if (!match_length(value_length)) return FALSE; +switch (template_selection) { +case SPECIFIC_VALUE: +return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy); +case OMIT_VALUE: +return FALSE; +case ANY_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching with an uninitialized/unsupported template of type @General_Types.ProtocolList."); +} +return FALSE; +} + +boolean ProtocolList_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; +} + +ProtocolList ProtocolList_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 @General_Types.ProtocolList."); +ProtocolList 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; +} + +ProtocolList ProtocolList_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); +} + +ProtocolList ProtocolList_template::replace(int index, int len, const ProtocolList_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()); +} + +ProtocolList ProtocolList_template::replace(int index, int len, const ProtocolList& 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 ProtocolList_template::set_type(template_sel template_type, unsigned int list_length) +{ +clean_up(); +switch (template_type) { +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = list_length; +value_list.list_value = new ProtocolList_template[list_length]; +break; +default: +TTCN_error("Internal error: Setting an invalid type for a template of type @General_Types.ProtocolList."); +} +set_selection(template_type); +} + +ProtocolList_template& ProtocolList_template::list_item(unsigned int list_index) +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of type @General_Types.ProtocolList."); +if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @General_Types.ProtocolList."); +return value_list.list_value[list_index]; +} + +void ProtocolList_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +if (single_value.n_elements > 0) { +TTCN_Logger::log_event_str("{ "); +for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { +if (elem_count > 0) TTCN_Logger::log_event_str(", "); +if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation("); +single_value.value_elements[elem_count]->log(); +if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')'); +} +TTCN_Logger::log_event_str(" }"); +} else TTCN_Logger::log_event_str("{ }"); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { +if (list_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[list_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_restricted(); +log_ifpresent(); +} + +void ProtocolList_template::log_match(const ProtocolList& 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 ProtocolList_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 @General_Types.ProtocolList."); +} +} + +void ProtocolList_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 @General_Types.ProtocolList."); +single_value.value_elements = (Protocols_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 Protocols_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 ProtocolList_template[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 @General_Types.ProtocolList."); +} +} + +boolean ProtocolList_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean ProtocolList_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int i=0; 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; + for (size_t perm_i=0; perm_iget_size(); perm_i++) { + (*this)[curr_idx].set_param(*(param.get_elem(p_i)->get_elem(perm_i))); + curr_idx++; + } + int perm_end_idx = curr_idx - 1; + add_permutation(perm_start_idx, perm_end_idx); + } break; + default: + (*this)[curr_idx].set_param(*param.get_elem(p_i)); + curr_idx++; + } + } + } break; + default: + param.type_error("record of template", "@General_Types.ProtocolList"); + } + is_ifpresent = param.get_ifpresent(); + set_length_range(param); +} + +void ProtocolList_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 : "@General_Types.ProtocolList"); +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 : "@General_Types.ProtocolList"); +} + +boolean ProtocolList_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); +} +} + +/* Bodies of functions, altsteps and testcases */ + +void BIT1n_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT1n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT1n_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT1n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT2n_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT2n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT2n_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT2n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT3n_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT3n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT3n_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT3n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT4n_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT4n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT4n_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT4n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT5n_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT5n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT5n_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT5n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT6n_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT6n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT6n_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT6n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT7n_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT7n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT7n_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT7n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT8n_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT8n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT8n_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT8n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT9n_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT9n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT9n_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT9n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT12n_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT12n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT12n_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT12n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT14n_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT14n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT14n_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT14n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT15n_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT15n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT15n_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT15n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT16n_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT16n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT16n_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT16n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT56n_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT56n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT56n_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT56n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT14__24n_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BITSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT14__24n_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BITSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT1np_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT1np_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT1np_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT1np_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT2np_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT2np_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT2np_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT2np_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT3np_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT3np_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT3np_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT3np_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT4np_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT4np_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT4np_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT4np_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT5np_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT5np_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT5np_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT5np_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT6np_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT6np_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT6np_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT6np_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT7np_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT7np_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT7np_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT7np_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT15np_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT15np_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT15np_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT15np_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT1_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT1_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT1_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT1_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT2_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT2_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT2_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT2_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT3_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT3_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT3_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT3_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT4_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT4_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT4_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT4_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT5_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT5_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT5_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT5_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT6_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT6_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT6_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT6_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT7_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT7_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT7_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT7_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT8_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT8_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT8_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT8_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT9_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT9_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT9_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT9_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT10_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT10_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT10_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT10_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT11_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT11_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT11_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT11_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT12_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT12_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT12_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT12_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT14_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT14_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT14_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT14_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT15_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT15_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT15_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT15_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT16_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT16_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT16_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT16_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT24_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT24_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT24_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT24_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT31_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT31_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT31_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT31_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT32_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT32_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT32_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT32_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT56_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT56_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT56_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT56_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT0n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT0n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT0n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT0n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT1n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT1n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT1n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT1n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT2n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT2n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT2n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT2n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT3n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT3n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT3n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT3n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT4n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT4n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT4n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT4n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT5n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT5n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT5n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT5n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT6n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT6n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT6n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT6n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT7n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT7n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT7n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT7n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT8n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT8n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT8n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT8n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT9n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT9n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT9n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT9n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT10n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT10n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT10n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT10n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT11n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT11n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT11n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT11n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT12n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT12n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT12n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT12n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT13n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT13n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT13n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT13n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT14n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT14n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT14n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT14n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT15n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT15n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT15n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT15n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT16n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT16n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT16n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT16n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT17n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT17n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT17n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT17n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT18n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT18n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT18n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT18n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT19n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT19n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT19n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT19n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT20n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT20n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT20n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT20n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT28n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT28n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT28n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT28n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT32n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT32n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT32n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT32n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT34n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT34n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT34n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT34n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT46n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT46n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT46n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT46n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT50n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT50n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT50n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT50n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT69n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT69n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT69n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT69n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT100n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT100n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT100n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT100n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT128n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT128n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT128n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT128n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT500n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT500n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT500n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT500n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCTNn_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCTNn_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT1__3n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT1__3n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT1__4n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT1__4n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT1__5n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT1__5n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT1__6n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT1__6n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT1__7n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT1__7n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT1__8n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT1__8n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT1__12n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT1__12n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT1__15n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT1__15n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT1__16n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT1__16n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT1__18n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT1__18n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT1__20n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT1__20n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT1__24n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT1__24n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT1__32n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT1__32n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT1__34n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT1__34n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT1__46n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT1__46n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT1__50n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT1__50n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT1__112n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT1__112n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT1__127n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT1__127n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT1__128n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT1__128n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT1__172n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT1__172n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT3__5n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT3__5n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT3__7n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT3__7n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT3__8n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT3__8n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT3__14n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT3__14n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT3__17n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT3__17n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT4__8n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT4__8n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void CHAR4_encoder(const CHARSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `charstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(CHAR4_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER CHAR4_decoder(OCTETSTRING& input_stream, CHARSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `charstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(CHAR4_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void HEX4n_encoder(const HEXSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `hexstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(HEX4n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER HEX4n_decoder(OCTETSTRING& input_stream, HEXSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `hexstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(HEX4n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void HEX6n_encoder(const HEXSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `hexstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(HEX6n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER HEX6n_decoder(OCTETSTRING& input_stream, HEXSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `hexstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(HEX6n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void HEX8n_encoder(const HEXSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `hexstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(HEX8n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER HEX8n_decoder(OCTETSTRING& input_stream, HEXSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `hexstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(HEX8n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void HEX15n_encoder(const HEXSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `hexstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(HEX15n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER HEX15n_decoder(OCTETSTRING& input_stream, HEXSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `hexstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(HEX15n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void HEX16n_encoder(const HEXSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `hexstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(HEX16n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER HEX16n_decoder(OCTETSTRING& input_stream, HEXSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `hexstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(HEX16n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void HEX24n_encoder(const HEXSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `hexstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(HEX24n_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER HEX24n_decoder(OCTETSTRING& input_stream, HEXSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `hexstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(HEX24n_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void HEX0__3n_encoder(const HEXSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `hexstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(HEXSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER HEX0__3n_decoder(OCTETSTRING& input_stream, HEXSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `hexstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(HEXSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void HEX0__18n_encoder(const HEXSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `hexstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(HEXSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER HEX0__18n_decoder(OCTETSTRING& input_stream, HEXSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `hexstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(HEXSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void HEX1__20n_encoder(const HEXSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `hexstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(HEXSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER HEX1__20n_decoder(OCTETSTRING& input_stream, HEXSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `hexstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(HEXSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void HEX1__34n_encoder(const HEXSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `hexstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(HEXSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER HEX1__34n_decoder(OCTETSTRING& input_stream, HEXSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `hexstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(HEXSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void INT3nb_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(INTEGER_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER INT3nb_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(INTEGER_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void INT4nb_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(INTEGER_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER INT4nb_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(INTEGER_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void INT5nb_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(INTEGER_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER INT5nb_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(INTEGER_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void INT8nb_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(INTEGER_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER INT8nb_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(INTEGER_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void INT2nbp_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(INTEGER_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER INT2nbp_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(INTEGER_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void INT1nbp_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(INTEGER_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER INT1nbp_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(INTEGER_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void INT3nbp_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(INTEGER_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER INT3nbp_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(INTEGER_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void INT5nbp_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(INTEGER_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER INT5nbp_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(INTEGER_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void INT9nbp_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(INTEGER_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER INT9nbp_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(INTEGER_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void INT13nbp_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(INTEGER_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER INT13nbp_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(INTEGER_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void INT15nbp_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(INTEGER_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER INT15nbp_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(INTEGER_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT6__BO__LAST_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT6__BO__LAST_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT6__BO__LAST_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT6__BO__LAST_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT16__BO__LAST_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT16__BO__LAST_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT16__BO__LAST_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT16__BO__LAST_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void BIT32__BO__LAST_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(BIT32__BO__LAST_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER BIT32__BO__LAST_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `bitstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(BIT32__BO__LAST_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void Dummy_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(Dummy_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER Dummy_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(Dummy_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT0_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT0_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT0_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT0_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT1_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT1_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT1_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT1_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT2_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT2_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT2_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT2_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT3_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT3_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT3_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT3_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT4_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT4_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT4_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT4_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT5_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT5_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT5_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT5_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT6_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT6_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT6_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT6_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT7_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT7_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT7_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT7_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT8_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT8_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT8_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT8_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT9_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT9_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT9_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT9_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT10_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT10_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT10_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT10_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT11_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT11_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT11_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT11_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT12_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT12_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT12_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT12_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT13_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT13_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT13_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT13_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT14_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT14_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT14_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT14_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT15_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT15_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT15_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT15_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT16_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT16_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT16_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT16_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT17_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT17_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT17_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT17_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT18_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT18_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT18_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT18_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT19_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT19_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT19_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT19_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT20_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT20_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT20_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT20_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT32_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT32_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT32_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT32_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT34_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT34_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT34_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT34_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT46_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT46_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT46_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT46_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT1__260_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT1__260_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT1__8_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT1__8_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT1__12_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT1__12_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT1__32_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT1__32_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT1__50_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT1__50_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT3__8_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT3__8_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCTN_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCTN_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCTETSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void HEX1_encoder(const HEXSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `hexstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(HEX1_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER HEX1_decoder(OCTETSTRING& input_stream, HEXSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `hexstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(HEX1_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void HEX0__16_encoder(const HEXSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `hexstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(HEXSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER HEX0__16_decoder(OCTETSTRING& input_stream, HEXSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `hexstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(HEXSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void HEX5__16_encoder(const HEXSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `hexstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(HEXSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER HEX5__16_decoder(OCTETSTRING& input_stream, HEXSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `hexstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(HEXSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void HEX1__32_encoder(const HEXSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `hexstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(HEXSTRING_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER HEX1__32_decoder(OCTETSTRING& input_stream, HEXSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `hexstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(HEXSTRING_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void INT1_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(INT1_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER INT1_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(INT1_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void LIN1_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(LIN1_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER LIN1_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(LIN1_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void LIN2_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(LIN2_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER LIN2_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(LIN2_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void LIN2__BO__LAST_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(LIN2__BO__LAST_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER LIN2__BO__LAST_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(LIN2__BO__LAST_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void LIN3__BO__LAST_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(LIN3__BO__LAST_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER LIN3__BO__LAST_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(LIN3__BO__LAST_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void LIN4__BO__LAST_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(LIN4__BO__LAST_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER LIN4__BO__LAST_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(LIN4__BO__LAST_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void INT1b_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(INT1b_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER INT1b_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(INT1b_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void INT2b_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(INT2b_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER INT2b_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(INT2b_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void INT3b_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(INT3b_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER INT3b_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(INT3b_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void INT4b_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(INT4b_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER INT4b_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(INT4b_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void INT5b_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(INT5b_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER INT5b_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(INT5b_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void INT6b_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(INT6b_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER INT6b_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(INT6b_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void INT7b_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(INT7b_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER INT7b_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(INT7b_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void INT11b__BO__LAST_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(INT11b__BO__LAST_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER INT11b__BO__LAST_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(INT11b__BO__LAST_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void INT12b__BO__LAST_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(INT12b__BO__LAST_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER INT12b__BO__LAST_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(INT12b__BO__LAST_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void INT13b__BO__LAST_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(INT13b__BO__LAST_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER INT13b__BO__LAST_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(INT13b__BO__LAST_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void INT14b__BO__LAST_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(INT14b__BO__LAST_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER INT14b__BO__LAST_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(INT14b__BO__LAST_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void INT18b__BO__LAST_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(INT18b__BO__LAST_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER INT18b__BO__LAST_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(INT18b__BO__LAST_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void INT20b__BO__LAST_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(INT20b__BO__LAST_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER INT20b__BO__LAST_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(INT20b__BO__LAST_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void INT31b__BO__LAST_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(INT31b__BO__LAST_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER INT31b__BO__LAST_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(INT31b__BO__LAST_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void Integers_0_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(INTEGER_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER Integers_0_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(INTEGER_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void Integers_encoder(const Integers& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@General_Types.Integers' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(Integers_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER Integers_decoder(OCTETSTRING& input_stream, Integers& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@General_Types.Integers' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(Integers_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +boolean operator==(null_type, const Integer__array& other_value) +{ +if (other_value.val_ptr == NULL) +TTCN_error("The right operand of comparison is an unbound value of type @General_Types.Integer_array."); +return other_value.val_ptr->n_elements == 0; +} + +void Integer__array_encoder(const Integer__array& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@General_Types.Integer_array' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(Integer__array_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER Integer__array_decoder(OCTETSTRING& input_stream, Integer__array& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@General_Types.Integer_array' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(Integer__array_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void Protocols_encoder(const Protocols& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@General_Types.Protocols' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(Protocols_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER Protocols_decoder(OCTETSTRING& input_stream, Protocols& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@General_Types.Protocols' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(Protocols_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT1List_encoder(const OCT1List& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@General_Types.OCT1List' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT1List_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT1List_decoder(OCTETSTRING& input_stream, OCT1List& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@General_Types.OCT1List' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT1List_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT2List_encoder(const OCT2List& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@General_Types.OCT2List' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT2List_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT2List_decoder(OCTETSTRING& input_stream, OCT2List& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@General_Types.OCT2List' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT2List_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT3List_encoder(const OCT3List& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@General_Types.OCT3List' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT3List_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT3List_decoder(OCTETSTRING& input_stream, OCT3List& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@General_Types.OCT3List' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT3List_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT4List_encoder(const OCT4List& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@General_Types.OCT4List' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT4List_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT4List_decoder(OCTETSTRING& input_stream, OCT4List& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@General_Types.OCT4List' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT4List_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT5List_encoder(const OCT5List& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@General_Types.OCT5List' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT5List_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT5List_decoder(OCTETSTRING& input_stream, OCT5List& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@General_Types.OCT5List' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT5List_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT6List_encoder(const OCT6List& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@General_Types.OCT6List' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT6List_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT6List_decoder(OCTETSTRING& input_stream, OCT6List& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@General_Types.OCT6List' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT6List_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void OCT7List_encoder(const OCT7List& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@General_Types.OCT7List' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(OCT7List_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER OCT7List_decoder(OCTETSTRING& input_stream, OCT7List& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@General_Types.OCT7List' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(OCT7List_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +boolean operator==(null_type, const ListOfDummy__comptype& other_value) +{ +if (other_value.val_ptr == NULL) +TTCN_error("The right operand of comparison is an unbound value of type @General_Types.ListOfDummy_comptype."); +return other_value.val_ptr->n_elements == 0; +} + +boolean operator==(null_type, const ListOfDummy__CT& other_value) +{ +if (other_value.val_ptr == NULL) +TTCN_error("The right operand of comparison is an unbound value of type @General_Types.ListOfDummy_CT."); +return other_value.val_ptr->n_elements == 0; +} + +boolean operator==(null_type, const ProtocolList& other_value) +{ +if (other_value.val_ptr == NULL) +TTCN_error("The right operand of comparison is an unbound value of type @General_Types.ProtocolList."); +return other_value.val_ptr->n_elements == 0; +} + +void ProtocolList_encoder(const ProtocolList& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@General_Types.ProtocolList' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(ProtocolList_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER ProtocolList_decoder(OCTETSTRING& input_stream, ProtocolList& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@General_Types.ProtocolList' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(ProtocolList_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + + +/* Bodies of static functions */ + +static boolean init_comp_type(const char *component_type, boolean init_base_comps) +{ +(void)init_base_comps; +if (!strcmp(component_type, "Dummy_comptype")) { +return TRUE; +} else if (!strcmp(component_type, "Dummy_CT")) { +return TRUE; +} else return FALSE; +} + + +} /* end of namespace */ diff --git a/titan/General_Types.hh b/titan/General_Types.hh new file mode 100644 index 0000000..9909f49 --- /dev/null +++ b/titan/General_Types.hh @@ -0,0 +1,2464 @@ +// This C++ header file was generated by the TTCN-3 compiler +// of the TTCN-3 Test Executor version CRL 113 200/6 R3B +// for Harald Welte (laforge@nataraja) on Mon Mar 26 16:56:01 2018 + +// Copyright (c) 2000-2017 Ericsson Telecom AB + +// Do not edit this file unless you know what you are doing. + +#ifndef General__Types_HH +#define General__Types_HH + +#ifdef TITAN_RUNTIME_2 +#error Generated code does not match with used runtime.\ + Code was generated without -R option but -DTITAN_RUNTIME_2 was used. +#endif + +/* Header file includes */ + +#include + +#if TTCN3_VERSION != 60301 +#error Version mismatch detected.\ + Please check the version of the TTCN-3 compiler and the base library.\ + Run make clean and rebuild the project if the version of the compiler changed recently. +#endif + +#ifndef LINUX +#error This file should be compiled on LINUX +#endif + +#undef General__Types_HH +#endif + +namespace General__Types { + +/* Forward declarations of classes */ + +typedef PreGenRecordOf::PREGEN__RECORD__OF__INTEGER Integers; +typedef PreGenRecordOf::PREGEN__RECORD__OF__INTEGER_template Integers_template; +class Integer__array; +class Integer__array_template; +class Protocols; +class Protocols_template; +typedef PreGenRecordOf::PREGEN__RECORD__OF__OCTETSTRING OCT1List; +typedef PreGenRecordOf::PREGEN__RECORD__OF__OCTETSTRING_template OCT1List_template; +typedef PreGenRecordOf::PREGEN__RECORD__OF__OCTETSTRING OCT2List; +typedef PreGenRecordOf::PREGEN__RECORD__OF__OCTETSTRING_template OCT2List_template; +typedef PreGenRecordOf::PREGEN__RECORD__OF__OCTETSTRING OCT3List; +typedef PreGenRecordOf::PREGEN__RECORD__OF__OCTETSTRING_template OCT3List_template; +typedef PreGenRecordOf::PREGEN__RECORD__OF__OCTETSTRING OCT4List; +typedef PreGenRecordOf::PREGEN__RECORD__OF__OCTETSTRING_template OCT4List_template; +typedef PreGenRecordOf::PREGEN__RECORD__OF__OCTETSTRING OCT5List; +typedef PreGenRecordOf::PREGEN__RECORD__OF__OCTETSTRING_template OCT5List_template; +typedef PreGenRecordOf::PREGEN__RECORD__OF__OCTETSTRING OCT6List; +typedef PreGenRecordOf::PREGEN__RECORD__OF__OCTETSTRING_template OCT6List_template; +typedef PreGenRecordOf::PREGEN__RECORD__OF__OCTETSTRING OCT7List; +typedef PreGenRecordOf::PREGEN__RECORD__OF__OCTETSTRING_template OCT7List_template; +class ListOfDummy__comptype; +class ListOfDummy__comptype_template; +class ListOfDummy__CT; +class ListOfDummy__CT_template; +class ProtocolList; +class ProtocolList_template; + +} /* end of namespace */ + +#ifndef General__Types_HH +#define General__Types_HH + +namespace General__Types { + +/* Type definitions */ + +typedef BITSTRING BIT1n; +typedef BITSTRING_template BIT1n_template; +typedef BITSTRING BIT2n; +typedef BITSTRING_template BIT2n_template; +typedef BITSTRING BIT3n; +typedef BITSTRING_template BIT3n_template; +typedef BITSTRING BIT4n; +typedef BITSTRING_template BIT4n_template; +typedef BITSTRING BIT5n; +typedef BITSTRING_template BIT5n_template; +typedef BITSTRING BIT6n; +typedef BITSTRING_template BIT6n_template; +typedef BITSTRING BIT7n; +typedef BITSTRING_template BIT7n_template; +typedef BITSTRING BIT8n; +typedef BITSTRING_template BIT8n_template; +typedef BITSTRING BIT9n; +typedef BITSTRING_template BIT9n_template; +typedef BITSTRING BIT12n; +typedef BITSTRING_template BIT12n_template; +typedef BITSTRING BIT14n; +typedef BITSTRING_template BIT14n_template; +typedef BITSTRING BIT15n; +typedef BITSTRING_template BIT15n_template; +typedef BITSTRING BIT16n; +typedef BITSTRING_template BIT16n_template; +typedef BITSTRING BIT56n; +typedef BITSTRING_template BIT56n_template; +typedef BITSTRING BIT14__24n; +typedef BITSTRING_template BIT14__24n_template; +typedef BITSTRING BIT1np; +typedef BITSTRING_template BIT1np_template; +typedef BITSTRING BIT2np; +typedef BITSTRING_template BIT2np_template; +typedef BITSTRING BIT3np; +typedef BITSTRING_template BIT3np_template; +typedef BITSTRING BIT4np; +typedef BITSTRING_template BIT4np_template; +typedef BITSTRING BIT5np; +typedef BITSTRING_template BIT5np_template; +typedef BITSTRING BIT6np; +typedef BITSTRING_template BIT6np_template; +typedef BITSTRING BIT7np; +typedef BITSTRING_template BIT7np_template; +typedef BITSTRING BIT15np; +typedef BITSTRING_template BIT15np_template; +typedef BITSTRING BIT1; +typedef BITSTRING_template BIT1_template; +typedef BITSTRING BIT2; +typedef BITSTRING_template BIT2_template; +typedef BITSTRING BIT3; +typedef BITSTRING_template BIT3_template; +typedef BITSTRING BIT4; +typedef BITSTRING_template BIT4_template; +typedef BITSTRING BIT5; +typedef BITSTRING_template BIT5_template; +typedef BITSTRING BIT6; +typedef BITSTRING_template BIT6_template; +typedef BITSTRING BIT7; +typedef BITSTRING_template BIT7_template; +typedef BITSTRING BIT8; +typedef BITSTRING_template BIT8_template; +typedef BITSTRING BIT9; +typedef BITSTRING_template BIT9_template; +typedef BITSTRING BIT10; +typedef BITSTRING_template BIT10_template; +typedef BITSTRING BIT11; +typedef BITSTRING_template BIT11_template; +typedef BITSTRING BIT12; +typedef BITSTRING_template BIT12_template; +typedef BITSTRING BIT14; +typedef BITSTRING_template BIT14_template; +typedef BITSTRING BIT15; +typedef BITSTRING_template BIT15_template; +typedef BITSTRING BIT16; +typedef BITSTRING_template BIT16_template; +typedef BITSTRING BIT24; +typedef BITSTRING_template BIT24_template; +typedef BITSTRING BIT31; +typedef BITSTRING_template BIT31_template; +typedef BITSTRING BIT32; +typedef BITSTRING_template BIT32_template; +typedef BITSTRING BIT56; +typedef BITSTRING_template BIT56_template; +typedef OCTETSTRING OCT0n; +typedef OCTETSTRING_template OCT0n_template; +typedef OCTETSTRING OCT1n; +typedef OCTETSTRING_template OCT1n_template; +typedef OCTETSTRING OCT2n; +typedef OCTETSTRING_template OCT2n_template; +typedef OCTETSTRING OCT3n; +typedef OCTETSTRING_template OCT3n_template; +typedef OCTETSTRING OCT4n; +typedef OCTETSTRING_template OCT4n_template; +typedef OCTETSTRING OCT5n; +typedef OCTETSTRING_template OCT5n_template; +typedef OCTETSTRING OCT6n; +typedef OCTETSTRING_template OCT6n_template; +typedef OCTETSTRING OCT7n; +typedef OCTETSTRING_template OCT7n_template; +typedef OCTETSTRING OCT8n; +typedef OCTETSTRING_template OCT8n_template; +typedef OCTETSTRING OCT9n; +typedef OCTETSTRING_template OCT9n_template; +typedef OCTETSTRING OCT10n; +typedef OCTETSTRING_template OCT10n_template; +typedef OCTETSTRING OCT11n; +typedef OCTETSTRING_template OCT11n_template; +typedef OCTETSTRING OCT12n; +typedef OCTETSTRING_template OCT12n_template; +typedef OCTETSTRING OCT13n; +typedef OCTETSTRING_template OCT13n_template; +typedef OCTETSTRING OCT14n; +typedef OCTETSTRING_template OCT14n_template; +typedef OCTETSTRING OCT15n; +typedef OCTETSTRING_template OCT15n_template; +typedef OCTETSTRING OCT16n; +typedef OCTETSTRING_template OCT16n_template; +typedef OCTETSTRING OCT17n; +typedef OCTETSTRING_template OCT17n_template; +typedef OCTETSTRING OCT18n; +typedef OCTETSTRING_template OCT18n_template; +typedef OCTETSTRING OCT19n; +typedef OCTETSTRING_template OCT19n_template; +typedef OCTETSTRING OCT20n; +typedef OCTETSTRING_template OCT20n_template; +typedef OCTETSTRING OCT28n; +typedef OCTETSTRING_template OCT28n_template; +typedef OCTETSTRING OCT32n; +typedef OCTETSTRING_template OCT32n_template; +typedef OCTETSTRING OCT34n; +typedef OCTETSTRING_template OCT34n_template; +typedef OCTETSTRING OCT46n; +typedef OCTETSTRING_template OCT46n_template; +typedef OCTETSTRING OCT50n; +typedef OCTETSTRING_template OCT50n_template; +typedef OCTETSTRING OCT69n; +typedef OCTETSTRING_template OCT69n_template; +typedef OCTETSTRING OCT100n; +typedef OCTETSTRING_template OCT100n_template; +typedef OCTETSTRING OCT128n; +typedef OCTETSTRING_template OCT128n_template; +typedef OCTETSTRING OCT500n; +typedef OCTETSTRING_template OCT500n_template; +typedef OCTETSTRING OCTNn; +typedef OCTETSTRING_template OCTNn_template; +typedef OCTETSTRING OCT1__3n; +typedef OCTETSTRING_template OCT1__3n_template; +typedef OCTETSTRING OCT1__4n; +typedef OCTETSTRING_template OCT1__4n_template; +typedef OCTETSTRING OCT1__5n; +typedef OCTETSTRING_template OCT1__5n_template; +typedef OCTETSTRING OCT1__6n; +typedef OCTETSTRING_template OCT1__6n_template; +typedef OCTETSTRING OCT1__7n; +typedef OCTETSTRING_template OCT1__7n_template; +typedef OCTETSTRING OCT1__8n; +typedef OCTETSTRING_template OCT1__8n_template; +typedef OCTETSTRING OCT1__12n; +typedef OCTETSTRING_template OCT1__12n_template; +typedef OCTETSTRING OCT1__15n; +typedef OCTETSTRING_template OCT1__15n_template; +typedef OCTETSTRING OCT1__16n; +typedef OCTETSTRING_template OCT1__16n_template; +typedef OCTETSTRING OCT1__18n; +typedef OCTETSTRING_template OCT1__18n_template; +typedef OCTETSTRING OCT1__20n; +typedef OCTETSTRING_template OCT1__20n_template; +typedef OCTETSTRING OCT1__24n; +typedef OCTETSTRING_template OCT1__24n_template; +typedef OCTETSTRING OCT1__32n; +typedef OCTETSTRING_template OCT1__32n_template; +typedef OCTETSTRING OCT1__34n; +typedef OCTETSTRING_template OCT1__34n_template; +typedef OCTETSTRING OCT1__46n; +typedef OCTETSTRING_template OCT1__46n_template; +typedef OCTETSTRING OCT1__50n; +typedef OCTETSTRING_template OCT1__50n_template; +typedef OCTETSTRING OCT1__112n; +typedef OCTETSTRING_template OCT1__112n_template; +typedef OCTETSTRING OCT1__127n; +typedef OCTETSTRING_template OCT1__127n_template; +typedef OCTETSTRING OCT1__128n; +typedef OCTETSTRING_template OCT1__128n_template; +typedef OCTETSTRING OCT1__172n; +typedef OCTETSTRING_template OCT1__172n_template; +typedef OCTETSTRING OCT3__5n; +typedef OCTETSTRING_template OCT3__5n_template; +typedef OCTETSTRING OCT3__7n; +typedef OCTETSTRING_template OCT3__7n_template; +typedef OCTETSTRING OCT3__8n; +typedef OCTETSTRING_template OCT3__8n_template; +typedef OCTETSTRING OCT3__14n; +typedef OCTETSTRING_template OCT3__14n_template; +typedef OCTETSTRING OCT3__17n; +typedef OCTETSTRING_template OCT3__17n_template; +typedef OCTETSTRING OCT4__8n; +typedef OCTETSTRING_template OCT4__8n_template; +typedef CHARSTRING CHAR4; +typedef CHARSTRING_template CHAR4_template; +typedef HEXSTRING HEX4n; +typedef HEXSTRING_template HEX4n_template; +typedef HEXSTRING HEX6n; +typedef HEXSTRING_template HEX6n_template; +typedef HEXSTRING HEX8n; +typedef HEXSTRING_template HEX8n_template; +typedef HEXSTRING HEX15n; +typedef HEXSTRING_template HEX15n_template; +typedef HEXSTRING HEX16n; +typedef HEXSTRING_template HEX16n_template; +typedef HEXSTRING HEX24n; +typedef HEXSTRING_template HEX24n_template; +typedef HEXSTRING HEX0__3n; +typedef HEXSTRING_template HEX0__3n_template; +typedef HEXSTRING HEX0__18n; +typedef HEXSTRING_template HEX0__18n_template; +typedef HEXSTRING HEX1__20n; +typedef HEXSTRING_template HEX1__20n_template; +typedef HEXSTRING HEX1__34n; +typedef HEXSTRING_template HEX1__34n_template; +typedef INTEGER INT3nb; +typedef INTEGER_template INT3nb_template; +typedef INTEGER INT4nb; +typedef INTEGER_template INT4nb_template; +typedef INTEGER INT5nb; +typedef INTEGER_template INT5nb_template; +typedef INTEGER INT8nb; +typedef INTEGER_template INT8nb_template; +typedef INTEGER INT2nbp; +typedef INTEGER_template INT2nbp_template; +typedef INTEGER INT1nbp; +typedef INTEGER_template INT1nbp_template; +typedef INTEGER INT3nbp; +typedef INTEGER_template INT3nbp_template; +typedef INTEGER INT5nbp; +typedef INTEGER_template INT5nbp_template; +typedef INTEGER INT9nbp; +typedef INTEGER_template INT9nbp_template; +typedef INTEGER INT13nbp; +typedef INTEGER_template INT13nbp_template; +typedef INTEGER INT15nbp; +typedef INTEGER_template INT15nbp_template; +typedef BITSTRING BIT6__BO__LAST; +typedef BITSTRING_template BIT6__BO__LAST_template; +typedef BITSTRING BIT16__BO__LAST; +typedef BITSTRING_template BIT16__BO__LAST_template; +typedef BITSTRING BIT32__BO__LAST; +typedef BITSTRING_template BIT32__BO__LAST_template; +typedef OCTETSTRING Dummy; +typedef OCTETSTRING_template Dummy_template; +typedef OCTETSTRING OCT0; +typedef OCTETSTRING_template OCT0_template; +typedef OCTETSTRING OCT1; +typedef OCTETSTRING_template OCT1_template; +typedef OCTETSTRING OCT2; +typedef OCTETSTRING_template OCT2_template; +typedef OCTETSTRING OCT3; +typedef OCTETSTRING_template OCT3_template; +typedef OCTETSTRING OCT4; +typedef OCTETSTRING_template OCT4_template; +typedef OCTETSTRING OCT5; +typedef OCTETSTRING_template OCT5_template; +typedef OCTETSTRING OCT6; +typedef OCTETSTRING_template OCT6_template; +typedef OCTETSTRING OCT7; +typedef OCTETSTRING_template OCT7_template; +typedef OCTETSTRING OCT8; +typedef OCTETSTRING_template OCT8_template; +typedef OCTETSTRING OCT9; +typedef OCTETSTRING_template OCT9_template; +typedef OCTETSTRING OCT10; +typedef OCTETSTRING_template OCT10_template; +typedef OCTETSTRING OCT11; +typedef OCTETSTRING_template OCT11_template; +typedef OCTETSTRING OCT12; +typedef OCTETSTRING_template OCT12_template; +typedef OCTETSTRING OCT13; +typedef OCTETSTRING_template OCT13_template; +typedef OCTETSTRING OCT14; +typedef OCTETSTRING_template OCT14_template; +typedef OCTETSTRING OCT15; +typedef OCTETSTRING_template OCT15_template; +typedef OCTETSTRING OCT16; +typedef OCTETSTRING_template OCT16_template; +typedef OCTETSTRING OCT17; +typedef OCTETSTRING_template OCT17_template; +typedef OCTETSTRING OCT18; +typedef OCTETSTRING_template OCT18_template; +typedef OCTETSTRING OCT19; +typedef OCTETSTRING_template OCT19_template; +typedef OCTETSTRING OCT20; +typedef OCTETSTRING_template OCT20_template; +typedef OCTETSTRING OCT32; +typedef OCTETSTRING_template OCT32_template; +typedef OCTETSTRING OCT34; +typedef OCTETSTRING_template OCT34_template; +typedef OCTETSTRING OCT46; +typedef OCTETSTRING_template OCT46_template; +typedef OCTETSTRING OCT1__260; +typedef OCTETSTRING_template OCT1__260_template; +typedef OCTETSTRING OCT1__8; +typedef OCTETSTRING_template OCT1__8_template; +typedef OCTETSTRING OCT1__12; +typedef OCTETSTRING_template OCT1__12_template; +typedef OCTETSTRING OCT1__32; +typedef OCTETSTRING_template OCT1__32_template; +typedef OCTETSTRING OCT1__50; +typedef OCTETSTRING_template OCT1__50_template; +typedef OCTETSTRING OCT3__8; +typedef OCTETSTRING_template OCT3__8_template; +typedef OCTETSTRING OCTN; +typedef OCTETSTRING_template OCTN_template; +typedef HEXSTRING HEX1; +typedef HEXSTRING_template HEX1_template; +typedef HEXSTRING HEX0__16; +typedef HEXSTRING_template HEX0__16_template; +typedef HEXSTRING HEX5__16; +typedef HEXSTRING_template HEX5__16_template; +typedef HEXSTRING HEX1__32; +typedef HEXSTRING_template HEX1__32_template; +typedef INTEGER INT1; +typedef INTEGER_template INT1_template; +typedef INTEGER LIN1; +typedef INTEGER_template LIN1_template; +typedef INTEGER LIN2; +typedef INTEGER_template LIN2_template; +typedef INTEGER LIN2__BO__LAST; +typedef INTEGER_template LIN2__BO__LAST_template; +typedef INTEGER LIN3__BO__LAST; +typedef INTEGER_template LIN3__BO__LAST_template; +typedef INTEGER LIN4__BO__LAST; +typedef INTEGER_template LIN4__BO__LAST_template; +typedef INTEGER INT1b; +typedef INTEGER_template INT1b_template; +typedef INTEGER INT2b; +typedef INTEGER_template INT2b_template; +typedef INTEGER INT3b; +typedef INTEGER_template INT3b_template; +typedef INTEGER INT4b; +typedef INTEGER_template INT4b_template; +typedef INTEGER INT5b; +typedef INTEGER_template INT5b_template; +typedef INTEGER INT6b; +typedef INTEGER_template INT6b_template; +typedef INTEGER INT7b; +typedef INTEGER_template INT7b_template; +typedef INTEGER INT11b__BO__LAST; +typedef INTEGER_template INT11b__BO__LAST_template; +typedef INTEGER INT12b__BO__LAST; +typedef INTEGER_template INT12b__BO__LAST_template; +typedef INTEGER INT13b__BO__LAST; +typedef INTEGER_template INT13b__BO__LAST_template; +typedef INTEGER INT14b__BO__LAST; +typedef INTEGER_template INT14b__BO__LAST_template; +typedef INTEGER INT18b__BO__LAST; +typedef INTEGER_template INT18b__BO__LAST_template; +typedef INTEGER INT20b__BO__LAST; +typedef INTEGER_template INT20b__BO__LAST_template; +typedef INTEGER INT31b__BO__LAST; +typedef INTEGER_template INT31b__BO__LAST_template; +typedef COMPONENT Dummy__comptype; +typedef COMPONENT_template Dummy__comptype_template; +typedef COMPONENT Dummy__CT; +typedef COMPONENT_template Dummy__CT_template; + +/* Class definitions */ + +class Integer__array : public Base_Type { +struct recordof_setof_struct { +int ref_count; +int n_elements; +Integers **value_elements; +} *val_ptr; + +static const Integers UNBOUND_ELEM; +private: +friend boolean operator==(null_type null_value, const Integer__array& other_value); + +public: + typedef Integers of_type; +Integer__array(); +Integer__array(null_type other_value); +Integer__array(const Integer__array& other_value); +~Integer__array(); + +void clean_up(); +Integer__array& operator=(null_type other_value); +Integer__array& operator=(const Integer__array& other_value); + +boolean operator==(null_type other_value) const; +boolean operator==(const Integer__array& other_value) const; +inline boolean operator!=(null_type other_value) const { return !(*this == other_value); } +inline boolean operator!=(const Integer__array& other_value) const { return !(*this == other_value); } + +Integers& operator[](int index_value); +Integers& operator[](const INTEGER& index_value); +const Integers& operator[](int index_value) const; +const Integers& operator[](const INTEGER& index_value) const; + +Integer__array operator<<=(int rotate_count) const; +Integer__array operator<<=(const INTEGER& rotate_count) const; +Integer__array operator>>=(int rotate_count) const; +Integer__array operator>>=(const INTEGER& rotate_count) const; + +Integer__array operator+(const Integer__array& other_value) const; + +Integer__array substr(int index, int returncount) const; + +Integer__array replace(int index, int len, const Integer__array& repl) const; + +Integer__array replace(int index, int len, const Integer__array_template& repl) const; + +void set_size(int new_size); +inline boolean is_bound() const {return val_ptr != NULL; } +inline boolean is_present() const { return is_bound(); } +boolean is_value() const; +int size_of() const; +int n_elem() const { return size_of(); } +int lengthof() const; +void log() const; +void set_param(Module_Param& param); + void set_implicit_omit(); +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class Integer__array_template : public Record_Of_Template { +union { +struct { +int n_elements; +Integers_template **value_elements; +} single_value; +struct { +unsigned int n_values; +Integer__array_template *list_value; +} value_list; +}; +void copy_value(const Integer__array& other_value); +void copy_template(const Integer__array_template& other_value); +static boolean match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy); + +public: +Integer__array_template(); +Integer__array_template(template_sel other_value); +Integer__array_template(null_type other_value); +Integer__array_template(const Integer__array& other_value); +Integer__array_template(const OPTIONAL& other_value); +Integer__array_template(const Integer__array_template& other_value); +~Integer__array_template(); + +void clean_up(); +Integer__array_template& operator=(template_sel other_value); +Integer__array_template& operator=(null_type other_value); +Integer__array_template& operator=(const Integer__array& other_value); +Integer__array_template& operator=(const OPTIONAL& other_value); +Integer__array_template& operator=(const Integer__array_template& other_value); + +Integers_template& operator[](int index_value); +Integers_template& operator[](const INTEGER& index_value); +const Integers_template& operator[](int index_value) const; +const Integers_template& operator[](const INTEGER& index_value) const; + +void set_size(int new_size); +int n_elem() const; +int size_of(boolean is_size) const; +inline int size_of() const { return size_of(TRUE); } +inline int lengthof() const { return size_of(FALSE); } +boolean match(const Integer__array& other_value, boolean legacy = FALSE) const; +inline boolean is_bound() const + {return template_selection != UNINITIALIZED_TEMPLATE; } +boolean is_value() const; +Integer__array valueof() const; +Integer__array substr(int index, int returncount) const; + +Integer__array replace(int index, int len, const Integer__array_template& repl) const; + +Integer__array replace(int index, int len, const Integer__array& repl) const; + +void set_type(template_sel template_type, unsigned int list_length); +Integer__array_template& list_item(unsigned int list_index); +void log() const; +void log_match(const Integer__array& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +boolean get_istemplate_kind(const char* type) const; +}; + +class Protocols : public Base_Type { // enum +friend class Protocols_template; +public: +enum enum_type { mtp3 = 0, sccp = 1, isup = 2, bicc = 3, qaal2 = 4, gcp = 5, bssap = 6, bssmap = 7, ranap = 8, dtap = 9, UNKNOWN_VALUE = 10, UNBOUND_VALUE = 11 }; +private: +enum_type enum_value; + +public: +Protocols(); +Protocols(int other_value); +Protocols(enum_type other_value); +Protocols(const Protocols& other_value); + +Protocols& operator=(int other_value); +Protocols& operator=(enum_type other_value); +Protocols& operator=(const Protocols& other_value); + +boolean operator==(enum_type other_value) const; +boolean operator==(const Protocols& other_value) const; +inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); } +inline boolean operator!=(const Protocols& other_value) const { return !(*this == other_value); } +boolean operator<(enum_type other_value) const; +boolean operator<(const Protocols& other_value) const; +boolean operator>(enum_type other_value) const; +boolean operator>(const Protocols& other_value) const; +inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); } +inline boolean operator<=(const Protocols& other_value) const { return !(*this > other_value); } +inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); } +inline boolean operator>=(const Protocols& other_value) const { return !(*this < other_value); } + +static const char *enum_to_str(enum_type enum_par); +static enum_type str_to_enum(const char *str_par); +static boolean is_valid_enum(int int_par); + +static int enum2int(enum_type enum_par); +static int enum2int(const Protocols& enum_par); +int as_int() const { return enum2int(enum_value); } +void from_int(int p_val) { *this = p_val; } +void int2enum(int int_val); +operator enum_type() const; +inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; } +inline boolean is_value() const { return enum_value != UNBOUND_VALUE; } +inline void clean_up(){ enum_value = UNBOUND_VALUE; } +inline boolean is_present() const { return is_bound(); } +void log() const; +void set_param(Module_Param& param); +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class Protocols_template : public Base_Template { +union { +Protocols::enum_type single_value; +struct { +unsigned int n_values; +Protocols_template *list_value; +} value_list; +}; + +void copy_template(const Protocols_template& other_value); + +public: +Protocols_template(); +Protocols_template(template_sel other_value); +Protocols_template(int other_value); +Protocols_template(Protocols::enum_type other_value); +Protocols_template(const Protocols& other_value); +Protocols_template(const OPTIONAL& other_value); +Protocols_template(const Protocols_template& other_value); +~Protocols_template(); + +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +Protocols_template& operator=(template_sel other_value); +Protocols_template& operator=(int other_value); +Protocols_template& operator=(Protocols::enum_type other_value); +Protocols_template& operator=(const Protocols& other_value); +Protocols_template& operator=(const OPTIONAL& other_value); +Protocols_template& operator=(const Protocols_template& other_value); + +boolean match(Protocols::enum_type other_value, boolean legacy = FALSE) const; +boolean match(const Protocols& other_value, boolean legacy = FALSE) const; +Protocols::enum_type valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +Protocols_template& list_item(unsigned int list_index); +void log() const; +void log_match(const Protocols& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +}; + +class ListOfDummy__comptype : public Base_Type { +struct recordof_setof_struct { +int ref_count; +int n_elements; +COMPONENT **value_elements; +} *val_ptr; + +static const COMPONENT UNBOUND_ELEM; +private: +friend boolean operator==(null_type null_value, const ListOfDummy__comptype& other_value); + +public: + typedef COMPONENT of_type; +ListOfDummy__comptype(); +ListOfDummy__comptype(null_type other_value); +ListOfDummy__comptype(const ListOfDummy__comptype& other_value); +~ListOfDummy__comptype(); + +void clean_up(); +ListOfDummy__comptype& operator=(null_type other_value); +ListOfDummy__comptype& operator=(const ListOfDummy__comptype& other_value); + +boolean operator==(null_type other_value) const; +boolean operator==(const ListOfDummy__comptype& other_value) const; +inline boolean operator!=(null_type other_value) const { return !(*this == other_value); } +inline boolean operator!=(const ListOfDummy__comptype& other_value) const { return !(*this == other_value); } + +COMPONENT& operator[](int index_value); +COMPONENT& operator[](const INTEGER& index_value); +const COMPONENT& operator[](int index_value) const; +const COMPONENT& operator[](const INTEGER& index_value) const; + +ListOfDummy__comptype operator<<=(int rotate_count) const; +ListOfDummy__comptype operator<<=(const INTEGER& rotate_count) const; +ListOfDummy__comptype operator>>=(int rotate_count) const; +ListOfDummy__comptype operator>>=(const INTEGER& rotate_count) const; + +ListOfDummy__comptype operator+(const ListOfDummy__comptype& other_value) const; + +ListOfDummy__comptype substr(int index, int returncount) const; + +ListOfDummy__comptype replace(int index, int len, const ListOfDummy__comptype& repl) const; + +ListOfDummy__comptype replace(int index, int len, const ListOfDummy__comptype_template& repl) const; + +void set_size(int new_size); +inline boolean is_bound() const {return val_ptr != NULL; } +inline boolean is_present() const { return is_bound(); } +boolean is_value() const; +int size_of() const; +int n_elem() const { return size_of(); } +int lengthof() const; +void log() const; +void set_param(Module_Param& param); + void set_implicit_omit(); +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +}; + +class ListOfDummy__comptype_template : public Record_Of_Template { +union { +struct { +int n_elements; +COMPONENT_template **value_elements; +} single_value; +struct { +unsigned int n_values; +ListOfDummy__comptype_template *list_value; +} value_list; +}; +void copy_value(const ListOfDummy__comptype& other_value); +void copy_template(const ListOfDummy__comptype_template& other_value); +static boolean match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy); + +public: +ListOfDummy__comptype_template(); +ListOfDummy__comptype_template(template_sel other_value); +ListOfDummy__comptype_template(null_type other_value); +ListOfDummy__comptype_template(const ListOfDummy__comptype& other_value); +ListOfDummy__comptype_template(const OPTIONAL& other_value); +ListOfDummy__comptype_template(const ListOfDummy__comptype_template& other_value); +~ListOfDummy__comptype_template(); + +void clean_up(); +ListOfDummy__comptype_template& operator=(template_sel other_value); +ListOfDummy__comptype_template& operator=(null_type other_value); +ListOfDummy__comptype_template& operator=(const ListOfDummy__comptype& other_value); +ListOfDummy__comptype_template& operator=(const OPTIONAL& other_value); +ListOfDummy__comptype_template& operator=(const ListOfDummy__comptype_template& other_value); + +COMPONENT_template& operator[](int index_value); +COMPONENT_template& operator[](const INTEGER& index_value); +const COMPONENT_template& operator[](int index_value) const; +const COMPONENT_template& operator[](const INTEGER& index_value) const; + +void set_size(int new_size); +int n_elem() const; +int size_of(boolean is_size) const; +inline int size_of() const { return size_of(TRUE); } +inline int lengthof() const { return size_of(FALSE); } +boolean match(const ListOfDummy__comptype& other_value, boolean legacy = FALSE) const; +inline boolean is_bound() const + {return template_selection != UNINITIALIZED_TEMPLATE; } +boolean is_value() const; +ListOfDummy__comptype valueof() const; +ListOfDummy__comptype substr(int index, int returncount) const; + +ListOfDummy__comptype replace(int index, int len, const ListOfDummy__comptype_template& repl) const; + +ListOfDummy__comptype replace(int index, int len, const ListOfDummy__comptype& repl) const; + +void set_type(template_sel template_type, unsigned int list_length); +ListOfDummy__comptype_template& list_item(unsigned int list_index); +void log() const; +void log_match(const ListOfDummy__comptype& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +boolean get_istemplate_kind(const char* type) const; +}; + +class ListOfDummy__CT : public Base_Type { +struct recordof_setof_struct { +int ref_count; +int n_elements; +COMPONENT **value_elements; +} *val_ptr; + +static const COMPONENT UNBOUND_ELEM; +private: +friend boolean operator==(null_type null_value, const ListOfDummy__CT& other_value); + +public: + typedef COMPONENT of_type; +ListOfDummy__CT(); +ListOfDummy__CT(null_type other_value); +ListOfDummy__CT(const ListOfDummy__CT& other_value); +~ListOfDummy__CT(); + +void clean_up(); +ListOfDummy__CT& operator=(null_type other_value); +ListOfDummy__CT& operator=(const ListOfDummy__CT& other_value); + +boolean operator==(null_type other_value) const; +boolean operator==(const ListOfDummy__CT& other_value) const; +inline boolean operator!=(null_type other_value) const { return !(*this == other_value); } +inline boolean operator!=(const ListOfDummy__CT& other_value) const { return !(*this == other_value); } + +COMPONENT& operator[](int index_value); +COMPONENT& operator[](const INTEGER& index_value); +const COMPONENT& operator[](int index_value) const; +const COMPONENT& operator[](const INTEGER& index_value) const; + +ListOfDummy__CT operator<<=(int rotate_count) const; +ListOfDummy__CT operator<<=(const INTEGER& rotate_count) const; +ListOfDummy__CT operator>>=(int rotate_count) const; +ListOfDummy__CT operator>>=(const INTEGER& rotate_count) const; + +ListOfDummy__CT operator+(const ListOfDummy__CT& other_value) const; + +ListOfDummy__CT substr(int index, int returncount) const; + +ListOfDummy__CT replace(int index, int len, const ListOfDummy__CT& repl) const; + +ListOfDummy__CT replace(int index, int len, const ListOfDummy__CT_template& repl) const; + +void set_size(int new_size); +inline boolean is_bound() const {return val_ptr != NULL; } +inline boolean is_present() const { return is_bound(); } +boolean is_value() const; +int size_of() const; +int n_elem() const { return size_of(); } +int lengthof() const; +void log() const; +void set_param(Module_Param& param); + void set_implicit_omit(); +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +}; + +class ListOfDummy__CT_template : public Record_Of_Template { +union { +struct { +int n_elements; +COMPONENT_template **value_elements; +} single_value; +struct { +unsigned int n_values; +ListOfDummy__CT_template *list_value; +} value_list; +}; +void copy_value(const ListOfDummy__CT& other_value); +void copy_template(const ListOfDummy__CT_template& other_value); +static boolean match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy); + +public: +ListOfDummy__CT_template(); +ListOfDummy__CT_template(template_sel other_value); +ListOfDummy__CT_template(null_type other_value); +ListOfDummy__CT_template(const ListOfDummy__CT& other_value); +ListOfDummy__CT_template(const OPTIONAL& other_value); +ListOfDummy__CT_template(const ListOfDummy__CT_template& other_value); +~ListOfDummy__CT_template(); + +void clean_up(); +ListOfDummy__CT_template& operator=(template_sel other_value); +ListOfDummy__CT_template& operator=(null_type other_value); +ListOfDummy__CT_template& operator=(const ListOfDummy__CT& other_value); +ListOfDummy__CT_template& operator=(const OPTIONAL& other_value); +ListOfDummy__CT_template& operator=(const ListOfDummy__CT_template& other_value); + +COMPONENT_template& operator[](int index_value); +COMPONENT_template& operator[](const INTEGER& index_value); +const COMPONENT_template& operator[](int index_value) const; +const COMPONENT_template& operator[](const INTEGER& index_value) const; + +void set_size(int new_size); +int n_elem() const; +int size_of(boolean is_size) const; +inline int size_of() const { return size_of(TRUE); } +inline int lengthof() const { return size_of(FALSE); } +boolean match(const ListOfDummy__CT& other_value, boolean legacy = FALSE) const; +inline boolean is_bound() const + {return template_selection != UNINITIALIZED_TEMPLATE; } +boolean is_value() const; +ListOfDummy__CT valueof() const; +ListOfDummy__CT substr(int index, int returncount) const; + +ListOfDummy__CT replace(int index, int len, const ListOfDummy__CT_template& repl) const; + +ListOfDummy__CT replace(int index, int len, const ListOfDummy__CT& repl) const; + +void set_type(template_sel template_type, unsigned int list_length); +ListOfDummy__CT_template& list_item(unsigned int list_index); +void log() const; +void log_match(const ListOfDummy__CT& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +boolean get_istemplate_kind(const char* type) const; +}; + +class ProtocolList : public Base_Type { +struct recordof_setof_struct { +int ref_count; +int n_elements; +Protocols **value_elements; +} *val_ptr; + +static const Protocols UNBOUND_ELEM; +private: +friend boolean operator==(null_type null_value, const ProtocolList& other_value); + +public: + typedef Protocols of_type; +ProtocolList(); +ProtocolList(null_type other_value); +ProtocolList(const ProtocolList& other_value); +~ProtocolList(); + +void clean_up(); +ProtocolList& operator=(null_type other_value); +ProtocolList& operator=(const ProtocolList& other_value); + +boolean operator==(null_type other_value) const; +boolean operator==(const ProtocolList& other_value) const; +inline boolean operator!=(null_type other_value) const { return !(*this == other_value); } +inline boolean operator!=(const ProtocolList& other_value) const { return !(*this == other_value); } + +Protocols& operator[](int index_value); +Protocols& operator[](const INTEGER& index_value); +const Protocols& operator[](int index_value) const; +const Protocols& operator[](const INTEGER& index_value) const; + +ProtocolList operator<<=(int rotate_count) const; +ProtocolList operator<<=(const INTEGER& rotate_count) const; +ProtocolList operator>>=(int rotate_count) const; +ProtocolList operator>>=(const INTEGER& rotate_count) const; + +ProtocolList operator+(const ProtocolList& other_value) const; + +ProtocolList substr(int index, int returncount) const; + +ProtocolList replace(int index, int len, const ProtocolList& repl) const; + +ProtocolList replace(int index, int len, const ProtocolList_template& repl) const; + +void set_size(int new_size); +inline boolean is_bound() const {return val_ptr != NULL; } +inline boolean is_present() const { return is_bound(); } +boolean is_value() const; +int size_of() const; +int n_elem() const { return size_of(); } +int lengthof() const; +void log() const; +void set_param(Module_Param& param); + void set_implicit_omit(); +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class ProtocolList_template : public Record_Of_Template { +union { +struct { +int n_elements; +Protocols_template **value_elements; +} single_value; +struct { +unsigned int n_values; +ProtocolList_template *list_value; +} value_list; +}; +void copy_value(const ProtocolList& other_value); +void copy_template(const ProtocolList_template& other_value); +static boolean match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy); + +public: +ProtocolList_template(); +ProtocolList_template(template_sel other_value); +ProtocolList_template(null_type other_value); +ProtocolList_template(const ProtocolList& other_value); +ProtocolList_template(const OPTIONAL& other_value); +ProtocolList_template(const ProtocolList_template& other_value); +~ProtocolList_template(); + +void clean_up(); +ProtocolList_template& operator=(template_sel other_value); +ProtocolList_template& operator=(null_type other_value); +ProtocolList_template& operator=(const ProtocolList& other_value); +ProtocolList_template& operator=(const OPTIONAL& other_value); +ProtocolList_template& operator=(const ProtocolList_template& other_value); + +Protocols_template& operator[](int index_value); +Protocols_template& operator[](const INTEGER& index_value); +const Protocols_template& operator[](int index_value) const; +const Protocols_template& operator[](const INTEGER& index_value) const; + +void set_size(int new_size); +int n_elem() const; +int size_of(boolean is_size) const; +inline int size_of() const { return size_of(TRUE); } +inline int lengthof() const { return size_of(FALSE); } +boolean match(const ProtocolList& other_value, boolean legacy = FALSE) const; +inline boolean is_bound() const + {return template_selection != UNINITIALIZED_TEMPLATE; } +boolean is_value() const; +ProtocolList valueof() const; +ProtocolList substr(int index, int returncount) const; + +ProtocolList replace(int index, int len, const ProtocolList_template& repl) const; + +ProtocolList replace(int index, int len, const ProtocolList& repl) const; + +void set_type(template_sel template_type, unsigned int list_length); +ProtocolList_template& list_item(unsigned int list_index); +void log() const; +void log_match(const ProtocolList& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +boolean get_istemplate_kind(const char* type) const; +}; + + +/* Function prototypes */ + +extern void BIT1n_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT1n_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT2n_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT2n_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT3n_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT3n_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT4n_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT4n_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT5n_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT5n_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT6n_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT6n_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT7n_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT7n_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT8n_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT8n_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT9n_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT9n_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT12n_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT12n_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT14n_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT14n_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT15n_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT15n_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT16n_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT16n_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT56n_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT56n_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT14__24n_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT14__24n_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT1np_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT1np_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT2np_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT2np_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT3np_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT3np_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT4np_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT4np_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT5np_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT5np_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT6np_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT6np_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT7np_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT7np_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT15np_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT15np_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT1_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT1_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT2_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT2_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT3_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT3_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT4_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT4_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT5_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT5_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT6_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT6_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT7_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT7_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT8_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT8_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT9_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT9_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT10_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT10_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT11_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT11_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT12_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT12_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT14_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT14_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT15_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT15_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT16_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT16_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT24_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT24_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT31_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT31_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT32_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT32_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT56_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT56_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT0n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT0n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT1n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT1n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT2n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT2n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT3n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT3n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT4n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT4n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT5n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT5n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT6n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT6n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT7n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT7n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT8n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT8n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT9n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT9n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT10n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT10n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT11n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT11n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT12n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT12n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT13n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT13n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT14n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT14n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT15n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT15n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT16n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT16n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT17n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT17n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT18n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT18n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT19n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT19n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT20n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT20n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT28n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT28n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT32n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT32n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT34n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT34n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT46n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT46n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT50n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT50n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT69n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT69n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT100n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT100n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT128n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT128n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT500n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT500n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCTNn_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCTNn_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT1__3n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT1__3n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT1__4n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT1__4n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT1__5n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT1__5n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT1__6n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT1__6n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT1__7n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT1__7n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT1__8n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT1__8n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT1__12n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT1__12n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT1__15n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT1__15n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT1__16n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT1__16n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT1__18n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT1__18n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT1__20n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT1__20n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT1__24n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT1__24n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT1__32n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT1__32n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT1__34n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT1__34n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT1__46n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT1__46n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT1__50n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT1__50n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT1__112n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT1__112n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT1__127n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT1__127n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT1__128n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT1__128n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT1__172n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT1__172n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT3__5n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT3__5n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT3__7n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT3__7n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT3__8n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT3__8n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT3__14n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT3__14n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT3__17n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT3__17n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT4__8n_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT4__8n_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void CHAR4_encoder(const CHARSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER CHAR4_decoder(OCTETSTRING& input_stream, CHARSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void HEX4n_encoder(const HEXSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER HEX4n_decoder(OCTETSTRING& input_stream, HEXSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void HEX6n_encoder(const HEXSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER HEX6n_decoder(OCTETSTRING& input_stream, HEXSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void HEX8n_encoder(const HEXSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER HEX8n_decoder(OCTETSTRING& input_stream, HEXSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void HEX15n_encoder(const HEXSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER HEX15n_decoder(OCTETSTRING& input_stream, HEXSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void HEX16n_encoder(const HEXSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER HEX16n_decoder(OCTETSTRING& input_stream, HEXSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void HEX24n_encoder(const HEXSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER HEX24n_decoder(OCTETSTRING& input_stream, HEXSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void HEX0__3n_encoder(const HEXSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER HEX0__3n_decoder(OCTETSTRING& input_stream, HEXSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void HEX0__18n_encoder(const HEXSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER HEX0__18n_decoder(OCTETSTRING& input_stream, HEXSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void HEX1__20n_encoder(const HEXSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER HEX1__20n_decoder(OCTETSTRING& input_stream, HEXSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void HEX1__34n_encoder(const HEXSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER HEX1__34n_decoder(OCTETSTRING& input_stream, HEXSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void INT3nb_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER INT3nb_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void INT4nb_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER INT4nb_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void INT5nb_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER INT5nb_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void INT8nb_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER INT8nb_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void INT2nbp_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER INT2nbp_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void INT1nbp_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER INT1nbp_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void INT3nbp_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER INT3nbp_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void INT5nbp_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER INT5nbp_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void INT9nbp_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER INT9nbp_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void INT13nbp_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER INT13nbp_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void INT15nbp_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER INT15nbp_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT6__BO__LAST_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT6__BO__LAST_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT16__BO__LAST_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT16__BO__LAST_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void BIT32__BO__LAST_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER BIT32__BO__LAST_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void Dummy_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER Dummy_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT0_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT0_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT1_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT1_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT2_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT2_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT3_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT3_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT4_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT4_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT5_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT5_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT6_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT6_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT7_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT7_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT8_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT8_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT9_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT9_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT10_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT10_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT11_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT11_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT12_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT12_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT13_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT13_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT14_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT14_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT15_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT15_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT16_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT16_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT17_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT17_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT18_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT18_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT19_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT19_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT20_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT20_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT32_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT32_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT34_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT34_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT46_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT46_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT1__260_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT1__260_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT1__8_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT1__8_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT1__12_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT1__12_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT1__32_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT1__32_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT1__50_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT1__50_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT3__8_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT3__8_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCTN_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCTN_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void HEX1_encoder(const HEXSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER HEX1_decoder(OCTETSTRING& input_stream, HEXSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void HEX0__16_encoder(const HEXSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER HEX0__16_decoder(OCTETSTRING& input_stream, HEXSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void HEX5__16_encoder(const HEXSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER HEX5__16_decoder(OCTETSTRING& input_stream, HEXSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void HEX1__32_encoder(const HEXSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER HEX1__32_decoder(OCTETSTRING& input_stream, HEXSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void INT1_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER INT1_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void LIN1_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER LIN1_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void LIN2_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER LIN2_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void LIN2__BO__LAST_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER LIN2__BO__LAST_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void LIN3__BO__LAST_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER LIN3__BO__LAST_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void LIN4__BO__LAST_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER LIN4__BO__LAST_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void INT1b_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER INT1b_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void INT2b_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER INT2b_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void INT3b_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER INT3b_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void INT4b_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER INT4b_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void INT5b_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER INT5b_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void INT6b_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER INT6b_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void INT7b_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER INT7b_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void INT11b__BO__LAST_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER INT11b__BO__LAST_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void INT12b__BO__LAST_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER INT12b__BO__LAST_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void INT13b__BO__LAST_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER INT13b__BO__LAST_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void INT14b__BO__LAST_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER INT14b__BO__LAST_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void INT18b__BO__LAST_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER INT18b__BO__LAST_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void INT20b__BO__LAST_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER INT20b__BO__LAST_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void INT31b__BO__LAST_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER INT31b__BO__LAST_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void Integers_0_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER Integers_0_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void Integers_encoder(const Integers& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER Integers_decoder(OCTETSTRING& input_stream, Integers& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern boolean operator==(null_type null_value, const Integer__array& other_value); +inline boolean operator!=(null_type null_value, const Integer__array& other_value) { return !(null_value == other_value); } +extern void Integer__array_encoder(const Integer__array& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER Integer__array_decoder(OCTETSTRING& input_stream, Integer__array& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void Protocols_encoder(const Protocols& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER Protocols_decoder(OCTETSTRING& input_stream, Protocols& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT1List_encoder(const OCT1List& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT1List_decoder(OCTETSTRING& input_stream, OCT1List& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT2List_encoder(const OCT2List& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT2List_decoder(OCTETSTRING& input_stream, OCT2List& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT3List_encoder(const OCT3List& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT3List_decoder(OCTETSTRING& input_stream, OCT3List& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT4List_encoder(const OCT4List& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT4List_decoder(OCTETSTRING& input_stream, OCT4List& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT5List_encoder(const OCT5List& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT5List_decoder(OCTETSTRING& input_stream, OCT5List& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT6List_encoder(const OCT6List& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT6List_decoder(OCTETSTRING& input_stream, OCT6List& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT7List_encoder(const OCT7List& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT7List_decoder(OCTETSTRING& input_stream, OCT7List& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern boolean operator==(null_type null_value, const ListOfDummy__comptype& other_value); +inline boolean operator!=(null_type null_value, const ListOfDummy__comptype& other_value) { return !(null_value == other_value); } +extern boolean operator==(null_type null_value, const ListOfDummy__CT& other_value); +inline boolean operator!=(null_type null_value, const ListOfDummy__CT& other_value) { return !(null_value == other_value); } +extern boolean operator==(null_type null_value, const ProtocolList& other_value); +inline boolean operator!=(null_type null_value, const ProtocolList& other_value) { return !(null_value == other_value); } +extern void ProtocolList_encoder(const ProtocolList& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER ProtocolList_decoder(OCTETSTRING& input_stream, ProtocolList& output_value, const UNIVERSAL_CHARSTRING& coding_name); + +/* Global variable declarations */ + +extern const TTCN_RAWdescriptor_t BIT1n_raw_; +extern const XERdescriptor_t BIT1n_xer_; +extern const TTCN_JSONdescriptor_t BIT1n_json_; +extern const TTCN_Typedescriptor_t BIT1n_descr_; +extern UNIVERSAL_CHARSTRING BIT1n_default_coding; +extern const TTCN_RAWdescriptor_t BIT2n_raw_; +extern const XERdescriptor_t BIT2n_xer_; +extern const TTCN_JSONdescriptor_t BIT2n_json_; +extern const TTCN_Typedescriptor_t BIT2n_descr_; +extern UNIVERSAL_CHARSTRING BIT2n_default_coding; +extern const TTCN_RAWdescriptor_t BIT3n_raw_; +extern const XERdescriptor_t BIT3n_xer_; +extern const TTCN_JSONdescriptor_t BIT3n_json_; +extern const TTCN_Typedescriptor_t BIT3n_descr_; +extern UNIVERSAL_CHARSTRING BIT3n_default_coding; +extern const TTCN_RAWdescriptor_t BIT4n_raw_; +extern const XERdescriptor_t BIT4n_xer_; +extern const TTCN_JSONdescriptor_t BIT4n_json_; +extern const TTCN_Typedescriptor_t BIT4n_descr_; +extern UNIVERSAL_CHARSTRING BIT4n_default_coding; +extern const TTCN_RAWdescriptor_t BIT5n_raw_; +extern const XERdescriptor_t BIT5n_xer_; +extern const TTCN_JSONdescriptor_t BIT5n_json_; +extern const TTCN_Typedescriptor_t BIT5n_descr_; +extern UNIVERSAL_CHARSTRING BIT5n_default_coding; +extern const TTCN_RAWdescriptor_t BIT6n_raw_; +extern const XERdescriptor_t BIT6n_xer_; +extern const TTCN_JSONdescriptor_t BIT6n_json_; +extern const TTCN_Typedescriptor_t BIT6n_descr_; +extern UNIVERSAL_CHARSTRING BIT6n_default_coding; +extern const TTCN_RAWdescriptor_t BIT7n_raw_; +extern const XERdescriptor_t BIT7n_xer_; +extern const TTCN_JSONdescriptor_t BIT7n_json_; +extern const TTCN_Typedescriptor_t BIT7n_descr_; +extern UNIVERSAL_CHARSTRING BIT7n_default_coding; +extern const TTCN_RAWdescriptor_t BIT8n_raw_; +extern const XERdescriptor_t BIT8n_xer_; +extern const TTCN_JSONdescriptor_t BIT8n_json_; +extern const TTCN_Typedescriptor_t BIT8n_descr_; +extern UNIVERSAL_CHARSTRING BIT8n_default_coding; +extern const TTCN_RAWdescriptor_t BIT9n_raw_; +extern const XERdescriptor_t BIT9n_xer_; +extern const TTCN_JSONdescriptor_t BIT9n_json_; +extern const TTCN_Typedescriptor_t BIT9n_descr_; +extern UNIVERSAL_CHARSTRING BIT9n_default_coding; +extern const TTCN_RAWdescriptor_t BIT12n_raw_; +extern const XERdescriptor_t BIT12n_xer_; +extern const TTCN_JSONdescriptor_t BIT12n_json_; +extern const TTCN_Typedescriptor_t BIT12n_descr_; +extern UNIVERSAL_CHARSTRING BIT12n_default_coding; +extern const TTCN_RAWdescriptor_t BIT14n_raw_; +extern const XERdescriptor_t BIT14n_xer_; +extern const TTCN_JSONdescriptor_t BIT14n_json_; +extern const TTCN_Typedescriptor_t BIT14n_descr_; +extern UNIVERSAL_CHARSTRING BIT14n_default_coding; +extern const TTCN_RAWdescriptor_t BIT15n_raw_; +extern const XERdescriptor_t BIT15n_xer_; +extern const TTCN_JSONdescriptor_t BIT15n_json_; +extern const TTCN_Typedescriptor_t BIT15n_descr_; +extern UNIVERSAL_CHARSTRING BIT15n_default_coding; +extern const TTCN_RAWdescriptor_t BIT16n_raw_; +extern const XERdescriptor_t BIT16n_xer_; +extern const TTCN_JSONdescriptor_t BIT16n_json_; +extern const TTCN_Typedescriptor_t BIT16n_descr_; +extern UNIVERSAL_CHARSTRING BIT16n_default_coding; +extern const TTCN_RAWdescriptor_t BIT56n_raw_; +extern const XERdescriptor_t BIT56n_xer_; +extern const TTCN_JSONdescriptor_t BIT56n_json_; +extern const TTCN_Typedescriptor_t BIT56n_descr_; +extern UNIVERSAL_CHARSTRING BIT56n_default_coding; +extern const XERdescriptor_t BIT14__24n_xer_; +extern const TTCN_JSONdescriptor_t BIT14__24n_json_; +extern const TTCN_Typedescriptor_t BIT14__24n_descr_; +extern UNIVERSAL_CHARSTRING BIT14__24n_default_coding; +extern const TTCN_RAWdescriptor_t BIT1np_raw_; +extern const XERdescriptor_t BIT1np_xer_; +extern const TTCN_JSONdescriptor_t BIT1np_json_; +extern const TTCN_Typedescriptor_t BIT1np_descr_; +extern UNIVERSAL_CHARSTRING BIT1np_default_coding; +extern const TTCN_RAWdescriptor_t BIT2np_raw_; +extern const XERdescriptor_t BIT2np_xer_; +extern const TTCN_JSONdescriptor_t BIT2np_json_; +extern const TTCN_Typedescriptor_t BIT2np_descr_; +extern UNIVERSAL_CHARSTRING BIT2np_default_coding; +extern const TTCN_RAWdescriptor_t BIT3np_raw_; +extern const XERdescriptor_t BIT3np_xer_; +extern const TTCN_JSONdescriptor_t BIT3np_json_; +extern const TTCN_Typedescriptor_t BIT3np_descr_; +extern UNIVERSAL_CHARSTRING BIT3np_default_coding; +extern const TTCN_RAWdescriptor_t BIT4np_raw_; +extern const XERdescriptor_t BIT4np_xer_; +extern const TTCN_JSONdescriptor_t BIT4np_json_; +extern const TTCN_Typedescriptor_t BIT4np_descr_; +extern UNIVERSAL_CHARSTRING BIT4np_default_coding; +extern const TTCN_RAWdescriptor_t BIT5np_raw_; +extern const XERdescriptor_t BIT5np_xer_; +extern const TTCN_JSONdescriptor_t BIT5np_json_; +extern const TTCN_Typedescriptor_t BIT5np_descr_; +extern UNIVERSAL_CHARSTRING BIT5np_default_coding; +extern const TTCN_RAWdescriptor_t BIT6np_raw_; +extern const XERdescriptor_t BIT6np_xer_; +extern const TTCN_JSONdescriptor_t BIT6np_json_; +extern const TTCN_Typedescriptor_t BIT6np_descr_; +extern UNIVERSAL_CHARSTRING BIT6np_default_coding; +extern const TTCN_RAWdescriptor_t BIT7np_raw_; +extern const XERdescriptor_t BIT7np_xer_; +extern const TTCN_JSONdescriptor_t BIT7np_json_; +extern const TTCN_Typedescriptor_t BIT7np_descr_; +extern UNIVERSAL_CHARSTRING BIT7np_default_coding; +extern const TTCN_RAWdescriptor_t BIT15np_raw_; +extern const XERdescriptor_t BIT15np_xer_; +extern const TTCN_JSONdescriptor_t BIT15np_json_; +extern const TTCN_Typedescriptor_t BIT15np_descr_; +extern UNIVERSAL_CHARSTRING BIT15np_default_coding; +extern const TTCN_RAWdescriptor_t BIT1_raw_; +extern const XERdescriptor_t BIT1_xer_; +extern const TTCN_JSONdescriptor_t BIT1_json_; +extern const TTCN_Typedescriptor_t BIT1_descr_; +extern UNIVERSAL_CHARSTRING BIT1_default_coding; +extern const TTCN_RAWdescriptor_t BIT2_raw_; +extern const XERdescriptor_t BIT2_xer_; +extern const TTCN_JSONdescriptor_t BIT2_json_; +extern const TTCN_OERdescriptor_t BIT2_oer_; +extern const TTCN_Typedescriptor_t BIT2_descr_; +extern UNIVERSAL_CHARSTRING BIT2_default_coding; +extern const TTCN_RAWdescriptor_t BIT3_raw_; +extern const XERdescriptor_t BIT3_xer_; +extern const TTCN_JSONdescriptor_t BIT3_json_; +extern const TTCN_OERdescriptor_t BIT3_oer_; +extern const TTCN_Typedescriptor_t BIT3_descr_; +extern UNIVERSAL_CHARSTRING BIT3_default_coding; +extern const TTCN_RAWdescriptor_t BIT4_raw_; +extern const XERdescriptor_t BIT4_xer_; +extern const TTCN_JSONdescriptor_t BIT4_json_; +extern const TTCN_OERdescriptor_t BIT4_oer_; +extern const TTCN_Typedescriptor_t BIT4_descr_; +extern UNIVERSAL_CHARSTRING BIT4_default_coding; +extern const TTCN_RAWdescriptor_t BIT5_raw_; +extern const XERdescriptor_t BIT5_xer_; +extern const TTCN_JSONdescriptor_t BIT5_json_; +extern const TTCN_Typedescriptor_t BIT5_descr_; +extern UNIVERSAL_CHARSTRING BIT5_default_coding; +extern const TTCN_RAWdescriptor_t BIT6_raw_; +extern const XERdescriptor_t BIT6_xer_; +extern const TTCN_JSONdescriptor_t BIT6_json_; +extern const TTCN_Typedescriptor_t BIT6_descr_; +extern UNIVERSAL_CHARSTRING BIT6_default_coding; +extern const TTCN_RAWdescriptor_t BIT7_raw_; +extern const XERdescriptor_t BIT7_xer_; +extern const TTCN_JSONdescriptor_t BIT7_json_; +extern const TTCN_Typedescriptor_t BIT7_descr_; +extern UNIVERSAL_CHARSTRING BIT7_default_coding; +extern const TTCN_RAWdescriptor_t BIT8_raw_; +extern const XERdescriptor_t BIT8_xer_; +extern const TTCN_JSONdescriptor_t BIT8_json_; +extern const TTCN_Typedescriptor_t BIT8_descr_; +extern UNIVERSAL_CHARSTRING BIT8_default_coding; +extern const TTCN_RAWdescriptor_t BIT9_raw_; +extern const XERdescriptor_t BIT9_xer_; +extern const TTCN_JSONdescriptor_t BIT9_json_; +extern const TTCN_Typedescriptor_t BIT9_descr_; +extern UNIVERSAL_CHARSTRING BIT9_default_coding; +extern const TTCN_RAWdescriptor_t BIT10_raw_; +extern const XERdescriptor_t BIT10_xer_; +extern const TTCN_JSONdescriptor_t BIT10_json_; +extern const TTCN_Typedescriptor_t BIT10_descr_; +extern UNIVERSAL_CHARSTRING BIT10_default_coding; +extern const TTCN_RAWdescriptor_t BIT11_raw_; +extern const XERdescriptor_t BIT11_xer_; +extern const TTCN_JSONdescriptor_t BIT11_json_; +extern const TTCN_Typedescriptor_t BIT11_descr_; +extern UNIVERSAL_CHARSTRING BIT11_default_coding; +extern const TTCN_RAWdescriptor_t BIT12_raw_; +extern const XERdescriptor_t BIT12_xer_; +extern const TTCN_JSONdescriptor_t BIT12_json_; +extern const TTCN_Typedescriptor_t BIT12_descr_; +extern UNIVERSAL_CHARSTRING BIT12_default_coding; +extern const TTCN_RAWdescriptor_t BIT14_raw_; +extern const XERdescriptor_t BIT14_xer_; +extern const TTCN_JSONdescriptor_t BIT14_json_; +extern const TTCN_Typedescriptor_t BIT14_descr_; +extern UNIVERSAL_CHARSTRING BIT14_default_coding; +extern const TTCN_RAWdescriptor_t BIT15_raw_; +extern const XERdescriptor_t BIT15_xer_; +extern const TTCN_JSONdescriptor_t BIT15_json_; +extern const TTCN_Typedescriptor_t BIT15_descr_; +extern UNIVERSAL_CHARSTRING BIT15_default_coding; +extern const TTCN_RAWdescriptor_t BIT16_raw_; +extern const XERdescriptor_t BIT16_xer_; +extern const TTCN_JSONdescriptor_t BIT16_json_; +extern const TTCN_Typedescriptor_t BIT16_descr_; +extern UNIVERSAL_CHARSTRING BIT16_default_coding; +extern const TTCN_RAWdescriptor_t BIT24_raw_; +extern const XERdescriptor_t BIT24_xer_; +extern const TTCN_JSONdescriptor_t BIT24_json_; +extern const TTCN_Typedescriptor_t BIT24_descr_; +extern UNIVERSAL_CHARSTRING BIT24_default_coding; +extern const TTCN_RAWdescriptor_t BIT31_raw_; +extern const XERdescriptor_t BIT31_xer_; +extern const TTCN_JSONdescriptor_t BIT31_json_; +extern const TTCN_Typedescriptor_t BIT31_descr_; +extern UNIVERSAL_CHARSTRING BIT31_default_coding; +extern const TTCN_RAWdescriptor_t BIT32_raw_; +extern const XERdescriptor_t BIT32_xer_; +extern const TTCN_JSONdescriptor_t BIT32_json_; +extern const TTCN_Typedescriptor_t BIT32_descr_; +extern UNIVERSAL_CHARSTRING BIT32_default_coding; +extern const TTCN_RAWdescriptor_t BIT56_raw_; +extern const XERdescriptor_t BIT56_xer_; +extern const TTCN_JSONdescriptor_t BIT56_json_; +extern const TTCN_Typedescriptor_t BIT56_descr_; +extern UNIVERSAL_CHARSTRING BIT56_default_coding; +extern const TTCN_RAWdescriptor_t OCT0n_raw_; +extern const XERdescriptor_t OCT0n_xer_; +extern const TTCN_JSONdescriptor_t OCT0n_json_; +extern const TTCN_OERdescriptor_t OCT0n_oer_; +extern const TTCN_Typedescriptor_t OCT0n_descr_; +extern UNIVERSAL_CHARSTRING OCT0n_default_coding; +extern const TTCN_RAWdescriptor_t OCT1n_raw_; +extern const XERdescriptor_t OCT1n_xer_; +extern const TTCN_JSONdescriptor_t OCT1n_json_; +extern const TTCN_OERdescriptor_t OCT1n_oer_; +extern const TTCN_Typedescriptor_t OCT1n_descr_; +extern UNIVERSAL_CHARSTRING OCT1n_default_coding; +extern const TTCN_RAWdescriptor_t OCT2n_raw_; +extern const XERdescriptor_t OCT2n_xer_; +extern const TTCN_JSONdescriptor_t OCT2n_json_; +extern const TTCN_OERdescriptor_t OCT2n_oer_; +extern const TTCN_Typedescriptor_t OCT2n_descr_; +extern UNIVERSAL_CHARSTRING OCT2n_default_coding; +extern const TTCN_RAWdescriptor_t OCT3n_raw_; +extern const XERdescriptor_t OCT3n_xer_; +extern const TTCN_JSONdescriptor_t OCT3n_json_; +extern const TTCN_OERdescriptor_t OCT3n_oer_; +extern const TTCN_Typedescriptor_t OCT3n_descr_; +extern UNIVERSAL_CHARSTRING OCT3n_default_coding; +extern const TTCN_RAWdescriptor_t OCT4n_raw_; +extern const XERdescriptor_t OCT4n_xer_; +extern const TTCN_JSONdescriptor_t OCT4n_json_; +extern const TTCN_OERdescriptor_t OCT4n_oer_; +extern const TTCN_Typedescriptor_t OCT4n_descr_; +extern UNIVERSAL_CHARSTRING OCT4n_default_coding; +extern const TTCN_RAWdescriptor_t OCT5n_raw_; +extern const XERdescriptor_t OCT5n_xer_; +extern const TTCN_JSONdescriptor_t OCT5n_json_; +extern const TTCN_OERdescriptor_t OCT5n_oer_; +extern const TTCN_Typedescriptor_t OCT5n_descr_; +extern UNIVERSAL_CHARSTRING OCT5n_default_coding; +extern const TTCN_RAWdescriptor_t OCT6n_raw_; +extern const XERdescriptor_t OCT6n_xer_; +extern const TTCN_JSONdescriptor_t OCT6n_json_; +extern const TTCN_OERdescriptor_t OCT6n_oer_; +extern const TTCN_Typedescriptor_t OCT6n_descr_; +extern UNIVERSAL_CHARSTRING OCT6n_default_coding; +extern const TTCN_RAWdescriptor_t OCT7n_raw_; +extern const XERdescriptor_t OCT7n_xer_; +extern const TTCN_JSONdescriptor_t OCT7n_json_; +extern const TTCN_OERdescriptor_t OCT7n_oer_; +extern const TTCN_Typedescriptor_t OCT7n_descr_; +extern UNIVERSAL_CHARSTRING OCT7n_default_coding; +extern const TTCN_RAWdescriptor_t OCT8n_raw_; +extern const XERdescriptor_t OCT8n_xer_; +extern const TTCN_JSONdescriptor_t OCT8n_json_; +extern const TTCN_OERdescriptor_t OCT8n_oer_; +extern const TTCN_Typedescriptor_t OCT8n_descr_; +extern UNIVERSAL_CHARSTRING OCT8n_default_coding; +extern const TTCN_RAWdescriptor_t OCT9n_raw_; +extern const XERdescriptor_t OCT9n_xer_; +extern const TTCN_JSONdescriptor_t OCT9n_json_; +extern const TTCN_OERdescriptor_t OCT9n_oer_; +extern const TTCN_Typedescriptor_t OCT9n_descr_; +extern UNIVERSAL_CHARSTRING OCT9n_default_coding; +extern const TTCN_RAWdescriptor_t OCT10n_raw_; +extern const XERdescriptor_t OCT10n_xer_; +extern const TTCN_JSONdescriptor_t OCT10n_json_; +extern const TTCN_OERdescriptor_t OCT10n_oer_; +extern const TTCN_Typedescriptor_t OCT10n_descr_; +extern UNIVERSAL_CHARSTRING OCT10n_default_coding; +extern const TTCN_RAWdescriptor_t OCT11n_raw_; +extern const XERdescriptor_t OCT11n_xer_; +extern const TTCN_JSONdescriptor_t OCT11n_json_; +extern const TTCN_OERdescriptor_t OCT11n_oer_; +extern const TTCN_Typedescriptor_t OCT11n_descr_; +extern UNIVERSAL_CHARSTRING OCT11n_default_coding; +extern const TTCN_RAWdescriptor_t OCT12n_raw_; +extern const XERdescriptor_t OCT12n_xer_; +extern const TTCN_JSONdescriptor_t OCT12n_json_; +extern const TTCN_OERdescriptor_t OCT12n_oer_; +extern const TTCN_Typedescriptor_t OCT12n_descr_; +extern UNIVERSAL_CHARSTRING OCT12n_default_coding; +extern const TTCN_RAWdescriptor_t OCT13n_raw_; +extern const XERdescriptor_t OCT13n_xer_; +extern const TTCN_JSONdescriptor_t OCT13n_json_; +extern const TTCN_OERdescriptor_t OCT13n_oer_; +extern const TTCN_Typedescriptor_t OCT13n_descr_; +extern UNIVERSAL_CHARSTRING OCT13n_default_coding; +extern const TTCN_RAWdescriptor_t OCT14n_raw_; +extern const XERdescriptor_t OCT14n_xer_; +extern const TTCN_JSONdescriptor_t OCT14n_json_; +extern const TTCN_OERdescriptor_t OCT14n_oer_; +extern const TTCN_Typedescriptor_t OCT14n_descr_; +extern UNIVERSAL_CHARSTRING OCT14n_default_coding; +extern const TTCN_RAWdescriptor_t OCT15n_raw_; +extern const XERdescriptor_t OCT15n_xer_; +extern const TTCN_JSONdescriptor_t OCT15n_json_; +extern const TTCN_OERdescriptor_t OCT15n_oer_; +extern const TTCN_Typedescriptor_t OCT15n_descr_; +extern UNIVERSAL_CHARSTRING OCT15n_default_coding; +extern const TTCN_RAWdescriptor_t OCT16n_raw_; +extern const XERdescriptor_t OCT16n_xer_; +extern const TTCN_JSONdescriptor_t OCT16n_json_; +extern const TTCN_OERdescriptor_t OCT16n_oer_; +extern const TTCN_Typedescriptor_t OCT16n_descr_; +extern UNIVERSAL_CHARSTRING OCT16n_default_coding; +extern const TTCN_RAWdescriptor_t OCT17n_raw_; +extern const XERdescriptor_t OCT17n_xer_; +extern const TTCN_JSONdescriptor_t OCT17n_json_; +extern const TTCN_OERdescriptor_t OCT17n_oer_; +extern const TTCN_Typedescriptor_t OCT17n_descr_; +extern UNIVERSAL_CHARSTRING OCT17n_default_coding; +extern const TTCN_RAWdescriptor_t OCT18n_raw_; +extern const XERdescriptor_t OCT18n_xer_; +extern const TTCN_JSONdescriptor_t OCT18n_json_; +extern const TTCN_OERdescriptor_t OCT18n_oer_; +extern const TTCN_Typedescriptor_t OCT18n_descr_; +extern UNIVERSAL_CHARSTRING OCT18n_default_coding; +extern const TTCN_RAWdescriptor_t OCT19n_raw_; +extern const XERdescriptor_t OCT19n_xer_; +extern const TTCN_JSONdescriptor_t OCT19n_json_; +extern const TTCN_OERdescriptor_t OCT19n_oer_; +extern const TTCN_Typedescriptor_t OCT19n_descr_; +extern UNIVERSAL_CHARSTRING OCT19n_default_coding; +extern const TTCN_RAWdescriptor_t OCT20n_raw_; +extern const XERdescriptor_t OCT20n_xer_; +extern const TTCN_JSONdescriptor_t OCT20n_json_; +extern const TTCN_OERdescriptor_t OCT20n_oer_; +extern const TTCN_Typedescriptor_t OCT20n_descr_; +extern UNIVERSAL_CHARSTRING OCT20n_default_coding; +extern const TTCN_RAWdescriptor_t OCT28n_raw_; +extern const XERdescriptor_t OCT28n_xer_; +extern const TTCN_JSONdescriptor_t OCT28n_json_; +extern const TTCN_OERdescriptor_t OCT28n_oer_; +extern const TTCN_Typedescriptor_t OCT28n_descr_; +extern UNIVERSAL_CHARSTRING OCT28n_default_coding; +extern const TTCN_RAWdescriptor_t OCT32n_raw_; +extern const XERdescriptor_t OCT32n_xer_; +extern const TTCN_JSONdescriptor_t OCT32n_json_; +extern const TTCN_OERdescriptor_t OCT32n_oer_; +extern const TTCN_Typedescriptor_t OCT32n_descr_; +extern UNIVERSAL_CHARSTRING OCT32n_default_coding; +extern const TTCN_RAWdescriptor_t OCT34n_raw_; +extern const XERdescriptor_t OCT34n_xer_; +extern const TTCN_JSONdescriptor_t OCT34n_json_; +extern const TTCN_OERdescriptor_t OCT34n_oer_; +extern const TTCN_Typedescriptor_t OCT34n_descr_; +extern UNIVERSAL_CHARSTRING OCT34n_default_coding; +extern const TTCN_RAWdescriptor_t OCT46n_raw_; +extern const XERdescriptor_t OCT46n_xer_; +extern const TTCN_JSONdescriptor_t OCT46n_json_; +extern const TTCN_OERdescriptor_t OCT46n_oer_; +extern const TTCN_Typedescriptor_t OCT46n_descr_; +extern UNIVERSAL_CHARSTRING OCT46n_default_coding; +extern const TTCN_RAWdescriptor_t OCT50n_raw_; +extern const XERdescriptor_t OCT50n_xer_; +extern const TTCN_JSONdescriptor_t OCT50n_json_; +extern const TTCN_OERdescriptor_t OCT50n_oer_; +extern const TTCN_Typedescriptor_t OCT50n_descr_; +extern UNIVERSAL_CHARSTRING OCT50n_default_coding; +extern const TTCN_RAWdescriptor_t OCT69n_raw_; +extern const XERdescriptor_t OCT69n_xer_; +extern const TTCN_JSONdescriptor_t OCT69n_json_; +extern const TTCN_OERdescriptor_t OCT69n_oer_; +extern const TTCN_Typedescriptor_t OCT69n_descr_; +extern UNIVERSAL_CHARSTRING OCT69n_default_coding; +extern const TTCN_RAWdescriptor_t OCT100n_raw_; +extern const XERdescriptor_t OCT100n_xer_; +extern const TTCN_JSONdescriptor_t OCT100n_json_; +extern const TTCN_OERdescriptor_t OCT100n_oer_; +extern const TTCN_Typedescriptor_t OCT100n_descr_; +extern UNIVERSAL_CHARSTRING OCT100n_default_coding; +extern const TTCN_RAWdescriptor_t OCT128n_raw_; +extern const XERdescriptor_t OCT128n_xer_; +extern const TTCN_JSONdescriptor_t OCT128n_json_; +extern const TTCN_OERdescriptor_t OCT128n_oer_; +extern const TTCN_Typedescriptor_t OCT128n_descr_; +extern UNIVERSAL_CHARSTRING OCT128n_default_coding; +extern const TTCN_RAWdescriptor_t OCT500n_raw_; +extern const XERdescriptor_t OCT500n_xer_; +extern const TTCN_JSONdescriptor_t OCT500n_json_; +extern const TTCN_OERdescriptor_t OCT500n_oer_; +extern const TTCN_Typedescriptor_t OCT500n_descr_; +extern UNIVERSAL_CHARSTRING OCT500n_default_coding; +extern const XERdescriptor_t OCTNn_xer_; +extern const TTCN_JSONdescriptor_t OCTNn_json_; +extern const TTCN_OERdescriptor_t OCTNn_oer_; +extern const TTCN_Typedescriptor_t OCTNn_descr_; +extern UNIVERSAL_CHARSTRING OCTNn_default_coding; +extern const XERdescriptor_t OCT1__3n_xer_; +extern const TTCN_JSONdescriptor_t OCT1__3n_json_; +extern const TTCN_OERdescriptor_t OCT1__3n_oer_; +extern const TTCN_Typedescriptor_t OCT1__3n_descr_; +extern UNIVERSAL_CHARSTRING OCT1__3n_default_coding; +extern const XERdescriptor_t OCT1__4n_xer_; +extern const TTCN_JSONdescriptor_t OCT1__4n_json_; +extern const TTCN_OERdescriptor_t OCT1__4n_oer_; +extern const TTCN_Typedescriptor_t OCT1__4n_descr_; +extern UNIVERSAL_CHARSTRING OCT1__4n_default_coding; +extern const XERdescriptor_t OCT1__5n_xer_; +extern const TTCN_JSONdescriptor_t OCT1__5n_json_; +extern const TTCN_OERdescriptor_t OCT1__5n_oer_; +extern const TTCN_Typedescriptor_t OCT1__5n_descr_; +extern UNIVERSAL_CHARSTRING OCT1__5n_default_coding; +extern const XERdescriptor_t OCT1__6n_xer_; +extern const TTCN_JSONdescriptor_t OCT1__6n_json_; +extern const TTCN_OERdescriptor_t OCT1__6n_oer_; +extern const TTCN_Typedescriptor_t OCT1__6n_descr_; +extern UNIVERSAL_CHARSTRING OCT1__6n_default_coding; +extern const XERdescriptor_t OCT1__7n_xer_; +extern const TTCN_JSONdescriptor_t OCT1__7n_json_; +extern const TTCN_OERdescriptor_t OCT1__7n_oer_; +extern const TTCN_Typedescriptor_t OCT1__7n_descr_; +extern UNIVERSAL_CHARSTRING OCT1__7n_default_coding; +extern const XERdescriptor_t OCT1__8n_xer_; +extern const TTCN_JSONdescriptor_t OCT1__8n_json_; +extern const TTCN_OERdescriptor_t OCT1__8n_oer_; +extern const TTCN_Typedescriptor_t OCT1__8n_descr_; +extern UNIVERSAL_CHARSTRING OCT1__8n_default_coding; +extern const XERdescriptor_t OCT1__12n_xer_; +extern const TTCN_JSONdescriptor_t OCT1__12n_json_; +extern const TTCN_OERdescriptor_t OCT1__12n_oer_; +extern const TTCN_Typedescriptor_t OCT1__12n_descr_; +extern UNIVERSAL_CHARSTRING OCT1__12n_default_coding; +extern const XERdescriptor_t OCT1__15n_xer_; +extern const TTCN_JSONdescriptor_t OCT1__15n_json_; +extern const TTCN_OERdescriptor_t OCT1__15n_oer_; +extern const TTCN_Typedescriptor_t OCT1__15n_descr_; +extern UNIVERSAL_CHARSTRING OCT1__15n_default_coding; +extern const XERdescriptor_t OCT1__16n_xer_; +extern const TTCN_JSONdescriptor_t OCT1__16n_json_; +extern const TTCN_OERdescriptor_t OCT1__16n_oer_; +extern const TTCN_Typedescriptor_t OCT1__16n_descr_; +extern UNIVERSAL_CHARSTRING OCT1__16n_default_coding; +extern const XERdescriptor_t OCT1__18n_xer_; +extern const TTCN_JSONdescriptor_t OCT1__18n_json_; +extern const TTCN_OERdescriptor_t OCT1__18n_oer_; +extern const TTCN_Typedescriptor_t OCT1__18n_descr_; +extern UNIVERSAL_CHARSTRING OCT1__18n_default_coding; +extern const XERdescriptor_t OCT1__20n_xer_; +extern const TTCN_JSONdescriptor_t OCT1__20n_json_; +extern const TTCN_OERdescriptor_t OCT1__20n_oer_; +extern const TTCN_Typedescriptor_t OCT1__20n_descr_; +extern UNIVERSAL_CHARSTRING OCT1__20n_default_coding; +extern const XERdescriptor_t OCT1__24n_xer_; +extern const TTCN_JSONdescriptor_t OCT1__24n_json_; +extern const TTCN_OERdescriptor_t OCT1__24n_oer_; +extern const TTCN_Typedescriptor_t OCT1__24n_descr_; +extern UNIVERSAL_CHARSTRING OCT1__24n_default_coding; +extern const XERdescriptor_t OCT1__32n_xer_; +extern const TTCN_JSONdescriptor_t OCT1__32n_json_; +extern const TTCN_OERdescriptor_t OCT1__32n_oer_; +extern const TTCN_Typedescriptor_t OCT1__32n_descr_; +extern UNIVERSAL_CHARSTRING OCT1__32n_default_coding; +extern const XERdescriptor_t OCT1__34n_xer_; +extern const TTCN_JSONdescriptor_t OCT1__34n_json_; +extern const TTCN_OERdescriptor_t OCT1__34n_oer_; +extern const TTCN_Typedescriptor_t OCT1__34n_descr_; +extern UNIVERSAL_CHARSTRING OCT1__34n_default_coding; +extern const XERdescriptor_t OCT1__46n_xer_; +extern const TTCN_JSONdescriptor_t OCT1__46n_json_; +extern const TTCN_OERdescriptor_t OCT1__46n_oer_; +extern const TTCN_Typedescriptor_t OCT1__46n_descr_; +extern UNIVERSAL_CHARSTRING OCT1__46n_default_coding; +extern const XERdescriptor_t OCT1__50n_xer_; +extern const TTCN_JSONdescriptor_t OCT1__50n_json_; +extern const TTCN_OERdescriptor_t OCT1__50n_oer_; +extern const TTCN_Typedescriptor_t OCT1__50n_descr_; +extern UNIVERSAL_CHARSTRING OCT1__50n_default_coding; +extern const XERdescriptor_t OCT1__112n_xer_; +extern const TTCN_JSONdescriptor_t OCT1__112n_json_; +extern const TTCN_OERdescriptor_t OCT1__112n_oer_; +extern const TTCN_Typedescriptor_t OCT1__112n_descr_; +extern UNIVERSAL_CHARSTRING OCT1__112n_default_coding; +extern const XERdescriptor_t OCT1__127n_xer_; +extern const TTCN_JSONdescriptor_t OCT1__127n_json_; +extern const TTCN_OERdescriptor_t OCT1__127n_oer_; +extern const TTCN_Typedescriptor_t OCT1__127n_descr_; +extern UNIVERSAL_CHARSTRING OCT1__127n_default_coding; +extern const XERdescriptor_t OCT1__128n_xer_; +extern const TTCN_JSONdescriptor_t OCT1__128n_json_; +extern const TTCN_OERdescriptor_t OCT1__128n_oer_; +extern const TTCN_Typedescriptor_t OCT1__128n_descr_; +extern UNIVERSAL_CHARSTRING OCT1__128n_default_coding; +extern const XERdescriptor_t OCT1__172n_xer_; +extern const TTCN_JSONdescriptor_t OCT1__172n_json_; +extern const TTCN_OERdescriptor_t OCT1__172n_oer_; +extern const TTCN_Typedescriptor_t OCT1__172n_descr_; +extern UNIVERSAL_CHARSTRING OCT1__172n_default_coding; +extern const XERdescriptor_t OCT3__5n_xer_; +extern const TTCN_JSONdescriptor_t OCT3__5n_json_; +extern const TTCN_OERdescriptor_t OCT3__5n_oer_; +extern const TTCN_Typedescriptor_t OCT3__5n_descr_; +extern UNIVERSAL_CHARSTRING OCT3__5n_default_coding; +extern const XERdescriptor_t OCT3__7n_xer_; +extern const TTCN_JSONdescriptor_t OCT3__7n_json_; +extern const TTCN_OERdescriptor_t OCT3__7n_oer_; +extern const TTCN_Typedescriptor_t OCT3__7n_descr_; +extern UNIVERSAL_CHARSTRING OCT3__7n_default_coding; +extern const XERdescriptor_t OCT3__8n_xer_; +extern const TTCN_JSONdescriptor_t OCT3__8n_json_; +extern const TTCN_OERdescriptor_t OCT3__8n_oer_; +extern const TTCN_Typedescriptor_t OCT3__8n_descr_; +extern UNIVERSAL_CHARSTRING OCT3__8n_default_coding; +extern const XERdescriptor_t OCT3__14n_xer_; +extern const TTCN_JSONdescriptor_t OCT3__14n_json_; +extern const TTCN_OERdescriptor_t OCT3__14n_oer_; +extern const TTCN_Typedescriptor_t OCT3__14n_descr_; +extern UNIVERSAL_CHARSTRING OCT3__14n_default_coding; +extern const XERdescriptor_t OCT3__17n_xer_; +extern const TTCN_JSONdescriptor_t OCT3__17n_json_; +extern const TTCN_OERdescriptor_t OCT3__17n_oer_; +extern const TTCN_Typedescriptor_t OCT3__17n_descr_; +extern UNIVERSAL_CHARSTRING OCT3__17n_default_coding; +extern const XERdescriptor_t OCT4__8n_xer_; +extern const TTCN_JSONdescriptor_t OCT4__8n_json_; +extern const TTCN_OERdescriptor_t OCT4__8n_oer_; +extern const TTCN_Typedescriptor_t OCT4__8n_descr_; +extern UNIVERSAL_CHARSTRING OCT4__8n_default_coding; +extern const TTCN_RAWdescriptor_t CHAR4_raw_; +extern const XERdescriptor_t CHAR4_xer_; +extern const TTCN_JSONdescriptor_t CHAR4_json_; +extern const TTCN_Typedescriptor_t CHAR4_descr_; +extern UNIVERSAL_CHARSTRING CHAR4_default_coding; +extern const TTCN_RAWdescriptor_t HEX4n_raw_; +extern const XERdescriptor_t HEX4n_xer_; +extern const TTCN_JSONdescriptor_t HEX4n_json_; +extern const TTCN_Typedescriptor_t HEX4n_descr_; +extern UNIVERSAL_CHARSTRING HEX4n_default_coding; +extern const TTCN_RAWdescriptor_t HEX6n_raw_; +extern const XERdescriptor_t HEX6n_xer_; +extern const TTCN_JSONdescriptor_t HEX6n_json_; +extern const TTCN_Typedescriptor_t HEX6n_descr_; +extern UNIVERSAL_CHARSTRING HEX6n_default_coding; +extern const TTCN_RAWdescriptor_t HEX8n_raw_; +extern const XERdescriptor_t HEX8n_xer_; +extern const TTCN_JSONdescriptor_t HEX8n_json_; +extern const TTCN_Typedescriptor_t HEX8n_descr_; +extern UNIVERSAL_CHARSTRING HEX8n_default_coding; +extern const TTCN_RAWdescriptor_t HEX15n_raw_; +extern const XERdescriptor_t HEX15n_xer_; +extern const TTCN_JSONdescriptor_t HEX15n_json_; +extern const TTCN_Typedescriptor_t HEX15n_descr_; +extern UNIVERSAL_CHARSTRING HEX15n_default_coding; +extern const TTCN_RAWdescriptor_t HEX16n_raw_; +extern const XERdescriptor_t HEX16n_xer_; +extern const TTCN_JSONdescriptor_t HEX16n_json_; +extern const TTCN_Typedescriptor_t HEX16n_descr_; +extern UNIVERSAL_CHARSTRING HEX16n_default_coding; +extern const TTCN_RAWdescriptor_t HEX24n_raw_; +extern const XERdescriptor_t HEX24n_xer_; +extern const TTCN_JSONdescriptor_t HEX24n_json_; +extern const TTCN_Typedescriptor_t HEX24n_descr_; +extern UNIVERSAL_CHARSTRING HEX24n_default_coding; +extern const XERdescriptor_t HEX0__3n_xer_; +extern const TTCN_JSONdescriptor_t HEX0__3n_json_; +extern const TTCN_Typedescriptor_t HEX0__3n_descr_; +extern UNIVERSAL_CHARSTRING HEX0__3n_default_coding; +extern const XERdescriptor_t HEX0__18n_xer_; +extern const TTCN_JSONdescriptor_t HEX0__18n_json_; +extern const TTCN_Typedescriptor_t HEX0__18n_descr_; +extern UNIVERSAL_CHARSTRING HEX0__18n_default_coding; +extern const XERdescriptor_t HEX1__20n_xer_; +extern const TTCN_JSONdescriptor_t HEX1__20n_json_; +extern const TTCN_Typedescriptor_t HEX1__20n_descr_; +extern UNIVERSAL_CHARSTRING HEX1__20n_default_coding; +extern const XERdescriptor_t HEX1__34n_xer_; +extern const TTCN_JSONdescriptor_t HEX1__34n_json_; +extern const TTCN_Typedescriptor_t HEX1__34n_descr_; +extern UNIVERSAL_CHARSTRING HEX1__34n_default_coding; +extern const XERdescriptor_t INT3nb_xer_; +extern const TTCN_JSONdescriptor_t INT3nb_json_; +extern const TTCN_Typedescriptor_t INT3nb_descr_; +extern UNIVERSAL_CHARSTRING INT3nb_default_coding; +extern const XERdescriptor_t INT4nb_xer_; +extern const TTCN_JSONdescriptor_t INT4nb_json_; +extern const TTCN_Typedescriptor_t INT4nb_descr_; +extern UNIVERSAL_CHARSTRING INT4nb_default_coding; +extern const XERdescriptor_t INT5nb_xer_; +extern const TTCN_JSONdescriptor_t INT5nb_json_; +extern const TTCN_Typedescriptor_t INT5nb_descr_; +extern UNIVERSAL_CHARSTRING INT5nb_default_coding; +extern const XERdescriptor_t INT8nb_xer_; +extern const TTCN_JSONdescriptor_t INT8nb_json_; +extern const TTCN_Typedescriptor_t INT8nb_descr_; +extern UNIVERSAL_CHARSTRING INT8nb_default_coding; +extern const XERdescriptor_t INT2nbp_xer_; +extern const TTCN_JSONdescriptor_t INT2nbp_json_; +extern const TTCN_Typedescriptor_t INT2nbp_descr_; +extern UNIVERSAL_CHARSTRING INT2nbp_default_coding; +extern const XERdescriptor_t INT1nbp_xer_; +extern const TTCN_JSONdescriptor_t INT1nbp_json_; +extern const TTCN_Typedescriptor_t INT1nbp_descr_; +extern UNIVERSAL_CHARSTRING INT1nbp_default_coding; +extern const XERdescriptor_t INT3nbp_xer_; +extern const TTCN_JSONdescriptor_t INT3nbp_json_; +extern const TTCN_Typedescriptor_t INT3nbp_descr_; +extern UNIVERSAL_CHARSTRING INT3nbp_default_coding; +extern const XERdescriptor_t INT5nbp_xer_; +extern const TTCN_JSONdescriptor_t INT5nbp_json_; +extern const TTCN_Typedescriptor_t INT5nbp_descr_; +extern UNIVERSAL_CHARSTRING INT5nbp_default_coding; +extern const XERdescriptor_t INT9nbp_xer_; +extern const TTCN_JSONdescriptor_t INT9nbp_json_; +extern const TTCN_Typedescriptor_t INT9nbp_descr_; +extern UNIVERSAL_CHARSTRING INT9nbp_default_coding; +extern const XERdescriptor_t INT13nbp_xer_; +extern const TTCN_JSONdescriptor_t INT13nbp_json_; +extern const TTCN_Typedescriptor_t INT13nbp_descr_; +extern UNIVERSAL_CHARSTRING INT13nbp_default_coding; +extern const XERdescriptor_t INT15nbp_xer_; +extern const TTCN_JSONdescriptor_t INT15nbp_json_; +extern const TTCN_Typedescriptor_t INT15nbp_descr_; +extern UNIVERSAL_CHARSTRING INT15nbp_default_coding; +extern const TTCN_RAWdescriptor_t BIT6__BO__LAST_raw_; +extern const XERdescriptor_t BIT6__BO__LAST_xer_; +extern const TTCN_JSONdescriptor_t BIT6__BO__LAST_json_; +extern const TTCN_Typedescriptor_t BIT6__BO__LAST_descr_; +extern UNIVERSAL_CHARSTRING BIT6__BO__LAST_default_coding; +extern const TTCN_RAWdescriptor_t BIT16__BO__LAST_raw_; +extern const XERdescriptor_t BIT16__BO__LAST_xer_; +extern const TTCN_JSONdescriptor_t BIT16__BO__LAST_json_; +extern const TTCN_Typedescriptor_t BIT16__BO__LAST_descr_; +extern UNIVERSAL_CHARSTRING BIT16__BO__LAST_default_coding; +extern const TTCN_RAWdescriptor_t BIT32__BO__LAST_raw_; +extern const XERdescriptor_t BIT32__BO__LAST_xer_; +extern const TTCN_JSONdescriptor_t BIT32__BO__LAST_json_; +extern const TTCN_Typedescriptor_t BIT32__BO__LAST_descr_; +extern UNIVERSAL_CHARSTRING BIT32__BO__LAST_default_coding; +extern const TTCN_RAWdescriptor_t Dummy_raw_; +extern const XERdescriptor_t Dummy_xer_; +extern const TTCN_JSONdescriptor_t Dummy_json_; +extern const TTCN_OERdescriptor_t Dummy_oer_; +extern const TTCN_Typedescriptor_t Dummy_descr_; +extern UNIVERSAL_CHARSTRING Dummy_default_coding; +extern const TTCN_RAWdescriptor_t OCT0_raw_; +extern const XERdescriptor_t OCT0_xer_; +extern const TTCN_JSONdescriptor_t OCT0_json_; +extern const TTCN_OERdescriptor_t OCT0_oer_; +extern const TTCN_Typedescriptor_t OCT0_descr_; +extern UNIVERSAL_CHARSTRING OCT0_default_coding; +extern const TTCN_RAWdescriptor_t OCT1_raw_; +extern const XERdescriptor_t OCT1_xer_; +extern const TTCN_JSONdescriptor_t OCT1_json_; +extern const TTCN_OERdescriptor_t OCT1_oer_; +extern const TTCN_Typedescriptor_t OCT1_descr_; +extern UNIVERSAL_CHARSTRING OCT1_default_coding; +extern const TTCN_RAWdescriptor_t OCT2_raw_; +extern const XERdescriptor_t OCT2_xer_; +extern const TTCN_JSONdescriptor_t OCT2_json_; +extern const TTCN_OERdescriptor_t OCT2_oer_; +extern const TTCN_Typedescriptor_t OCT2_descr_; +extern UNIVERSAL_CHARSTRING OCT2_default_coding; +extern const TTCN_RAWdescriptor_t OCT3_raw_; +extern const XERdescriptor_t OCT3_xer_; +extern const TTCN_JSONdescriptor_t OCT3_json_; +extern const TTCN_OERdescriptor_t OCT3_oer_; +extern const TTCN_Typedescriptor_t OCT3_descr_; +extern UNIVERSAL_CHARSTRING OCT3_default_coding; +extern const TTCN_RAWdescriptor_t OCT4_raw_; +extern const XERdescriptor_t OCT4_xer_; +extern const TTCN_JSONdescriptor_t OCT4_json_; +extern const TTCN_OERdescriptor_t OCT4_oer_; +extern const TTCN_Typedescriptor_t OCT4_descr_; +extern UNIVERSAL_CHARSTRING OCT4_default_coding; +extern const TTCN_RAWdescriptor_t OCT5_raw_; +extern const XERdescriptor_t OCT5_xer_; +extern const TTCN_JSONdescriptor_t OCT5_json_; +extern const TTCN_OERdescriptor_t OCT5_oer_; +extern const TTCN_Typedescriptor_t OCT5_descr_; +extern UNIVERSAL_CHARSTRING OCT5_default_coding; +extern const TTCN_RAWdescriptor_t OCT6_raw_; +extern const XERdescriptor_t OCT6_xer_; +extern const TTCN_JSONdescriptor_t OCT6_json_; +extern const TTCN_OERdescriptor_t OCT6_oer_; +extern const TTCN_Typedescriptor_t OCT6_descr_; +extern UNIVERSAL_CHARSTRING OCT6_default_coding; +extern const TTCN_RAWdescriptor_t OCT7_raw_; +extern const XERdescriptor_t OCT7_xer_; +extern const TTCN_JSONdescriptor_t OCT7_json_; +extern const TTCN_OERdescriptor_t OCT7_oer_; +extern const TTCN_Typedescriptor_t OCT7_descr_; +extern UNIVERSAL_CHARSTRING OCT7_default_coding; +extern const TTCN_RAWdescriptor_t OCT8_raw_; +extern const XERdescriptor_t OCT8_xer_; +extern const TTCN_JSONdescriptor_t OCT8_json_; +extern const TTCN_OERdescriptor_t OCT8_oer_; +extern const TTCN_Typedescriptor_t OCT8_descr_; +extern UNIVERSAL_CHARSTRING OCT8_default_coding; +extern const TTCN_RAWdescriptor_t OCT9_raw_; +extern const XERdescriptor_t OCT9_xer_; +extern const TTCN_JSONdescriptor_t OCT9_json_; +extern const TTCN_OERdescriptor_t OCT9_oer_; +extern const TTCN_Typedescriptor_t OCT9_descr_; +extern UNIVERSAL_CHARSTRING OCT9_default_coding; +extern const TTCN_RAWdescriptor_t OCT10_raw_; +extern const XERdescriptor_t OCT10_xer_; +extern const TTCN_JSONdescriptor_t OCT10_json_; +extern const TTCN_OERdescriptor_t OCT10_oer_; +extern const TTCN_Typedescriptor_t OCT10_descr_; +extern UNIVERSAL_CHARSTRING OCT10_default_coding; +extern const TTCN_RAWdescriptor_t OCT11_raw_; +extern const XERdescriptor_t OCT11_xer_; +extern const TTCN_JSONdescriptor_t OCT11_json_; +extern const TTCN_OERdescriptor_t OCT11_oer_; +extern const TTCN_Typedescriptor_t OCT11_descr_; +extern UNIVERSAL_CHARSTRING OCT11_default_coding; +extern const TTCN_RAWdescriptor_t OCT12_raw_; +extern const XERdescriptor_t OCT12_xer_; +extern const TTCN_JSONdescriptor_t OCT12_json_; +extern const TTCN_OERdescriptor_t OCT12_oer_; +extern const TTCN_Typedescriptor_t OCT12_descr_; +extern UNIVERSAL_CHARSTRING OCT12_default_coding; +extern const TTCN_RAWdescriptor_t OCT13_raw_; +extern const XERdescriptor_t OCT13_xer_; +extern const TTCN_JSONdescriptor_t OCT13_json_; +extern const TTCN_OERdescriptor_t OCT13_oer_; +extern const TTCN_Typedescriptor_t OCT13_descr_; +extern UNIVERSAL_CHARSTRING OCT13_default_coding; +extern const TTCN_RAWdescriptor_t OCT14_raw_; +extern const XERdescriptor_t OCT14_xer_; +extern const TTCN_JSONdescriptor_t OCT14_json_; +extern const TTCN_OERdescriptor_t OCT14_oer_; +extern const TTCN_Typedescriptor_t OCT14_descr_; +extern UNIVERSAL_CHARSTRING OCT14_default_coding; +extern const TTCN_RAWdescriptor_t OCT15_raw_; +extern const XERdescriptor_t OCT15_xer_; +extern const TTCN_JSONdescriptor_t OCT15_json_; +extern const TTCN_OERdescriptor_t OCT15_oer_; +extern const TTCN_Typedescriptor_t OCT15_descr_; +extern UNIVERSAL_CHARSTRING OCT15_default_coding; +extern const TTCN_RAWdescriptor_t OCT16_raw_; +extern const XERdescriptor_t OCT16_xer_; +extern const TTCN_JSONdescriptor_t OCT16_json_; +extern const TTCN_OERdescriptor_t OCT16_oer_; +extern const TTCN_Typedescriptor_t OCT16_descr_; +extern UNIVERSAL_CHARSTRING OCT16_default_coding; +extern const TTCN_RAWdescriptor_t OCT17_raw_; +extern const XERdescriptor_t OCT17_xer_; +extern const TTCN_JSONdescriptor_t OCT17_json_; +extern const TTCN_OERdescriptor_t OCT17_oer_; +extern const TTCN_Typedescriptor_t OCT17_descr_; +extern UNIVERSAL_CHARSTRING OCT17_default_coding; +extern const TTCN_RAWdescriptor_t OCT18_raw_; +extern const XERdescriptor_t OCT18_xer_; +extern const TTCN_JSONdescriptor_t OCT18_json_; +extern const TTCN_OERdescriptor_t OCT18_oer_; +extern const TTCN_Typedescriptor_t OCT18_descr_; +extern UNIVERSAL_CHARSTRING OCT18_default_coding; +extern const TTCN_RAWdescriptor_t OCT19_raw_; +extern const XERdescriptor_t OCT19_xer_; +extern const TTCN_JSONdescriptor_t OCT19_json_; +extern const TTCN_OERdescriptor_t OCT19_oer_; +extern const TTCN_Typedescriptor_t OCT19_descr_; +extern UNIVERSAL_CHARSTRING OCT19_default_coding; +extern const TTCN_RAWdescriptor_t OCT20_raw_; +extern const XERdescriptor_t OCT20_xer_; +extern const TTCN_JSONdescriptor_t OCT20_json_; +extern const TTCN_OERdescriptor_t OCT20_oer_; +extern const TTCN_Typedescriptor_t OCT20_descr_; +extern UNIVERSAL_CHARSTRING OCT20_default_coding; +extern const TTCN_RAWdescriptor_t OCT32_raw_; +extern const XERdescriptor_t OCT32_xer_; +extern const TTCN_JSONdescriptor_t OCT32_json_; +extern const TTCN_OERdescriptor_t OCT32_oer_; +extern const TTCN_Typedescriptor_t OCT32_descr_; +extern UNIVERSAL_CHARSTRING OCT32_default_coding; +extern const TTCN_RAWdescriptor_t OCT34_raw_; +extern const XERdescriptor_t OCT34_xer_; +extern const TTCN_JSONdescriptor_t OCT34_json_; +extern const TTCN_OERdescriptor_t OCT34_oer_; +extern const TTCN_Typedescriptor_t OCT34_descr_; +extern UNIVERSAL_CHARSTRING OCT34_default_coding; +extern const TTCN_RAWdescriptor_t OCT46_raw_; +extern const XERdescriptor_t OCT46_xer_; +extern const TTCN_JSONdescriptor_t OCT46_json_; +extern const TTCN_OERdescriptor_t OCT46_oer_; +extern const TTCN_Typedescriptor_t OCT46_descr_; +extern UNIVERSAL_CHARSTRING OCT46_default_coding; +extern const XERdescriptor_t OCT1__260_xer_; +extern const TTCN_JSONdescriptor_t OCT1__260_json_; +extern const TTCN_OERdescriptor_t OCT1__260_oer_; +extern const TTCN_Typedescriptor_t OCT1__260_descr_; +extern UNIVERSAL_CHARSTRING OCT1__260_default_coding; +extern const XERdescriptor_t OCT1__8_xer_; +extern const TTCN_JSONdescriptor_t OCT1__8_json_; +extern const TTCN_OERdescriptor_t OCT1__8_oer_; +extern const TTCN_Typedescriptor_t OCT1__8_descr_; +extern UNIVERSAL_CHARSTRING OCT1__8_default_coding; +extern const XERdescriptor_t OCT1__12_xer_; +extern const TTCN_JSONdescriptor_t OCT1__12_json_; +extern const TTCN_OERdescriptor_t OCT1__12_oer_; +extern const TTCN_Typedescriptor_t OCT1__12_descr_; +extern UNIVERSAL_CHARSTRING OCT1__12_default_coding; +extern const XERdescriptor_t OCT1__32_xer_; +extern const TTCN_JSONdescriptor_t OCT1__32_json_; +extern const TTCN_OERdescriptor_t OCT1__32_oer_; +extern const TTCN_Typedescriptor_t OCT1__32_descr_; +extern UNIVERSAL_CHARSTRING OCT1__32_default_coding; +extern const XERdescriptor_t OCT1__50_xer_; +extern const TTCN_JSONdescriptor_t OCT1__50_json_; +extern const TTCN_OERdescriptor_t OCT1__50_oer_; +extern const TTCN_Typedescriptor_t OCT1__50_descr_; +extern UNIVERSAL_CHARSTRING OCT1__50_default_coding; +extern const XERdescriptor_t OCT3__8_xer_; +extern const TTCN_JSONdescriptor_t OCT3__8_json_; +extern const TTCN_OERdescriptor_t OCT3__8_oer_; +extern const TTCN_Typedescriptor_t OCT3__8_descr_; +extern UNIVERSAL_CHARSTRING OCT3__8_default_coding; +extern const XERdescriptor_t OCTN_xer_; +extern const TTCN_JSONdescriptor_t OCTN_json_; +extern const TTCN_OERdescriptor_t OCTN_oer_; +extern const TTCN_Typedescriptor_t OCTN_descr_; +extern UNIVERSAL_CHARSTRING OCTN_default_coding; +extern const TTCN_RAWdescriptor_t HEX1_raw_; +extern const XERdescriptor_t HEX1_xer_; +extern const TTCN_JSONdescriptor_t HEX1_json_; +extern const TTCN_Typedescriptor_t HEX1_descr_; +extern UNIVERSAL_CHARSTRING HEX1_default_coding; +extern const XERdescriptor_t HEX0__16_xer_; +extern const TTCN_JSONdescriptor_t HEX0__16_json_; +extern const TTCN_Typedescriptor_t HEX0__16_descr_; +extern UNIVERSAL_CHARSTRING HEX0__16_default_coding; +extern const XERdescriptor_t HEX5__16_xer_; +extern const TTCN_JSONdescriptor_t HEX5__16_json_; +extern const TTCN_Typedescriptor_t HEX5__16_descr_; +extern UNIVERSAL_CHARSTRING HEX5__16_default_coding; +extern const XERdescriptor_t HEX1__32_xer_; +extern const TTCN_JSONdescriptor_t HEX1__32_json_; +extern const TTCN_Typedescriptor_t HEX1__32_descr_; +extern UNIVERSAL_CHARSTRING HEX1__32_default_coding; +extern const TTCN_RAWdescriptor_t INT1_raw_; +extern const XERdescriptor_t INT1_xer_; +extern const TTCN_JSONdescriptor_t INT1_json_; +extern const TTCN_Typedescriptor_t INT1_descr_; +extern UNIVERSAL_CHARSTRING INT1_default_coding; +extern const TTCN_RAWdescriptor_t LIN1_raw_; +extern const XERdescriptor_t LIN1_xer_; +extern const TTCN_JSONdescriptor_t LIN1_json_; +extern const TTCN_Typedescriptor_t LIN1_descr_; +extern UNIVERSAL_CHARSTRING LIN1_default_coding; +extern const TTCN_RAWdescriptor_t LIN2_raw_; +extern const XERdescriptor_t LIN2_xer_; +extern const TTCN_JSONdescriptor_t LIN2_json_; +extern const TTCN_Typedescriptor_t LIN2_descr_; +extern UNIVERSAL_CHARSTRING LIN2_default_coding; +extern const TTCN_RAWdescriptor_t LIN2__BO__LAST_raw_; +extern const XERdescriptor_t LIN2__BO__LAST_xer_; +extern const TTCN_JSONdescriptor_t LIN2__BO__LAST_json_; +extern const TTCN_Typedescriptor_t LIN2__BO__LAST_descr_; +extern UNIVERSAL_CHARSTRING LIN2__BO__LAST_default_coding; +extern const TTCN_RAWdescriptor_t LIN3__BO__LAST_raw_; +extern const XERdescriptor_t LIN3__BO__LAST_xer_; +extern const TTCN_JSONdescriptor_t LIN3__BO__LAST_json_; +extern const TTCN_Typedescriptor_t LIN3__BO__LAST_descr_; +extern UNIVERSAL_CHARSTRING LIN3__BO__LAST_default_coding; +extern const TTCN_RAWdescriptor_t LIN4__BO__LAST_raw_; +extern const XERdescriptor_t LIN4__BO__LAST_xer_; +extern const TTCN_JSONdescriptor_t LIN4__BO__LAST_json_; +extern const TTCN_Typedescriptor_t LIN4__BO__LAST_descr_; +extern UNIVERSAL_CHARSTRING LIN4__BO__LAST_default_coding; +extern const TTCN_RAWdescriptor_t INT1b_raw_; +extern const XERdescriptor_t INT1b_xer_; +extern const TTCN_JSONdescriptor_t INT1b_json_; +extern const TTCN_Typedescriptor_t INT1b_descr_; +extern UNIVERSAL_CHARSTRING INT1b_default_coding; +extern const TTCN_RAWdescriptor_t INT2b_raw_; +extern const XERdescriptor_t INT2b_xer_; +extern const TTCN_JSONdescriptor_t INT2b_json_; +extern const TTCN_Typedescriptor_t INT2b_descr_; +extern UNIVERSAL_CHARSTRING INT2b_default_coding; +extern const TTCN_RAWdescriptor_t INT3b_raw_; +extern const XERdescriptor_t INT3b_xer_; +extern const TTCN_JSONdescriptor_t INT3b_json_; +extern const TTCN_Typedescriptor_t INT3b_descr_; +extern UNIVERSAL_CHARSTRING INT3b_default_coding; +extern const TTCN_RAWdescriptor_t INT4b_raw_; +extern const XERdescriptor_t INT4b_xer_; +extern const TTCN_JSONdescriptor_t INT4b_json_; +extern const TTCN_Typedescriptor_t INT4b_descr_; +extern UNIVERSAL_CHARSTRING INT4b_default_coding; +extern const TTCN_RAWdescriptor_t INT5b_raw_; +extern const XERdescriptor_t INT5b_xer_; +extern const TTCN_JSONdescriptor_t INT5b_json_; +extern const TTCN_Typedescriptor_t INT5b_descr_; +extern UNIVERSAL_CHARSTRING INT5b_default_coding; +extern const TTCN_RAWdescriptor_t INT6b_raw_; +extern const XERdescriptor_t INT6b_xer_; +extern const TTCN_JSONdescriptor_t INT6b_json_; +extern const TTCN_Typedescriptor_t INT6b_descr_; +extern UNIVERSAL_CHARSTRING INT6b_default_coding; +extern const TTCN_RAWdescriptor_t INT7b_raw_; +extern const XERdescriptor_t INT7b_xer_; +extern const TTCN_JSONdescriptor_t INT7b_json_; +extern const TTCN_Typedescriptor_t INT7b_descr_; +extern UNIVERSAL_CHARSTRING INT7b_default_coding; +extern const TTCN_RAWdescriptor_t INT11b__BO__LAST_raw_; +extern const XERdescriptor_t INT11b__BO__LAST_xer_; +extern const TTCN_JSONdescriptor_t INT11b__BO__LAST_json_; +extern const TTCN_Typedescriptor_t INT11b__BO__LAST_descr_; +extern UNIVERSAL_CHARSTRING INT11b__BO__LAST_default_coding; +extern const TTCN_RAWdescriptor_t INT12b__BO__LAST_raw_; +extern const XERdescriptor_t INT12b__BO__LAST_xer_; +extern const TTCN_JSONdescriptor_t INT12b__BO__LAST_json_; +extern const TTCN_Typedescriptor_t INT12b__BO__LAST_descr_; +extern UNIVERSAL_CHARSTRING INT12b__BO__LAST_default_coding; +extern const TTCN_RAWdescriptor_t INT13b__BO__LAST_raw_; +extern const XERdescriptor_t INT13b__BO__LAST_xer_; +extern const TTCN_JSONdescriptor_t INT13b__BO__LAST_json_; +extern const TTCN_Typedescriptor_t INT13b__BO__LAST_descr_; +extern UNIVERSAL_CHARSTRING INT13b__BO__LAST_default_coding; +extern const TTCN_RAWdescriptor_t INT14b__BO__LAST_raw_; +extern const XERdescriptor_t INT14b__BO__LAST_xer_; +extern const TTCN_JSONdescriptor_t INT14b__BO__LAST_json_; +extern const TTCN_Typedescriptor_t INT14b__BO__LAST_descr_; +extern UNIVERSAL_CHARSTRING INT14b__BO__LAST_default_coding; +extern const TTCN_RAWdescriptor_t INT18b__BO__LAST_raw_; +extern const XERdescriptor_t INT18b__BO__LAST_xer_; +extern const TTCN_JSONdescriptor_t INT18b__BO__LAST_json_; +extern const TTCN_Typedescriptor_t INT18b__BO__LAST_descr_; +extern UNIVERSAL_CHARSTRING INT18b__BO__LAST_default_coding; +extern const TTCN_RAWdescriptor_t INT20b__BO__LAST_raw_; +extern const XERdescriptor_t INT20b__BO__LAST_xer_; +extern const TTCN_JSONdescriptor_t INT20b__BO__LAST_json_; +extern const TTCN_Typedescriptor_t INT20b__BO__LAST_descr_; +extern UNIVERSAL_CHARSTRING INT20b__BO__LAST_default_coding; +extern const TTCN_RAWdescriptor_t INT31b__BO__LAST_raw_; +extern const XERdescriptor_t INT31b__BO__LAST_xer_; +extern const TTCN_JSONdescriptor_t INT31b__BO__LAST_json_; +extern const TTCN_Typedescriptor_t INT31b__BO__LAST_descr_; +extern UNIVERSAL_CHARSTRING INT31b__BO__LAST_default_coding; +extern const TTCN_RAWdescriptor_t Integers_raw_; +extern const TTCN_Typedescriptor_t Integers_descr_; +extern const XERdescriptor_t Integers_0_xer_; +extern const TTCN_JSONdescriptor_t Integers_0_json_; +extern const TTCN_Typedescriptor_t Integers_0_descr_; +extern UNIVERSAL_CHARSTRING Integers_0_default_coding; +extern UNIVERSAL_CHARSTRING Integers_default_coding; +extern const TTCN_RAWdescriptor_t Integer__array_raw_; +extern const TTCN_Typedescriptor_t Integer__array_descr_; +extern UNIVERSAL_CHARSTRING Integer__array_0_default_coding; +extern UNIVERSAL_CHARSTRING Integer__array_default_coding; +extern const TTCN_Typedescriptor_t& Dummy__comptype_descr_; +extern const TTCN_Typedescriptor_t& Dummy__CT_descr_; +extern const TTCN_RAWdescriptor_t Protocols_raw_; +extern const TTCN_Typedescriptor_t Protocols_descr_; +extern UNIVERSAL_CHARSTRING Protocols_default_coding; +extern const TTCN_RAWdescriptor_t OCT1List_raw_; +extern const TTCN_Typedescriptor_t OCT1List_descr_; +extern const XERdescriptor_t OCT1List_0_xer_; +extern const TTCN_JSONdescriptor_t OCT1List_0_json_; +extern const TTCN_OERdescriptor_t OCT1List_0_oer_; +extern const TTCN_Typedescriptor_t OCT1List_0_descr_; +extern UNIVERSAL_CHARSTRING OCT1List_0_default_coding; +extern UNIVERSAL_CHARSTRING OCT1List_default_coding; +extern const TTCN_RAWdescriptor_t OCT2List_raw_; +extern const TTCN_Typedescriptor_t OCT2List_descr_; +extern const XERdescriptor_t OCT2List_0_xer_; +extern const TTCN_JSONdescriptor_t OCT2List_0_json_; +extern const TTCN_OERdescriptor_t OCT2List_0_oer_; +extern const TTCN_Typedescriptor_t OCT2List_0_descr_; +extern UNIVERSAL_CHARSTRING OCT2List_0_default_coding; +extern UNIVERSAL_CHARSTRING OCT2List_default_coding; +extern const TTCN_RAWdescriptor_t OCT3List_raw_; +extern const TTCN_Typedescriptor_t OCT3List_descr_; +extern const XERdescriptor_t OCT3List_0_xer_; +extern const TTCN_JSONdescriptor_t OCT3List_0_json_; +extern const TTCN_OERdescriptor_t OCT3List_0_oer_; +extern const TTCN_Typedescriptor_t OCT3List_0_descr_; +extern UNIVERSAL_CHARSTRING OCT3List_0_default_coding; +extern UNIVERSAL_CHARSTRING OCT3List_default_coding; +extern const TTCN_RAWdescriptor_t OCT4List_raw_; +extern const TTCN_Typedescriptor_t OCT4List_descr_; +extern const XERdescriptor_t OCT4List_0_xer_; +extern const TTCN_JSONdescriptor_t OCT4List_0_json_; +extern const TTCN_OERdescriptor_t OCT4List_0_oer_; +extern const TTCN_Typedescriptor_t OCT4List_0_descr_; +extern UNIVERSAL_CHARSTRING OCT4List_0_default_coding; +extern UNIVERSAL_CHARSTRING OCT4List_default_coding; +extern const TTCN_RAWdescriptor_t OCT5List_raw_; +extern const TTCN_Typedescriptor_t OCT5List_descr_; +extern const XERdescriptor_t OCT5List_0_xer_; +extern const TTCN_JSONdescriptor_t OCT5List_0_json_; +extern const TTCN_OERdescriptor_t OCT5List_0_oer_; +extern const TTCN_Typedescriptor_t OCT5List_0_descr_; +extern UNIVERSAL_CHARSTRING OCT5List_0_default_coding; +extern UNIVERSAL_CHARSTRING OCT5List_default_coding; +extern const TTCN_RAWdescriptor_t OCT6List_raw_; +extern const TTCN_Typedescriptor_t OCT6List_descr_; +extern const XERdescriptor_t OCT6List_0_xer_; +extern const TTCN_JSONdescriptor_t OCT6List_0_json_; +extern const TTCN_OERdescriptor_t OCT6List_0_oer_; +extern const TTCN_Typedescriptor_t OCT6List_0_descr_; +extern UNIVERSAL_CHARSTRING OCT6List_0_default_coding; +extern UNIVERSAL_CHARSTRING OCT6List_default_coding; +extern const TTCN_RAWdescriptor_t OCT7List_raw_; +extern const TTCN_Typedescriptor_t OCT7List_descr_; +extern const XERdescriptor_t OCT7List_0_xer_; +extern const TTCN_JSONdescriptor_t OCT7List_0_json_; +extern const TTCN_OERdescriptor_t OCT7List_0_oer_; +extern const TTCN_Typedescriptor_t OCT7List_0_descr_; +extern UNIVERSAL_CHARSTRING OCT7List_0_default_coding; +extern UNIVERSAL_CHARSTRING OCT7List_default_coding; +extern const TTCN_Typedescriptor_t ListOfDummy__comptype_descr_; +extern const TTCN_Typedescriptor_t ListOfDummy__CT_descr_; +extern const TTCN_RAWdescriptor_t ProtocolList_raw_; +extern const TTCN_Typedescriptor_t ProtocolList_descr_; +extern UNIVERSAL_CHARSTRING ProtocolList_0_default_coding; +extern UNIVERSAL_CHARSTRING ProtocolList_default_coding; +extern TTCN_Module module_object; + +} /* end of namespace */ + +#endif diff --git a/titan/MNCC_EncDec.cc b/titan/MNCC_EncDec.cc new file mode 100644 index 0000000..cdfe3ed --- /dev/null +++ b/titan/MNCC_EncDec.cc @@ -0,0 +1,321 @@ +#include "mncc.h" +#include "MNCC_Types.hh" + +#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) + +namespace MNCC__Types { + +static void enc_bcap(struct gsm_mncc_bearer_cap *out, const MNCC__bearer__cap& in) +{ + out->transfer = in.transfer(); + out->mode = in.mode(); + out->coding = in.coding(); + out->radio = in.radio(); + out->speech_ctm = in.speech__ctm(); + + for (int i = 0; i < in.speech__ver().lengthof(); i++) + out->speech_ver[i] = in.speech__ver()[i]; + + if (in.data().is_value()) { + MNCC__bearer__cap__data data = in.data(); + out->data.rate_adaption = (gsm48_bcap_ra) (int) data.rate__adaptation(); + out->data.sig_access = (gsm48_bcap_sig_access) (int) data.sig__access(); + out->data.async = data.async(); + out->data.nr_stop_bits = data.nr__stop__bits(); + out->data.nr_data_bits = data.nr__data__bits(); + out->data.user_rate = (gsm48_bcap_user_rate) (int) data.user__rate(); + out->data.parity = (gsm48_bcap_parity) (int) data.parity(); + out->data.interm_rate = (gsm48_bcap_interm_rate) (int) data.interm__rate(); + out->data.transp = (gsm48_bcap_transp) (int) data.transp(); + out->data.modem_type = (gsm48_bcap_modem_type) (int) data.modem__type(); + } + +} + +static MNCC__bearer__cap dec_bcap(const struct gsm_mncc_bearer_cap *in) +{ + MNCC__bearer__cap__data data; + MNCC__speech__vers vers; + data = MNCC__bearer__cap__data((GSM48__bcap__ra) in->data.rate_adaption, + (GSM48__bcap__sig__access) in->data.sig_access, + in->data.async, + in->data.nr_stop_bits, + in->data.nr_data_bits, + (GSM48__bcap__user__rate) in->data.user_rate, + (GSM48__bcap__parity) in->data.parity, + (GSM48__bcap__interm__rate) in->data.interm_rate, + (GSM48__bcap__transp) in->data.transp, + (GSM48__bcap__modem__type) in->data.modem_type); + + for (unsigned int i = 0; i < ARRAY_SIZE(in->speech_ver); i++) + vers[0] = in->speech_ver[0]; + + return MNCC__bearer__cap(in->transfer, in->mode, in->coding, in->radio, in->speech_ctm, + vers, data); +} + + +static void enc_number(struct gsm_mncc_number *num, const MNCC__number& in) +{ + num->type = in.number__type(); + num->plan = in.plan(); + num->present = in.presence(); + num->screen = in.screen(); + strncpy(num->number, in.number(), sizeof(num->number)); +} + +static MNCC__number dec_number(const struct gsm_mncc_number *num) +{ + return MNCC__number(num->type, num->plan,num->present, num->screen, num->number); +} + +OCTETSTRING enc__MNCC__PDU(const MNCC__PDU& in) +{ + struct gsm_mncc mncc; + OCTETSTRING ret_val; + + memset(&mncc, 0, sizeof(mncc)); + mncc.msg_type = in.msg__type(); + + switch (in.u().get_selection()) { + case MNCC__MsgUnion::ALT_signal: { + const MNCC__PDU__Signal& in_sig = in.u().signal(); + mncc.callref = in_sig.callref(); + if (in_sig.bearer__cap().is_value()) { + enc_bcap(&mncc.bearer_cap, in_sig.bearer__cap()); + mncc.fields |= MNCC_F_BEARER_CAP; + } + if (in_sig.called().is_value()) { + enc_number(&mncc.called, in_sig.called()); + mncc.fields |= MNCC_F_CALLED; + } + if (in_sig.calling().is_value()) { + enc_number(&mncc.calling, in_sig.calling()); + mncc.fields |= MNCC_F_CALLING; + } + if (in_sig.redirecting().is_value()) { + enc_number(&mncc.redirecting, in_sig.redirecting()); + mncc.fields |= MNCC_F_REDIRECTING; + } + if (in_sig.connected().is_value()) { + enc_number(&mncc.connected, in_sig.connected()); + mncc.fields |= MNCC_F_CONNECTED; + } + if (in_sig.cause().is_value()) { + const MNCC__cause &cause = in_sig.cause(); + TTCN_Buffer ttcn_buffer(cause.diag()); + mncc.cause.location = cause.location(); + mncc.cause.coding = cause.coding(); + mncc.cause.rec = cause.rec(); + mncc.cause.rec_val = cause.rec__val(); + mncc.cause.value = cause.val(); + mncc.cause.diag_len = ttcn_buffer.get_len(); + if (mncc.cause.diag_len > (int) sizeof(mncc.cause.diag)) { + TTCN_error("MNCC diagnostics length %u too long", mncc.cause.diag_len); + mncc.cause.diag_len = sizeof(mncc.cause.diag); + } + memcpy(mncc.cause.diag, ttcn_buffer.get_data(), ttcn_buffer.get_len()); + mncc.fields |= MNCC_F_CAUSE; + } + if (in_sig.progress().is_value()) { + const MNCC__progress &progress = in_sig.progress(); + mncc.progress.coding = progress.coding(); + mncc.progress.location = progress.location(); + mncc.progress.descr = progress.descr(); + mncc.fields |= MNCC_F_PROGRESS; + } + if (in_sig.useruser().is_value()) { + const MNCC__useruser &useruser = in_sig.useruser(); + mncc.useruser.proto = useruser.proto(); + strncpy(mncc.useruser.info, useruser.info(), sizeof(mncc.useruser.info)); + mncc.fields |= MNCC_F_USERUSER; + } + if (in_sig.facility().is_value()) { + const CHARSTRING &fac = in_sig.facility(); + strncpy(mncc.facility.info, fac, sizeof(mncc.facility.info)); + mncc.facility.len = strlen(mncc.facility.info); + mncc.fields |= MNCC_F_FACILITY; + } + if (in_sig.cccap().is_value()) { + const MNCC__cccap &cccap = in_sig.cccap(); + mncc.cccap.dtmf = cccap.dtmf(); + mncc.cccap.pcp = cccap.pcp(); + mncc.fields |= MNCC_F_CCCAP; + } + if (in_sig.ssversion().is_value()) { + const CHARSTRING &ssv = in_sig.ssversion(); + strncpy(mncc.ssversion.info, ssv, sizeof(mncc.ssversion.info)); + mncc.ssversion.len = strlen(mncc.ssversion.info); + mncc.fields |= MNCC_F_SSVERSION; + } + mncc.clir.sup = in_sig.clir__sup(); + mncc.clir.inv = in_sig.clir__inv(); + if (in_sig.signal().is_value()) { + const INTEGER &sig = in_sig.signal(); + mncc.signal = sig; + mncc.fields |= MNCC_F_SIGNAL; + } + if (in_sig.keypad().is_value()) { + const CHARSTRING &kpd = in_sig.keypad(); + mncc.signal = (int) kpd[0].get_char(); + mncc.fields |= MNCC_F_KEYPAD; + } + mncc.more = in_sig.more(); + mncc.notify = in_sig.notify(); + if (in_sig.emergency().is_value()) { + const INTEGER &emerg = in_sig.emergency(); + mncc.emergency = emerg; + mncc.fields |= MNCC_F_EMERGENCY; + } + strncpy(mncc.imsi, in_sig.imsi(), sizeof(mncc.imsi)); + mncc.lchan_type = in_sig.lchan__type(); + mncc.lchan_mode = in_sig.lchan__mode(); + ret_val = OCTETSTRING(sizeof(mncc), (uint8_t *)&mncc); + } + break; + case MNCC__MsgUnion::ALT_data: + struct gsm_data_frame data; + memset(&data, 0, sizeof(data)); + data.msg_type = in.msg__type(); + ret_val = OCTETSTRING(sizeof(data), (uint8_t *)&data); + ret_val = ret_val & in.u().data().data(); + break; + case MNCC__MsgUnion::ALT_rtp: + struct gsm_mncc_rtp rtp; + memset(&rtp, 0, sizeof(rtp)); + rtp.msg_type = in.msg__type(); + rtp.callref = in.u().rtp().callref(); + rtp.ip = in.u().rtp().ip(); + rtp.port = in.u().rtp().rtp__port(); + rtp.payload_type = in.u().rtp().payload__type(); + rtp.payload_msg_type = in.u().rtp().payload__msg__type(); + ret_val = OCTETSTRING(sizeof(rtp), (uint8_t *) &rtp); + break; + case MNCC__MsgUnion::ALT_hello: + struct gsm_mncc_hello hello; + memset(&hello, 0, sizeof(hello)); + hello.msg_type = in.msg__type(); + hello.version = in.u().hello().version(); + hello.mncc_size = in.u().hello().mncc__size(); + hello.data_frame_size = in.u().hello().data__frame__size(); + hello.called_offset = in.u().hello().called__offset(); + hello.signal_offset = in.u().hello().signal__offset(); + hello.emergency_offset = in.u().hello().emergency__offset(); + hello.lchan_type_offset = in.u().hello().lchan__type__offset(); + ret_val = OCTETSTRING(sizeof(hello), (uint8_t *) &hello); + break; + } + + return ret_val; +} + +MNCC__PDU dec__MNCC__PDU(const OCTETSTRING& in) +{ + TTCN_Buffer ttcn_buffer(in); + const struct gsm_mncc *in_mncc; + MNCC__PDU__Signal sign; + const struct gsm_mncc_hello *in_hello; + MNCC__PDU__Hello hello; + const struct gsm_data_frame *in_data; + MNCC__PDU__Data data; + const struct gsm_mncc_rtp *in_rtp; + MNCC__PDU__Rtp rtp; + MNCC__MsgUnion u; + + in_mncc = (struct gsm_mncc *) ttcn_buffer.get_read_data(); + + sign.set_implicit_omit(); + hello.set_implicit_omit(); + data.set_implicit_omit(); + rtp.set_implicit_omit(); + + switch (in_mncc->msg_type) { + case MNCC_SOCKET_HELLO: + in_hello = (const struct gsm_mncc_hello *) in_mncc; + hello = MNCC__PDU__Hello(in_hello->version, + in_hello->mncc_size, + in_hello->data_frame_size, + in_hello->called_offset, + in_hello->signal_offset, + in_hello->emergency_offset, + in_hello->lchan_type_offset); + u.hello() = hello; + break; + case GSM_TCHF_FRAME: + case GSM_TCHF_FRAME_EFR: + case GSM_TCHH_FRAME: + case GSM_TCH_FRAME_AMR: + case GSM_BAD_FRAME: + in_data = (const struct gsm_data_frame *) in_mncc; + u.data() = MNCC__PDU__Data(in_data->callref, + substr(in, offsetof(struct gsm_data_frame, data), + in.lengthof() - offsetof(struct gsm_data_frame, data))); + break; + case MNCC_RTP_CREATE: + case MNCC_RTP_CONNECT: + case MNCC_RTP_FREE: + in_rtp = (const struct gsm_mncc_rtp *) in_mncc; + rtp = MNCC__PDU__Rtp(in_rtp->callref, in_rtp->ip, in_rtp->port, in_rtp->payload_type, + in_rtp->payload_msg_type); + u.rtp() = rtp; + break; + default: + sign.callref() = in_mncc->callref; + if (in_mncc->fields & MNCC_F_BEARER_CAP) { + sign.bearer__cap() = dec_bcap(&in_mncc->bearer_cap); + } + if (in_mncc->fields & MNCC_F_CALLED) + sign.called() = dec_number(&in_mncc->called); + if (in_mncc->fields & MNCC_F_CALLING) + sign.calling() = dec_number(&in_mncc->calling); + if (in_mncc->fields & MNCC_F_REDIRECTING) + sign.redirecting() = dec_number(&in_mncc->redirecting); + if (in_mncc->fields & MNCC_F_CONNECTED) + sign.connected() = dec_number(&in_mncc->connected); + if (in_mncc->fields & MNCC_F_CAUSE) { + sign.cause() = MNCC__cause(in_mncc->cause.location, + in_mncc->cause.coding, + in_mncc->cause.rec, + in_mncc->cause.rec_val, + in_mncc->cause.value, + OCTETSTRING(in_mncc->cause.diag_len, + (const uint8_t *)in_mncc->cause.diag)); + } + if (in_mncc->fields & MNCC_F_USERUSER) { + sign.useruser() = MNCC__useruser(in_mncc->useruser.proto, + CHARSTRING(in_mncc->useruser.info)); + } + if (in_mncc->fields & MNCC_F_PROGRESS) { + sign.progress() = MNCC__progress(in_mncc->progress.coding, + in_mncc->progress.location, + in_mncc->progress.descr); + } + if (in_mncc->fields & MNCC_F_EMERGENCY) + sign.emergency() = in_mncc->emergency; + if (in_mncc->fields & MNCC_F_FACILITY) + sign.facility() = CHARSTRING(in_mncc->facility.info); + if (in_mncc->fields & MNCC_F_SSVERSION) + sign.ssversion() = CHARSTRING(in_mncc->ssversion.info); + if (in_mncc->fields & MNCC_F_CCCAP) + sign.cccap() = MNCC__cccap(in_mncc->cccap.dtmf, in_mncc->cccap.pcp); + if (in_mncc->fields & MNCC_F_KEYPAD) { + char kpd[2] = { (char) in_mncc->keypad, 0 }; + sign.keypad() = CHARSTRING(kpd); + } + if (in_mncc->fields & MNCC_F_SIGNAL) + sign.signal() = in_mncc->signal; + + sign.clir__sup() = in_mncc->clir.sup; + sign.clir__inv() = in_mncc->clir.inv; + sign.more() = in_mncc->more; + sign.notify() = in_mncc->notify; + sign.imsi() = CHARSTRING(in_mncc->imsi); + sign.lchan__type() = in_mncc->lchan_type; + sign.lchan__mode() = in_mncc->lchan_mode; + u.signal() = sign; + break; + } + return MNCC__PDU(in_mncc->msg_type, u); +} + +} diff --git a/titan/MNCC_Types.cc b/titan/MNCC_Types.cc new file mode 100644 index 0000000..50a1018 --- /dev/null +++ b/titan/MNCC_Types.cc @@ -0,0 +1,33991 @@ +// This C++ source file was generated by the TTCN-3 compiler +// of the TTCN-3 Test Executor version CRL 113 200/6 R3B +// for Harald Welte (laforge@nataraja) on Sun Mar 25 21:50:30 2018 + +// Copyright (c) 2000-2017 Ericsson Telecom AB + +// Do not edit this file unless you know what you are doing. + +/* Including header files */ + +#include "MNCC_Types.hh" + +namespace MNCC__Types { + +/* Prototypes of static functions */ + +static void pre_init_module(); +static void post_init_module(); + +/* Literal string constants */ + +static const OCTETSTRING os_0(0, NULL); +static const CHARSTRING cs_0(0, NULL); +static const unsigned char module_checksum[] = { 0x23, 0x16, 0x8d, 0x81, 0x1d, 0x6b, 0x1a, 0x28, 0x1f, 0xc4, 0xac, 0x47, 0x8f, 0xb2, 0x62, 0x18 }; + +/* Global variable definitions */ + +const TTCN_RAWdescriptor_t int__raw_ = {32,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}; +const XERdescriptor_t int__xer_ = { {"int>\n", "int>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t int__json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t int__descr_ = { "@MNCC_Types.int", &INTEGER_ber_, &int__raw_, &INTEGER_text_, &int__xer_, &int__json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING int__default_coding("RAW"); +const TTCN_RAWdescriptor_t GSM48__bcap__ra_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}; +// No XER for GSM48__bcap__ra +const TTCN_Typedescriptor_t GSM48__bcap__ra_descr_ = { "@MNCC_Types.GSM48_bcap_ra", NULL, &GSM48__bcap__ra_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING GSM48__bcap__ra_default_coding("RAW"); +const TTCN_RAWdescriptor_t GSM48__bcap__sig__access_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}; +// No XER for GSM48__bcap__sig__access +const TTCN_Typedescriptor_t GSM48__bcap__sig__access_descr_ = { "@MNCC_Types.GSM48_bcap_sig_access", NULL, &GSM48__bcap__sig__access_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING GSM48__bcap__sig__access_default_coding("RAW"); +const TTCN_RAWdescriptor_t GSM48__bcap__user__rate_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}; +// No XER for GSM48__bcap__user__rate +const TTCN_Typedescriptor_t GSM48__bcap__user__rate_descr_ = { "@MNCC_Types.GSM48_bcap_user_rate", NULL, &GSM48__bcap__user__rate_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING GSM48__bcap__user__rate_default_coding("RAW"); +const TTCN_RAWdescriptor_t GSM48__bcap__parity_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}; +// No XER for GSM48__bcap__parity +const TTCN_Typedescriptor_t GSM48__bcap__parity_descr_ = { "@MNCC_Types.GSM48_bcap_parity", NULL, &GSM48__bcap__parity_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING GSM48__bcap__parity_default_coding("RAW"); +const TTCN_RAWdescriptor_t GSM48__bcap__interm__rate_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}; +// No XER for GSM48__bcap__interm__rate +const TTCN_Typedescriptor_t GSM48__bcap__interm__rate_descr_ = { "@MNCC_Types.GSM48_bcap_interm_rate", NULL, &GSM48__bcap__interm__rate_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING GSM48__bcap__interm__rate_default_coding("RAW"); +const TTCN_RAWdescriptor_t GSM48__bcap__transp_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}; +// No XER for GSM48__bcap__transp +const TTCN_Typedescriptor_t GSM48__bcap__transp_descr_ = { "@MNCC_Types.GSM48_bcap_transp", NULL, &GSM48__bcap__transp_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING GSM48__bcap__transp_default_coding("RAW"); +const TTCN_RAWdescriptor_t GSM48__bcap__modem__type_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}; +// No XER for GSM48__bcap__modem__type +const TTCN_Typedescriptor_t GSM48__bcap__modem__type_descr_ = { "@MNCC_Types.GSM48_bcap_modem_type", NULL, &GSM48__bcap__modem__type_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING GSM48__bcap__modem__type_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__MsgType_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}; +// No XER for MNCC__MsgType +const TTCN_Typedescriptor_t MNCC__MsgType_descr_ = { "@MNCC_Types.MNCC_MsgType", NULL, &MNCC__MsgType_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__MsgType_default_coding("RAW"); +static INTEGER const_GSM__MAX__FACILITY; +const INTEGER& GSM__MAX__FACILITY = const_GSM__MAX__FACILITY; +static INTEGER const_GSM__MAX__SSVERSION; +const INTEGER& GSM__MAX__SSVERSION = const_GSM__MAX__SSVERSION; +static INTEGER const_GSM__MAX__USERUSER; +const INTEGER& GSM__MAX__USERUSER = const_GSM__MAX__USERUSER; +const TTCN_RAWdescriptor_t MNCC__bearer__cap__data_rate__adaptation_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}; +// No XER for MNCC__bearer__cap__data_rate__adaptation +const TTCN_Typedescriptor_t MNCC__bearer__cap__data_rate__adaptation_descr_ = { "@MNCC_Types.MNCC_bearer_cap_data.rate_adaptation", NULL, &MNCC__bearer__cap__data_rate__adaptation_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__bearer__cap__data_rate__adaptation_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__bearer__cap__data_sig__access_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}; +// No XER for MNCC__bearer__cap__data_sig__access +const TTCN_Typedescriptor_t MNCC__bearer__cap__data_sig__access_descr_ = { "@MNCC_Types.MNCC_bearer_cap_data.sig_access", NULL, &MNCC__bearer__cap__data_sig__access_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__bearer__cap__data_sig__access_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__bearer__cap__data_async_raw_ = {32,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}; +const XERdescriptor_t MNCC__bearer__cap__data_async_xer_ = { {"async>\n", "async>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__bearer__cap__data_async_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__bearer__cap__data_async_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__bearer__cap__data_async_descr_ = { "@MNCC_Types.MNCC_bearer_cap_data.async", &INTEGER_ber_, &MNCC__bearer__cap__data_async_raw_, &INTEGER_text_, &MNCC__bearer__cap__data_async_xer_, &MNCC__bearer__cap__data_async_json_, &MNCC__bearer__cap__data_async_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__bearer__cap__data_async_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__bearer__cap__data_nr__stop__bits_raw_ = {32,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}; +const XERdescriptor_t MNCC__bearer__cap__data_nr__stop__bits_xer_ = { {"nr_stop_bits>\n", "nr_stop_bits>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__bearer__cap__data_nr__stop__bits_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__bearer__cap__data_nr__stop__bits_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__bearer__cap__data_nr__stop__bits_descr_ = { "@MNCC_Types.MNCC_bearer_cap_data.nr_stop_bits", &INTEGER_ber_, &MNCC__bearer__cap__data_nr__stop__bits_raw_, &INTEGER_text_, &MNCC__bearer__cap__data_nr__stop__bits_xer_, &MNCC__bearer__cap__data_nr__stop__bits_json_, &MNCC__bearer__cap__data_nr__stop__bits_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__bearer__cap__data_nr__stop__bits_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__bearer__cap__data_nr__data__bits_raw_ = {32,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}; +const XERdescriptor_t MNCC__bearer__cap__data_nr__data__bits_xer_ = { {"nr_data_bits>\n", "nr_data_bits>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__bearer__cap__data_nr__data__bits_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__bearer__cap__data_nr__data__bits_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__bearer__cap__data_nr__data__bits_descr_ = { "@MNCC_Types.MNCC_bearer_cap_data.nr_data_bits", &INTEGER_ber_, &MNCC__bearer__cap__data_nr__data__bits_raw_, &INTEGER_text_, &MNCC__bearer__cap__data_nr__data__bits_xer_, &MNCC__bearer__cap__data_nr__data__bits_json_, &MNCC__bearer__cap__data_nr__data__bits_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__bearer__cap__data_nr__data__bits_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__bearer__cap__data_user__rate_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}; +// No XER for MNCC__bearer__cap__data_user__rate +const TTCN_Typedescriptor_t MNCC__bearer__cap__data_user__rate_descr_ = { "@MNCC_Types.MNCC_bearer_cap_data.user_rate", NULL, &MNCC__bearer__cap__data_user__rate_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__bearer__cap__data_user__rate_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__bearer__cap__data_parity_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}; +// No XER for MNCC__bearer__cap__data_parity +const TTCN_Typedescriptor_t MNCC__bearer__cap__data_parity_descr_ = { "@MNCC_Types.MNCC_bearer_cap_data.parity", NULL, &MNCC__bearer__cap__data_parity_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__bearer__cap__data_parity_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__bearer__cap__data_interm__rate_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}; +// No XER for MNCC__bearer__cap__data_interm__rate +const TTCN_Typedescriptor_t MNCC__bearer__cap__data_interm__rate_descr_ = { "@MNCC_Types.MNCC_bearer_cap_data.interm_rate", NULL, &MNCC__bearer__cap__data_interm__rate_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__bearer__cap__data_interm__rate_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__bearer__cap__data_transp_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}; +// No XER for MNCC__bearer__cap__data_transp +const TTCN_Typedescriptor_t MNCC__bearer__cap__data_transp_descr_ = { "@MNCC_Types.MNCC_bearer_cap_data.transp", NULL, &MNCC__bearer__cap__data_transp_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__bearer__cap__data_transp_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__bearer__cap__data_modem__type_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}; +// No XER for MNCC__bearer__cap__data_modem__type +const TTCN_Typedescriptor_t MNCC__bearer__cap__data_modem__type_descr_ = { "@MNCC_Types.MNCC_bearer_cap_data.modem_type", NULL, &MNCC__bearer__cap__data_modem__type_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__bearer__cap__data_modem__type_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__bearer__cap__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}; +// No XER for MNCC__bearer__cap__data +const TTCN_Typedescriptor_t MNCC__bearer__cap__data_descr_ = { "@MNCC_Types.MNCC_bearer_cap_data", NULL, &MNCC__bearer__cap__data_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__bearer__cap__data_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__speech__vers_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}; +// No XER for MNCC__speech__vers +const TTCN_Typedescriptor_t MNCC__speech__vers_descr_ = { "@MNCC_Types.MNCC_speech_vers", NULL, &MNCC__speech__vers_raw_, NULL, NULL, NULL, NULL, &MNCC__speech__vers_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; +const TTCN_RAWdescriptor_t MNCC__speech__vers_0_raw_ = {32,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}; +const XERdescriptor_t MNCC__speech__vers_0_xer_ = { {"int>\n", "int>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__speech__vers_0_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__speech__vers_0_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__speech__vers_0_descr_ = { "@MNCC_Types.MNCC_speech_vers.", &INTEGER_ber_, &MNCC__speech__vers_0_raw_, &INTEGER_text_, &MNCC__speech__vers_0_xer_, &MNCC__speech__vers_0_json_, &MNCC__speech__vers_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__speech__vers_0_default_coding("RAW"); +UNIVERSAL_CHARSTRING MNCC__speech__vers_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__bearer__cap_transfer_raw_ = {32,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}; +const XERdescriptor_t MNCC__bearer__cap_transfer_xer_ = { {"transfer>\n", "transfer>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__bearer__cap_transfer_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__bearer__cap_transfer_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__bearer__cap_transfer_descr_ = { "@MNCC_Types.MNCC_bearer_cap.transfer", &INTEGER_ber_, &MNCC__bearer__cap_transfer_raw_, &INTEGER_text_, &MNCC__bearer__cap_transfer_xer_, &MNCC__bearer__cap_transfer_json_, &MNCC__bearer__cap_transfer_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__bearer__cap_transfer_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__bearer__cap_mode_raw_ = {32,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}; +const XERdescriptor_t MNCC__bearer__cap_mode_xer_ = { {"mode>\n", "mode>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__bearer__cap_mode_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__bearer__cap_mode_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__bearer__cap_mode_descr_ = { "@MNCC_Types.MNCC_bearer_cap.mode", &INTEGER_ber_, &MNCC__bearer__cap_mode_raw_, &INTEGER_text_, &MNCC__bearer__cap_mode_xer_, &MNCC__bearer__cap_mode_json_, &MNCC__bearer__cap_mode_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__bearer__cap_mode_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__bearer__cap_coding_raw_ = {32,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}; +const XERdescriptor_t MNCC__bearer__cap_coding_xer_ = { {"coding>\n", "coding>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__bearer__cap_coding_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__bearer__cap_coding_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__bearer__cap_coding_descr_ = { "@MNCC_Types.MNCC_bearer_cap.coding", &INTEGER_ber_, &MNCC__bearer__cap_coding_raw_, &INTEGER_text_, &MNCC__bearer__cap_coding_xer_, &MNCC__bearer__cap_coding_json_, &MNCC__bearer__cap_coding_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__bearer__cap_coding_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__bearer__cap_radio_raw_ = {32,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}; +const XERdescriptor_t MNCC__bearer__cap_radio_xer_ = { {"radio>\n", "radio>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__bearer__cap_radio_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__bearer__cap_radio_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__bearer__cap_radio_descr_ = { "@MNCC_Types.MNCC_bearer_cap.radio", &INTEGER_ber_, &MNCC__bearer__cap_radio_raw_, &INTEGER_text_, &MNCC__bearer__cap_radio_xer_, &MNCC__bearer__cap_radio_json_, &MNCC__bearer__cap_radio_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__bearer__cap_radio_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__bearer__cap_speech__ctm_raw_ = {32,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}; +const XERdescriptor_t MNCC__bearer__cap_speech__ctm_xer_ = { {"speech_ctm>\n", "speech_ctm>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__bearer__cap_speech__ctm_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__bearer__cap_speech__ctm_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__bearer__cap_speech__ctm_descr_ = { "@MNCC_Types.MNCC_bearer_cap.speech_ctm", &INTEGER_ber_, &MNCC__bearer__cap_speech__ctm_raw_, &INTEGER_text_, &MNCC__bearer__cap_speech__ctm_xer_, &MNCC__bearer__cap_speech__ctm_json_, &MNCC__bearer__cap_speech__ctm_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__bearer__cap_speech__ctm_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__bearer__cap_speech__ver_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}; +// No XER for MNCC__bearer__cap_speech__ver +const TTCN_Typedescriptor_t MNCC__bearer__cap_speech__ver_descr_ = { "@MNCC_Types.MNCC_bearer_cap.speech_ver", NULL, &MNCC__bearer__cap_speech__ver_raw_, NULL, NULL, NULL, NULL, &MNCC__speech__vers_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__bearer__cap_speech__ver_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__bearer__cap_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}; +// No XER for MNCC__bearer__cap +const TTCN_Typedescriptor_t MNCC__bearer__cap_descr_ = { "@MNCC_Types.MNCC_bearer_cap", NULL, &MNCC__bearer__cap_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +const TTCN_RAWdescriptor_t MNCC__bearer__cap_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}; +// No XER for MNCC__bearer__cap_data +const TTCN_Typedescriptor_t MNCC__bearer__cap_data_descr_ = { "@MNCC_Types.MNCC_bearer_cap.data", NULL, &MNCC__bearer__cap_data_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__bearer__cap_data_default_coding("RAW"); +UNIVERSAL_CHARSTRING MNCC__bearer__cap_default_coding("RAW"); +static MNCC__bearer__cap_template template_ts__MNCC__bcap__voice; +const MNCC__bearer__cap_template& ts__MNCC__bcap__voice = template_ts__MNCC__bcap__voice; +const TTCN_RAWdescriptor_t GSM48__type__of__number_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}; +// No XER for GSM48__type__of__number +const TTCN_Typedescriptor_t GSM48__type__of__number_descr_ = { "@MNCC_Types.GSM48_type_of_number", NULL, &GSM48__type__of__number_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING GSM48__type__of__number_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__number_number__type_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}; +// No XER for MNCC__number_number__type +const TTCN_Typedescriptor_t MNCC__number_number__type_descr_ = { "@MNCC_Types.MNCC_number.number_type", NULL, &MNCC__number_number__type_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__number_number__type_default_coding("RAW"); +const TTCN_RAWdescriptor_t GSM48__num__plan__ind_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}; +// No XER for GSM48__num__plan__ind +const TTCN_Typedescriptor_t GSM48__num__plan__ind_descr_ = { "@MNCC_Types.GSM48_num_plan_ind", NULL, &GSM48__num__plan__ind_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING GSM48__num__plan__ind_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__number_plan_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}; +// No XER for MNCC__number_plan +const TTCN_Typedescriptor_t MNCC__number_plan_descr_ = { "@MNCC_Types.MNCC_number.plan", NULL, &MNCC__number_plan_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__number_plan_default_coding("RAW"); +const TTCN_RAWdescriptor_t GSM48__present__ind_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}; +// No XER for GSM48__present__ind +const TTCN_Typedescriptor_t GSM48__present__ind_descr_ = { "@MNCC_Types.GSM48_present_ind", NULL, &GSM48__present__ind_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING GSM48__present__ind_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__number_presence_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}; +// No XER for MNCC__number_presence +const TTCN_Typedescriptor_t MNCC__number_presence_descr_ = { "@MNCC_Types.MNCC_number.presence", NULL, &MNCC__number_presence_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__number_presence_default_coding("RAW"); +const TTCN_RAWdescriptor_t GSM48__screening__ind_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}; +// No XER for GSM48__screening__ind +const TTCN_Typedescriptor_t GSM48__screening__ind_descr_ = { "@MNCC_Types.GSM48_screening_ind", NULL, &GSM48__screening__ind_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING GSM48__screening__ind_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__number_screen_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}; +// No XER for MNCC__number_screen +const TTCN_Typedescriptor_t MNCC__number_screen_descr_ = { "@MNCC_Types.MNCC_number.screen", NULL, &MNCC__number_screen_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__number_screen_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__number_number_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}; +const XERdescriptor_t MNCC__number_number_xer_ = { {"number>\n", "number>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__number_number_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t MNCC__number_number_descr_ = { "@MNCC_Types.MNCC_number.number", NULL, &MNCC__number_number_raw_, &CHARSTRING_text_, &MNCC__number_number_xer_, &MNCC__number_number_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__number_number_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__number_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}; +// No XER for MNCC__number +const TTCN_Typedescriptor_t MNCC__number_descr_ = { "@MNCC_Types.MNCC_number", NULL, &MNCC__number_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__number_default_coding("RAW"); +const TTCN_RAWdescriptor_t GSM48__cause__coding_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}; +// No XER for GSM48__cause__coding +const TTCN_Typedescriptor_t GSM48__cause__coding_descr_ = { "@MNCC_Types.GSM48_cause_coding", NULL, &GSM48__cause__coding_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING GSM48__cause__coding_default_coding("RAW"); +const TTCN_RAWdescriptor_t GSM48__cause__loc_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}; +// No XER for GSM48__cause__loc +const TTCN_Typedescriptor_t GSM48__cause__loc_descr_ = { "@MNCC_Types.GSM48_cause_loc", NULL, &GSM48__cause__loc_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING GSM48__cause__loc_default_coding("RAW"); +static GSM48__type__of__number const_ts__MNCC__number_ton_defval; +const GSM48__type__of__number& ts__MNCC__number_ton_defval = const_ts__MNCC__number_ton_defval; +static GSM48__num__plan__ind const_ts__MNCC__number_npi_defval; +const GSM48__num__plan__ind& ts__MNCC__number_npi_defval = const_ts__MNCC__number_npi_defval; +static GSM48__present__ind const_ts__MNCC__number_pres_defval; +const GSM48__present__ind& ts__MNCC__number_pres_defval = const_ts__MNCC__number_pres_defval; +static GSM48__screening__ind const_ts__MNCC__number_screen_defval; +const GSM48__screening__ind& ts__MNCC__number_screen_defval = const_ts__MNCC__number_screen_defval; +static GSM48__type__of__number_template template_tr__MNCC__number_ton_defval; +const GSM48__type__of__number_template& tr__MNCC__number_ton_defval = template_tr__MNCC__number_ton_defval; +static GSM48__num__plan__ind_template template_tr__MNCC__number_npi_defval; +const GSM48__num__plan__ind_template& tr__MNCC__number_npi_defval = template_tr__MNCC__number_npi_defval; +static GSM48__present__ind_template template_tr__MNCC__number_pres_defval; +const GSM48__present__ind_template& tr__MNCC__number_pres_defval = template_tr__MNCC__number_pres_defval; +static GSM48__screening__ind_template template_tr__MNCC__number_screen_defval; +const GSM48__screening__ind_template& tr__MNCC__number_screen_defval = template_tr__MNCC__number_screen_defval; +const TTCN_RAWdescriptor_t MNCC__cause_location_raw_ = {32,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}; +// No XER for MNCC__cause_location +const TTCN_Typedescriptor_t MNCC__cause_location_descr_ = { "@MNCC_Types.MNCC_cause.location", NULL, &MNCC__cause_location_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__cause_location_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__cause_coding_raw_ = {32,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}; +// No XER for MNCC__cause_coding +const TTCN_Typedescriptor_t MNCC__cause_coding_descr_ = { "@MNCC_Types.MNCC_cause.coding", NULL, &MNCC__cause_coding_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__cause_coding_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__cause_rec_raw_ = {32,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}; +const XERdescriptor_t MNCC__cause_rec_xer_ = { {"rec>\n", "rec>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__cause_rec_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__cause_rec_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__cause_rec_descr_ = { "@MNCC_Types.MNCC_cause.rec", &INTEGER_ber_, &MNCC__cause_rec_raw_, &INTEGER_text_, &MNCC__cause_rec_xer_, &MNCC__cause_rec_json_, &MNCC__cause_rec_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__cause_rec_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__cause_rec__val_raw_ = {32,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}; +const XERdescriptor_t MNCC__cause_rec__val_xer_ = { {"rec_val>\n", "rec_val>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__cause_rec__val_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__cause_rec__val_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__cause_rec__val_descr_ = { "@MNCC_Types.MNCC_cause.rec_val", &INTEGER_ber_, &MNCC__cause_rec__val_raw_, &INTEGER_text_, &MNCC__cause_rec__val_xer_, &MNCC__cause_rec__val_json_, &MNCC__cause_rec__val_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__cause_rec__val_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__cause_val_raw_ = {32,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}; +const XERdescriptor_t MNCC__cause_val_xer_ = { {"val>\n", "val>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__cause_val_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__cause_val_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__cause_val_descr_ = { "@MNCC_Types.MNCC_cause.val", &INTEGER_ber_, &MNCC__cause_val_raw_, &INTEGER_text_, &MNCC__cause_val_xer_, &MNCC__cause_val_json_, &MNCC__cause_val_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__cause_val_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__cause_diag_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}; +const XERdescriptor_t MNCC__cause_diag_xer_ = { {"diag>\n", "diag>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__cause_diag_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int MNCC__cause_diag_oer_ext_arr_[0] = {}; +const int MNCC__cause_diag_oer_p_[0] = {}; +const TTCN_OERdescriptor_t MNCC__cause_diag_oer_ = { -1, FALSE, -1, FALSE, 0, 0, MNCC__cause_diag_oer_ext_arr_, 0, MNCC__cause_diag_oer_p_}; +const TTCN_Typedescriptor_t MNCC__cause_diag_descr_ = { "@MNCC_Types.MNCC_cause.diag", &OCTETSTRING_ber_, &MNCC__cause_diag_raw_, &OCTETSTRING_text_, &MNCC__cause_diag_xer_, &MNCC__cause_diag_json_, &MNCC__cause_diag_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__cause_diag_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__cause_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}; +// No XER for MNCC__cause +const TTCN_Typedescriptor_t MNCC__cause_descr_ = { "@MNCC_Types.MNCC_cause", NULL, &MNCC__cause_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__cause_default_coding("RAW"); +static GSM48__cause__loc const_ts__MNCC__cause_loc_defval; +const GSM48__cause__loc& ts__MNCC__cause_loc_defval = const_ts__MNCC__cause_loc_defval; +static GSM48__cause__coding const_ts__MNCC__cause_coding_defval; +const GSM48__cause__coding& ts__MNCC__cause_coding_defval = const_ts__MNCC__cause_coding_defval; +static OCTETSTRING const_ts__MNCC__cause_diag_defval; +const OCTETSTRING& ts__MNCC__cause_diag_defval = const_ts__MNCC__cause_diag_defval; +const TTCN_RAWdescriptor_t MNCC__useruser_proto_raw_ = {32,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}; +const XERdescriptor_t MNCC__useruser_proto_xer_ = { {"proto>\n", "proto>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__useruser_proto_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__useruser_proto_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__useruser_proto_descr_ = { "@MNCC_Types.MNCC_useruser.proto", &INTEGER_ber_, &MNCC__useruser_proto_raw_, &INTEGER_text_, &MNCC__useruser_proto_xer_, &MNCC__useruser_proto_json_, &MNCC__useruser_proto_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__useruser_proto_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__useruser_info_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}; +const XERdescriptor_t MNCC__useruser_info_xer_ = { {"info>\n", "info>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__useruser_info_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t MNCC__useruser_info_descr_ = { "@MNCC_Types.MNCC_useruser.info", NULL, &MNCC__useruser_info_raw_, &CHARSTRING_text_, &MNCC__useruser_info_xer_, &MNCC__useruser_info_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__useruser_info_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__useruser_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}; +// No XER for MNCC__useruser +const TTCN_Typedescriptor_t MNCC__useruser_descr_ = { "@MNCC_Types.MNCC_useruser", NULL, &MNCC__useruser_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__useruser_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__progress_coding_raw_ = {32,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}; +const XERdescriptor_t MNCC__progress_coding_xer_ = { {"coding>\n", "coding>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__progress_coding_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__progress_coding_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__progress_coding_descr_ = { "@MNCC_Types.MNCC_progress.coding", &INTEGER_ber_, &MNCC__progress_coding_raw_, &INTEGER_text_, &MNCC__progress_coding_xer_, &MNCC__progress_coding_json_, &MNCC__progress_coding_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__progress_coding_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__progress_location_raw_ = {32,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}; +const XERdescriptor_t MNCC__progress_location_xer_ = { {"location>\n", "location>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__progress_location_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__progress_location_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__progress_location_descr_ = { "@MNCC_Types.MNCC_progress.location", &INTEGER_ber_, &MNCC__progress_location_raw_, &INTEGER_text_, &MNCC__progress_location_xer_, &MNCC__progress_location_json_, &MNCC__progress_location_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__progress_location_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__progress_descr_raw_ = {32,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}; +const XERdescriptor_t MNCC__progress_descr_xer_ = { {"descr>\n", "descr>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__progress_descr_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__progress_descr_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__progress_descr_descr_ = { "@MNCC_Types.MNCC_progress.descr", &INTEGER_ber_, &MNCC__progress_descr_raw_, &INTEGER_text_, &MNCC__progress_descr_xer_, &MNCC__progress_descr_json_, &MNCC__progress_descr_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__progress_descr_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__progress_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}; +// No XER for MNCC__progress +const TTCN_Typedescriptor_t MNCC__progress_descr_ = { "@MNCC_Types.MNCC_progress", NULL, &MNCC__progress_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__progress_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__cccap_dtmf_raw_ = {32,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}; +const XERdescriptor_t MNCC__cccap_dtmf_xer_ = { {"dtmf>\n", "dtmf>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__cccap_dtmf_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__cccap_dtmf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__cccap_dtmf_descr_ = { "@MNCC_Types.MNCC_cccap.dtmf", &INTEGER_ber_, &MNCC__cccap_dtmf_raw_, &INTEGER_text_, &MNCC__cccap_dtmf_xer_, &MNCC__cccap_dtmf_json_, &MNCC__cccap_dtmf_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__cccap_dtmf_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__cccap_pcp_raw_ = {32,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}; +const XERdescriptor_t MNCC__cccap_pcp_xer_ = { {"pcp>\n", "pcp>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__cccap_pcp_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__cccap_pcp_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__cccap_pcp_descr_ = { "@MNCC_Types.MNCC_cccap.pcp", &INTEGER_ber_, &MNCC__cccap_pcp_raw_, &INTEGER_text_, &MNCC__cccap_pcp_xer_, &MNCC__cccap_pcp_json_, &MNCC__cccap_pcp_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__cccap_pcp_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__cccap_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}; +// No XER for MNCC__cccap +const TTCN_Typedescriptor_t MNCC__cccap_descr_ = { "@MNCC_Types.MNCC_cccap", NULL, &MNCC__cccap_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__cccap_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__notify_raw_ = {32,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}; +const XERdescriptor_t MNCC__notify_xer_ = { {"MNCC_notify>\n", "MNCC_notify>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__notify_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__notify_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__notify_descr_ = { "@MNCC_Types.MNCC_notify", &INTEGER_ber_, &MNCC__notify_raw_, &INTEGER_text_, &MNCC__notify_xer_, &MNCC__notify_json_, &MNCC__notify_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__notify_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__keypad_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t MNCC__keypad_xer_ = { {"MNCC_keypad>\n", "MNCC_keypad>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__keypad_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t MNCC__keypad_descr_ = { "@MNCC_Types.MNCC_keypad", NULL, &MNCC__keypad_raw_, &CHARSTRING_text_, &MNCC__keypad_xer_, &MNCC__keypad_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__keypad_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__bcap_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}; +// No XER for MNCC__bcap +const TTCN_Typedescriptor_t MNCC__bcap_descr_ = { "@MNCC_Types.MNCC_bcap", NULL, &MNCC__bcap_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__bcap_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__Signal_callref_raw_ = {32,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t MNCC__PDU__Signal_callref_xer_ = { {"callref>\n", "callref>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__PDU__Signal_callref_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__PDU__Signal_callref_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__PDU__Signal_callref_descr_ = { "@MNCC_Types.MNCC_PDU_Signal.callref", &INTEGER_ber_, &MNCC__PDU__Signal_callref_raw_, &INTEGER_text_, &MNCC__PDU__Signal_callref_xer_, &MNCC__PDU__Signal_callref_json_, &MNCC__PDU__Signal_callref_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Signal_callref_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__Signal_clir__sup_raw_ = {32,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}; +const XERdescriptor_t MNCC__PDU__Signal_clir__sup_xer_ = { {"clir_sup>\n", "clir_sup>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__PDU__Signal_clir__sup_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__PDU__Signal_clir__sup_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__PDU__Signal_clir__sup_descr_ = { "@MNCC_Types.MNCC_PDU_Signal.clir_sup", &INTEGER_ber_, &MNCC__PDU__Signal_clir__sup_raw_, &INTEGER_text_, &MNCC__PDU__Signal_clir__sup_xer_, &MNCC__PDU__Signal_clir__sup_json_, &MNCC__PDU__Signal_clir__sup_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Signal_clir__sup_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__Signal_clir__inv_raw_ = {32,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}; +const XERdescriptor_t MNCC__PDU__Signal_clir__inv_xer_ = { {"clir_inv>\n", "clir_inv>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__PDU__Signal_clir__inv_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__PDU__Signal_clir__inv_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__PDU__Signal_clir__inv_descr_ = { "@MNCC_Types.MNCC_PDU_Signal.clir_inv", &INTEGER_ber_, &MNCC__PDU__Signal_clir__inv_raw_, &INTEGER_text_, &MNCC__PDU__Signal_clir__inv_xer_, &MNCC__PDU__Signal_clir__inv_json_, &MNCC__PDU__Signal_clir__inv_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Signal_clir__inv_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__Signal_more_raw_ = {32,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}; +const XERdescriptor_t MNCC__PDU__Signal_more_xer_ = { {"more>\n", "more>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__PDU__Signal_more_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__PDU__Signal_more_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__PDU__Signal_more_descr_ = { "@MNCC_Types.MNCC_PDU_Signal.more", &INTEGER_ber_, &MNCC__PDU__Signal_more_raw_, &INTEGER_text_, &MNCC__PDU__Signal_more_xer_, &MNCC__PDU__Signal_more_json_, &MNCC__PDU__Signal_more_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Signal_more_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__Signal_notify_raw_ = {32,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}; +const XERdescriptor_t MNCC__PDU__Signal_notify_xer_ = { {"notify>\n", "notify>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__PDU__Signal_notify_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__PDU__Signal_notify_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__PDU__Signal_notify_descr_ = { "@MNCC_Types.MNCC_PDU_Signal.notify", &INTEGER_ber_, &MNCC__PDU__Signal_notify_raw_, &INTEGER_text_, &MNCC__PDU__Signal_notify_xer_, &MNCC__PDU__Signal_notify_json_, &MNCC__PDU__Signal_notify_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Signal_notify_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__Signal_imsi_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}; +const XERdescriptor_t MNCC__PDU__Signal_imsi_xer_ = { {"imsi>\n", "imsi>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__PDU__Signal_imsi_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t MNCC__PDU__Signal_imsi_descr_ = { "@MNCC_Types.MNCC_PDU_Signal.imsi", NULL, &MNCC__PDU__Signal_imsi_raw_, &CHARSTRING_text_, &MNCC__PDU__Signal_imsi_xer_, &MNCC__PDU__Signal_imsi_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Signal_imsi_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__Signal_lchan__type_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}; +const XERdescriptor_t MNCC__PDU__Signal_lchan__type_xer_ = { {"lchan_type>\n", "lchan_type>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__PDU__Signal_lchan__type_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__PDU__Signal_lchan__type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__PDU__Signal_lchan__type_descr_ = { "@MNCC_Types.MNCC_PDU_Signal.lchan_type", &INTEGER_ber_, &MNCC__PDU__Signal_lchan__type_raw_, &INTEGER_text_, &MNCC__PDU__Signal_lchan__type_xer_, &MNCC__PDU__Signal_lchan__type_json_, &MNCC__PDU__Signal_lchan__type_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Signal_lchan__type_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__Signal_lchan__mode_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}; +const XERdescriptor_t MNCC__PDU__Signal_lchan__mode_xer_ = { {"lchan_mode>\n", "lchan_mode>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__PDU__Signal_lchan__mode_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__PDU__Signal_lchan__mode_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__PDU__Signal_lchan__mode_descr_ = { "@MNCC_Types.MNCC_PDU_Signal.lchan_mode", &INTEGER_ber_, &MNCC__PDU__Signal_lchan__mode_raw_, &INTEGER_text_, &MNCC__PDU__Signal_lchan__mode_xer_, &MNCC__PDU__Signal_lchan__mode_json_, &MNCC__PDU__Signal_lchan__mode_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Signal_lchan__mode_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__Signal_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}; +// No XER for MNCC__PDU__Signal +const TTCN_Typedescriptor_t MNCC__PDU__Signal_descr_ = { "@MNCC_Types.MNCC_PDU_Signal", NULL, &MNCC__PDU__Signal_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +const TTCN_RAWdescriptor_t MNCC__PDU__Signal_bearer__cap_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}; +// No XER for MNCC__PDU__Signal_bearer__cap +const TTCN_Typedescriptor_t MNCC__PDU__Signal_bearer__cap_descr_ = { "@MNCC_Types.MNCC_PDU_Signal.bearer_cap", NULL, &MNCC__PDU__Signal_bearer__cap_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Signal_bearer__cap_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__Signal_called_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}; +// No XER for MNCC__PDU__Signal_called +const TTCN_Typedescriptor_t MNCC__PDU__Signal_called_descr_ = { "@MNCC_Types.MNCC_PDU_Signal.called", NULL, &MNCC__PDU__Signal_called_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Signal_called_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__Signal_calling_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}; +// No XER for MNCC__PDU__Signal_calling +const TTCN_Typedescriptor_t MNCC__PDU__Signal_calling_descr_ = { "@MNCC_Types.MNCC_PDU_Signal.calling", NULL, &MNCC__PDU__Signal_calling_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Signal_calling_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__Signal_redirecting_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}; +// No XER for MNCC__PDU__Signal_redirecting +const TTCN_Typedescriptor_t MNCC__PDU__Signal_redirecting_descr_ = { "@MNCC_Types.MNCC_PDU_Signal.redirecting", NULL, &MNCC__PDU__Signal_redirecting_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Signal_redirecting_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__Signal_connected_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}; +// No XER for MNCC__PDU__Signal_connected +const TTCN_Typedescriptor_t MNCC__PDU__Signal_connected_descr_ = { "@MNCC_Types.MNCC_PDU_Signal.connected", NULL, &MNCC__PDU__Signal_connected_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Signal_connected_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__Signal_cause_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}; +// No XER for MNCC__PDU__Signal_cause +const TTCN_Typedescriptor_t MNCC__PDU__Signal_cause_descr_ = { "@MNCC_Types.MNCC_PDU_Signal.cause", NULL, &MNCC__PDU__Signal_cause_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Signal_cause_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__Signal_progress_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}; +// No XER for MNCC__PDU__Signal_progress +const TTCN_Typedescriptor_t MNCC__PDU__Signal_progress_descr_ = { "@MNCC_Types.MNCC_PDU_Signal.progress", NULL, &MNCC__PDU__Signal_progress_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Signal_progress_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__Signal_useruser_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}; +// No XER for MNCC__PDU__Signal_useruser +const TTCN_Typedescriptor_t MNCC__PDU__Signal_useruser_descr_ = { "@MNCC_Types.MNCC_PDU_Signal.useruser", NULL, &MNCC__PDU__Signal_useruser_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Signal_useruser_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__Signal_facility_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}; +const XERdescriptor_t MNCC__PDU__Signal_facility_xer_ = { {"facility>\n", "facility>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__PDU__Signal_facility_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t MNCC__PDU__Signal_facility_descr_ = { "@MNCC_Types.MNCC_PDU_Signal.facility", NULL, &MNCC__PDU__Signal_facility_raw_, &CHARSTRING_text_, &MNCC__PDU__Signal_facility_xer_, &MNCC__PDU__Signal_facility_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Signal_facility_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__Signal_cccap_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}; +// No XER for MNCC__PDU__Signal_cccap +const TTCN_Typedescriptor_t MNCC__PDU__Signal_cccap_descr_ = { "@MNCC_Types.MNCC_PDU_Signal.cccap", NULL, &MNCC__PDU__Signal_cccap_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Signal_cccap_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__Signal_ssversion_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}; +const XERdescriptor_t MNCC__PDU__Signal_ssversion_xer_ = { {"ssversion>\n", "ssversion>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__PDU__Signal_ssversion_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t MNCC__PDU__Signal_ssversion_descr_ = { "@MNCC_Types.MNCC_PDU_Signal.ssversion", NULL, &MNCC__PDU__Signal_ssversion_raw_, &CHARSTRING_text_, &MNCC__PDU__Signal_ssversion_xer_, &MNCC__PDU__Signal_ssversion_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Signal_ssversion_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__Signal_signal_raw_ = {32,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}; +const XERdescriptor_t MNCC__PDU__Signal_signal_xer_ = { {"signal>\n", "signal>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__PDU__Signal_signal_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__PDU__Signal_signal_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__PDU__Signal_signal_descr_ = { "@MNCC_Types.MNCC_PDU_Signal.signal", &INTEGER_ber_, &MNCC__PDU__Signal_signal_raw_, &INTEGER_text_, &MNCC__PDU__Signal_signal_xer_, &MNCC__PDU__Signal_signal_json_, &MNCC__PDU__Signal_signal_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Signal_signal_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__Signal_keypad_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t MNCC__PDU__Signal_keypad_xer_ = { {"keypad>\n", "keypad>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__PDU__Signal_keypad_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t MNCC__PDU__Signal_keypad_descr_ = { "@MNCC_Types.MNCC_PDU_Signal.keypad", NULL, &MNCC__PDU__Signal_keypad_raw_, &CHARSTRING_text_, &MNCC__PDU__Signal_keypad_xer_, &MNCC__PDU__Signal_keypad_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Signal_keypad_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__Signal_emergency_raw_ = {32,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}; +const XERdescriptor_t MNCC__PDU__Signal_emergency_xer_ = { {"emergency>\n", "emergency>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__PDU__Signal_emergency_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__PDU__Signal_emergency_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__PDU__Signal_emergency_descr_ = { "@MNCC_Types.MNCC_PDU_Signal.emergency", &INTEGER_ber_, &MNCC__PDU__Signal_emergency_raw_, &INTEGER_text_, &MNCC__PDU__Signal_emergency_xer_, &MNCC__PDU__Signal_emergency_json_, &MNCC__PDU__Signal_emergency_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Signal_emergency_default_coding("RAW"); +UNIVERSAL_CHARSTRING MNCC__PDU__Signal_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__Data_callref_raw_ = {32,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t MNCC__PDU__Data_callref_xer_ = { {"callref>\n", "callref>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__PDU__Data_callref_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__PDU__Data_callref_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__PDU__Data_callref_descr_ = { "@MNCC_Types.MNCC_PDU_Data.callref", &INTEGER_ber_, &MNCC__PDU__Data_callref_raw_, &INTEGER_text_, &MNCC__PDU__Data_callref_xer_, &MNCC__PDU__Data_callref_json_, &MNCC__PDU__Data_callref_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Data_callref_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__Data_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}; +const XERdescriptor_t MNCC__PDU__Data_data_xer_ = { {"data>\n", "data>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__PDU__Data_data_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int MNCC__PDU__Data_data_oer_ext_arr_[0] = {}; +const int MNCC__PDU__Data_data_oer_p_[0] = {}; +const TTCN_OERdescriptor_t MNCC__PDU__Data_data_oer_ = { -1, FALSE, -1, FALSE, 0, 0, MNCC__PDU__Data_data_oer_ext_arr_, 0, MNCC__PDU__Data_data_oer_p_}; +const TTCN_Typedescriptor_t MNCC__PDU__Data_data_descr_ = { "@MNCC_Types.MNCC_PDU_Data.data", &OCTETSTRING_ber_, &MNCC__PDU__Data_data_raw_, &OCTETSTRING_text_, &MNCC__PDU__Data_data_xer_, &MNCC__PDU__Data_data_json_, &MNCC__PDU__Data_data_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Data_data_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__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}; +// No XER for MNCC__PDU__Data +const TTCN_Typedescriptor_t MNCC__PDU__Data_descr_ = { "@MNCC_Types.MNCC_PDU_Data", NULL, &MNCC__PDU__Data_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Data_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__Rtp_callref_raw_ = {32,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t MNCC__PDU__Rtp_callref_xer_ = { {"callref>\n", "callref>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__PDU__Rtp_callref_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__PDU__Rtp_callref_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__PDU__Rtp_callref_descr_ = { "@MNCC_Types.MNCC_PDU_Rtp.callref", &INTEGER_ber_, &MNCC__PDU__Rtp_callref_raw_, &INTEGER_text_, &MNCC__PDU__Rtp_callref_xer_, &MNCC__PDU__Rtp_callref_json_, &MNCC__PDU__Rtp_callref_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Rtp_callref_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__Rtp_ip_raw_ = {32,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t MNCC__PDU__Rtp_ip_xer_ = { {"ip>\n", "ip>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__PDU__Rtp_ip_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__PDU__Rtp_ip_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__PDU__Rtp_ip_descr_ = { "@MNCC_Types.MNCC_PDU_Rtp.ip", &INTEGER_ber_, &MNCC__PDU__Rtp_ip_raw_, &INTEGER_text_, &MNCC__PDU__Rtp_ip_xer_, &MNCC__PDU__Rtp_ip_json_, &MNCC__PDU__Rtp_ip_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Rtp_ip_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__Rtp_rtp__port_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t MNCC__PDU__Rtp_rtp__port_xer_ = { {"rtp_port>\n", "rtp_port>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__PDU__Rtp_rtp__port_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__PDU__Rtp_rtp__port_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__PDU__Rtp_rtp__port_descr_ = { "@MNCC_Types.MNCC_PDU_Rtp.rtp_port", &INTEGER_ber_, &MNCC__PDU__Rtp_rtp__port_raw_, &INTEGER_text_, &MNCC__PDU__Rtp_rtp__port_xer_, &MNCC__PDU__Rtp_rtp__port_json_, &MNCC__PDU__Rtp_rtp__port_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Rtp_rtp__port_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__Rtp_payload__type_raw_ = {32,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t MNCC__PDU__Rtp_payload__type_xer_ = { {"payload_type>\n", "payload_type>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__PDU__Rtp_payload__type_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__PDU__Rtp_payload__type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__PDU__Rtp_payload__type_descr_ = { "@MNCC_Types.MNCC_PDU_Rtp.payload_type", &INTEGER_ber_, &MNCC__PDU__Rtp_payload__type_raw_, &INTEGER_text_, &MNCC__PDU__Rtp_payload__type_xer_, &MNCC__PDU__Rtp_payload__type_json_, &MNCC__PDU__Rtp_payload__type_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Rtp_payload__type_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__Rtp_payload__msg__type_raw_ = {32,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t MNCC__PDU__Rtp_payload__msg__type_xer_ = { {"payload_msg_type>\n", "payload_msg_type>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__PDU__Rtp_payload__msg__type_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__PDU__Rtp_payload__msg__type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__PDU__Rtp_payload__msg__type_descr_ = { "@MNCC_Types.MNCC_PDU_Rtp.payload_msg_type", &INTEGER_ber_, &MNCC__PDU__Rtp_payload__msg__type_raw_, &INTEGER_text_, &MNCC__PDU__Rtp_payload__msg__type_xer_, &MNCC__PDU__Rtp_payload__msg__type_json_, &MNCC__PDU__Rtp_payload__msg__type_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Rtp_payload__msg__type_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__Rtp_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}; +// No XER for MNCC__PDU__Rtp +const TTCN_Typedescriptor_t MNCC__PDU__Rtp_descr_ = { "@MNCC_Types.MNCC_PDU_Rtp", NULL, &MNCC__PDU__Rtp_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Rtp_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__Hello_version_raw_ = {32,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t MNCC__PDU__Hello_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_JSONdescriptor_t MNCC__PDU__Hello_version_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__PDU__Hello_version_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__PDU__Hello_version_descr_ = { "@MNCC_Types.MNCC_PDU_Hello.version", &INTEGER_ber_, &MNCC__PDU__Hello_version_raw_, &INTEGER_text_, &MNCC__PDU__Hello_version_xer_, &MNCC__PDU__Hello_version_json_, &MNCC__PDU__Hello_version_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Hello_version_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__Hello_mncc__size_raw_ = {32,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t MNCC__PDU__Hello_mncc__size_xer_ = { {"mncc_size>\n", "mncc_size>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__PDU__Hello_mncc__size_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__PDU__Hello_mncc__size_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__PDU__Hello_mncc__size_descr_ = { "@MNCC_Types.MNCC_PDU_Hello.mncc_size", &INTEGER_ber_, &MNCC__PDU__Hello_mncc__size_raw_, &INTEGER_text_, &MNCC__PDU__Hello_mncc__size_xer_, &MNCC__PDU__Hello_mncc__size_json_, &MNCC__PDU__Hello_mncc__size_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Hello_mncc__size_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__Hello_data__frame__size_raw_ = {32,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t MNCC__PDU__Hello_data__frame__size_xer_ = { {"data_frame_size>\n", "data_frame_size>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__PDU__Hello_data__frame__size_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__PDU__Hello_data__frame__size_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__PDU__Hello_data__frame__size_descr_ = { "@MNCC_Types.MNCC_PDU_Hello.data_frame_size", &INTEGER_ber_, &MNCC__PDU__Hello_data__frame__size_raw_, &INTEGER_text_, &MNCC__PDU__Hello_data__frame__size_xer_, &MNCC__PDU__Hello_data__frame__size_json_, &MNCC__PDU__Hello_data__frame__size_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Hello_data__frame__size_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__Hello_called__offset_raw_ = {32,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t MNCC__PDU__Hello_called__offset_xer_ = { {"called_offset>\n", "called_offset>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__PDU__Hello_called__offset_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__PDU__Hello_called__offset_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__PDU__Hello_called__offset_descr_ = { "@MNCC_Types.MNCC_PDU_Hello.called_offset", &INTEGER_ber_, &MNCC__PDU__Hello_called__offset_raw_, &INTEGER_text_, &MNCC__PDU__Hello_called__offset_xer_, &MNCC__PDU__Hello_called__offset_json_, &MNCC__PDU__Hello_called__offset_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Hello_called__offset_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__Hello_signal__offset_raw_ = {32,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t MNCC__PDU__Hello_signal__offset_xer_ = { {"signal_offset>\n", "signal_offset>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__PDU__Hello_signal__offset_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__PDU__Hello_signal__offset_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__PDU__Hello_signal__offset_descr_ = { "@MNCC_Types.MNCC_PDU_Hello.signal_offset", &INTEGER_ber_, &MNCC__PDU__Hello_signal__offset_raw_, &INTEGER_text_, &MNCC__PDU__Hello_signal__offset_xer_, &MNCC__PDU__Hello_signal__offset_json_, &MNCC__PDU__Hello_signal__offset_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Hello_signal__offset_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__Hello_emergency__offset_raw_ = {32,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t MNCC__PDU__Hello_emergency__offset_xer_ = { {"emergency_offset>\n", "emergency_offset>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__PDU__Hello_emergency__offset_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__PDU__Hello_emergency__offset_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__PDU__Hello_emergency__offset_descr_ = { "@MNCC_Types.MNCC_PDU_Hello.emergency_offset", &INTEGER_ber_, &MNCC__PDU__Hello_emergency__offset_raw_, &INTEGER_text_, &MNCC__PDU__Hello_emergency__offset_xer_, &MNCC__PDU__Hello_emergency__offset_json_, &MNCC__PDU__Hello_emergency__offset_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Hello_emergency__offset_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__Hello_lchan__type__offset_raw_ = {32,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t MNCC__PDU__Hello_lchan__type__offset_xer_ = { {"lchan_type_offset>\n", "lchan_type_offset>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t MNCC__PDU__Hello_lchan__type__offset_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t MNCC__PDU__Hello_lchan__type__offset_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t MNCC__PDU__Hello_lchan__type__offset_descr_ = { "@MNCC_Types.MNCC_PDU_Hello.lchan_type_offset", &INTEGER_ber_, &MNCC__PDU__Hello_lchan__type__offset_raw_, &INTEGER_text_, &MNCC__PDU__Hello_lchan__type__offset_xer_, &MNCC__PDU__Hello_lchan__type__offset_json_, &MNCC__PDU__Hello_lchan__type__offset_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Hello_lchan__type__offset_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU__Hello_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}; +// No XER for MNCC__PDU__Hello +const TTCN_Typedescriptor_t MNCC__PDU__Hello_descr_ = { "@MNCC_Types.MNCC_PDU_Hello", NULL, &MNCC__PDU__Hello_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU__Hello_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__MsgUnion_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}; +// No XER for MNCC__MsgUnion +const TTCN_Typedescriptor_t MNCC__MsgUnion_descr_ = { "@MNCC_Types.MNCC_MsgUnion", NULL, &MNCC__MsgUnion_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +const TTCN_RAWdescriptor_t MNCC__MsgUnion_signal_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}; +// No XER for MNCC__MsgUnion_signal +const TTCN_Typedescriptor_t MNCC__MsgUnion_signal_descr_ = { "@MNCC_Types.MNCC_MsgUnion.signal", NULL, &MNCC__MsgUnion_signal_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__MsgUnion_signal_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__MsgUnion_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}; +// No XER for MNCC__MsgUnion_data +const TTCN_Typedescriptor_t MNCC__MsgUnion_data_descr_ = { "@MNCC_Types.MNCC_MsgUnion.data", NULL, &MNCC__MsgUnion_data_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__MsgUnion_data_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__MsgUnion_rtp_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}; +// No XER for MNCC__MsgUnion_rtp +const TTCN_Typedescriptor_t MNCC__MsgUnion_rtp_descr_ = { "@MNCC_Types.MNCC_MsgUnion.rtp", NULL, &MNCC__MsgUnion_rtp_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__MsgUnion_rtp_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__MsgUnion_hello_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}; +// No XER for MNCC__MsgUnion_hello +const TTCN_Typedescriptor_t MNCC__MsgUnion_hello_descr_ = { "@MNCC_Types.MNCC_MsgUnion.hello", NULL, &MNCC__MsgUnion_hello_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__MsgUnion_hello_default_coding("RAW"); +UNIVERSAL_CHARSTRING MNCC__MsgUnion_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU_msg__type_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}; +// No XER for MNCC__PDU_msg__type +const TTCN_Typedescriptor_t MNCC__PDU_msg__type_descr_ = { "@MNCC_Types.MNCC_PDU.msg_type", NULL, &MNCC__PDU_msg__type_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU_msg__type_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU_u_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}; +// No XER for MNCC__PDU_u +const TTCN_Typedescriptor_t MNCC__PDU_u_descr_ = { "@MNCC_Types.MNCC_PDU.u", NULL, &MNCC__PDU_u_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU_u_default_coding("RAW"); +const TTCN_RAWdescriptor_t MNCC__PDU_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}; +// No XER for MNCC__PDU +const TTCN_Typedescriptor_t MNCC__PDU_descr_ = { "@MNCC_Types.MNCC_PDU", NULL, &MNCC__PDU_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING MNCC__PDU_default_coding("RAW"); +static INTEGER const_ts__MNCC__HELLO_version_defval; +const INTEGER& ts__MNCC__HELLO_version_defval = const_ts__MNCC__HELLO_version_defval; +static CHARSTRING const_ts__MNCC__SETUP__req_imsi_defval; +const CHARSTRING& ts__MNCC__SETUP__req_imsi_defval = const_ts__MNCC__SETUP__req_imsi_defval; +static INTEGER_template template_tr__MNCC__SETUP__req_call__id_defval; +const INTEGER_template& tr__MNCC__SETUP__req_call__id_defval = template_tr__MNCC__SETUP__req_call__id_defval; +static CHARSTRING_template template_tr__MNCC__SETUP__req_called_defval; +const CHARSTRING_template& tr__MNCC__SETUP__req_called_defval = template_tr__MNCC__SETUP__req_called_defval; +static CHARSTRING_template template_tr__MNCC__SETUP__req_calling_defval; +const CHARSTRING_template& tr__MNCC__SETUP__req_calling_defval = template_tr__MNCC__SETUP__req_calling_defval; +static CHARSTRING_template template_tr__MNCC__SETUP__req_imsi_defval; +const CHARSTRING_template& tr__MNCC__SETUP__req_imsi_defval = template_tr__MNCC__SETUP__req_imsi_defval; +static CHARSTRING const_ts__MNCC__SETUP__rsp_imsi_defval; +const CHARSTRING& ts__MNCC__SETUP__rsp_imsi_defval = const_ts__MNCC__SETUP__rsp_imsi_defval; +static MNCC__number_template template_ts__MNCC__SETUP__rsp_connected_defval; +const MNCC__number_template& ts__MNCC__SETUP__rsp_connected_defval = template_ts__MNCC__SETUP__rsp_connected_defval; +static CHARSTRING_template template_tr__MNCC__SETUP__rsp_imsi_defval; +const CHARSTRING_template& tr__MNCC__SETUP__rsp_imsi_defval = template_tr__MNCC__SETUP__rsp_imsi_defval; +static MNCC__number_template template_tr__MNCC__SETUP__rsp_connected_defval; +const MNCC__number_template& tr__MNCC__SETUP__rsp_connected_defval = template_tr__MNCC__SETUP__rsp_connected_defval; +static INTEGER_template template_tr__MNCC__SETUP__ind_call__id_defval; +const INTEGER_template& tr__MNCC__SETUP__ind_call__id_defval = template_tr__MNCC__SETUP__ind_call__id_defval; +static MNCC__number_template template_tr__MNCC__SETUP__ind_called_defval; +const MNCC__number_template& tr__MNCC__SETUP__ind_called_defval = template_tr__MNCC__SETUP__ind_called_defval; +static MNCC__number_template template_tr__MNCC__SETUP__ind_calling_defval; +const MNCC__number_template& tr__MNCC__SETUP__ind_calling_defval = template_tr__MNCC__SETUP__ind_calling_defval; +static CHARSTRING_template template_tr__MNCC__SETUP__ind_imsi_defval; +const CHARSTRING_template& tr__MNCC__SETUP__ind_imsi_defval = template_tr__MNCC__SETUP__ind_imsi_defval; +static MNCC__number_template template_ts__MNCC__SETUP__ind_calling_defval; +const MNCC__number_template& ts__MNCC__SETUP__ind_calling_defval = template_ts__MNCC__SETUP__ind_calling_defval; +static CHARSTRING_template template_ts__MNCC__SETUP__ind_imsi_defval; +const CHARSTRING_template& ts__MNCC__SETUP__ind_imsi_defval = template_ts__MNCC__SETUP__ind_imsi_defval; +static MNCC__bearer__cap_template template_ts__MNCC__SETUP__ind_bcap_defval; +const MNCC__bearer__cap_template& ts__MNCC__SETUP__ind_bcap_defval = template_ts__MNCC__SETUP__ind_bcap_defval; +static MNCC__number_template template_ts__MNCC__SETUP__CNF_connected_defval; +const MNCC__number_template& ts__MNCC__SETUP__CNF_connected_defval = template_ts__MNCC__SETUP__CNF_connected_defval; +static MNCC__number_template template_tr__MNCC__SETUP__cnf_connected_defval; +const MNCC__number_template& tr__MNCC__SETUP__cnf_connected_defval = template_tr__MNCC__SETUP__cnf_connected_defval; +static INTEGER_template template_tr__MNCC__SETUP__COMPL__ind_call__id_defval; +const INTEGER_template& tr__MNCC__SETUP__COMPL__ind_call__id_defval = template_tr__MNCC__SETUP__COMPL__ind_call__id_defval; +static MNCC__cause_template template_tr__MNCC__REJ__req_cause_defval; +const MNCC__cause_template& tr__MNCC__REJ__req_cause_defval = template_tr__MNCC__REJ__req_cause_defval; +static MNCC__cause_template template_ts__MNCC__REJ__ind_cause_defval; +const MNCC__cause_template& ts__MNCC__REJ__ind_cause_defval = template_ts__MNCC__REJ__ind_cause_defval; +static MNCC__bearer__cap_template template_tr__MNCC__CALL__CONF__ind_bcap_defval; +const MNCC__bearer__cap_template& tr__MNCC__CALL__CONF__ind_bcap_defval = template_tr__MNCC__CALL__CONF__ind_bcap_defval; +static MNCC__cause_template template_tr__MNCC__CALL__CONF__ind_cause_defval; +const MNCC__cause_template& tr__MNCC__CALL__CONF__ind_cause_defval = template_tr__MNCC__CALL__CONF__ind_cause_defval; +static MNCC__cccap_template template_tr__MNCC__CALL__CONF__ind_cccap_defval; +const MNCC__cccap_template& tr__MNCC__CALL__CONF__ind_cccap_defval = template_tr__MNCC__CALL__CONF__ind_cccap_defval; +static MNCC__bearer__cap_template template_ts__MNCC__CALL__CONF__ind_bcap_defval; +const MNCC__bearer__cap_template& ts__MNCC__CALL__CONF__ind_bcap_defval = template_ts__MNCC__CALL__CONF__ind_bcap_defval; +static MNCC__cause_template template_ts__MNCC__CALL__CONF__ind_cause_defval; +const MNCC__cause_template& ts__MNCC__CALL__CONF__ind_cause_defval = template_ts__MNCC__CALL__CONF__ind_cause_defval; +static MNCC__cccap_template template_ts__MNCC__CALL__CONF__ind_cccap_defval; +const MNCC__cccap_template& ts__MNCC__CALL__CONF__ind_cccap_defval = template_ts__MNCC__CALL__CONF__ind_cccap_defval; +static MNCC__bearer__cap_template template_ts__MNCC__CALL__PROC__req_bcap_defval; +const MNCC__bearer__cap_template& ts__MNCC__CALL__PROC__req_bcap_defval = template_ts__MNCC__CALL__PROC__req_bcap_defval; +static MNCC__progress_template template_ts__MNCC__CALL__PROC__req_prog_defval; +const MNCC__progress_template& ts__MNCC__CALL__PROC__req_prog_defval = template_ts__MNCC__CALL__PROC__req_prog_defval; +static CHARSTRING_template template_ts__MNCC__CALL__PROC__req_fac_defval; +const CHARSTRING_template& ts__MNCC__CALL__PROC__req_fac_defval = template_ts__MNCC__CALL__PROC__req_fac_defval; +static MNCC__cccap_template template_ts__MNCC__CALL__PROC__req_cccap_defval; +const MNCC__cccap_template& ts__MNCC__CALL__PROC__req_cccap_defval = template_ts__MNCC__CALL__PROC__req_cccap_defval; +static MNCC__bearer__cap_template template_tr__MNCC__CALL__PROC__req_bcap_defval; +const MNCC__bearer__cap_template& tr__MNCC__CALL__PROC__req_bcap_defval = template_tr__MNCC__CALL__PROC__req_bcap_defval; +static MNCC__progress_template template_tr__MNCC__CALL__PROC__req_prog_defval; +const MNCC__progress_template& tr__MNCC__CALL__PROC__req_prog_defval = template_tr__MNCC__CALL__PROC__req_prog_defval; +static CHARSTRING_template template_tr__MNCC__CALL__PROC__req_fac_defval; +const CHARSTRING_template& tr__MNCC__CALL__PROC__req_fac_defval = template_tr__MNCC__CALL__PROC__req_fac_defval; +static MNCC__cccap_template template_tr__MNCC__CALL__PROC__req_cccap_defval; +const MNCC__cccap_template& tr__MNCC__CALL__PROC__req_cccap_defval = template_tr__MNCC__CALL__PROC__req_cccap_defval; +static MNCC__useruser_template template_ts__MNCC__PROGRESS__req_uu_defval; +const MNCC__useruser_template& ts__MNCC__PROGRESS__req_uu_defval = template_ts__MNCC__PROGRESS__req_uu_defval; +static MNCC__progress_template template_ts__MNCC__ALERT__req_prog_defval; +const MNCC__progress_template& ts__MNCC__ALERT__req_prog_defval = template_ts__MNCC__ALERT__req_prog_defval; +static CHARSTRING_template template_ts__MNCC__ALERT__req_fac_defval; +const CHARSTRING_template& ts__MNCC__ALERT__req_fac_defval = template_ts__MNCC__ALERT__req_fac_defval; +static MNCC__useruser_template template_ts__MNCC__ALERT__req_uu_defval; +const MNCC__useruser_template& ts__MNCC__ALERT__req_uu_defval = template_ts__MNCC__ALERT__req_uu_defval; +static MNCC__progress_template template_tr__MNCC__ALERT__req_prog_defval; +const MNCC__progress_template& tr__MNCC__ALERT__req_prog_defval = template_tr__MNCC__ALERT__req_prog_defval; +static CHARSTRING_template template_tr__MNCC__ALERT__req_fac_defval; +const CHARSTRING_template& tr__MNCC__ALERT__req_fac_defval = template_tr__MNCC__ALERT__req_fac_defval; +static MNCC__useruser_template template_tr__MNCC__ALERT__req_uu_defval; +const MNCC__useruser_template& tr__MNCC__ALERT__req_uu_defval = template_tr__MNCC__ALERT__req_uu_defval; +static MNCC__progress_template template_tr__MNCC__ALERT__ind_prog_defval; +const MNCC__progress_template& tr__MNCC__ALERT__ind_prog_defval = template_tr__MNCC__ALERT__ind_prog_defval; +static CHARSTRING_template template_tr__MNCC__ALERT__ind_fac_defval; +const CHARSTRING_template& tr__MNCC__ALERT__ind_fac_defval = template_tr__MNCC__ALERT__ind_fac_defval; +static MNCC__useruser_template template_tr__MNCC__ALERT__ind_uu_defval; +const MNCC__useruser_template& tr__MNCC__ALERT__ind_uu_defval = template_tr__MNCC__ALERT__ind_uu_defval; +static MNCC__progress_template template_ts__MNCC__ALERT__ind_prog_defval; +const MNCC__progress_template& ts__MNCC__ALERT__ind_prog_defval = template_ts__MNCC__ALERT__ind_prog_defval; +static CHARSTRING_template template_ts__MNCC__ALERT__ind_fac_defval; +const CHARSTRING_template& ts__MNCC__ALERT__ind_fac_defval = template_ts__MNCC__ALERT__ind_fac_defval; +static MNCC__useruser_template template_ts__MNCC__ALERT__ind_uu_defval; +const MNCC__useruser_template& ts__MNCC__ALERT__ind_uu_defval = template_ts__MNCC__ALERT__ind_uu_defval; +static INTEGER_template template_tr__MNCC__DISC__ind_call__id_defval; +const INTEGER_template& tr__MNCC__DISC__ind_call__id_defval = template_tr__MNCC__DISC__ind_call__id_defval; +static MNCC__cause_template template_tr__MNCC__DISC__ind_cause_defval; +const MNCC__cause_template& tr__MNCC__DISC__ind_cause_defval = template_tr__MNCC__DISC__ind_cause_defval; +static MNCC__progress_template template_tr__MNCC__DISC__ind_prog_defval; +const MNCC__progress_template& tr__MNCC__DISC__ind_prog_defval = template_tr__MNCC__DISC__ind_prog_defval; +static CHARSTRING_template template_tr__MNCC__DISC__ind_fac_defval; +const CHARSTRING_template& tr__MNCC__DISC__ind_fac_defval = template_tr__MNCC__DISC__ind_fac_defval; +static MNCC__useruser_template template_tr__MNCC__DISC__ind_uu_defval; +const MNCC__useruser_template& tr__MNCC__DISC__ind_uu_defval = template_tr__MNCC__DISC__ind_uu_defval; +static MNCC__progress_template template_ts__MNCC__DISC__ind_prog_defval; +const MNCC__progress_template& ts__MNCC__DISC__ind_prog_defval = template_ts__MNCC__DISC__ind_prog_defval; +static CHARSTRING_template template_ts__MNCC__DISC__ind_fac_defval; +const CHARSTRING_template& ts__MNCC__DISC__ind_fac_defval = template_ts__MNCC__DISC__ind_fac_defval; +static MNCC__useruser_template template_ts__MNCC__DISC__ind_uu_defval; +const MNCC__useruser_template& ts__MNCC__DISC__ind_uu_defval = template_ts__MNCC__DISC__ind_uu_defval; +static MNCC__progress_template template_ts__MNCC__DISC__req_prog_defval; +const MNCC__progress_template& ts__MNCC__DISC__req_prog_defval = template_ts__MNCC__DISC__req_prog_defval; +static CHARSTRING_template template_ts__MNCC__DISC__req_fac_defval; +const CHARSTRING_template& ts__MNCC__DISC__req_fac_defval = template_ts__MNCC__DISC__req_fac_defval; +static MNCC__useruser_template template_ts__MNCC__DISC__req_uu_defval; +const MNCC__useruser_template& ts__MNCC__DISC__req_uu_defval = template_ts__MNCC__DISC__req_uu_defval; +static MNCC__cause_template template_tr__MNCC__DISC__req_cause_defval; +const MNCC__cause_template& tr__MNCC__DISC__req_cause_defval = template_tr__MNCC__DISC__req_cause_defval; +static MNCC__progress_template template_tr__MNCC__DISC__req_prog_defval; +const MNCC__progress_template& tr__MNCC__DISC__req_prog_defval = template_tr__MNCC__DISC__req_prog_defval; +static CHARSTRING_template template_tr__MNCC__DISC__req_fac_defval; +const CHARSTRING_template& tr__MNCC__DISC__req_fac_defval = template_tr__MNCC__DISC__req_fac_defval; +static MNCC__useruser_template template_tr__MNCC__DISC__req_uu_defval; +const MNCC__useruser_template& tr__MNCC__DISC__req_uu_defval = template_tr__MNCC__DISC__req_uu_defval; +static INTEGER_template template_tr__MNCC__REL__ind_call__id_defval; +const INTEGER_template& tr__MNCC__REL__ind_call__id_defval = template_tr__MNCC__REL__ind_call__id_defval; +static MNCC__cause_template template_tr__MNCC__REL__ind_cause_defval; +const MNCC__cause_template& tr__MNCC__REL__ind_cause_defval = template_tr__MNCC__REL__ind_cause_defval; +static CHARSTRING_template template_tr__MNCC__REL__ind_fac_defval; +const CHARSTRING_template& tr__MNCC__REL__ind_fac_defval = template_tr__MNCC__REL__ind_fac_defval; +static MNCC__useruser_template template_tr__MNCC__REL__ind_uu_defval; +const MNCC__useruser_template& tr__MNCC__REL__ind_uu_defval = template_tr__MNCC__REL__ind_uu_defval; +static CHARSTRING_template template_ts__MNCC__REL__ind_fac_defval; +const CHARSTRING_template& ts__MNCC__REL__ind_fac_defval = template_ts__MNCC__REL__ind_fac_defval; +static MNCC__useruser_template template_ts__MNCC__REL__ind_uu_defval; +const MNCC__useruser_template& ts__MNCC__REL__ind_uu_defval = template_ts__MNCC__REL__ind_uu_defval; +static CHARSTRING_template template_ts__MNCC__REL__req_fac_defval; +const CHARSTRING_template& ts__MNCC__REL__req_fac_defval = template_ts__MNCC__REL__req_fac_defval; +static MNCC__useruser_template template_ts__MNCC__REL__req_uu_defval; +const MNCC__useruser_template& ts__MNCC__REL__req_uu_defval = template_ts__MNCC__REL__req_uu_defval; +static MNCC__cause_template template_tr__MNCC__REL__req_cause_defval; +const MNCC__cause_template& tr__MNCC__REL__req_cause_defval = template_tr__MNCC__REL__req_cause_defval; +static CHARSTRING_template template_tr__MNCC__REL__req_fac_defval; +const CHARSTRING_template& tr__MNCC__REL__req_fac_defval = template_tr__MNCC__REL__req_fac_defval; +static MNCC__useruser_template template_tr__MNCC__REL__req_uu_defval; +const MNCC__useruser_template& tr__MNCC__REL__req_uu_defval = template_tr__MNCC__REL__req_uu_defval; +static INTEGER_template template_tr__MNCC__REL__cnf_call__id_defval; +const INTEGER_template& tr__MNCC__REL__cnf_call__id_defval = template_tr__MNCC__REL__cnf_call__id_defval; +static MNCC__cause_template template_tr__MNCC__REL__cnf_cause_defval; +const MNCC__cause_template& tr__MNCC__REL__cnf_cause_defval = template_tr__MNCC__REL__cnf_cause_defval; +static CHARSTRING_template template_tr__MNCC__REL__cnf_fac_defval; +const CHARSTRING_template& tr__MNCC__REL__cnf_fac_defval = template_tr__MNCC__REL__cnf_fac_defval; +static MNCC__useruser_template template_tr__MNCC__REL__cnf_uu_defval; +const MNCC__useruser_template& tr__MNCC__REL__cnf_uu_defval = template_tr__MNCC__REL__cnf_uu_defval; +static CHARSTRING_template template_ts__MNCC__REL__cnf_fac_defval; +const CHARSTRING_template& ts__MNCC__REL__cnf_fac_defval = template_ts__MNCC__REL__cnf_fac_defval; +static MNCC__useruser_template template_ts__MNCC__REL__cnf_uu_defval; +const MNCC__useruser_template& ts__MNCC__REL__cnf_uu_defval = template_ts__MNCC__REL__cnf_uu_defval; +static INTEGER_template template_tr__MNCC__FACILITY__ind_call__id_defval; +const INTEGER_template& tr__MNCC__FACILITY__ind_call__id_defval = template_tr__MNCC__FACILITY__ind_call__id_defval; +static CHARSTRING_template template_tr__MNCC__FACILITY__ind_fac_defval; +const CHARSTRING_template& tr__MNCC__FACILITY__ind_fac_defval = template_tr__MNCC__FACILITY__ind_fac_defval; +static INTEGER_template template_tr__MNCC__START__DTMF__ind_call__id_defval; +const INTEGER_template& tr__MNCC__START__DTMF__ind_call__id_defval = template_tr__MNCC__START__DTMF__ind_call__id_defval; +static CHARSTRING_template template_tr__MNCC__START__DTMF__ind_keypad_defval; +const CHARSTRING_template& tr__MNCC__START__DTMF__ind_keypad_defval = template_tr__MNCC__START__DTMF__ind_keypad_defval; +static INTEGER_template template_tr__MNCC__STOP__DTMF__ind_call__id_defval; +const INTEGER_template& tr__MNCC__STOP__DTMF__ind_call__id_defval = template_tr__MNCC__STOP__DTMF__ind_call__id_defval; +static INTEGER_template template_tr__MNCC__MODIFY__ind_call__id_defval; +const INTEGER_template& tr__MNCC__MODIFY__ind_call__id_defval = template_tr__MNCC__MODIFY__ind_call__id_defval; +static MNCC__bearer__cap_template template_tr__MNCC__MODIFY__ind_bcap_defval; +const MNCC__bearer__cap_template& tr__MNCC__MODIFY__ind_bcap_defval = template_tr__MNCC__MODIFY__ind_bcap_defval; +static INTEGER_template template_tr__MNCC__MODIFY__cnf_call__id_defval; +const INTEGER_template& tr__MNCC__MODIFY__cnf_call__id_defval = template_tr__MNCC__MODIFY__cnf_call__id_defval; +static MNCC__bearer__cap_template template_tr__MNCC__MODIFY__cnf_bcap_defval; +const MNCC__bearer__cap_template& tr__MNCC__MODIFY__cnf_bcap_defval = template_tr__MNCC__MODIFY__cnf_bcap_defval; +static INTEGER_template template_tr__MNCC__USERINFO__ind_call__id_defval; +const INTEGER_template& tr__MNCC__USERINFO__ind_call__id_defval = template_tr__MNCC__USERINFO__ind_call__id_defval; +static MNCC__useruser_template template_tr__MNCC__USERINFO__ind_uu_defval; +const MNCC__useruser_template& tr__MNCC__USERINFO__ind_uu_defval = template_tr__MNCC__USERINFO__ind_uu_defval; +static INTEGER_template template_tr__MNCC__HOLD__ind_call__id_defval; +const INTEGER_template& tr__MNCC__HOLD__ind_call__id_defval = template_tr__MNCC__HOLD__ind_call__id_defval; +static INTEGER_template template_tr__MNCC__RETRIEVE__ind_call__id_defval; +const INTEGER_template& tr__MNCC__RETRIEVE__ind_call__id_defval = template_tr__MNCC__RETRIEVE__ind_call__id_defval; +static INTEGER_template template_tr__MNCC__RTP__CREATE_call__id_defval; +const INTEGER_template& tr__MNCC__RTP__CREATE_call__id_defval = template_tr__MNCC__RTP__CREATE_call__id_defval; +static INTEGER_template template_tr__MNCC__RTP__CONNECT_ip_defval; +const INTEGER_template& tr__MNCC__RTP__CONNECT_ip_defval = template_tr__MNCC__RTP__CONNECT_ip_defval; +static INTEGER_template template_tr__MNCC__RTP__CONNECT_rtp__port_defval; +const INTEGER_template& tr__MNCC__RTP__CONNECT_rtp__port_defval = template_tr__MNCC__RTP__CONNECT_rtp__port_defval; +static INTEGER_template template_tr__MNCC__RTP__CONNECT_pt_defval; +const INTEGER_template& tr__MNCC__RTP__CONNECT_pt_defval = template_tr__MNCC__RTP__CONNECT_pt_defval; +TTCN_Module module_object("MNCC_Types", __DATE__, __TIME__, module_checksum, pre_init_module, NULL, 0U, 4294967295U, 4294967295U, 4294967295U, NULL, 0LU, 0, post_init_module, NULL, NULL, NULL, NULL, NULL, NULL); + +static const RuntimeVersionChecker ver_checker( current_runtime_version.requires_major_version_6, + current_runtime_version.requires_minor_version_3, + current_runtime_version.requires_patch_level_1, current_runtime_version.requires_runtime_1); + +/* Member functions of C++ classes */ + +GSM48__bcap__ra::GSM48__bcap__ra() +{ +enum_value = UNBOUND_VALUE; +} + +GSM48__bcap__ra::GSM48__bcap__ra(int other_value) +{ +if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @MNCC_Types.GSM48_bcap_ra with invalid numeric value %d.", other_value); +enum_value = (enum_type)other_value; +} + +GSM48__bcap__ra::GSM48__bcap__ra(enum_type other_value) +{ +enum_value = other_value; +} + +GSM48__bcap__ra::GSM48__bcap__ra(const GSM48__bcap__ra& other_value) +: Base_Type() +{ +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @MNCC_Types.GSM48_bcap_ra."); +enum_value = other_value.enum_value; +} + +GSM48__bcap__ra& GSM48__bcap__ra::operator=(int other_value) +{ +if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @MNCC_Types.GSM48_bcap_ra.", other_value); +enum_value = (enum_type)other_value; +return *this; +} + +GSM48__bcap__ra& GSM48__bcap__ra::operator=(enum_type other_value) +{ +enum_value = other_value; +return *this; +} + +GSM48__bcap__ra& GSM48__bcap__ra::operator=(const GSM48__bcap__ra& other_value) +{ +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @MNCC_Types.GSM48_bcap_ra."); +enum_value = other_value.enum_value; +return *this; +} + +boolean GSM48__bcap__ra::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 @MNCC_Types.GSM48_bcap_ra."); +return enum_value == other_value; +} + +boolean GSM48__bcap__ra::operator==(const GSM48__bcap__ra& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_ra."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_ra."); +return enum_value == other_value.enum_value; +} + +boolean GSM48__bcap__ra::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 @MNCC_Types.GSM48_bcap_ra."); +return enum_value < other_value; +} + +boolean GSM48__bcap__ra::operator<(const GSM48__bcap__ra& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_ra."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_ra."); +return enum_value < other_value.enum_value; +} + +boolean GSM48__bcap__ra::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 @MNCC_Types.GSM48_bcap_ra."); +return enum_value > other_value; +} + +boolean GSM48__bcap__ra::operator>(const GSM48__bcap__ra& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_ra."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_ra."); +return enum_value > other_value.enum_value; +} + +const char *GSM48__bcap__ra::enum_to_str(enum_type enum_par) +{ +switch (enum_par) { +case GSM48__BCAP__RA__NONE: return "GSM48_BCAP_RA_NONE"; +case GSM48__BCAP__RA__V110__X30: return "GSM48_BCAP_RA_V110_X30"; +case GSM48__BCAP__RA__X31: return "GSM48_BCAP_RA_X31"; +case GSM48__BCAP__RA__OTHER: return "GSM48_BCAP_RA_OTHER"; +default: return ""; +} +} + +GSM48__bcap__ra::enum_type GSM48__bcap__ra::str_to_enum(const char *str_par) +{ +if (!strcmp(str_par, "GSM48_BCAP_RA_NONE")) return GSM48__BCAP__RA__NONE; +else if (!strcmp(str_par, "GSM48_BCAP_RA_V110_X30")) return GSM48__BCAP__RA__V110__X30; +else if (!strcmp(str_par, "GSM48_BCAP_RA_X31")) return GSM48__BCAP__RA__X31; +else if (!strcmp(str_par, "GSM48_BCAP_RA_OTHER")) return GSM48__BCAP__RA__OTHER; +else return UNKNOWN_VALUE; +} + +boolean GSM48__bcap__ra::is_valid_enum(int int_par) +{ +switch (int_par) { +case 0: +case 1: +case 2: +case 3: +return TRUE; +default: +return FALSE; +} +} + +int GSM48__bcap__ra::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 @MNCC_Types.GSM48_bcap_ra.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); +return enum_par; +} + +int GSM48__bcap__ra::enum2int(const GSM48__bcap__ra& 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 @MNCC_Types.GSM48_bcap_ra.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); +return enum_par.enum_value; +} + +void GSM48__bcap__ra::int2enum(int int_val) +{ +if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @MNCC_Types.GSM48_bcap_ra.", int_val); +enum_value = (enum_type)int_val; +} + +GSM48__bcap__ra::operator GSM48__bcap__ra::enum_type() const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @MNCC_Types.GSM48_bcap_ra."); +return enum_value; +} + +void GSM48__bcap__ra::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 GSM48__bcap__ra::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", "@MNCC_Types.GSM48_bcap_ra"); + enum_value = str_to_enum(param.get_enumerated()); + if (!is_valid_enum(enum_value)) { + param.error("Invalid enumerated value for type @MNCC_Types.GSM48_bcap_ra."); + } +} + +void GSM48__bcap__ra::encode_text(Text_Buf& text_buf) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @MNCC_Types.GSM48_bcap_ra."); +text_buf.push_int(enum_value); +} + +void GSM48__bcap__ra::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 @MNCC_Types.GSM48_bcap_ra.", enum_value); +} + +void GSM48__bcap__ra::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void GSM48__bcap__ra::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int GSM48__bcap__ra::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) +{ + 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 GSM48__bcap__ra::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 GSM48__bcap__ra_template::copy_template(const GSM48__bcap__ra_template& other_value) +{ +set_selection(other_value); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = other_value.single_value; +break; +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new GSM48__bcap__ra_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of enumerated type @MNCC_Types.GSM48_bcap_ra."); +} +} + +GSM48__bcap__ra_template::GSM48__bcap__ra_template() +{ +} + +GSM48__bcap__ra_template::GSM48__bcap__ra_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +GSM48__bcap__ra_template::GSM48__bcap__ra_template(int other_value) + : Base_Template(SPECIFIC_VALUE) +{ +if (!GSM48__bcap__ra::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @MNCC_Types.GSM48_bcap_ra with unknown numeric value %d.", other_value); +single_value = (GSM48__bcap__ra::enum_type)other_value; +} + +GSM48__bcap__ra_template::GSM48__bcap__ra_template(GSM48__bcap__ra::enum_type other_value) + : Base_Template(SPECIFIC_VALUE) +{ +single_value = other_value; +} + +GSM48__bcap__ra_template::GSM48__bcap__ra_template(const GSM48__bcap__ra& other_value) + : Base_Template(SPECIFIC_VALUE) +{ +if (other_value.enum_value == GSM48__bcap__ra::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @MNCC_Types.GSM48_bcap_ra."); +single_value = other_value.enum_value; +} + +GSM48__bcap__ra_template::GSM48__bcap__ra_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__bcap__ra::enum_type)(const GSM48__bcap__ra&)other_value; +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of enumerated type @MNCC_Types.GSM48_bcap_ra from an unbound optional field."); +} +} + +GSM48__bcap__ra_template::GSM48__bcap__ra_template(const GSM48__bcap__ra_template& other_value) + : Base_Template() +{ +copy_template(other_value); +} + +GSM48__bcap__ra_template::~GSM48__bcap__ra_template() +{ +clean_up(); +} + +boolean GSM48__bcap__ra_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +return TRUE; +} + +boolean GSM48__bcap__ra_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +return single_value != GSM48__bcap__ra::UNBOUND_VALUE; +} + +void GSM48__bcap__ra_template::clean_up() +{ +if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value; +template_selection = UNINITIALIZED_TEMPLATE; +} + +GSM48__bcap__ra_template& GSM48__bcap__ra_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +GSM48__bcap__ra_template& GSM48__bcap__ra_template::operator=(int other_value) +{ +if (!GSM48__bcap__ra::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @MNCC_Types.GSM48_bcap_ra.", other_value); +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__bcap__ra::enum_type)other_value; +return *this; +} + +GSM48__bcap__ra_template& GSM48__bcap__ra_template::operator=(GSM48__bcap__ra::enum_type other_value) +{ +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = other_value; +return *this; +} + +GSM48__bcap__ra_template& GSM48__bcap__ra_template::operator=(const GSM48__bcap__ra& other_value) +{ +if (other_value.enum_value == GSM48__bcap__ra::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @MNCC_Types.GSM48_bcap_ra to a template."); +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = other_value.enum_value; +return *this; +} + +GSM48__bcap__ra_template& GSM48__bcap__ra_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__bcap__ra::enum_type)(const GSM48__bcap__ra&)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 @MNCC_Types.GSM48_bcap_ra."); +} +return *this; +} + +GSM48__bcap__ra_template& GSM48__bcap__ra_template::operator=(const GSM48__bcap__ra_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean GSM48__bcap__ra_template::match(GSM48__bcap__ra::enum_type other_value, boolean) const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +return single_value == other_value; +case OMIT_VALUE: +return FALSE; +case ANY_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of enumerated type @MNCC_Types.GSM48_bcap_ra."); +} +return FALSE; +} + +boolean GSM48__bcap__ra_template::match(const GSM48__bcap__ra& other_value, boolean) const +{ +if (other_value.enum_value == GSM48__bcap__ra::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @MNCC_Types.GSM48_bcap_ra with an unbound value."); +return match(other_value.enum_value); +} + +GSM48__bcap__ra::enum_type GSM48__bcap__ra_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 @MNCC_Types.GSM48_bcap_ra."); +return single_value; +} + +void GSM48__bcap__ra_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @MNCC_Types.GSM48_bcap_ra."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new GSM48__bcap__ra_template[list_length]; +} + +GSM48__bcap__ra_template& GSM48__bcap__ra_template::list_item(unsigned int list_index) +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @MNCC_Types.GSM48_bcap_ra."); +if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @MNCC_Types.GSM48_bcap_ra."); +return value_list.list_value[list_index]; +} + +void GSM48__bcap__ra_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_enum(GSM48__bcap__ra::enum_to_str(single_value), single_value); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { +if (elem_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[elem_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void GSM48__bcap__ra_template::log_match(const GSM48__bcap__ra& 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 GSM48__bcap__ra_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 @MNCC_Types.GSM48_bcap_ra."); +} +} + +void GSM48__bcap__ra_template::decode_text(Text_Buf& text_buf) +{ +clean_up(); +decode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = (GSM48__bcap__ra::enum_type)text_buf.pull_int().get_val(); +if (!GSM48__bcap__ra::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @MNCC_Types.GSM48_bcap_ra.", 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 GSM48__bcap__ra_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 @MNCC_Types.GSM48_bcap_ra."); +} +} + +boolean GSM48__bcap__ra_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean GSM48__bcap__ra_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int i=0; 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: { + GSM48__bcap__ra_template new_temp; + new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, m_p->get_size()); + for (size_t p_i=0; p_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: { + GSM48__bcap__ra::enum_type enum_val = GSM48__bcap__ra::str_to_enum(m_p->get_enumerated()); + if (!GSM48__bcap__ra::is_valid_enum(enum_val)) { + param.error("Invalid enumerated value for type @MNCC_Types.GSM48_bcap_ra."); + } + *this = enum_val; + } break; + default: + param.type_error("enumerated template", "@MNCC_Types.GSM48_bcap_ra"); + } + is_ifpresent = param.get_ifpresent(); +} + +void GSM48__bcap__ra_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 : "@MNCC_Types.GSM48_bcap_ra"); +} + +GSM48__bcap__sig__access::GSM48__bcap__sig__access() +{ +enum_value = UNBOUND_VALUE; +} + +GSM48__bcap__sig__access::GSM48__bcap__sig__access(int other_value) +{ +if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @MNCC_Types.GSM48_bcap_sig_access with invalid numeric value %d.", other_value); +enum_value = (enum_type)other_value; +} + +GSM48__bcap__sig__access::GSM48__bcap__sig__access(enum_type other_value) +{ +enum_value = other_value; +} + +GSM48__bcap__sig__access::GSM48__bcap__sig__access(const GSM48__bcap__sig__access& other_value) +: Base_Type() +{ +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @MNCC_Types.GSM48_bcap_sig_access."); +enum_value = other_value.enum_value; +} + +GSM48__bcap__sig__access& GSM48__bcap__sig__access::operator=(int other_value) +{ +if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @MNCC_Types.GSM48_bcap_sig_access.", other_value); +enum_value = (enum_type)other_value; +return *this; +} + +GSM48__bcap__sig__access& GSM48__bcap__sig__access::operator=(enum_type other_value) +{ +enum_value = other_value; +return *this; +} + +GSM48__bcap__sig__access& GSM48__bcap__sig__access::operator=(const GSM48__bcap__sig__access& other_value) +{ +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @MNCC_Types.GSM48_bcap_sig_access."); +enum_value = other_value.enum_value; +return *this; +} + +boolean GSM48__bcap__sig__access::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 @MNCC_Types.GSM48_bcap_sig_access."); +return enum_value == other_value; +} + +boolean GSM48__bcap__sig__access::operator==(const GSM48__bcap__sig__access& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_sig_access."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_sig_access."); +return enum_value == other_value.enum_value; +} + +boolean GSM48__bcap__sig__access::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 @MNCC_Types.GSM48_bcap_sig_access."); +return enum_value < other_value; +} + +boolean GSM48__bcap__sig__access::operator<(const GSM48__bcap__sig__access& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_sig_access."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_sig_access."); +return enum_value < other_value.enum_value; +} + +boolean GSM48__bcap__sig__access::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 @MNCC_Types.GSM48_bcap_sig_access."); +return enum_value > other_value; +} + +boolean GSM48__bcap__sig__access::operator>(const GSM48__bcap__sig__access& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_sig_access."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_sig_access."); +return enum_value > other_value.enum_value; +} + +const char *GSM48__bcap__sig__access::enum_to_str(enum_type enum_par) +{ +switch (enum_par) { +case GSM48__BCAP__SA__NONE: return "GSM48_BCAP_SA_NONE"; +case GSM48__BCAP__SA__I440__I450: return "GSM48_BCAP_SA_I440_I450"; +case GSM48__BCAP__SA__X21: return "GSM48_BCAP_SA_X21"; +case GSM48__BCAP__SA__X28__DP__IN: return "GSM48_BCAP_SA_X28_DP_IN"; +case GSM48__BCAP__SA__X28__DP__UN: return "GSM48_BCAP_SA_X28_DP_UN"; +case GSM48__BCAP__SA__X28__NDP: return "GSM48_BCAP_SA_X28_NDP"; +case GSM48__BCAP__SA__X32: return "GSM48_BCAP_SA_X32"; +default: return ""; +} +} + +GSM48__bcap__sig__access::enum_type GSM48__bcap__sig__access::str_to_enum(const char *str_par) +{ +if (!strcmp(str_par, "GSM48_BCAP_SA_NONE")) return GSM48__BCAP__SA__NONE; +else if (!strcmp(str_par, "GSM48_BCAP_SA_I440_I450")) return GSM48__BCAP__SA__I440__I450; +else if (!strcmp(str_par, "GSM48_BCAP_SA_X21")) return GSM48__BCAP__SA__X21; +else if (!strcmp(str_par, "GSM48_BCAP_SA_X28_DP_IN")) return GSM48__BCAP__SA__X28__DP__IN; +else if (!strcmp(str_par, "GSM48_BCAP_SA_X28_DP_UN")) return GSM48__BCAP__SA__X28__DP__UN; +else if (!strcmp(str_par, "GSM48_BCAP_SA_X28_NDP")) return GSM48__BCAP__SA__X28__NDP; +else if (!strcmp(str_par, "GSM48_BCAP_SA_X32")) return GSM48__BCAP__SA__X32; +else return UNKNOWN_VALUE; +} + +boolean GSM48__bcap__sig__access::is_valid_enum(int int_par) +{ +switch (int_par) { +case 0: +case 1: +case 2: +case 3: +case 4: +case 5: +case 6: +return TRUE; +default: +return FALSE; +} +} + +int GSM48__bcap__sig__access::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 @MNCC_Types.GSM48_bcap_sig_access.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); +return enum_par; +} + +int GSM48__bcap__sig__access::enum2int(const GSM48__bcap__sig__access& 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 @MNCC_Types.GSM48_bcap_sig_access.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); +return enum_par.enum_value; +} + +void GSM48__bcap__sig__access::int2enum(int int_val) +{ +if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @MNCC_Types.GSM48_bcap_sig_access.", int_val); +enum_value = (enum_type)int_val; +} + +GSM48__bcap__sig__access::operator GSM48__bcap__sig__access::enum_type() const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @MNCC_Types.GSM48_bcap_sig_access."); +return enum_value; +} + +void GSM48__bcap__sig__access::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 GSM48__bcap__sig__access::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", "@MNCC_Types.GSM48_bcap_sig_access"); + enum_value = str_to_enum(param.get_enumerated()); + if (!is_valid_enum(enum_value)) { + param.error("Invalid enumerated value for type @MNCC_Types.GSM48_bcap_sig_access."); + } +} + +void GSM48__bcap__sig__access::encode_text(Text_Buf& text_buf) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @MNCC_Types.GSM48_bcap_sig_access."); +text_buf.push_int(enum_value); +} + +void GSM48__bcap__sig__access::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 @MNCC_Types.GSM48_bcap_sig_access.", enum_value); +} + +void GSM48__bcap__sig__access::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void GSM48__bcap__sig__access::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int GSM48__bcap__sig__access::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) +{ + 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 GSM48__bcap__sig__access::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 GSM48__bcap__sig__access_template::copy_template(const GSM48__bcap__sig__access_template& other_value) +{ +set_selection(other_value); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = other_value.single_value; +break; +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new GSM48__bcap__sig__access_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of enumerated type @MNCC_Types.GSM48_bcap_sig_access."); +} +} + +GSM48__bcap__sig__access_template::GSM48__bcap__sig__access_template() +{ +} + +GSM48__bcap__sig__access_template::GSM48__bcap__sig__access_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +GSM48__bcap__sig__access_template::GSM48__bcap__sig__access_template(int other_value) + : Base_Template(SPECIFIC_VALUE) +{ +if (!GSM48__bcap__sig__access::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @MNCC_Types.GSM48_bcap_sig_access with unknown numeric value %d.", other_value); +single_value = (GSM48__bcap__sig__access::enum_type)other_value; +} + +GSM48__bcap__sig__access_template::GSM48__bcap__sig__access_template(GSM48__bcap__sig__access::enum_type other_value) + : Base_Template(SPECIFIC_VALUE) +{ +single_value = other_value; +} + +GSM48__bcap__sig__access_template::GSM48__bcap__sig__access_template(const GSM48__bcap__sig__access& other_value) + : Base_Template(SPECIFIC_VALUE) +{ +if (other_value.enum_value == GSM48__bcap__sig__access::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @MNCC_Types.GSM48_bcap_sig_access."); +single_value = other_value.enum_value; +} + +GSM48__bcap__sig__access_template::GSM48__bcap__sig__access_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__bcap__sig__access::enum_type)(const GSM48__bcap__sig__access&)other_value; +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of enumerated type @MNCC_Types.GSM48_bcap_sig_access from an unbound optional field."); +} +} + +GSM48__bcap__sig__access_template::GSM48__bcap__sig__access_template(const GSM48__bcap__sig__access_template& other_value) + : Base_Template() +{ +copy_template(other_value); +} + +GSM48__bcap__sig__access_template::~GSM48__bcap__sig__access_template() +{ +clean_up(); +} + +boolean GSM48__bcap__sig__access_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +return TRUE; +} + +boolean GSM48__bcap__sig__access_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +return single_value != GSM48__bcap__sig__access::UNBOUND_VALUE; +} + +void GSM48__bcap__sig__access_template::clean_up() +{ +if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value; +template_selection = UNINITIALIZED_TEMPLATE; +} + +GSM48__bcap__sig__access_template& GSM48__bcap__sig__access_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +GSM48__bcap__sig__access_template& GSM48__bcap__sig__access_template::operator=(int other_value) +{ +if (!GSM48__bcap__sig__access::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @MNCC_Types.GSM48_bcap_sig_access.", other_value); +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__bcap__sig__access::enum_type)other_value; +return *this; +} + +GSM48__bcap__sig__access_template& GSM48__bcap__sig__access_template::operator=(GSM48__bcap__sig__access::enum_type other_value) +{ +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = other_value; +return *this; +} + +GSM48__bcap__sig__access_template& GSM48__bcap__sig__access_template::operator=(const GSM48__bcap__sig__access& other_value) +{ +if (other_value.enum_value == GSM48__bcap__sig__access::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @MNCC_Types.GSM48_bcap_sig_access to a template."); +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = other_value.enum_value; +return *this; +} + +GSM48__bcap__sig__access_template& GSM48__bcap__sig__access_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__bcap__sig__access::enum_type)(const GSM48__bcap__sig__access&)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 @MNCC_Types.GSM48_bcap_sig_access."); +} +return *this; +} + +GSM48__bcap__sig__access_template& GSM48__bcap__sig__access_template::operator=(const GSM48__bcap__sig__access_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean GSM48__bcap__sig__access_template::match(GSM48__bcap__sig__access::enum_type other_value, boolean) const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +return single_value == other_value; +case OMIT_VALUE: +return FALSE; +case ANY_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of enumerated type @MNCC_Types.GSM48_bcap_sig_access."); +} +return FALSE; +} + +boolean GSM48__bcap__sig__access_template::match(const GSM48__bcap__sig__access& other_value, boolean) const +{ +if (other_value.enum_value == GSM48__bcap__sig__access::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @MNCC_Types.GSM48_bcap_sig_access with an unbound value."); +return match(other_value.enum_value); +} + +GSM48__bcap__sig__access::enum_type GSM48__bcap__sig__access_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 @MNCC_Types.GSM48_bcap_sig_access."); +return single_value; +} + +void GSM48__bcap__sig__access_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @MNCC_Types.GSM48_bcap_sig_access."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new GSM48__bcap__sig__access_template[list_length]; +} + +GSM48__bcap__sig__access_template& GSM48__bcap__sig__access_template::list_item(unsigned int list_index) +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @MNCC_Types.GSM48_bcap_sig_access."); +if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @MNCC_Types.GSM48_bcap_sig_access."); +return value_list.list_value[list_index]; +} + +void GSM48__bcap__sig__access_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_enum(GSM48__bcap__sig__access::enum_to_str(single_value), single_value); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { +if (elem_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[elem_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void GSM48__bcap__sig__access_template::log_match(const GSM48__bcap__sig__access& 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 GSM48__bcap__sig__access_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 @MNCC_Types.GSM48_bcap_sig_access."); +} +} + +void GSM48__bcap__sig__access_template::decode_text(Text_Buf& text_buf) +{ +clean_up(); +decode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = (GSM48__bcap__sig__access::enum_type)text_buf.pull_int().get_val(); +if (!GSM48__bcap__sig__access::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @MNCC_Types.GSM48_bcap_sig_access.", 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 GSM48__bcap__sig__access_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 @MNCC_Types.GSM48_bcap_sig_access."); +} +} + +boolean GSM48__bcap__sig__access_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean GSM48__bcap__sig__access_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int i=0; 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: { + GSM48__bcap__sig__access_template new_temp; + new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, m_p->get_size()); + for (size_t p_i=0; p_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: { + GSM48__bcap__sig__access::enum_type enum_val = GSM48__bcap__sig__access::str_to_enum(m_p->get_enumerated()); + if (!GSM48__bcap__sig__access::is_valid_enum(enum_val)) { + param.error("Invalid enumerated value for type @MNCC_Types.GSM48_bcap_sig_access."); + } + *this = enum_val; + } break; + default: + param.type_error("enumerated template", "@MNCC_Types.GSM48_bcap_sig_access"); + } + is_ifpresent = param.get_ifpresent(); +} + +void GSM48__bcap__sig__access_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 : "@MNCC_Types.GSM48_bcap_sig_access"); +} + +GSM48__bcap__user__rate::GSM48__bcap__user__rate() +{ +enum_value = UNBOUND_VALUE; +} + +GSM48__bcap__user__rate::GSM48__bcap__user__rate(int other_value) +{ +if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @MNCC_Types.GSM48_bcap_user_rate with invalid numeric value %d.", other_value); +enum_value = (enum_type)other_value; +} + +GSM48__bcap__user__rate::GSM48__bcap__user__rate(enum_type other_value) +{ +enum_value = other_value; +} + +GSM48__bcap__user__rate::GSM48__bcap__user__rate(const GSM48__bcap__user__rate& other_value) +: Base_Type() +{ +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @MNCC_Types.GSM48_bcap_user_rate."); +enum_value = other_value.enum_value; +} + +GSM48__bcap__user__rate& GSM48__bcap__user__rate::operator=(int other_value) +{ +if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @MNCC_Types.GSM48_bcap_user_rate.", other_value); +enum_value = (enum_type)other_value; +return *this; +} + +GSM48__bcap__user__rate& GSM48__bcap__user__rate::operator=(enum_type other_value) +{ +enum_value = other_value; +return *this; +} + +GSM48__bcap__user__rate& GSM48__bcap__user__rate::operator=(const GSM48__bcap__user__rate& other_value) +{ +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @MNCC_Types.GSM48_bcap_user_rate."); +enum_value = other_value.enum_value; +return *this; +} + +boolean GSM48__bcap__user__rate::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 @MNCC_Types.GSM48_bcap_user_rate."); +return enum_value == other_value; +} + +boolean GSM48__bcap__user__rate::operator==(const GSM48__bcap__user__rate& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_user_rate."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_user_rate."); +return enum_value == other_value.enum_value; +} + +boolean GSM48__bcap__user__rate::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 @MNCC_Types.GSM48_bcap_user_rate."); +return enum_value < other_value; +} + +boolean GSM48__bcap__user__rate::operator<(const GSM48__bcap__user__rate& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_user_rate."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_user_rate."); +return enum_value < other_value.enum_value; +} + +boolean GSM48__bcap__user__rate::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 @MNCC_Types.GSM48_bcap_user_rate."); +return enum_value > other_value; +} + +boolean GSM48__bcap__user__rate::operator>(const GSM48__bcap__user__rate& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_user_rate."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_user_rate."); +return enum_value > other_value.enum_value; +} + +const char *GSM48__bcap__user__rate::enum_to_str(enum_type enum_par) +{ +switch (enum_par) { +case GSM48__BCAP__UR__NONE: return "GSM48_BCAP_UR_NONE"; +case GSM48__BCAP__UR__300: return "GSM48_BCAP_UR_300"; +case GSM48__BCAP__UR__1200: return "GSM48_BCAP_UR_1200"; +case GSM48__BCAP__UR__2400: return "GSM48_BCAP_UR_2400"; +case GSM48__BCAP__UR__4800: return "GSM48_BCAP_UR_4800"; +case GSM48__BCAP__UR__9600: return "GSM48_BCAP_UR_9600"; +case GSM48__BCAP__UR__12000: return "GSM48_BCAP_UR_12000"; +case GSM48__BCAP__UR__1200__75: return "GSM48_BCAP_UR_1200_75"; +default: return ""; +} +} + +GSM48__bcap__user__rate::enum_type GSM48__bcap__user__rate::str_to_enum(const char *str_par) +{ +if (!strcmp(str_par, "GSM48_BCAP_UR_NONE")) return GSM48__BCAP__UR__NONE; +else if (!strcmp(str_par, "GSM48_BCAP_UR_300")) return GSM48__BCAP__UR__300; +else if (!strcmp(str_par, "GSM48_BCAP_UR_1200")) return GSM48__BCAP__UR__1200; +else if (!strcmp(str_par, "GSM48_BCAP_UR_2400")) return GSM48__BCAP__UR__2400; +else if (!strcmp(str_par, "GSM48_BCAP_UR_4800")) return GSM48__BCAP__UR__4800; +else if (!strcmp(str_par, "GSM48_BCAP_UR_9600")) return GSM48__BCAP__UR__9600; +else if (!strcmp(str_par, "GSM48_BCAP_UR_12000")) return GSM48__BCAP__UR__12000; +else if (!strcmp(str_par, "GSM48_BCAP_UR_1200_75")) return GSM48__BCAP__UR__1200__75; +else return UNKNOWN_VALUE; +} + +boolean GSM48__bcap__user__rate::is_valid_enum(int int_par) +{ +switch (int_par) { +case 0: +case 1: +case 2: +case 3: +case 4: +case 5: +case 6: +case 7: +return TRUE; +default: +return FALSE; +} +} + +int GSM48__bcap__user__rate::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 @MNCC_Types.GSM48_bcap_user_rate.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); +return enum_par; +} + +int GSM48__bcap__user__rate::enum2int(const GSM48__bcap__user__rate& 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 @MNCC_Types.GSM48_bcap_user_rate.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); +return enum_par.enum_value; +} + +void GSM48__bcap__user__rate::int2enum(int int_val) +{ +if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @MNCC_Types.GSM48_bcap_user_rate.", int_val); +enum_value = (enum_type)int_val; +} + +GSM48__bcap__user__rate::operator GSM48__bcap__user__rate::enum_type() const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @MNCC_Types.GSM48_bcap_user_rate."); +return enum_value; +} + +void GSM48__bcap__user__rate::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 GSM48__bcap__user__rate::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", "@MNCC_Types.GSM48_bcap_user_rate"); + enum_value = str_to_enum(param.get_enumerated()); + if (!is_valid_enum(enum_value)) { + param.error("Invalid enumerated value for type @MNCC_Types.GSM48_bcap_user_rate."); + } +} + +void GSM48__bcap__user__rate::encode_text(Text_Buf& text_buf) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @MNCC_Types.GSM48_bcap_user_rate."); +text_buf.push_int(enum_value); +} + +void GSM48__bcap__user__rate::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 @MNCC_Types.GSM48_bcap_user_rate.", enum_value); +} + +void GSM48__bcap__user__rate::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void GSM48__bcap__user__rate::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int GSM48__bcap__user__rate::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) +{ + int decoded_value = 0; + int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 4, no_err); + if (decoded_length < 0) return decoded_length; + if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value; + else { + if(no_err){ + return -1; + } else { + TTCN_EncDec_ErrorContext::error + (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name); + enum_value = UNKNOWN_VALUE; + } + } + return decoded_length; +} + +int GSM48__bcap__user__rate::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const +{ + return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 4); +} + +void GSM48__bcap__user__rate_template::copy_template(const GSM48__bcap__user__rate_template& other_value) +{ +set_selection(other_value); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = other_value.single_value; +break; +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new GSM48__bcap__user__rate_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of enumerated type @MNCC_Types.GSM48_bcap_user_rate."); +} +} + +GSM48__bcap__user__rate_template::GSM48__bcap__user__rate_template() +{ +} + +GSM48__bcap__user__rate_template::GSM48__bcap__user__rate_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +GSM48__bcap__user__rate_template::GSM48__bcap__user__rate_template(int other_value) + : Base_Template(SPECIFIC_VALUE) +{ +if (!GSM48__bcap__user__rate::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @MNCC_Types.GSM48_bcap_user_rate with unknown numeric value %d.", other_value); +single_value = (GSM48__bcap__user__rate::enum_type)other_value; +} + +GSM48__bcap__user__rate_template::GSM48__bcap__user__rate_template(GSM48__bcap__user__rate::enum_type other_value) + : Base_Template(SPECIFIC_VALUE) +{ +single_value = other_value; +} + +GSM48__bcap__user__rate_template::GSM48__bcap__user__rate_template(const GSM48__bcap__user__rate& other_value) + : Base_Template(SPECIFIC_VALUE) +{ +if (other_value.enum_value == GSM48__bcap__user__rate::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @MNCC_Types.GSM48_bcap_user_rate."); +single_value = other_value.enum_value; +} + +GSM48__bcap__user__rate_template::GSM48__bcap__user__rate_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__bcap__user__rate::enum_type)(const GSM48__bcap__user__rate&)other_value; +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of enumerated type @MNCC_Types.GSM48_bcap_user_rate from an unbound optional field."); +} +} + +GSM48__bcap__user__rate_template::GSM48__bcap__user__rate_template(const GSM48__bcap__user__rate_template& other_value) + : Base_Template() +{ +copy_template(other_value); +} + +GSM48__bcap__user__rate_template::~GSM48__bcap__user__rate_template() +{ +clean_up(); +} + +boolean GSM48__bcap__user__rate_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +return TRUE; +} + +boolean GSM48__bcap__user__rate_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +return single_value != GSM48__bcap__user__rate::UNBOUND_VALUE; +} + +void GSM48__bcap__user__rate_template::clean_up() +{ +if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value; +template_selection = UNINITIALIZED_TEMPLATE; +} + +GSM48__bcap__user__rate_template& GSM48__bcap__user__rate_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +GSM48__bcap__user__rate_template& GSM48__bcap__user__rate_template::operator=(int other_value) +{ +if (!GSM48__bcap__user__rate::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @MNCC_Types.GSM48_bcap_user_rate.", other_value); +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__bcap__user__rate::enum_type)other_value; +return *this; +} + +GSM48__bcap__user__rate_template& GSM48__bcap__user__rate_template::operator=(GSM48__bcap__user__rate::enum_type other_value) +{ +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = other_value; +return *this; +} + +GSM48__bcap__user__rate_template& GSM48__bcap__user__rate_template::operator=(const GSM48__bcap__user__rate& other_value) +{ +if (other_value.enum_value == GSM48__bcap__user__rate::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @MNCC_Types.GSM48_bcap_user_rate to a template."); +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = other_value.enum_value; +return *this; +} + +GSM48__bcap__user__rate_template& GSM48__bcap__user__rate_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__bcap__user__rate::enum_type)(const GSM48__bcap__user__rate&)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 @MNCC_Types.GSM48_bcap_user_rate."); +} +return *this; +} + +GSM48__bcap__user__rate_template& GSM48__bcap__user__rate_template::operator=(const GSM48__bcap__user__rate_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean GSM48__bcap__user__rate_template::match(GSM48__bcap__user__rate::enum_type other_value, boolean) const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +return single_value == other_value; +case OMIT_VALUE: +return FALSE; +case ANY_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of enumerated type @MNCC_Types.GSM48_bcap_user_rate."); +} +return FALSE; +} + +boolean GSM48__bcap__user__rate_template::match(const GSM48__bcap__user__rate& other_value, boolean) const +{ +if (other_value.enum_value == GSM48__bcap__user__rate::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @MNCC_Types.GSM48_bcap_user_rate with an unbound value."); +return match(other_value.enum_value); +} + +GSM48__bcap__user__rate::enum_type GSM48__bcap__user__rate_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 @MNCC_Types.GSM48_bcap_user_rate."); +return single_value; +} + +void GSM48__bcap__user__rate_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @MNCC_Types.GSM48_bcap_user_rate."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new GSM48__bcap__user__rate_template[list_length]; +} + +GSM48__bcap__user__rate_template& GSM48__bcap__user__rate_template::list_item(unsigned int list_index) +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @MNCC_Types.GSM48_bcap_user_rate."); +if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @MNCC_Types.GSM48_bcap_user_rate."); +return value_list.list_value[list_index]; +} + +void GSM48__bcap__user__rate_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_enum(GSM48__bcap__user__rate::enum_to_str(single_value), single_value); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { +if (elem_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[elem_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void GSM48__bcap__user__rate_template::log_match(const GSM48__bcap__user__rate& 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 GSM48__bcap__user__rate_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 @MNCC_Types.GSM48_bcap_user_rate."); +} +} + +void GSM48__bcap__user__rate_template::decode_text(Text_Buf& text_buf) +{ +clean_up(); +decode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = (GSM48__bcap__user__rate::enum_type)text_buf.pull_int().get_val(); +if (!GSM48__bcap__user__rate::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @MNCC_Types.GSM48_bcap_user_rate.", 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 GSM48__bcap__user__rate_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 @MNCC_Types.GSM48_bcap_user_rate."); +} +} + +boolean GSM48__bcap__user__rate_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean GSM48__bcap__user__rate_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int i=0; 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: { + GSM48__bcap__user__rate_template new_temp; + new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, m_p->get_size()); + for (size_t p_i=0; p_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: { + GSM48__bcap__user__rate::enum_type enum_val = GSM48__bcap__user__rate::str_to_enum(m_p->get_enumerated()); + if (!GSM48__bcap__user__rate::is_valid_enum(enum_val)) { + param.error("Invalid enumerated value for type @MNCC_Types.GSM48_bcap_user_rate."); + } + *this = enum_val; + } break; + default: + param.type_error("enumerated template", "@MNCC_Types.GSM48_bcap_user_rate"); + } + is_ifpresent = param.get_ifpresent(); +} + +void GSM48__bcap__user__rate_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 : "@MNCC_Types.GSM48_bcap_user_rate"); +} + +GSM48__bcap__parity::GSM48__bcap__parity() +{ +enum_value = UNBOUND_VALUE; +} + +GSM48__bcap__parity::GSM48__bcap__parity(int other_value) +{ +if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @MNCC_Types.GSM48_bcap_parity with invalid numeric value %d.", other_value); +enum_value = (enum_type)other_value; +} + +GSM48__bcap__parity::GSM48__bcap__parity(enum_type other_value) +{ +enum_value = other_value; +} + +GSM48__bcap__parity::GSM48__bcap__parity(const GSM48__bcap__parity& other_value) +: Base_Type() +{ +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @MNCC_Types.GSM48_bcap_parity."); +enum_value = other_value.enum_value; +} + +GSM48__bcap__parity& GSM48__bcap__parity::operator=(int other_value) +{ +if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @MNCC_Types.GSM48_bcap_parity.", other_value); +enum_value = (enum_type)other_value; +return *this; +} + +GSM48__bcap__parity& GSM48__bcap__parity::operator=(enum_type other_value) +{ +enum_value = other_value; +return *this; +} + +GSM48__bcap__parity& GSM48__bcap__parity::operator=(const GSM48__bcap__parity& other_value) +{ +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @MNCC_Types.GSM48_bcap_parity."); +enum_value = other_value.enum_value; +return *this; +} + +boolean GSM48__bcap__parity::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 @MNCC_Types.GSM48_bcap_parity."); +return enum_value == other_value; +} + +boolean GSM48__bcap__parity::operator==(const GSM48__bcap__parity& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_parity."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_parity."); +return enum_value == other_value.enum_value; +} + +boolean GSM48__bcap__parity::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 @MNCC_Types.GSM48_bcap_parity."); +return enum_value < other_value; +} + +boolean GSM48__bcap__parity::operator<(const GSM48__bcap__parity& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_parity."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_parity."); +return enum_value < other_value.enum_value; +} + +boolean GSM48__bcap__parity::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 @MNCC_Types.GSM48_bcap_parity."); +return enum_value > other_value; +} + +boolean GSM48__bcap__parity::operator>(const GSM48__bcap__parity& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_parity."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_parity."); +return enum_value > other_value.enum_value; +} + +const char *GSM48__bcap__parity::enum_to_str(enum_type enum_par) +{ +switch (enum_par) { +case GSM48__BCAP__PAR__ODD: return "GSM48_BCAP_PAR_ODD"; +case GSM48__BCAP__PAR__EVEN: return "GSM48_BCAP_PAR_EVEN"; +case GSM48__BCAP__PAR__NONE: return "GSM48_BCAP_PAR_NONE"; +case GSM48__BCAP__PAR__ZERO: return "GSM48_BCAP_PAR_ZERO"; +case GSM48__BCAP__PAR__ONE: return "GSM48_BCAP_PAR_ONE"; +default: return ""; +} +} + +GSM48__bcap__parity::enum_type GSM48__bcap__parity::str_to_enum(const char *str_par) +{ +if (!strcmp(str_par, "GSM48_BCAP_PAR_ODD")) return GSM48__BCAP__PAR__ODD; +else if (!strcmp(str_par, "GSM48_BCAP_PAR_EVEN")) return GSM48__BCAP__PAR__EVEN; +else if (!strcmp(str_par, "GSM48_BCAP_PAR_NONE")) return GSM48__BCAP__PAR__NONE; +else if (!strcmp(str_par, "GSM48_BCAP_PAR_ZERO")) return GSM48__BCAP__PAR__ZERO; +else if (!strcmp(str_par, "GSM48_BCAP_PAR_ONE")) return GSM48__BCAP__PAR__ONE; +else return UNKNOWN_VALUE; +} + +boolean GSM48__bcap__parity::is_valid_enum(int int_par) +{ +switch (int_par) { +case 0: +case 2: +case 3: +case 4: +case 5: +return TRUE; +default: +return FALSE; +} +} + +int GSM48__bcap__parity::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 @MNCC_Types.GSM48_bcap_parity.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); +return enum_par; +} + +int GSM48__bcap__parity::enum2int(const GSM48__bcap__parity& 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 @MNCC_Types.GSM48_bcap_parity.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); +return enum_par.enum_value; +} + +void GSM48__bcap__parity::int2enum(int int_val) +{ +if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @MNCC_Types.GSM48_bcap_parity.", int_val); +enum_value = (enum_type)int_val; +} + +GSM48__bcap__parity::operator GSM48__bcap__parity::enum_type() const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @MNCC_Types.GSM48_bcap_parity."); +return enum_value; +} + +void GSM48__bcap__parity::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 GSM48__bcap__parity::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", "@MNCC_Types.GSM48_bcap_parity"); + enum_value = str_to_enum(param.get_enumerated()); + if (!is_valid_enum(enum_value)) { + param.error("Invalid enumerated value for type @MNCC_Types.GSM48_bcap_parity."); + } +} + +void GSM48__bcap__parity::encode_text(Text_Buf& text_buf) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @MNCC_Types.GSM48_bcap_parity."); +text_buf.push_int(enum_value); +} + +void GSM48__bcap__parity::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 @MNCC_Types.GSM48_bcap_parity.", enum_value); +} + +void GSM48__bcap__parity::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void GSM48__bcap__parity::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int GSM48__bcap__parity::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) +{ + 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 GSM48__bcap__parity::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 GSM48__bcap__parity_template::copy_template(const GSM48__bcap__parity_template& other_value) +{ +set_selection(other_value); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = other_value.single_value; +break; +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new GSM48__bcap__parity_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of enumerated type @MNCC_Types.GSM48_bcap_parity."); +} +} + +GSM48__bcap__parity_template::GSM48__bcap__parity_template() +{ +} + +GSM48__bcap__parity_template::GSM48__bcap__parity_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +GSM48__bcap__parity_template::GSM48__bcap__parity_template(int other_value) + : Base_Template(SPECIFIC_VALUE) +{ +if (!GSM48__bcap__parity::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @MNCC_Types.GSM48_bcap_parity with unknown numeric value %d.", other_value); +single_value = (GSM48__bcap__parity::enum_type)other_value; +} + +GSM48__bcap__parity_template::GSM48__bcap__parity_template(GSM48__bcap__parity::enum_type other_value) + : Base_Template(SPECIFIC_VALUE) +{ +single_value = other_value; +} + +GSM48__bcap__parity_template::GSM48__bcap__parity_template(const GSM48__bcap__parity& other_value) + : Base_Template(SPECIFIC_VALUE) +{ +if (other_value.enum_value == GSM48__bcap__parity::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @MNCC_Types.GSM48_bcap_parity."); +single_value = other_value.enum_value; +} + +GSM48__bcap__parity_template::GSM48__bcap__parity_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__bcap__parity::enum_type)(const GSM48__bcap__parity&)other_value; +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of enumerated type @MNCC_Types.GSM48_bcap_parity from an unbound optional field."); +} +} + +GSM48__bcap__parity_template::GSM48__bcap__parity_template(const GSM48__bcap__parity_template& other_value) + : Base_Template() +{ +copy_template(other_value); +} + +GSM48__bcap__parity_template::~GSM48__bcap__parity_template() +{ +clean_up(); +} + +boolean GSM48__bcap__parity_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +return TRUE; +} + +boolean GSM48__bcap__parity_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +return single_value != GSM48__bcap__parity::UNBOUND_VALUE; +} + +void GSM48__bcap__parity_template::clean_up() +{ +if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value; +template_selection = UNINITIALIZED_TEMPLATE; +} + +GSM48__bcap__parity_template& GSM48__bcap__parity_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +GSM48__bcap__parity_template& GSM48__bcap__parity_template::operator=(int other_value) +{ +if (!GSM48__bcap__parity::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @MNCC_Types.GSM48_bcap_parity.", other_value); +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__bcap__parity::enum_type)other_value; +return *this; +} + +GSM48__bcap__parity_template& GSM48__bcap__parity_template::operator=(GSM48__bcap__parity::enum_type other_value) +{ +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = other_value; +return *this; +} + +GSM48__bcap__parity_template& GSM48__bcap__parity_template::operator=(const GSM48__bcap__parity& other_value) +{ +if (other_value.enum_value == GSM48__bcap__parity::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @MNCC_Types.GSM48_bcap_parity to a template."); +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = other_value.enum_value; +return *this; +} + +GSM48__bcap__parity_template& GSM48__bcap__parity_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__bcap__parity::enum_type)(const GSM48__bcap__parity&)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 @MNCC_Types.GSM48_bcap_parity."); +} +return *this; +} + +GSM48__bcap__parity_template& GSM48__bcap__parity_template::operator=(const GSM48__bcap__parity_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean GSM48__bcap__parity_template::match(GSM48__bcap__parity::enum_type other_value, boolean) const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +return single_value == other_value; +case OMIT_VALUE: +return FALSE; +case ANY_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of enumerated type @MNCC_Types.GSM48_bcap_parity."); +} +return FALSE; +} + +boolean GSM48__bcap__parity_template::match(const GSM48__bcap__parity& other_value, boolean) const +{ +if (other_value.enum_value == GSM48__bcap__parity::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @MNCC_Types.GSM48_bcap_parity with an unbound value."); +return match(other_value.enum_value); +} + +GSM48__bcap__parity::enum_type GSM48__bcap__parity_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 @MNCC_Types.GSM48_bcap_parity."); +return single_value; +} + +void GSM48__bcap__parity_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @MNCC_Types.GSM48_bcap_parity."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new GSM48__bcap__parity_template[list_length]; +} + +GSM48__bcap__parity_template& GSM48__bcap__parity_template::list_item(unsigned int list_index) +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @MNCC_Types.GSM48_bcap_parity."); +if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @MNCC_Types.GSM48_bcap_parity."); +return value_list.list_value[list_index]; +} + +void GSM48__bcap__parity_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_enum(GSM48__bcap__parity::enum_to_str(single_value), single_value); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { +if (elem_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[elem_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void GSM48__bcap__parity_template::log_match(const GSM48__bcap__parity& 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 GSM48__bcap__parity_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 @MNCC_Types.GSM48_bcap_parity."); +} +} + +void GSM48__bcap__parity_template::decode_text(Text_Buf& text_buf) +{ +clean_up(); +decode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = (GSM48__bcap__parity::enum_type)text_buf.pull_int().get_val(); +if (!GSM48__bcap__parity::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @MNCC_Types.GSM48_bcap_parity.", 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 GSM48__bcap__parity_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 @MNCC_Types.GSM48_bcap_parity."); +} +} + +boolean GSM48__bcap__parity_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean GSM48__bcap__parity_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int i=0; 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: { + GSM48__bcap__parity_template new_temp; + new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, m_p->get_size()); + for (size_t p_i=0; p_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: { + GSM48__bcap__parity::enum_type enum_val = GSM48__bcap__parity::str_to_enum(m_p->get_enumerated()); + if (!GSM48__bcap__parity::is_valid_enum(enum_val)) { + param.error("Invalid enumerated value for type @MNCC_Types.GSM48_bcap_parity."); + } + *this = enum_val; + } break; + default: + param.type_error("enumerated template", "@MNCC_Types.GSM48_bcap_parity"); + } + is_ifpresent = param.get_ifpresent(); +} + +void GSM48__bcap__parity_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 : "@MNCC_Types.GSM48_bcap_parity"); +} + +GSM48__bcap__interm__rate::GSM48__bcap__interm__rate() +{ +enum_value = UNBOUND_VALUE; +} + +GSM48__bcap__interm__rate::GSM48__bcap__interm__rate(int other_value) +{ +if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @MNCC_Types.GSM48_bcap_interm_rate with invalid numeric value %d.", other_value); +enum_value = (enum_type)other_value; +} + +GSM48__bcap__interm__rate::GSM48__bcap__interm__rate(enum_type other_value) +{ +enum_value = other_value; +} + +GSM48__bcap__interm__rate::GSM48__bcap__interm__rate(const GSM48__bcap__interm__rate& other_value) +: Base_Type() +{ +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @MNCC_Types.GSM48_bcap_interm_rate."); +enum_value = other_value.enum_value; +} + +GSM48__bcap__interm__rate& GSM48__bcap__interm__rate::operator=(int other_value) +{ +if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @MNCC_Types.GSM48_bcap_interm_rate.", other_value); +enum_value = (enum_type)other_value; +return *this; +} + +GSM48__bcap__interm__rate& GSM48__bcap__interm__rate::operator=(enum_type other_value) +{ +enum_value = other_value; +return *this; +} + +GSM48__bcap__interm__rate& GSM48__bcap__interm__rate::operator=(const GSM48__bcap__interm__rate& other_value) +{ +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @MNCC_Types.GSM48_bcap_interm_rate."); +enum_value = other_value.enum_value; +return *this; +} + +boolean GSM48__bcap__interm__rate::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 @MNCC_Types.GSM48_bcap_interm_rate."); +return enum_value == other_value; +} + +boolean GSM48__bcap__interm__rate::operator==(const GSM48__bcap__interm__rate& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_interm_rate."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_interm_rate."); +return enum_value == other_value.enum_value; +} + +boolean GSM48__bcap__interm__rate::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 @MNCC_Types.GSM48_bcap_interm_rate."); +return enum_value < other_value; +} + +boolean GSM48__bcap__interm__rate::operator<(const GSM48__bcap__interm__rate& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_interm_rate."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_interm_rate."); +return enum_value < other_value.enum_value; +} + +boolean GSM48__bcap__interm__rate::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 @MNCC_Types.GSM48_bcap_interm_rate."); +return enum_value > other_value; +} + +boolean GSM48__bcap__interm__rate::operator>(const GSM48__bcap__interm__rate& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_interm_rate."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_interm_rate."); +return enum_value > other_value.enum_value; +} + +const char *GSM48__bcap__interm__rate::enum_to_str(enum_type enum_par) +{ +switch (enum_par) { +case GSM48__BCAP__IR__NONE: return "GSM48_BCAP_IR_NONE"; +case GSM48__BCAP__IR__8k: return "GSM48_BCAP_IR_8k"; +case GSM48__BCAP__IR__16k: return "GSM48_BCAP_IR_16k"; +default: return ""; +} +} + +GSM48__bcap__interm__rate::enum_type GSM48__bcap__interm__rate::str_to_enum(const char *str_par) +{ +if (!strcmp(str_par, "GSM48_BCAP_IR_NONE")) return GSM48__BCAP__IR__NONE; +else if (!strcmp(str_par, "GSM48_BCAP_IR_8k")) return GSM48__BCAP__IR__8k; +else if (!strcmp(str_par, "GSM48_BCAP_IR_16k")) return GSM48__BCAP__IR__16k; +else return UNKNOWN_VALUE; +} + +boolean GSM48__bcap__interm__rate::is_valid_enum(int int_par) +{ +switch (int_par) { +case 0: +case 2: +case 3: +return TRUE; +default: +return FALSE; +} +} + +int GSM48__bcap__interm__rate::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 @MNCC_Types.GSM48_bcap_interm_rate.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); +return enum_par; +} + +int GSM48__bcap__interm__rate::enum2int(const GSM48__bcap__interm__rate& 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 @MNCC_Types.GSM48_bcap_interm_rate.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); +return enum_par.enum_value; +} + +void GSM48__bcap__interm__rate::int2enum(int int_val) +{ +if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @MNCC_Types.GSM48_bcap_interm_rate.", int_val); +enum_value = (enum_type)int_val; +} + +GSM48__bcap__interm__rate::operator GSM48__bcap__interm__rate::enum_type() const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @MNCC_Types.GSM48_bcap_interm_rate."); +return enum_value; +} + +void GSM48__bcap__interm__rate::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 GSM48__bcap__interm__rate::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", "@MNCC_Types.GSM48_bcap_interm_rate"); + enum_value = str_to_enum(param.get_enumerated()); + if (!is_valid_enum(enum_value)) { + param.error("Invalid enumerated value for type @MNCC_Types.GSM48_bcap_interm_rate."); + } +} + +void GSM48__bcap__interm__rate::encode_text(Text_Buf& text_buf) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @MNCC_Types.GSM48_bcap_interm_rate."); +text_buf.push_int(enum_value); +} + +void GSM48__bcap__interm__rate::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 @MNCC_Types.GSM48_bcap_interm_rate.", enum_value); +} + +void GSM48__bcap__interm__rate::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void GSM48__bcap__interm__rate::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int GSM48__bcap__interm__rate::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) +{ + int decoded_value = 0; + int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 2, no_err); + if (decoded_length < 0) return decoded_length; + if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value; + else { + if(no_err){ + return -1; + } else { + TTCN_EncDec_ErrorContext::error + (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name); + enum_value = UNKNOWN_VALUE; + } + } + return decoded_length; +} + +int GSM48__bcap__interm__rate::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const +{ + return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 2); +} + +void GSM48__bcap__interm__rate_template::copy_template(const GSM48__bcap__interm__rate_template& other_value) +{ +set_selection(other_value); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = other_value.single_value; +break; +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new GSM48__bcap__interm__rate_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of enumerated type @MNCC_Types.GSM48_bcap_interm_rate."); +} +} + +GSM48__bcap__interm__rate_template::GSM48__bcap__interm__rate_template() +{ +} + +GSM48__bcap__interm__rate_template::GSM48__bcap__interm__rate_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +GSM48__bcap__interm__rate_template::GSM48__bcap__interm__rate_template(int other_value) + : Base_Template(SPECIFIC_VALUE) +{ +if (!GSM48__bcap__interm__rate::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @MNCC_Types.GSM48_bcap_interm_rate with unknown numeric value %d.", other_value); +single_value = (GSM48__bcap__interm__rate::enum_type)other_value; +} + +GSM48__bcap__interm__rate_template::GSM48__bcap__interm__rate_template(GSM48__bcap__interm__rate::enum_type other_value) + : Base_Template(SPECIFIC_VALUE) +{ +single_value = other_value; +} + +GSM48__bcap__interm__rate_template::GSM48__bcap__interm__rate_template(const GSM48__bcap__interm__rate& other_value) + : Base_Template(SPECIFIC_VALUE) +{ +if (other_value.enum_value == GSM48__bcap__interm__rate::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @MNCC_Types.GSM48_bcap_interm_rate."); +single_value = other_value.enum_value; +} + +GSM48__bcap__interm__rate_template::GSM48__bcap__interm__rate_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__bcap__interm__rate::enum_type)(const GSM48__bcap__interm__rate&)other_value; +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of enumerated type @MNCC_Types.GSM48_bcap_interm_rate from an unbound optional field."); +} +} + +GSM48__bcap__interm__rate_template::GSM48__bcap__interm__rate_template(const GSM48__bcap__interm__rate_template& other_value) + : Base_Template() +{ +copy_template(other_value); +} + +GSM48__bcap__interm__rate_template::~GSM48__bcap__interm__rate_template() +{ +clean_up(); +} + +boolean GSM48__bcap__interm__rate_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +return TRUE; +} + +boolean GSM48__bcap__interm__rate_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +return single_value != GSM48__bcap__interm__rate::UNBOUND_VALUE; +} + +void GSM48__bcap__interm__rate_template::clean_up() +{ +if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value; +template_selection = UNINITIALIZED_TEMPLATE; +} + +GSM48__bcap__interm__rate_template& GSM48__bcap__interm__rate_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +GSM48__bcap__interm__rate_template& GSM48__bcap__interm__rate_template::operator=(int other_value) +{ +if (!GSM48__bcap__interm__rate::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @MNCC_Types.GSM48_bcap_interm_rate.", other_value); +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__bcap__interm__rate::enum_type)other_value; +return *this; +} + +GSM48__bcap__interm__rate_template& GSM48__bcap__interm__rate_template::operator=(GSM48__bcap__interm__rate::enum_type other_value) +{ +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = other_value; +return *this; +} + +GSM48__bcap__interm__rate_template& GSM48__bcap__interm__rate_template::operator=(const GSM48__bcap__interm__rate& other_value) +{ +if (other_value.enum_value == GSM48__bcap__interm__rate::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @MNCC_Types.GSM48_bcap_interm_rate to a template."); +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = other_value.enum_value; +return *this; +} + +GSM48__bcap__interm__rate_template& GSM48__bcap__interm__rate_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__bcap__interm__rate::enum_type)(const GSM48__bcap__interm__rate&)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 @MNCC_Types.GSM48_bcap_interm_rate."); +} +return *this; +} + +GSM48__bcap__interm__rate_template& GSM48__bcap__interm__rate_template::operator=(const GSM48__bcap__interm__rate_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean GSM48__bcap__interm__rate_template::match(GSM48__bcap__interm__rate::enum_type other_value, boolean) const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +return single_value == other_value; +case OMIT_VALUE: +return FALSE; +case ANY_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of enumerated type @MNCC_Types.GSM48_bcap_interm_rate."); +} +return FALSE; +} + +boolean GSM48__bcap__interm__rate_template::match(const GSM48__bcap__interm__rate& other_value, boolean) const +{ +if (other_value.enum_value == GSM48__bcap__interm__rate::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @MNCC_Types.GSM48_bcap_interm_rate with an unbound value."); +return match(other_value.enum_value); +} + +GSM48__bcap__interm__rate::enum_type GSM48__bcap__interm__rate_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 @MNCC_Types.GSM48_bcap_interm_rate."); +return single_value; +} + +void GSM48__bcap__interm__rate_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @MNCC_Types.GSM48_bcap_interm_rate."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new GSM48__bcap__interm__rate_template[list_length]; +} + +GSM48__bcap__interm__rate_template& GSM48__bcap__interm__rate_template::list_item(unsigned int list_index) +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @MNCC_Types.GSM48_bcap_interm_rate."); +if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @MNCC_Types.GSM48_bcap_interm_rate."); +return value_list.list_value[list_index]; +} + +void GSM48__bcap__interm__rate_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_enum(GSM48__bcap__interm__rate::enum_to_str(single_value), single_value); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { +if (elem_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[elem_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void GSM48__bcap__interm__rate_template::log_match(const GSM48__bcap__interm__rate& 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 GSM48__bcap__interm__rate_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 @MNCC_Types.GSM48_bcap_interm_rate."); +} +} + +void GSM48__bcap__interm__rate_template::decode_text(Text_Buf& text_buf) +{ +clean_up(); +decode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = (GSM48__bcap__interm__rate::enum_type)text_buf.pull_int().get_val(); +if (!GSM48__bcap__interm__rate::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @MNCC_Types.GSM48_bcap_interm_rate.", 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 GSM48__bcap__interm__rate_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 @MNCC_Types.GSM48_bcap_interm_rate."); +} +} + +boolean GSM48__bcap__interm__rate_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean GSM48__bcap__interm__rate_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int i=0; 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: { + GSM48__bcap__interm__rate_template new_temp; + new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, m_p->get_size()); + for (size_t p_i=0; p_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: { + GSM48__bcap__interm__rate::enum_type enum_val = GSM48__bcap__interm__rate::str_to_enum(m_p->get_enumerated()); + if (!GSM48__bcap__interm__rate::is_valid_enum(enum_val)) { + param.error("Invalid enumerated value for type @MNCC_Types.GSM48_bcap_interm_rate."); + } + *this = enum_val; + } break; + default: + param.type_error("enumerated template", "@MNCC_Types.GSM48_bcap_interm_rate"); + } + is_ifpresent = param.get_ifpresent(); +} + +void GSM48__bcap__interm__rate_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 : "@MNCC_Types.GSM48_bcap_interm_rate"); +} + +GSM48__bcap__transp::GSM48__bcap__transp() +{ +enum_value = UNBOUND_VALUE; +} + +GSM48__bcap__transp::GSM48__bcap__transp(int other_value) +{ +if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @MNCC_Types.GSM48_bcap_transp with invalid numeric value %d.", other_value); +enum_value = (enum_type)other_value; +} + +GSM48__bcap__transp::GSM48__bcap__transp(enum_type other_value) +{ +enum_value = other_value; +} + +GSM48__bcap__transp::GSM48__bcap__transp(const GSM48__bcap__transp& other_value) +: Base_Type() +{ +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @MNCC_Types.GSM48_bcap_transp."); +enum_value = other_value.enum_value; +} + +GSM48__bcap__transp& GSM48__bcap__transp::operator=(int other_value) +{ +if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @MNCC_Types.GSM48_bcap_transp.", other_value); +enum_value = (enum_type)other_value; +return *this; +} + +GSM48__bcap__transp& GSM48__bcap__transp::operator=(enum_type other_value) +{ +enum_value = other_value; +return *this; +} + +GSM48__bcap__transp& GSM48__bcap__transp::operator=(const GSM48__bcap__transp& other_value) +{ +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @MNCC_Types.GSM48_bcap_transp."); +enum_value = other_value.enum_value; +return *this; +} + +boolean GSM48__bcap__transp::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 @MNCC_Types.GSM48_bcap_transp."); +return enum_value == other_value; +} + +boolean GSM48__bcap__transp::operator==(const GSM48__bcap__transp& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_transp."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_transp."); +return enum_value == other_value.enum_value; +} + +boolean GSM48__bcap__transp::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 @MNCC_Types.GSM48_bcap_transp."); +return enum_value < other_value; +} + +boolean GSM48__bcap__transp::operator<(const GSM48__bcap__transp& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_transp."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_transp."); +return enum_value < other_value.enum_value; +} + +boolean GSM48__bcap__transp::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 @MNCC_Types.GSM48_bcap_transp."); +return enum_value > other_value; +} + +boolean GSM48__bcap__transp::operator>(const GSM48__bcap__transp& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_transp."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_transp."); +return enum_value > other_value.enum_value; +} + +const char *GSM48__bcap__transp::enum_to_str(enum_type enum_par) +{ +switch (enum_par) { +case GSM48__BCAP__TR__TRANSP: return "GSM48_BCAP_TR_TRANSP"; +case GSM48__BCAP__TR__RLP: return "GSM48_BCAP_TR_RLP"; +case GSM48__BCAP__TR__TR__PREF: return "GSM48_BCAP_TR_TR_PREF"; +case GSM48__BCAP__TR__RLP__PREF: return "GSM48_BCAP_TR_RLP_PREF"; +default: return ""; +} +} + +GSM48__bcap__transp::enum_type GSM48__bcap__transp::str_to_enum(const char *str_par) +{ +if (!strcmp(str_par, "GSM48_BCAP_TR_TRANSP")) return GSM48__BCAP__TR__TRANSP; +else if (!strcmp(str_par, "GSM48_BCAP_TR_RLP")) return GSM48__BCAP__TR__RLP; +else if (!strcmp(str_par, "GSM48_BCAP_TR_TR_PREF")) return GSM48__BCAP__TR__TR__PREF; +else if (!strcmp(str_par, "GSM48_BCAP_TR_RLP_PREF")) return GSM48__BCAP__TR__RLP__PREF; +else return UNKNOWN_VALUE; +} + +boolean GSM48__bcap__transp::is_valid_enum(int int_par) +{ +switch (int_par) { +case 0: +case 1: +case 2: +case 3: +return TRUE; +default: +return FALSE; +} +} + +int GSM48__bcap__transp::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 @MNCC_Types.GSM48_bcap_transp.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); +return enum_par; +} + +int GSM48__bcap__transp::enum2int(const GSM48__bcap__transp& 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 @MNCC_Types.GSM48_bcap_transp.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); +return enum_par.enum_value; +} + +void GSM48__bcap__transp::int2enum(int int_val) +{ +if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @MNCC_Types.GSM48_bcap_transp.", int_val); +enum_value = (enum_type)int_val; +} + +GSM48__bcap__transp::operator GSM48__bcap__transp::enum_type() const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @MNCC_Types.GSM48_bcap_transp."); +return enum_value; +} + +void GSM48__bcap__transp::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 GSM48__bcap__transp::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", "@MNCC_Types.GSM48_bcap_transp"); + enum_value = str_to_enum(param.get_enumerated()); + if (!is_valid_enum(enum_value)) { + param.error("Invalid enumerated value for type @MNCC_Types.GSM48_bcap_transp."); + } +} + +void GSM48__bcap__transp::encode_text(Text_Buf& text_buf) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @MNCC_Types.GSM48_bcap_transp."); +text_buf.push_int(enum_value); +} + +void GSM48__bcap__transp::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 @MNCC_Types.GSM48_bcap_transp.", enum_value); +} + +void GSM48__bcap__transp::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void GSM48__bcap__transp::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int GSM48__bcap__transp::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) +{ + 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 GSM48__bcap__transp::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 GSM48__bcap__transp_template::copy_template(const GSM48__bcap__transp_template& other_value) +{ +set_selection(other_value); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = other_value.single_value; +break; +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new GSM48__bcap__transp_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of enumerated type @MNCC_Types.GSM48_bcap_transp."); +} +} + +GSM48__bcap__transp_template::GSM48__bcap__transp_template() +{ +} + +GSM48__bcap__transp_template::GSM48__bcap__transp_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +GSM48__bcap__transp_template::GSM48__bcap__transp_template(int other_value) + : Base_Template(SPECIFIC_VALUE) +{ +if (!GSM48__bcap__transp::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @MNCC_Types.GSM48_bcap_transp with unknown numeric value %d.", other_value); +single_value = (GSM48__bcap__transp::enum_type)other_value; +} + +GSM48__bcap__transp_template::GSM48__bcap__transp_template(GSM48__bcap__transp::enum_type other_value) + : Base_Template(SPECIFIC_VALUE) +{ +single_value = other_value; +} + +GSM48__bcap__transp_template::GSM48__bcap__transp_template(const GSM48__bcap__transp& other_value) + : Base_Template(SPECIFIC_VALUE) +{ +if (other_value.enum_value == GSM48__bcap__transp::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @MNCC_Types.GSM48_bcap_transp."); +single_value = other_value.enum_value; +} + +GSM48__bcap__transp_template::GSM48__bcap__transp_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__bcap__transp::enum_type)(const GSM48__bcap__transp&)other_value; +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of enumerated type @MNCC_Types.GSM48_bcap_transp from an unbound optional field."); +} +} + +GSM48__bcap__transp_template::GSM48__bcap__transp_template(const GSM48__bcap__transp_template& other_value) + : Base_Template() +{ +copy_template(other_value); +} + +GSM48__bcap__transp_template::~GSM48__bcap__transp_template() +{ +clean_up(); +} + +boolean GSM48__bcap__transp_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +return TRUE; +} + +boolean GSM48__bcap__transp_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +return single_value != GSM48__bcap__transp::UNBOUND_VALUE; +} + +void GSM48__bcap__transp_template::clean_up() +{ +if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value; +template_selection = UNINITIALIZED_TEMPLATE; +} + +GSM48__bcap__transp_template& GSM48__bcap__transp_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +GSM48__bcap__transp_template& GSM48__bcap__transp_template::operator=(int other_value) +{ +if (!GSM48__bcap__transp::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @MNCC_Types.GSM48_bcap_transp.", other_value); +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__bcap__transp::enum_type)other_value; +return *this; +} + +GSM48__bcap__transp_template& GSM48__bcap__transp_template::operator=(GSM48__bcap__transp::enum_type other_value) +{ +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = other_value; +return *this; +} + +GSM48__bcap__transp_template& GSM48__bcap__transp_template::operator=(const GSM48__bcap__transp& other_value) +{ +if (other_value.enum_value == GSM48__bcap__transp::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @MNCC_Types.GSM48_bcap_transp to a template."); +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = other_value.enum_value; +return *this; +} + +GSM48__bcap__transp_template& GSM48__bcap__transp_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__bcap__transp::enum_type)(const GSM48__bcap__transp&)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 @MNCC_Types.GSM48_bcap_transp."); +} +return *this; +} + +GSM48__bcap__transp_template& GSM48__bcap__transp_template::operator=(const GSM48__bcap__transp_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean GSM48__bcap__transp_template::match(GSM48__bcap__transp::enum_type other_value, boolean) const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +return single_value == other_value; +case OMIT_VALUE: +return FALSE; +case ANY_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of enumerated type @MNCC_Types.GSM48_bcap_transp."); +} +return FALSE; +} + +boolean GSM48__bcap__transp_template::match(const GSM48__bcap__transp& other_value, boolean) const +{ +if (other_value.enum_value == GSM48__bcap__transp::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @MNCC_Types.GSM48_bcap_transp with an unbound value."); +return match(other_value.enum_value); +} + +GSM48__bcap__transp::enum_type GSM48__bcap__transp_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 @MNCC_Types.GSM48_bcap_transp."); +return single_value; +} + +void GSM48__bcap__transp_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @MNCC_Types.GSM48_bcap_transp."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new GSM48__bcap__transp_template[list_length]; +} + +GSM48__bcap__transp_template& GSM48__bcap__transp_template::list_item(unsigned int list_index) +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @MNCC_Types.GSM48_bcap_transp."); +if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @MNCC_Types.GSM48_bcap_transp."); +return value_list.list_value[list_index]; +} + +void GSM48__bcap__transp_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_enum(GSM48__bcap__transp::enum_to_str(single_value), single_value); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { +if (elem_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[elem_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void GSM48__bcap__transp_template::log_match(const GSM48__bcap__transp& 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 GSM48__bcap__transp_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 @MNCC_Types.GSM48_bcap_transp."); +} +} + +void GSM48__bcap__transp_template::decode_text(Text_Buf& text_buf) +{ +clean_up(); +decode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = (GSM48__bcap__transp::enum_type)text_buf.pull_int().get_val(); +if (!GSM48__bcap__transp::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @MNCC_Types.GSM48_bcap_transp.", 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 GSM48__bcap__transp_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 @MNCC_Types.GSM48_bcap_transp."); +} +} + +boolean GSM48__bcap__transp_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean GSM48__bcap__transp_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int i=0; 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: { + GSM48__bcap__transp_template new_temp; + new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, m_p->get_size()); + for (size_t p_i=0; p_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: { + GSM48__bcap__transp::enum_type enum_val = GSM48__bcap__transp::str_to_enum(m_p->get_enumerated()); + if (!GSM48__bcap__transp::is_valid_enum(enum_val)) { + param.error("Invalid enumerated value for type @MNCC_Types.GSM48_bcap_transp."); + } + *this = enum_val; + } break; + default: + param.type_error("enumerated template", "@MNCC_Types.GSM48_bcap_transp"); + } + is_ifpresent = param.get_ifpresent(); +} + +void GSM48__bcap__transp_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 : "@MNCC_Types.GSM48_bcap_transp"); +} + +GSM48__bcap__modem__type::GSM48__bcap__modem__type() +{ +enum_value = UNBOUND_VALUE; +} + +GSM48__bcap__modem__type::GSM48__bcap__modem__type(int other_value) +{ +if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @MNCC_Types.GSM48_bcap_modem_type with invalid numeric value %d.", other_value); +enum_value = (enum_type)other_value; +} + +GSM48__bcap__modem__type::GSM48__bcap__modem__type(enum_type other_value) +{ +enum_value = other_value; +} + +GSM48__bcap__modem__type::GSM48__bcap__modem__type(const GSM48__bcap__modem__type& other_value) +: Base_Type() +{ +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @MNCC_Types.GSM48_bcap_modem_type."); +enum_value = other_value.enum_value; +} + +GSM48__bcap__modem__type& GSM48__bcap__modem__type::operator=(int other_value) +{ +if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @MNCC_Types.GSM48_bcap_modem_type.", other_value); +enum_value = (enum_type)other_value; +return *this; +} + +GSM48__bcap__modem__type& GSM48__bcap__modem__type::operator=(enum_type other_value) +{ +enum_value = other_value; +return *this; +} + +GSM48__bcap__modem__type& GSM48__bcap__modem__type::operator=(const GSM48__bcap__modem__type& other_value) +{ +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @MNCC_Types.GSM48_bcap_modem_type."); +enum_value = other_value.enum_value; +return *this; +} + +boolean GSM48__bcap__modem__type::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 @MNCC_Types.GSM48_bcap_modem_type."); +return enum_value == other_value; +} + +boolean GSM48__bcap__modem__type::operator==(const GSM48__bcap__modem__type& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_modem_type."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_modem_type."); +return enum_value == other_value.enum_value; +} + +boolean GSM48__bcap__modem__type::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 @MNCC_Types.GSM48_bcap_modem_type."); +return enum_value < other_value; +} + +boolean GSM48__bcap__modem__type::operator<(const GSM48__bcap__modem__type& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_modem_type."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_modem_type."); +return enum_value < other_value.enum_value; +} + +boolean GSM48__bcap__modem__type::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 @MNCC_Types.GSM48_bcap_modem_type."); +return enum_value > other_value; +} + +boolean GSM48__bcap__modem__type::operator>(const GSM48__bcap__modem__type& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_modem_type."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_bcap_modem_type."); +return enum_value > other_value.enum_value; +} + +const char *GSM48__bcap__modem__type::enum_to_str(enum_type enum_par) +{ +switch (enum_par) { +case GSM48__BCAP__MT__NONE: return "GSM48_BCAP_MT_NONE"; +case GSM48__BCAP__MT__V21: return "GSM48_BCAP_MT_V21"; +case GSM48__BCAP__MT__V22: return "GSM48_BCAP_MT_V22"; +case GSM48__BCAP__MT__V22bis: return "GSM48_BCAP_MT_V22bis"; +case GSM48__BCAP__MT__V23: return "GSM48_BCAP_MT_V23"; +case GSM48__BCAP__MT__V26ter: return "GSM48_BCAP_MT_V26ter"; +case GSM48__BCAP__MT__V32: return "GSM48_BCAP_MT_V32"; +case GSM48__BCAP__MT__UNDEF: return "GSM48_BCAP_MT_UNDEF"; +case GSM48__BCAP__MT__AUTO__1: return "GSM48_BCAP_MT_AUTO_1"; +default: return ""; +} +} + +GSM48__bcap__modem__type::enum_type GSM48__bcap__modem__type::str_to_enum(const char *str_par) +{ +if (!strcmp(str_par, "GSM48_BCAP_MT_NONE")) return GSM48__BCAP__MT__NONE; +else if (!strcmp(str_par, "GSM48_BCAP_MT_V21")) return GSM48__BCAP__MT__V21; +else if (!strcmp(str_par, "GSM48_BCAP_MT_V22")) return GSM48__BCAP__MT__V22; +else if (!strcmp(str_par, "GSM48_BCAP_MT_V22bis")) return GSM48__BCAP__MT__V22bis; +else if (!strcmp(str_par, "GSM48_BCAP_MT_V23")) return GSM48__BCAP__MT__V23; +else if (!strcmp(str_par, "GSM48_BCAP_MT_V26ter")) return GSM48__BCAP__MT__V26ter; +else if (!strcmp(str_par, "GSM48_BCAP_MT_V32")) return GSM48__BCAP__MT__V32; +else if (!strcmp(str_par, "GSM48_BCAP_MT_UNDEF")) return GSM48__BCAP__MT__UNDEF; +else if (!strcmp(str_par, "GSM48_BCAP_MT_AUTO_1")) return GSM48__BCAP__MT__AUTO__1; +else return UNKNOWN_VALUE; +} + +boolean GSM48__bcap__modem__type::is_valid_enum(int int_par) +{ +switch (int_par) { +case 0: +case 1: +case 2: +case 3: +case 4: +case 5: +case 6: +case 7: +case 8: +return TRUE; +default: +return FALSE; +} +} + +int GSM48__bcap__modem__type::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 @MNCC_Types.GSM48_bcap_modem_type.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); +return enum_par; +} + +int GSM48__bcap__modem__type::enum2int(const GSM48__bcap__modem__type& 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 @MNCC_Types.GSM48_bcap_modem_type.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); +return enum_par.enum_value; +} + +void GSM48__bcap__modem__type::int2enum(int int_val) +{ +if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @MNCC_Types.GSM48_bcap_modem_type.", int_val); +enum_value = (enum_type)int_val; +} + +GSM48__bcap__modem__type::operator GSM48__bcap__modem__type::enum_type() const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @MNCC_Types.GSM48_bcap_modem_type."); +return enum_value; +} + +void GSM48__bcap__modem__type::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 GSM48__bcap__modem__type::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", "@MNCC_Types.GSM48_bcap_modem_type"); + enum_value = str_to_enum(param.get_enumerated()); + if (!is_valid_enum(enum_value)) { + param.error("Invalid enumerated value for type @MNCC_Types.GSM48_bcap_modem_type."); + } +} + +void GSM48__bcap__modem__type::encode_text(Text_Buf& text_buf) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @MNCC_Types.GSM48_bcap_modem_type."); +text_buf.push_int(enum_value); +} + +void GSM48__bcap__modem__type::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 @MNCC_Types.GSM48_bcap_modem_type.", enum_value); +} + +void GSM48__bcap__modem__type::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void GSM48__bcap__modem__type::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int GSM48__bcap__modem__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) +{ + int decoded_value = 0; + int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 4, no_err); + if (decoded_length < 0) return decoded_length; + if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value; + else { + if(no_err){ + return -1; + } else { + TTCN_EncDec_ErrorContext::error + (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name); + enum_value = UNKNOWN_VALUE; + } + } + return decoded_length; +} + +int GSM48__bcap__modem__type::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const +{ + return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 4); +} + +void GSM48__bcap__modem__type_template::copy_template(const GSM48__bcap__modem__type_template& other_value) +{ +set_selection(other_value); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = other_value.single_value; +break; +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new GSM48__bcap__modem__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; +default: +TTCN_error("Copying an uninitialized/unsupported template of enumerated type @MNCC_Types.GSM48_bcap_modem_type."); +} +} + +GSM48__bcap__modem__type_template::GSM48__bcap__modem__type_template() +{ +} + +GSM48__bcap__modem__type_template::GSM48__bcap__modem__type_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +GSM48__bcap__modem__type_template::GSM48__bcap__modem__type_template(int other_value) + : Base_Template(SPECIFIC_VALUE) +{ +if (!GSM48__bcap__modem__type::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @MNCC_Types.GSM48_bcap_modem_type with unknown numeric value %d.", other_value); +single_value = (GSM48__bcap__modem__type::enum_type)other_value; +} + +GSM48__bcap__modem__type_template::GSM48__bcap__modem__type_template(GSM48__bcap__modem__type::enum_type other_value) + : Base_Template(SPECIFIC_VALUE) +{ +single_value = other_value; +} + +GSM48__bcap__modem__type_template::GSM48__bcap__modem__type_template(const GSM48__bcap__modem__type& other_value) + : Base_Template(SPECIFIC_VALUE) +{ +if (other_value.enum_value == GSM48__bcap__modem__type::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @MNCC_Types.GSM48_bcap_modem_type."); +single_value = other_value.enum_value; +} + +GSM48__bcap__modem__type_template::GSM48__bcap__modem__type_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__bcap__modem__type::enum_type)(const GSM48__bcap__modem__type&)other_value; +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of enumerated type @MNCC_Types.GSM48_bcap_modem_type from an unbound optional field."); +} +} + +GSM48__bcap__modem__type_template::GSM48__bcap__modem__type_template(const GSM48__bcap__modem__type_template& other_value) + : Base_Template() +{ +copy_template(other_value); +} + +GSM48__bcap__modem__type_template::~GSM48__bcap__modem__type_template() +{ +clean_up(); +} + +boolean GSM48__bcap__modem__type_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +return TRUE; +} + +boolean GSM48__bcap__modem__type_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +return single_value != GSM48__bcap__modem__type::UNBOUND_VALUE; +} + +void GSM48__bcap__modem__type_template::clean_up() +{ +if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value; +template_selection = UNINITIALIZED_TEMPLATE; +} + +GSM48__bcap__modem__type_template& GSM48__bcap__modem__type_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +GSM48__bcap__modem__type_template& GSM48__bcap__modem__type_template::operator=(int other_value) +{ +if (!GSM48__bcap__modem__type::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @MNCC_Types.GSM48_bcap_modem_type.", other_value); +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__bcap__modem__type::enum_type)other_value; +return *this; +} + +GSM48__bcap__modem__type_template& GSM48__bcap__modem__type_template::operator=(GSM48__bcap__modem__type::enum_type other_value) +{ +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = other_value; +return *this; +} + +GSM48__bcap__modem__type_template& GSM48__bcap__modem__type_template::operator=(const GSM48__bcap__modem__type& other_value) +{ +if (other_value.enum_value == GSM48__bcap__modem__type::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @MNCC_Types.GSM48_bcap_modem_type to a template."); +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = other_value.enum_value; +return *this; +} + +GSM48__bcap__modem__type_template& GSM48__bcap__modem__type_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__bcap__modem__type::enum_type)(const GSM48__bcap__modem__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 enumerated type @MNCC_Types.GSM48_bcap_modem_type."); +} +return *this; +} + +GSM48__bcap__modem__type_template& GSM48__bcap__modem__type_template::operator=(const GSM48__bcap__modem__type_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean GSM48__bcap__modem__type_template::match(GSM48__bcap__modem__type::enum_type other_value, boolean) const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +return single_value == other_value; +case OMIT_VALUE: +return FALSE; +case ANY_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of enumerated type @MNCC_Types.GSM48_bcap_modem_type."); +} +return FALSE; +} + +boolean GSM48__bcap__modem__type_template::match(const GSM48__bcap__modem__type& other_value, boolean) const +{ +if (other_value.enum_value == GSM48__bcap__modem__type::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @MNCC_Types.GSM48_bcap_modem_type with an unbound value."); +return match(other_value.enum_value); +} + +GSM48__bcap__modem__type::enum_type GSM48__bcap__modem__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 enumerated type @MNCC_Types.GSM48_bcap_modem_type."); +return single_value; +} + +void GSM48__bcap__modem__type_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @MNCC_Types.GSM48_bcap_modem_type."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new GSM48__bcap__modem__type_template[list_length]; +} + +GSM48__bcap__modem__type_template& GSM48__bcap__modem__type_template::list_item(unsigned int list_index) +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @MNCC_Types.GSM48_bcap_modem_type."); +if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @MNCC_Types.GSM48_bcap_modem_type."); +return value_list.list_value[list_index]; +} + +void GSM48__bcap__modem__type_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_enum(GSM48__bcap__modem__type::enum_to_str(single_value), single_value); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { +if (elem_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[elem_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void GSM48__bcap__modem__type_template::log_match(const GSM48__bcap__modem__type& 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 GSM48__bcap__modem__type_template::encode_text(Text_Buf& text_buf) const +{ +encode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +text_buf.push_int(single_value); +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 @MNCC_Types.GSM48_bcap_modem_type."); +} +} + +void GSM48__bcap__modem__type_template::decode_text(Text_Buf& text_buf) +{ +clean_up(); +decode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = (GSM48__bcap__modem__type::enum_type)text_buf.pull_int().get_val(); +if (!GSM48__bcap__modem__type::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @MNCC_Types.GSM48_bcap_modem_type.", 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 GSM48__bcap__modem__type_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 @MNCC_Types.GSM48_bcap_modem_type."); +} +} + +boolean GSM48__bcap__modem__type_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean GSM48__bcap__modem__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 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: { + GSM48__bcap__modem__type_template new_temp; + new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, m_p->get_size()); + for (size_t p_i=0; p_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: { + GSM48__bcap__modem__type::enum_type enum_val = GSM48__bcap__modem__type::str_to_enum(m_p->get_enumerated()); + if (!GSM48__bcap__modem__type::is_valid_enum(enum_val)) { + param.error("Invalid enumerated value for type @MNCC_Types.GSM48_bcap_modem_type."); + } + *this = enum_val; + } break; + default: + param.type_error("enumerated template", "@MNCC_Types.GSM48_bcap_modem_type"); + } + is_ifpresent = param.get_ifpresent(); +} + +void GSM48__bcap__modem__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_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 : "@MNCC_Types.GSM48_bcap_modem_type"); +} + +MNCC__MsgType::MNCC__MsgType() +{ +enum_value = UNBOUND_VALUE; +} + +MNCC__MsgType::MNCC__MsgType(int other_value) +{ +if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @MNCC_Types.MNCC_MsgType with invalid numeric value %d.", other_value); +enum_value = (enum_type)other_value; +} + +MNCC__MsgType::MNCC__MsgType(enum_type other_value) +{ +enum_value = other_value; +} + +MNCC__MsgType::MNCC__MsgType(const MNCC__MsgType& other_value) +: Base_Type() +{ +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @MNCC_Types.MNCC_MsgType."); +enum_value = other_value.enum_value; +} + +MNCC__MsgType& MNCC__MsgType::operator=(int other_value) +{ +if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @MNCC_Types.MNCC_MsgType.", other_value); +enum_value = (enum_type)other_value; +return *this; +} + +MNCC__MsgType& MNCC__MsgType::operator=(enum_type other_value) +{ +enum_value = other_value; +return *this; +} + +MNCC__MsgType& MNCC__MsgType::operator=(const MNCC__MsgType& other_value) +{ +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @MNCC_Types.MNCC_MsgType."); +enum_value = other_value.enum_value; +return *this; +} + +boolean MNCC__MsgType::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 @MNCC_Types.MNCC_MsgType."); +return enum_value == other_value; +} + +boolean MNCC__MsgType::operator==(const MNCC__MsgType& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.MNCC_MsgType."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.MNCC_MsgType."); +return enum_value == other_value.enum_value; +} + +boolean MNCC__MsgType::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 @MNCC_Types.MNCC_MsgType."); +return enum_value < other_value; +} + +boolean MNCC__MsgType::operator<(const MNCC__MsgType& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.MNCC_MsgType."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.MNCC_MsgType."); +return enum_value < other_value.enum_value; +} + +boolean MNCC__MsgType::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 @MNCC_Types.MNCC_MsgType."); +return enum_value > other_value; +} + +boolean MNCC__MsgType::operator>(const MNCC__MsgType& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.MNCC_MsgType."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.MNCC_MsgType."); +return enum_value > other_value.enum_value; +} + +const char *MNCC__MsgType::enum_to_str(enum_type enum_par) +{ +switch (enum_par) { +case MNCC__SETUP__REQ: return "MNCC_SETUP_REQ"; +case MNCC__SETUP__IND: return "MNCC_SETUP_IND"; +case MNCC__SETUP__RSP: return "MNCC_SETUP_RSP"; +case MNCC__SETUP__CNF: return "MNCC_SETUP_CNF"; +case MNCC__SETUP__COMPL__REQ: return "MNCC_SETUP_COMPL_REQ"; +case MNCC__SETUP__COMPL__IND: return "MNCC_SETUP_COMPL_IND"; +case MNCC__CALL__CONF__IND: return "MNCC_CALL_CONF_IND"; +case MNCC__CALL__PROC__REQ: return "MNCC_CALL_PROC_REQ"; +case MNCC__PROGRESS__REQ: return "MNCC_PROGRESS_REQ"; +case MNCC__ALERT__REQ: return "MNCC_ALERT_REQ"; +case MNCC__ALERT__IND: return "MNCC_ALERT_IND"; +case MNCC__NOTIFY__REQ: return "MNCC_NOTIFY_REQ"; +case MNCC__NOTIFY__IND: return "MNCC_NOTIFY_IND"; +case MNCC__DISC__REQ: return "MNCC_DISC_REQ"; +case MNCC__DISC__IND: return "MNCC_DISC_IND"; +case MNCC__REL__REQ: return "MNCC_REL_REQ"; +case MNCC__REL__IND: return "MNCC_REL_IND"; +case MNCC__REL__CNF: return "MNCC_REL_CNF"; +case MNCC__FACILITY__REQ: return "MNCC_FACILITY_REQ"; +case MNCC__FACILITY__IND: return "MNCC_FACILITY_IND"; +case MNCC__START__DTMF__IND: return "MNCC_START_DTMF_IND"; +case MNCC__START__DTMF__RSP: return "MNCC_START_DTMF_RSP"; +case MNCC__START__DTMF__REJ: return "MNCC_START_DTMF_REJ"; +case MNCC__STOP__DTMF__IND: return "MNCC_STOP_DTMF_IND"; +case MNCC__STOP__DTMF__RSP: return "MNCC_STOP_DTMF_RSP"; +case MNCC__MODIFY__REQ: return "MNCC_MODIFY_REQ"; +case MNCC__MODIFY__IND: return "MNCC_MODIFY_IND"; +case MNCC__MODIFY__RSP: return "MNCC_MODIFY_RSP"; +case MNCC__MODIFY__CNF: return "MNCC_MODIFY_CNF"; +case MNCC__MODIFY__REJ: return "MNCC_MODIFY_REJ"; +case MNCC__HOLD__IND: return "MNCC_HOLD_IND"; +case MNCC__HOLD__CNF: return "MNCC_HOLD_CNF"; +case MNCC__HOLD__REJ: return "MNCC_HOLD_REJ"; +case MNCC__RETRIEVE__IND: return "MNCC_RETRIEVE_IND"; +case MNCC__RETRIEVE__CNF: return "MNCC_RETRIEVE_CNF"; +case MNCC__RETRIEVE__REJ: return "MNCC_RETRIEVE_REJ"; +case MNCC__USERINFO__REQ: return "MNCC_USERINFO_REQ"; +case MNCC__USERINFO__IND: return "MNCC_USERINFO_IND"; +case MNCC__REJ__REQ: return "MNCC_REJ_REQ"; +case MNCC__REJ__IND: return "MNCC_REJ_IND"; +case MNCC__BRIDGE: return "MNCC_BRIDGE"; +case MNCC__FRAME__RECV: return "MNCC_FRAME_RECV"; +case MNCC__FRAME__DROP: return "MNCC_FRAME_DROP"; +case MNCC__LCHAN__MODIFY: return "MNCC_LCHAN_MODIFY"; +case MNCC__RTP__CREATE: return "MNCC_RTP_CREATE"; +case MNCC__RTP__CONNECT: return "MNCC_RTP_CONNECT"; +case MNCC__RTP__FREE: return "MNCC_RTP_FREE"; +case GSM__TCHF__FRAME: return "GSM_TCHF_FRAME"; +case GSM__TCHF__FRAME__EFR: return "GSM_TCHF_FRAME_EFR"; +case GSM__TCHH__FRAME: return "GSM_TCHH_FRAME"; +case GSM__TCH__FRAME__AMR: return "GSM_TCH_FRAME_AMR"; +case GSM__BAD__FRAME: return "GSM_BAD_FRAME"; +case MNCC__SOCKET__HELLO: return "MNCC_SOCKET_HELLO"; +default: return ""; +} +} + +MNCC__MsgType::enum_type MNCC__MsgType::str_to_enum(const char *str_par) +{ +if (!strcmp(str_par, "MNCC_SETUP_REQ")) return MNCC__SETUP__REQ; +else if (!strcmp(str_par, "MNCC_SETUP_IND")) return MNCC__SETUP__IND; +else if (!strcmp(str_par, "MNCC_SETUP_RSP")) return MNCC__SETUP__RSP; +else if (!strcmp(str_par, "MNCC_SETUP_CNF")) return MNCC__SETUP__CNF; +else if (!strcmp(str_par, "MNCC_SETUP_COMPL_REQ")) return MNCC__SETUP__COMPL__REQ; +else if (!strcmp(str_par, "MNCC_SETUP_COMPL_IND")) return MNCC__SETUP__COMPL__IND; +else if (!strcmp(str_par, "MNCC_CALL_CONF_IND")) return MNCC__CALL__CONF__IND; +else if (!strcmp(str_par, "MNCC_CALL_PROC_REQ")) return MNCC__CALL__PROC__REQ; +else if (!strcmp(str_par, "MNCC_PROGRESS_REQ")) return MNCC__PROGRESS__REQ; +else if (!strcmp(str_par, "MNCC_ALERT_REQ")) return MNCC__ALERT__REQ; +else if (!strcmp(str_par, "MNCC_ALERT_IND")) return MNCC__ALERT__IND; +else if (!strcmp(str_par, "MNCC_NOTIFY_REQ")) return MNCC__NOTIFY__REQ; +else if (!strcmp(str_par, "MNCC_NOTIFY_IND")) return MNCC__NOTIFY__IND; +else if (!strcmp(str_par, "MNCC_DISC_REQ")) return MNCC__DISC__REQ; +else if (!strcmp(str_par, "MNCC_DISC_IND")) return MNCC__DISC__IND; +else if (!strcmp(str_par, "MNCC_REL_REQ")) return MNCC__REL__REQ; +else if (!strcmp(str_par, "MNCC_REL_IND")) return MNCC__REL__IND; +else if (!strcmp(str_par, "MNCC_REL_CNF")) return MNCC__REL__CNF; +else if (!strcmp(str_par, "MNCC_FACILITY_REQ")) return MNCC__FACILITY__REQ; +else if (!strcmp(str_par, "MNCC_FACILITY_IND")) return MNCC__FACILITY__IND; +else if (!strcmp(str_par, "MNCC_START_DTMF_IND")) return MNCC__START__DTMF__IND; +else if (!strcmp(str_par, "MNCC_START_DTMF_RSP")) return MNCC__START__DTMF__RSP; +else if (!strcmp(str_par, "MNCC_START_DTMF_REJ")) return MNCC__START__DTMF__REJ; +else if (!strcmp(str_par, "MNCC_STOP_DTMF_IND")) return MNCC__STOP__DTMF__IND; +else if (!strcmp(str_par, "MNCC_STOP_DTMF_RSP")) return MNCC__STOP__DTMF__RSP; +else if (!strcmp(str_par, "MNCC_MODIFY_REQ")) return MNCC__MODIFY__REQ; +else if (!strcmp(str_par, "MNCC_MODIFY_IND")) return MNCC__MODIFY__IND; +else if (!strcmp(str_par, "MNCC_MODIFY_RSP")) return MNCC__MODIFY__RSP; +else if (!strcmp(str_par, "MNCC_MODIFY_CNF")) return MNCC__MODIFY__CNF; +else if (!strcmp(str_par, "MNCC_MODIFY_REJ")) return MNCC__MODIFY__REJ; +else if (!strcmp(str_par, "MNCC_HOLD_IND")) return MNCC__HOLD__IND; +else if (!strcmp(str_par, "MNCC_HOLD_CNF")) return MNCC__HOLD__CNF; +else if (!strcmp(str_par, "MNCC_HOLD_REJ")) return MNCC__HOLD__REJ; +else if (!strcmp(str_par, "MNCC_RETRIEVE_IND")) return MNCC__RETRIEVE__IND; +else if (!strcmp(str_par, "MNCC_RETRIEVE_CNF")) return MNCC__RETRIEVE__CNF; +else if (!strcmp(str_par, "MNCC_RETRIEVE_REJ")) return MNCC__RETRIEVE__REJ; +else if (!strcmp(str_par, "MNCC_USERINFO_REQ")) return MNCC__USERINFO__REQ; +else if (!strcmp(str_par, "MNCC_USERINFO_IND")) return MNCC__USERINFO__IND; +else if (!strcmp(str_par, "MNCC_REJ_REQ")) return MNCC__REJ__REQ; +else if (!strcmp(str_par, "MNCC_REJ_IND")) return MNCC__REJ__IND; +else if (!strcmp(str_par, "MNCC_BRIDGE")) return MNCC__BRIDGE; +else if (!strcmp(str_par, "MNCC_FRAME_RECV")) return MNCC__FRAME__RECV; +else if (!strcmp(str_par, "MNCC_FRAME_DROP")) return MNCC__FRAME__DROP; +else if (!strcmp(str_par, "MNCC_LCHAN_MODIFY")) return MNCC__LCHAN__MODIFY; +else if (!strcmp(str_par, "MNCC_RTP_CREATE")) return MNCC__RTP__CREATE; +else if (!strcmp(str_par, "MNCC_RTP_CONNECT")) return MNCC__RTP__CONNECT; +else if (!strcmp(str_par, "MNCC_RTP_FREE")) return MNCC__RTP__FREE; +else if (!strcmp(str_par, "GSM_TCHF_FRAME")) return GSM__TCHF__FRAME; +else if (!strcmp(str_par, "GSM_TCHF_FRAME_EFR")) return GSM__TCHF__FRAME__EFR; +else if (!strcmp(str_par, "GSM_TCHH_FRAME")) return GSM__TCHH__FRAME; +else if (!strcmp(str_par, "GSM_TCH_FRAME_AMR")) return GSM__TCH__FRAME__AMR; +else if (!strcmp(str_par, "GSM_BAD_FRAME")) return GSM__BAD__FRAME; +else if (!strcmp(str_par, "MNCC_SOCKET_HELLO")) return MNCC__SOCKET__HELLO; +else return UNKNOWN_VALUE; +} + +boolean MNCC__MsgType::is_valid_enum(int int_par) +{ +switch (int_par) { +case 257: +case 258: +case 259: +case 260: +case 261: +case 262: +case 263: +case 264: +case 265: +case 266: +case 267: +case 268: +case 269: +case 270: +case 271: +case 272: +case 273: +case 274: +case 275: +case 276: +case 277: +case 278: +case 279: +case 280: +case 281: +case 282: +case 283: +case 284: +case 285: +case 286: +case 287: +case 288: +case 289: +case 290: +case 291: +case 292: +case 293: +case 294: +case 295: +case 296: +case 512: +case 513: +case 514: +case 515: +case 516: +case 517: +case 518: +case 768: +case 769: +case 770: +case 771: +case 1023: +case 1024: +return TRUE; +default: +return FALSE; +} +} + +int MNCC__MsgType::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 @MNCC_Types.MNCC_MsgType.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); +return enum_par; +} + +int MNCC__MsgType::enum2int(const MNCC__MsgType& 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 @MNCC_Types.MNCC_MsgType.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); +return enum_par.enum_value; +} + +void MNCC__MsgType::int2enum(int int_val) +{ +if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @MNCC_Types.MNCC_MsgType.", int_val); +enum_value = (enum_type)int_val; +} + +MNCC__MsgType::operator MNCC__MsgType::enum_type() const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @MNCC_Types.MNCC_MsgType."); +return enum_value; +} + +void MNCC__MsgType::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 MNCC__MsgType::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", "@MNCC_Types.MNCC_MsgType"); + enum_value = str_to_enum(param.get_enumerated()); + if (!is_valid_enum(enum_value)) { + param.error("Invalid enumerated value for type @MNCC_Types.MNCC_MsgType."); + } +} + +void MNCC__MsgType::encode_text(Text_Buf& text_buf) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @MNCC_Types.MNCC_MsgType."); +text_buf.push_int(enum_value); +} + +void MNCC__MsgType::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 @MNCC_Types.MNCC_MsgType.", enum_value); +} + +void MNCC__MsgType::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void MNCC__MsgType::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int MNCC__MsgType::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) +{ + int decoded_value = 0; + int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 11, 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 MNCC__MsgType::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const +{ + return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 11); +} + +void MNCC__MsgType_template::copy_template(const MNCC__MsgType_template& other_value) +{ +set_selection(other_value); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = other_value.single_value; +break; +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new MNCC__MsgType_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of enumerated type @MNCC_Types.MNCC_MsgType."); +} +} + +MNCC__MsgType_template::MNCC__MsgType_template() +{ +} + +MNCC__MsgType_template::MNCC__MsgType_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +MNCC__MsgType_template::MNCC__MsgType_template(int other_value) + : Base_Template(SPECIFIC_VALUE) +{ +if (!MNCC__MsgType::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @MNCC_Types.MNCC_MsgType with unknown numeric value %d.", other_value); +single_value = (MNCC__MsgType::enum_type)other_value; +} + +MNCC__MsgType_template::MNCC__MsgType_template(MNCC__MsgType::enum_type other_value) + : Base_Template(SPECIFIC_VALUE) +{ +single_value = other_value; +} + +MNCC__MsgType_template::MNCC__MsgType_template(const MNCC__MsgType& other_value) + : Base_Template(SPECIFIC_VALUE) +{ +if (other_value.enum_value == MNCC__MsgType::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @MNCC_Types.MNCC_MsgType."); +single_value = other_value.enum_value; +} + +MNCC__MsgType_template::MNCC__MsgType_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +set_selection(SPECIFIC_VALUE); +single_value = (MNCC__MsgType::enum_type)(const MNCC__MsgType&)other_value; +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of enumerated type @MNCC_Types.MNCC_MsgType from an unbound optional field."); +} +} + +MNCC__MsgType_template::MNCC__MsgType_template(const MNCC__MsgType_template& other_value) + : Base_Template() +{ +copy_template(other_value); +} + +MNCC__MsgType_template::~MNCC__MsgType_template() +{ +clean_up(); +} + +boolean MNCC__MsgType_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +return TRUE; +} + +boolean MNCC__MsgType_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +return single_value != MNCC__MsgType::UNBOUND_VALUE; +} + +void MNCC__MsgType_template::clean_up() +{ +if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value; +template_selection = UNINITIALIZED_TEMPLATE; +} + +MNCC__MsgType_template& MNCC__MsgType_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +MNCC__MsgType_template& MNCC__MsgType_template::operator=(int other_value) +{ +if (!MNCC__MsgType::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @MNCC_Types.MNCC_MsgType.", other_value); +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = (MNCC__MsgType::enum_type)other_value; +return *this; +} + +MNCC__MsgType_template& MNCC__MsgType_template::operator=(MNCC__MsgType::enum_type other_value) +{ +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = other_value; +return *this; +} + +MNCC__MsgType_template& MNCC__MsgType_template::operator=(const MNCC__MsgType& other_value) +{ +if (other_value.enum_value == MNCC__MsgType::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @MNCC_Types.MNCC_MsgType to a template."); +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = other_value.enum_value; +return *this; +} + +MNCC__MsgType_template& MNCC__MsgType_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +set_selection(SPECIFIC_VALUE); +single_value = (MNCC__MsgType::enum_type)(const MNCC__MsgType&)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 @MNCC_Types.MNCC_MsgType."); +} +return *this; +} + +MNCC__MsgType_template& MNCC__MsgType_template::operator=(const MNCC__MsgType_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean MNCC__MsgType_template::match(MNCC__MsgType::enum_type other_value, boolean) const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +return single_value == other_value; +case OMIT_VALUE: +return FALSE; +case ANY_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of enumerated type @MNCC_Types.MNCC_MsgType."); +} +return FALSE; +} + +boolean MNCC__MsgType_template::match(const MNCC__MsgType& other_value, boolean) const +{ +if (other_value.enum_value == MNCC__MsgType::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @MNCC_Types.MNCC_MsgType with an unbound value."); +return match(other_value.enum_value); +} + +MNCC__MsgType::enum_type MNCC__MsgType_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 @MNCC_Types.MNCC_MsgType."); +return single_value; +} + +void MNCC__MsgType_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @MNCC_Types.MNCC_MsgType."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new MNCC__MsgType_template[list_length]; +} + +MNCC__MsgType_template& MNCC__MsgType_template::list_item(unsigned int list_index) +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @MNCC_Types.MNCC_MsgType."); +if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @MNCC_Types.MNCC_MsgType."); +return value_list.list_value[list_index]; +} + +void MNCC__MsgType_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_enum(MNCC__MsgType::enum_to_str(single_value), single_value); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { +if (elem_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[elem_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void MNCC__MsgType_template::log_match(const MNCC__MsgType& 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 MNCC__MsgType_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 @MNCC_Types.MNCC_MsgType."); +} +} + +void MNCC__MsgType_template::decode_text(Text_Buf& text_buf) +{ +clean_up(); +decode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = (MNCC__MsgType::enum_type)text_buf.pull_int().get_val(); +if (!MNCC__MsgType::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @MNCC_Types.MNCC_MsgType.", 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 MNCC__MsgType_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 @MNCC_Types.MNCC_MsgType."); +} +} + +boolean MNCC__MsgType_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean MNCC__MsgType_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int i=0; 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: { + MNCC__MsgType_template new_temp; + new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, m_p->get_size()); + for (size_t p_i=0; p_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: { + MNCC__MsgType::enum_type enum_val = MNCC__MsgType::str_to_enum(m_p->get_enumerated()); + if (!MNCC__MsgType::is_valid_enum(enum_val)) { + param.error("Invalid enumerated value for type @MNCC_Types.MNCC_MsgType."); + } + *this = enum_val; + } break; + default: + param.type_error("enumerated template", "@MNCC_Types.MNCC_MsgType"); + } + is_ifpresent = param.get_ifpresent(); +} + +void MNCC__MsgType_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 : "@MNCC_Types.MNCC_MsgType"); +} + +MNCC__bearer__cap__data::MNCC__bearer__cap__data() +{ +} + +MNCC__bearer__cap__data::MNCC__bearer__cap__data(const GSM48__bcap__ra& par_rate__adaptation, + const GSM48__bcap__sig__access& par_sig__access, + const INTEGER& par_async, + const INTEGER& par_nr__stop__bits, + const INTEGER& par_nr__data__bits, + const GSM48__bcap__user__rate& par_user__rate, + const GSM48__bcap__parity& par_parity, + const GSM48__bcap__interm__rate& par_interm__rate, + const GSM48__bcap__transp& par_transp, + const GSM48__bcap__modem__type& par_modem__type) + : field_rate__adaptation(par_rate__adaptation), + field_sig__access(par_sig__access), + field_async(par_async), + field_nr__stop__bits(par_nr__stop__bits), + field_nr__data__bits(par_nr__data__bits), + field_user__rate(par_user__rate), + field_parity(par_parity), + field_interm__rate(par_interm__rate), + field_transp(par_transp), + field_modem__type(par_modem__type) +{ +} + +MNCC__bearer__cap__data::MNCC__bearer__cap__data(const MNCC__bearer__cap__data& other_value) +{ +if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @MNCC_Types.MNCC_bearer_cap_data."); +if (other_value.rate__adaptation().is_bound()) field_rate__adaptation = other_value.rate__adaptation(); +else field_rate__adaptation.clean_up(); +if (other_value.sig__access().is_bound()) field_sig__access = other_value.sig__access(); +else field_sig__access.clean_up(); +if (other_value.async().is_bound()) field_async = other_value.async(); +else field_async.clean_up(); +if (other_value.nr__stop__bits().is_bound()) field_nr__stop__bits = other_value.nr__stop__bits(); +else field_nr__stop__bits.clean_up(); +if (other_value.nr__data__bits().is_bound()) field_nr__data__bits = other_value.nr__data__bits(); +else field_nr__data__bits.clean_up(); +if (other_value.user__rate().is_bound()) field_user__rate = other_value.user__rate(); +else field_user__rate.clean_up(); +if (other_value.parity().is_bound()) field_parity = other_value.parity(); +else field_parity.clean_up(); +if (other_value.interm__rate().is_bound()) field_interm__rate = other_value.interm__rate(); +else field_interm__rate.clean_up(); +if (other_value.transp().is_bound()) field_transp = other_value.transp(); +else field_transp.clean_up(); +if (other_value.modem__type().is_bound()) field_modem__type = other_value.modem__type(); +else field_modem__type.clean_up(); +} + +void MNCC__bearer__cap__data::clean_up() +{ +field_rate__adaptation.clean_up(); +field_sig__access.clean_up(); +field_async.clean_up(); +field_nr__stop__bits.clean_up(); +field_nr__data__bits.clean_up(); +field_user__rate.clean_up(); +field_parity.clean_up(); +field_interm__rate.clean_up(); +field_transp.clean_up(); +field_modem__type.clean_up(); +} + +MNCC__bearer__cap__data& MNCC__bearer__cap__data::operator=(const MNCC__bearer__cap__data& other_value) +{ +if (this != &other_value) { + if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @MNCC_Types.MNCC_bearer_cap_data."); + if (other_value.rate__adaptation().is_bound()) field_rate__adaptation = other_value.rate__adaptation(); + else field_rate__adaptation.clean_up(); + if (other_value.sig__access().is_bound()) field_sig__access = other_value.sig__access(); + else field_sig__access.clean_up(); + if (other_value.async().is_bound()) field_async = other_value.async(); + else field_async.clean_up(); + if (other_value.nr__stop__bits().is_bound()) field_nr__stop__bits = other_value.nr__stop__bits(); + else field_nr__stop__bits.clean_up(); + if (other_value.nr__data__bits().is_bound()) field_nr__data__bits = other_value.nr__data__bits(); + else field_nr__data__bits.clean_up(); + if (other_value.user__rate().is_bound()) field_user__rate = other_value.user__rate(); + else field_user__rate.clean_up(); + if (other_value.parity().is_bound()) field_parity = other_value.parity(); + else field_parity.clean_up(); + if (other_value.interm__rate().is_bound()) field_interm__rate = other_value.interm__rate(); + else field_interm__rate.clean_up(); + if (other_value.transp().is_bound()) field_transp = other_value.transp(); + else field_transp.clean_up(); + if (other_value.modem__type().is_bound()) field_modem__type = other_value.modem__type(); + else field_modem__type.clean_up(); +} +return *this; +} + +boolean MNCC__bearer__cap__data::operator==(const MNCC__bearer__cap__data& other_value) const +{ +return field_rate__adaptation==other_value.field_rate__adaptation + && field_sig__access==other_value.field_sig__access + && field_async==other_value.field_async + && field_nr__stop__bits==other_value.field_nr__stop__bits + && field_nr__data__bits==other_value.field_nr__data__bits + && field_user__rate==other_value.field_user__rate + && field_parity==other_value.field_parity + && field_interm__rate==other_value.field_interm__rate + && field_transp==other_value.field_transp + && field_modem__type==other_value.field_modem__type; +} + +boolean MNCC__bearer__cap__data::is_bound() const +{ +if(field_rate__adaptation.is_bound()) return TRUE; +if(field_sig__access.is_bound()) return TRUE; +if(field_async.is_bound()) return TRUE; +if(field_nr__stop__bits.is_bound()) return TRUE; +if(field_nr__data__bits.is_bound()) return TRUE; +if(field_user__rate.is_bound()) return TRUE; +if(field_parity.is_bound()) return TRUE; +if(field_interm__rate.is_bound()) return TRUE; +if(field_transp.is_bound()) return TRUE; +if(field_modem__type.is_bound()) return TRUE; +return FALSE; +} +boolean MNCC__bearer__cap__data::is_value() const +{ +if(!field_rate__adaptation.is_value()) return FALSE; +if(!field_sig__access.is_value()) return FALSE; +if(!field_async.is_value()) return FALSE; +if(!field_nr__stop__bits.is_value()) return FALSE; +if(!field_nr__data__bits.is_value()) return FALSE; +if(!field_user__rate.is_value()) return FALSE; +if(!field_parity.is_value()) return FALSE; +if(!field_interm__rate.is_value()) return FALSE; +if(!field_transp.is_value()) return FALSE; +if(!field_modem__type.is_value()) return FALSE; +return TRUE; +} +void MNCC__bearer__cap__data::log() const +{ +if (!is_bound()) { +TTCN_Logger::log_event_unbound(); +return; +} +TTCN_Logger::log_event_str("{ rate_adaptation := "); +field_rate__adaptation.log(); +TTCN_Logger::log_event_str(", sig_access := "); +field_sig__access.log(); +TTCN_Logger::log_event_str(", async := "); +field_async.log(); +TTCN_Logger::log_event_str(", nr_stop_bits := "); +field_nr__stop__bits.log(); +TTCN_Logger::log_event_str(", nr_data_bits := "); +field_nr__data__bits.log(); +TTCN_Logger::log_event_str(", user_rate := "); +field_user__rate.log(); +TTCN_Logger::log_event_str(", parity := "); +field_parity.log(); +TTCN_Logger::log_event_str(", interm_rate := "); +field_interm__rate.log(); +TTCN_Logger::log_event_str(", transp := "); +field_transp.log(); +TTCN_Logger::log_event_str(", modem_type := "); +field_modem__type.log(); +TTCN_Logger::log_event_str(" }"); +} + +void MNCC__bearer__cap__data::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 (100 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) rate__adaptation().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) sig__access().set_param(*param.get_elem(1)); + if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) async().set_param(*param.get_elem(2)); + if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) nr__stop__bits().set_param(*param.get_elem(3)); + if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) nr__data__bits().set_param(*param.get_elem(4)); + if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) user__rate().set_param(*param.get_elem(5)); + if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) parity().set_param(*param.get_elem(6)); + if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) interm__rate().set_param(*param.get_elem(7)); + if (param.get_size()>8 && param.get_elem(8)->get_type()!=Module_Param::MP_NotUsed) transp().set_param(*param.get_elem(8)); + if (param.get_size()>9 && param.get_elem(9)->get_type()!=Module_Param::MP_NotUsed) modem__type().set_param(*param.get_elem(9)); + 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(), "rate_adaptation")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + rate__adaptation().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "sig_access")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + sig__access().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "async")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + async().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "nr_stop_bits")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + nr__stop__bits().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "nr_data_bits")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + nr__data__bits().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "user_rate")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + user__rate().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "parity")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + parity().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "interm_rate")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + interm__rate().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "transp")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + transp().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "modem_type")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + modem__type().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @MNCC_Types.MNCC_bearer_cap_data: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record value", "@MNCC_Types.MNCC_bearer_cap_data"); + } +} + +void MNCC__bearer__cap__data::set_implicit_omit() +{ +if (rate__adaptation().is_bound()) rate__adaptation().set_implicit_omit(); +if (sig__access().is_bound()) sig__access().set_implicit_omit(); +if (async().is_bound()) async().set_implicit_omit(); +if (nr__stop__bits().is_bound()) nr__stop__bits().set_implicit_omit(); +if (nr__data__bits().is_bound()) nr__data__bits().set_implicit_omit(); +if (user__rate().is_bound()) user__rate().set_implicit_omit(); +if (parity().is_bound()) parity().set_implicit_omit(); +if (interm__rate().is_bound()) interm__rate().set_implicit_omit(); +if (transp().is_bound()) transp().set_implicit_omit(); +if (modem__type().is_bound()) modem__type().set_implicit_omit(); +} + +void MNCC__bearer__cap__data::encode_text(Text_Buf& text_buf) const +{ +field_rate__adaptation.encode_text(text_buf); +field_sig__access.encode_text(text_buf); +field_async.encode_text(text_buf); +field_nr__stop__bits.encode_text(text_buf); +field_nr__data__bits.encode_text(text_buf); +field_user__rate.encode_text(text_buf); +field_parity.encode_text(text_buf); +field_interm__rate.encode_text(text_buf); +field_transp.encode_text(text_buf); +field_modem__type.encode_text(text_buf); +} + +void MNCC__bearer__cap__data::decode_text(Text_Buf& text_buf) +{ +field_rate__adaptation.decode_text(text_buf); +field_sig__access.decode_text(text_buf); +field_async.decode_text(text_buf); +field_nr__stop__bits.decode_text(text_buf); +field_nr__data__bits.decode_text(text_buf); +field_user__rate.decode_text(text_buf); +field_parity.decode_text(text_buf); +field_interm__rate.decode_text(text_buf); +field_transp.decode_text(text_buf); +field_modem__type.decode_text(text_buf); +} + +void MNCC__bearer__cap__data::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void MNCC__bearer__cap__data::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int MNCC__bearer__cap__data::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) +{ (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; + decoded_field_length = field_rate__adaptation.RAW_decode(MNCC__bearer__cap__data_rate__adaptation_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_sig__access.RAW_decode(MNCC__bearer__cap__data_sig__access_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_async.RAW_decode(MNCC__bearer__cap__data_async_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_nr__stop__bits.RAW_decode(MNCC__bearer__cap__data_nr__stop__bits_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_nr__data__bits.RAW_decode(MNCC__bearer__cap__data_nr__data__bits_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_user__rate.RAW_decode(MNCC__bearer__cap__data_user__rate_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_parity.RAW_decode(MNCC__bearer__cap__data_parity_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_interm__rate.RAW_decode(MNCC__bearer__cap__data_interm__rate_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_transp.RAW_decode(MNCC__bearer__cap__data_transp_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_modem__type.RAW_decode(MNCC__bearer__cap__data_modem__type_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return 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 MNCC__bearer__cap__data::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { + if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); + int encoded_length = 0; + myleaf.isleaf = FALSE; + myleaf.body.node.num_of_nodes = 10; + myleaf.body.node.nodes = init_nodes_of_enc_tree(10); + myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, MNCC__bearer__cap__data_rate__adaptation_descr_.raw); + myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, MNCC__bearer__cap__data_sig__access_descr_.raw); + myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, MNCC__bearer__cap__data_async_descr_.raw); + myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, MNCC__bearer__cap__data_nr__stop__bits_descr_.raw); + myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, MNCC__bearer__cap__data_nr__data__bits_descr_.raw); + myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, MNCC__bearer__cap__data_user__rate_descr_.raw); + myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, MNCC__bearer__cap__data_parity_descr_.raw); + myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, MNCC__bearer__cap__data_interm__rate_descr_.raw); + myleaf.body.node.nodes[8] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 8, MNCC__bearer__cap__data_transp_descr_.raw); + myleaf.body.node.nodes[9] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 9, MNCC__bearer__cap__data_modem__type_descr_.raw); + encoded_length += field_rate__adaptation.RAW_encode(MNCC__bearer__cap__data_rate__adaptation_descr_, *myleaf.body.node.nodes[0]); + encoded_length += field_sig__access.RAW_encode(MNCC__bearer__cap__data_sig__access_descr_, *myleaf.body.node.nodes[1]); + encoded_length += field_async.RAW_encode(MNCC__bearer__cap__data_async_descr_, *myleaf.body.node.nodes[2]); + encoded_length += field_nr__stop__bits.RAW_encode(MNCC__bearer__cap__data_nr__stop__bits_descr_, *myleaf.body.node.nodes[3]); + encoded_length += field_nr__data__bits.RAW_encode(MNCC__bearer__cap__data_nr__data__bits_descr_, *myleaf.body.node.nodes[4]); + encoded_length += field_user__rate.RAW_encode(MNCC__bearer__cap__data_user__rate_descr_, *myleaf.body.node.nodes[5]); + encoded_length += field_parity.RAW_encode(MNCC__bearer__cap__data_parity_descr_, *myleaf.body.node.nodes[6]); + encoded_length += field_interm__rate.RAW_encode(MNCC__bearer__cap__data_interm__rate_descr_, *myleaf.body.node.nodes[7]); + encoded_length += field_transp.RAW_encode(MNCC__bearer__cap__data_transp_descr_, *myleaf.body.node.nodes[8]); + encoded_length += field_modem__type.RAW_encode(MNCC__bearer__cap__data_modem__type_descr_, *myleaf.body.node.nodes[9]); + return myleaf.length = encoded_length; +} + +struct MNCC__bearer__cap__data_template::single_value_struct { +GSM48__bcap__ra_template field_rate__adaptation; +GSM48__bcap__sig__access_template field_sig__access; +INTEGER_template field_async; +INTEGER_template field_nr__stop__bits; +INTEGER_template field_nr__data__bits; +GSM48__bcap__user__rate_template field_user__rate; +GSM48__bcap__parity_template field_parity; +GSM48__bcap__interm__rate_template field_interm__rate; +GSM48__bcap__transp_template field_transp; +GSM48__bcap__modem__type_template field_modem__type; +}; + +void MNCC__bearer__cap__data_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_rate__adaptation = ANY_VALUE; +single_value->field_sig__access = ANY_VALUE; +single_value->field_async = ANY_VALUE; +single_value->field_nr__stop__bits = ANY_VALUE; +single_value->field_nr__data__bits = ANY_VALUE; +single_value->field_user__rate = ANY_VALUE; +single_value->field_parity = ANY_VALUE; +single_value->field_interm__rate = ANY_VALUE; +single_value->field_transp = ANY_VALUE; +single_value->field_modem__type = ANY_VALUE; +} +} +} + +void MNCC__bearer__cap__data_template::copy_value(const MNCC__bearer__cap__data& other_value) +{ +single_value = new single_value_struct; +if (other_value.rate__adaptation().is_bound()) { + single_value->field_rate__adaptation = other_value.rate__adaptation(); +} else { + single_value->field_rate__adaptation.clean_up(); +} +if (other_value.sig__access().is_bound()) { + single_value->field_sig__access = other_value.sig__access(); +} else { + single_value->field_sig__access.clean_up(); +} +if (other_value.async().is_bound()) { + single_value->field_async = other_value.async(); +} else { + single_value->field_async.clean_up(); +} +if (other_value.nr__stop__bits().is_bound()) { + single_value->field_nr__stop__bits = other_value.nr__stop__bits(); +} else { + single_value->field_nr__stop__bits.clean_up(); +} +if (other_value.nr__data__bits().is_bound()) { + single_value->field_nr__data__bits = other_value.nr__data__bits(); +} else { + single_value->field_nr__data__bits.clean_up(); +} +if (other_value.user__rate().is_bound()) { + single_value->field_user__rate = other_value.user__rate(); +} else { + single_value->field_user__rate.clean_up(); +} +if (other_value.parity().is_bound()) { + single_value->field_parity = other_value.parity(); +} else { + single_value->field_parity.clean_up(); +} +if (other_value.interm__rate().is_bound()) { + single_value->field_interm__rate = other_value.interm__rate(); +} else { + single_value->field_interm__rate.clean_up(); +} +if (other_value.transp().is_bound()) { + single_value->field_transp = other_value.transp(); +} else { + single_value->field_transp.clean_up(); +} +if (other_value.modem__type().is_bound()) { + single_value->field_modem__type = other_value.modem__type(); +} else { + single_value->field_modem__type.clean_up(); +} +set_selection(SPECIFIC_VALUE); +} + +void MNCC__bearer__cap__data_template::copy_template(const MNCC__bearer__cap__data_template& other_value) +{ +switch (other_value.template_selection) { +case SPECIFIC_VALUE: +single_value = new single_value_struct; +if (UNINITIALIZED_TEMPLATE != other_value.rate__adaptation().get_selection()) { +single_value->field_rate__adaptation = other_value.rate__adaptation(); +} else { +single_value->field_rate__adaptation.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.sig__access().get_selection()) { +single_value->field_sig__access = other_value.sig__access(); +} else { +single_value->field_sig__access.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.async().get_selection()) { +single_value->field_async = other_value.async(); +} else { +single_value->field_async.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.nr__stop__bits().get_selection()) { +single_value->field_nr__stop__bits = other_value.nr__stop__bits(); +} else { +single_value->field_nr__stop__bits.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.nr__data__bits().get_selection()) { +single_value->field_nr__data__bits = other_value.nr__data__bits(); +} else { +single_value->field_nr__data__bits.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.user__rate().get_selection()) { +single_value->field_user__rate = other_value.user__rate(); +} else { +single_value->field_user__rate.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.parity().get_selection()) { +single_value->field_parity = other_value.parity(); +} else { +single_value->field_parity.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.interm__rate().get_selection()) { +single_value->field_interm__rate = other_value.interm__rate(); +} else { +single_value->field_interm__rate.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.transp().get_selection()) { +single_value->field_transp = other_value.transp(); +} else { +single_value->field_transp.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.modem__type().get_selection()) { +single_value->field_modem__type = other_value.modem__type(); +} else { +single_value->field_modem__type.clean_up(); +} +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new MNCC__bearer__cap__data_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of type @MNCC_Types.MNCC_bearer_cap_data."); +break; +} +set_selection(other_value); +} + +MNCC__bearer__cap__data_template::MNCC__bearer__cap__data_template() +{ +} + +MNCC__bearer__cap__data_template::MNCC__bearer__cap__data_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +MNCC__bearer__cap__data_template::MNCC__bearer__cap__data_template(const MNCC__bearer__cap__data& other_value) +{ +copy_value(other_value); +} + +MNCC__bearer__cap__data_template::MNCC__bearer__cap__data_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const MNCC__bearer__cap__data&)other_value); +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of type @MNCC_Types.MNCC_bearer_cap_data from an unbound optional field."); +} +} + +MNCC__bearer__cap__data_template::MNCC__bearer__cap__data_template(const MNCC__bearer__cap__data_template& other_value) +: Base_Template() +{ +copy_template(other_value); +} + +MNCC__bearer__cap__data_template::~MNCC__bearer__cap__data_template() +{ +clean_up(); +} + +MNCC__bearer__cap__data_template& MNCC__bearer__cap__data_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +MNCC__bearer__cap__data_template& MNCC__bearer__cap__data_template::operator=(const MNCC__bearer__cap__data& other_value) +{ +clean_up(); +copy_value(other_value); +return *this; +} + +MNCC__bearer__cap__data_template& MNCC__bearer__cap__data_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const MNCC__bearer__cap__data&)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 @MNCC_Types.MNCC_bearer_cap_data."); +} +return *this; +} + +MNCC__bearer__cap__data_template& MNCC__bearer__cap__data_template::operator=(const MNCC__bearer__cap__data_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean MNCC__bearer__cap__data_template::match(const MNCC__bearer__cap__data& 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.rate__adaptation().is_bound()) return FALSE; +if(!single_value->field_rate__adaptation.match(other_value.rate__adaptation(), legacy))return FALSE; +if(!other_value.sig__access().is_bound()) return FALSE; +if(!single_value->field_sig__access.match(other_value.sig__access(), legacy))return FALSE; +if(!other_value.async().is_bound()) return FALSE; +if(!single_value->field_async.match(other_value.async(), legacy))return FALSE; +if(!other_value.nr__stop__bits().is_bound()) return FALSE; +if(!single_value->field_nr__stop__bits.match(other_value.nr__stop__bits(), legacy))return FALSE; +if(!other_value.nr__data__bits().is_bound()) return FALSE; +if(!single_value->field_nr__data__bits.match(other_value.nr__data__bits(), legacy))return FALSE; +if(!other_value.user__rate().is_bound()) return FALSE; +if(!single_value->field_user__rate.match(other_value.user__rate(), legacy))return FALSE; +if(!other_value.parity().is_bound()) return FALSE; +if(!single_value->field_parity.match(other_value.parity(), legacy))return FALSE; +if(!other_value.interm__rate().is_bound()) return FALSE; +if(!single_value->field_interm__rate.match(other_value.interm__rate(), legacy))return FALSE; +if(!other_value.transp().is_bound()) return FALSE; +if(!single_value->field_transp.match(other_value.transp(), legacy))return FALSE; +if(!other_value.modem__type().is_bound()) return FALSE; +if(!single_value->field_modem__type.match(other_value.modem__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; +default: +TTCN_error("Matching an uninitialized/unsupported template of type @MNCC_Types.MNCC_bearer_cap_data."); +} +return FALSE; +} + +boolean MNCC__bearer__cap__data_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +if (template_selection != SPECIFIC_VALUE) return TRUE; +if (single_value->field_rate__adaptation.is_bound()) return TRUE; +if (single_value->field_sig__access.is_bound()) return TRUE; +if (single_value->field_async.is_bound()) return TRUE; +if (single_value->field_nr__stop__bits.is_bound()) return TRUE; +if (single_value->field_nr__data__bits.is_bound()) return TRUE; +if (single_value->field_user__rate.is_bound()) return TRUE; +if (single_value->field_parity.is_bound()) return TRUE; +if (single_value->field_interm__rate.is_bound()) return TRUE; +if (single_value->field_transp.is_bound()) return TRUE; +if (single_value->field_modem__type.is_bound()) return TRUE; +return FALSE; +} + +boolean MNCC__bearer__cap__data_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +if (!single_value->field_rate__adaptation.is_value()) return FALSE; +if (!single_value->field_sig__access.is_value()) return FALSE; +if (!single_value->field_async.is_value()) return FALSE; +if (!single_value->field_nr__stop__bits.is_value()) return FALSE; +if (!single_value->field_nr__data__bits.is_value()) return FALSE; +if (!single_value->field_user__rate.is_value()) return FALSE; +if (!single_value->field_parity.is_value()) return FALSE; +if (!single_value->field_interm__rate.is_value()) return FALSE; +if (!single_value->field_transp.is_value()) return FALSE; +if (!single_value->field_modem__type.is_value()) return FALSE; +return TRUE; +} + +void MNCC__bearer__cap__data_template::clean_up() +{ +switch (template_selection) { +case SPECIFIC_VALUE: +delete single_value; +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +delete [] value_list.list_value; +default: +break; +} +template_selection = UNINITIALIZED_TEMPLATE; +} + +MNCC__bearer__cap__data MNCC__bearer__cap__data_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 @MNCC_Types.MNCC_bearer_cap_data."); +MNCC__bearer__cap__data ret_val; +if (single_value->field_rate__adaptation.is_bound()) { +ret_val.rate__adaptation() = single_value->field_rate__adaptation.valueof(); +} +if (single_value->field_sig__access.is_bound()) { +ret_val.sig__access() = single_value->field_sig__access.valueof(); +} +if (single_value->field_async.is_bound()) { +ret_val.async() = single_value->field_async.valueof(); +} +if (single_value->field_nr__stop__bits.is_bound()) { +ret_val.nr__stop__bits() = single_value->field_nr__stop__bits.valueof(); +} +if (single_value->field_nr__data__bits.is_bound()) { +ret_val.nr__data__bits() = single_value->field_nr__data__bits.valueof(); +} +if (single_value->field_user__rate.is_bound()) { +ret_val.user__rate() = single_value->field_user__rate.valueof(); +} +if (single_value->field_parity.is_bound()) { +ret_val.parity() = single_value->field_parity.valueof(); +} +if (single_value->field_interm__rate.is_bound()) { +ret_val.interm__rate() = single_value->field_interm__rate.valueof(); +} +if (single_value->field_transp.is_bound()) { +ret_val.transp() = single_value->field_transp.valueof(); +} +if (single_value->field_modem__type.is_bound()) { +ret_val.modem__type() = single_value->field_modem__type.valueof(); +} +return ret_val; +} + +void MNCC__bearer__cap__data_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) +TTCN_error("Setting an invalid list for a template of type @MNCC_Types.MNCC_bearer_cap_data."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new MNCC__bearer__cap__data_template[list_length]; +} + +MNCC__bearer__cap__data_template& MNCC__bearer__cap__data_template::list_item(unsigned int list_index) const +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) +TTCN_error("Accessing a list element of a non-list template of type @MNCC_Types.MNCC_bearer_cap_data."); +if (list_index >= value_list.n_values) +TTCN_error("Index overflow in a value list template of type @MNCC_Types.MNCC_bearer_cap_data."); +return value_list.list_value[list_index]; +} + +GSM48__bcap__ra_template& MNCC__bearer__cap__data_template::rate__adaptation() +{ +set_specific(); +return single_value->field_rate__adaptation; +} + +const GSM48__bcap__ra_template& MNCC__bearer__cap__data_template::rate__adaptation() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field rate_adaptation of a non-specific template of type @MNCC_Types.MNCC_bearer_cap_data."); +return single_value->field_rate__adaptation; +} + +GSM48__bcap__sig__access_template& MNCC__bearer__cap__data_template::sig__access() +{ +set_specific(); +return single_value->field_sig__access; +} + +const GSM48__bcap__sig__access_template& MNCC__bearer__cap__data_template::sig__access() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field sig_access of a non-specific template of type @MNCC_Types.MNCC_bearer_cap_data."); +return single_value->field_sig__access; +} + +INTEGER_template& MNCC__bearer__cap__data_template::async() +{ +set_specific(); +return single_value->field_async; +} + +const INTEGER_template& MNCC__bearer__cap__data_template::async() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field async of a non-specific template of type @MNCC_Types.MNCC_bearer_cap_data."); +return single_value->field_async; +} + +INTEGER_template& MNCC__bearer__cap__data_template::nr__stop__bits() +{ +set_specific(); +return single_value->field_nr__stop__bits; +} + +const INTEGER_template& MNCC__bearer__cap__data_template::nr__stop__bits() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field nr_stop_bits of a non-specific template of type @MNCC_Types.MNCC_bearer_cap_data."); +return single_value->field_nr__stop__bits; +} + +INTEGER_template& MNCC__bearer__cap__data_template::nr__data__bits() +{ +set_specific(); +return single_value->field_nr__data__bits; +} + +const INTEGER_template& MNCC__bearer__cap__data_template::nr__data__bits() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field nr_data_bits of a non-specific template of type @MNCC_Types.MNCC_bearer_cap_data."); +return single_value->field_nr__data__bits; +} + +GSM48__bcap__user__rate_template& MNCC__bearer__cap__data_template::user__rate() +{ +set_specific(); +return single_value->field_user__rate; +} + +const GSM48__bcap__user__rate_template& MNCC__bearer__cap__data_template::user__rate() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field user_rate of a non-specific template of type @MNCC_Types.MNCC_bearer_cap_data."); +return single_value->field_user__rate; +} + +GSM48__bcap__parity_template& MNCC__bearer__cap__data_template::parity() +{ +set_specific(); +return single_value->field_parity; +} + +const GSM48__bcap__parity_template& MNCC__bearer__cap__data_template::parity() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field parity of a non-specific template of type @MNCC_Types.MNCC_bearer_cap_data."); +return single_value->field_parity; +} + +GSM48__bcap__interm__rate_template& MNCC__bearer__cap__data_template::interm__rate() +{ +set_specific(); +return single_value->field_interm__rate; +} + +const GSM48__bcap__interm__rate_template& MNCC__bearer__cap__data_template::interm__rate() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field interm_rate of a non-specific template of type @MNCC_Types.MNCC_bearer_cap_data."); +return single_value->field_interm__rate; +} + +GSM48__bcap__transp_template& MNCC__bearer__cap__data_template::transp() +{ +set_specific(); +return single_value->field_transp; +} + +const GSM48__bcap__transp_template& MNCC__bearer__cap__data_template::transp() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field transp of a non-specific template of type @MNCC_Types.MNCC_bearer_cap_data."); +return single_value->field_transp; +} + +GSM48__bcap__modem__type_template& MNCC__bearer__cap__data_template::modem__type() +{ +set_specific(); +return single_value->field_modem__type; +} + +const GSM48__bcap__modem__type_template& MNCC__bearer__cap__data_template::modem__type() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field modem_type of a non-specific template of type @MNCC_Types.MNCC_bearer_cap_data."); +return single_value->field_modem__type; +} + +int MNCC__bearer__cap__data_template::size_of() const +{ + if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_bearer_cap_data which has an ifpresent attribute."); + switch (template_selection) + { + case SPECIFIC_VALUE: + return 10; + case VALUE_LIST: + { + if (value_list.n_values<1) + TTCN_error("Internal error: Performing sizeof() operation on a template of type @MNCC_Types.MNCC_bearer_cap_data 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 @MNCC_Types.MNCC_bearer_cap_data containing a value list with different sizes."); + } + return item_size; + } + case OMIT_VALUE: + TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_bearer_cap_data containing omit value."); + case ANY_VALUE: + case ANY_OR_OMIT: + TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_bearer_cap_data containing */? value."); + case COMPLEMENTED_LIST: + TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_bearer_cap_data containing complemented list."); + default: + TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @MNCC_Types.MNCC_bearer_cap_data."); + } + return 0; +} + +void MNCC__bearer__cap__data_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_str("{ rate_adaptation := "); +single_value->field_rate__adaptation.log(); +TTCN_Logger::log_event_str(", sig_access := "); +single_value->field_sig__access.log(); +TTCN_Logger::log_event_str(", async := "); +single_value->field_async.log(); +TTCN_Logger::log_event_str(", nr_stop_bits := "); +single_value->field_nr__stop__bits.log(); +TTCN_Logger::log_event_str(", nr_data_bits := "); +single_value->field_nr__data__bits.log(); +TTCN_Logger::log_event_str(", user_rate := "); +single_value->field_user__rate.log(); +TTCN_Logger::log_event_str(", parity := "); +single_value->field_parity.log(); +TTCN_Logger::log_event_str(", interm_rate := "); +single_value->field_interm__rate.log(); +TTCN_Logger::log_event_str(", transp := "); +single_value->field_transp.log(); +TTCN_Logger::log_event_str(", modem_type := "); +single_value->field_modem__type.log(); +TTCN_Logger::log_event_str(" }"); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { +if (list_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[list_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void MNCC__bearer__cap__data_template::log_match(const MNCC__bearer__cap__data& 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_rate__adaptation.match(match_value.rate__adaptation(), legacy)){ +TTCN_Logger::log_logmatch_info(".rate_adaptation"); +single_value->field_rate__adaptation.log_match(match_value.rate__adaptation(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_sig__access.match(match_value.sig__access(), legacy)){ +TTCN_Logger::log_logmatch_info(".sig_access"); +single_value->field_sig__access.log_match(match_value.sig__access(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_async.match(match_value.async(), legacy)){ +TTCN_Logger::log_logmatch_info(".async"); +single_value->field_async.log_match(match_value.async(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_nr__stop__bits.match(match_value.nr__stop__bits(), legacy)){ +TTCN_Logger::log_logmatch_info(".nr_stop_bits"); +single_value->field_nr__stop__bits.log_match(match_value.nr__stop__bits(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_nr__data__bits.match(match_value.nr__data__bits(), legacy)){ +TTCN_Logger::log_logmatch_info(".nr_data_bits"); +single_value->field_nr__data__bits.log_match(match_value.nr__data__bits(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_user__rate.match(match_value.user__rate(), legacy)){ +TTCN_Logger::log_logmatch_info(".user_rate"); +single_value->field_user__rate.log_match(match_value.user__rate(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_parity.match(match_value.parity(), legacy)){ +TTCN_Logger::log_logmatch_info(".parity"); +single_value->field_parity.log_match(match_value.parity(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_interm__rate.match(match_value.interm__rate(), legacy)){ +TTCN_Logger::log_logmatch_info(".interm_rate"); +single_value->field_interm__rate.log_match(match_value.interm__rate(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_transp.match(match_value.transp(), legacy)){ +TTCN_Logger::log_logmatch_info(".transp"); +single_value->field_transp.log_match(match_value.transp(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_modem__type.match(match_value.modem__type(), legacy)){ +TTCN_Logger::log_logmatch_info(".modem_type"); +single_value->field_modem__type.log_match(match_value.modem__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("{ rate_adaptation := "); +single_value->field_rate__adaptation.log_match(match_value.rate__adaptation(), legacy); +TTCN_Logger::log_event_str(", sig_access := "); +single_value->field_sig__access.log_match(match_value.sig__access(), legacy); +TTCN_Logger::log_event_str(", async := "); +single_value->field_async.log_match(match_value.async(), legacy); +TTCN_Logger::log_event_str(", nr_stop_bits := "); +single_value->field_nr__stop__bits.log_match(match_value.nr__stop__bits(), legacy); +TTCN_Logger::log_event_str(", nr_data_bits := "); +single_value->field_nr__data__bits.log_match(match_value.nr__data__bits(), legacy); +TTCN_Logger::log_event_str(", user_rate := "); +single_value->field_user__rate.log_match(match_value.user__rate(), legacy); +TTCN_Logger::log_event_str(", parity := "); +single_value->field_parity.log_match(match_value.parity(), legacy); +TTCN_Logger::log_event_str(", interm_rate := "); +single_value->field_interm__rate.log_match(match_value.interm__rate(), legacy); +TTCN_Logger::log_event_str(", transp := "); +single_value->field_transp.log_match(match_value.transp(), legacy); +TTCN_Logger::log_event_str(", modem_type := "); +single_value->field_modem__type.log_match(match_value.modem__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 MNCC__bearer__cap__data_template::encode_text(Text_Buf& text_buf) const +{ +encode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value->field_rate__adaptation.encode_text(text_buf); +single_value->field_sig__access.encode_text(text_buf); +single_value->field_async.encode_text(text_buf); +single_value->field_nr__stop__bits.encode_text(text_buf); +single_value->field_nr__data__bits.encode_text(text_buf); +single_value->field_user__rate.encode_text(text_buf); +single_value->field_parity.encode_text(text_buf); +single_value->field_interm__rate.encode_text(text_buf); +single_value->field_transp.encode_text(text_buf); +single_value->field_modem__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 @MNCC_Types.MNCC_bearer_cap_data."); +} +} + +void MNCC__bearer__cap__data_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_rate__adaptation.decode_text(text_buf); +single_value->field_sig__access.decode_text(text_buf); +single_value->field_async.decode_text(text_buf); +single_value->field_nr__stop__bits.decode_text(text_buf); +single_value->field_nr__data__bits.decode_text(text_buf); +single_value->field_user__rate.decode_text(text_buf); +single_value->field_parity.decode_text(text_buf); +single_value->field_interm__rate.decode_text(text_buf); +single_value->field_transp.decode_text(text_buf); +single_value->field_modem__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 MNCC__bearer__cap__data_template[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 @MNCC_Types.MNCC_bearer_cap_data."); +} +} + +void MNCC__bearer__cap__data_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: { + MNCC__bearer__cap__data_template new_temp; + new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); + for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) rate__adaptation().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) sig__access().set_param(*param.get_elem(1)); + if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) async().set_param(*param.get_elem(2)); + if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) nr__stop__bits().set_param(*param.get_elem(3)); + if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) nr__data__bits().set_param(*param.get_elem(4)); + if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) user__rate().set_param(*param.get_elem(5)); + if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) parity().set_param(*param.get_elem(6)); + if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) interm__rate().set_param(*param.get_elem(7)); + if (param.get_size()>8 && param.get_elem(8)->get_type()!=Module_Param::MP_NotUsed) transp().set_param(*param.get_elem(8)); + if (param.get_size()>9 && param.get_elem(9)->get_type()!=Module_Param::MP_NotUsed) modem__type().set_param(*param.get_elem(9)); + 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(), "rate_adaptation")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + rate__adaptation().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "sig_access")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + sig__access().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "async")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + async().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "nr_stop_bits")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + nr__stop__bits().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "nr_data_bits")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + nr__data__bits().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "user_rate")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + user__rate().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "parity")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + parity().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "interm_rate")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + interm__rate().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "transp")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + transp().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "modem_type")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + modem__type().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @MNCC_Types.MNCC_bearer_cap_data: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record template", "@MNCC_Types.MNCC_bearer_cap_data"); + } + is_ifpresent = param.get_ifpresent(); +} + +void MNCC__bearer__cap__data_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_rate__adaptation.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_bearer_cap_data"); +single_value->field_sig__access.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_bearer_cap_data"); +single_value->field_async.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_bearer_cap_data"); +single_value->field_nr__stop__bits.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_bearer_cap_data"); +single_value->field_nr__data__bits.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_bearer_cap_data"); +single_value->field_user__rate.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_bearer_cap_data"); +single_value->field_parity.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_bearer_cap_data"); +single_value->field_interm__rate.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_bearer_cap_data"); +single_value->field_transp.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_bearer_cap_data"); +single_value->field_modem__type.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_bearer_cap_data"); +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 : "@MNCC_Types.MNCC_bearer_cap_data"); +} + +boolean MNCC__bearer__cap__data_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean MNCC__bearer__cap__data_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int l_idx=0; l_idx& par_data) + : field_transfer(par_transfer), + field_mode(par_mode), + field_coding(par_coding), + field_radio(par_radio), + field_speech__ctm(par_speech__ctm), + field_speech__ver(par_speech__ver), + field_data(par_data) +{ +} + +MNCC__bearer__cap::MNCC__bearer__cap(const MNCC__bearer__cap& other_value) +{ +if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @MNCC_Types.MNCC_bearer_cap."); +if (other_value.transfer().is_bound()) field_transfer = other_value.transfer(); +else field_transfer.clean_up(); +if (other_value.mode().is_bound()) field_mode = other_value.mode(); +else field_mode.clean_up(); +if (other_value.coding().is_bound()) field_coding = other_value.coding(); +else field_coding.clean_up(); +if (other_value.radio().is_bound()) field_radio = other_value.radio(); +else field_radio.clean_up(); +if (other_value.speech__ctm().is_bound()) field_speech__ctm = other_value.speech__ctm(); +else field_speech__ctm.clean_up(); +if (other_value.speech__ver().is_bound()) field_speech__ver = other_value.speech__ver(); +else field_speech__ver.clean_up(); +if (other_value.data().is_bound()) field_data = other_value.data(); +else field_data.clean_up(); +} + +void MNCC__bearer__cap::clean_up() +{ +field_transfer.clean_up(); +field_mode.clean_up(); +field_coding.clean_up(); +field_radio.clean_up(); +field_speech__ctm.clean_up(); +field_speech__ver.clean_up(); +field_data.clean_up(); +} + +MNCC__bearer__cap& MNCC__bearer__cap::operator=(const MNCC__bearer__cap& other_value) +{ +if (this != &other_value) { + if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @MNCC_Types.MNCC_bearer_cap."); + if (other_value.transfer().is_bound()) field_transfer = other_value.transfer(); + else field_transfer.clean_up(); + if (other_value.mode().is_bound()) field_mode = other_value.mode(); + else field_mode.clean_up(); + if (other_value.coding().is_bound()) field_coding = other_value.coding(); + else field_coding.clean_up(); + if (other_value.radio().is_bound()) field_radio = other_value.radio(); + else field_radio.clean_up(); + if (other_value.speech__ctm().is_bound()) field_speech__ctm = other_value.speech__ctm(); + else field_speech__ctm.clean_up(); + if (other_value.speech__ver().is_bound()) field_speech__ver = other_value.speech__ver(); + else field_speech__ver.clean_up(); + if (other_value.data().is_bound()) field_data = other_value.data(); + else field_data.clean_up(); +} +return *this; +} + +boolean MNCC__bearer__cap::operator==(const MNCC__bearer__cap& other_value) const +{ +return field_transfer==other_value.field_transfer + && field_mode==other_value.field_mode + && field_coding==other_value.field_coding + && field_radio==other_value.field_radio + && field_speech__ctm==other_value.field_speech__ctm + && field_speech__ver==other_value.field_speech__ver + && field_data==other_value.field_data; +} + +boolean MNCC__bearer__cap::is_bound() const +{ +if(field_transfer.is_bound()) return TRUE; +if(field_mode.is_bound()) return TRUE; +if(field_coding.is_bound()) return TRUE; +if(field_radio.is_bound()) return TRUE; +if(field_speech__ctm.is_bound()) return TRUE; +if(field_speech__ver.is_bound()) return TRUE; +if(OPTIONAL_OMIT == field_data.get_selection() || field_data.is_bound()) return TRUE; +return FALSE; +} +boolean MNCC__bearer__cap::is_value() const +{ +if(!field_transfer.is_value()) return FALSE; +if(!field_mode.is_value()) return FALSE; +if(!field_coding.is_value()) return FALSE; +if(!field_radio.is_value()) return FALSE; +if(!field_speech__ctm.is_value()) return FALSE; +if(!field_speech__ver.is_value()) return FALSE; +if(OPTIONAL_OMIT != field_data.get_selection() && !field_data.is_value()) return FALSE; +return TRUE; +} +int MNCC__bearer__cap::size_of() const +{ + int ret_val = 6; + if (field_data.ispresent()) ret_val++; + return ret_val; +} + +void MNCC__bearer__cap::log() const +{ +if (!is_bound()) { +TTCN_Logger::log_event_unbound(); +return; +} +TTCN_Logger::log_event_str("{ transfer := "); +field_transfer.log(); +TTCN_Logger::log_event_str(", mode := "); +field_mode.log(); +TTCN_Logger::log_event_str(", coding := "); +field_coding.log(); +TTCN_Logger::log_event_str(", radio := "); +field_radio.log(); +TTCN_Logger::log_event_str(", speech_ctm := "); +field_speech__ctm.log(); +TTCN_Logger::log_event_str(", speech_ver := "); +field_speech__ver.log(); +TTCN_Logger::log_event_str(", data := "); +field_data.log(); +TTCN_Logger::log_event_str(" }"); +} + +void MNCC__bearer__cap::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) transfer().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) mode().set_param(*param.get_elem(1)); + if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) coding().set_param(*param.get_elem(2)); + if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) radio().set_param(*param.get_elem(3)); + if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) speech__ctm().set_param(*param.get_elem(4)); + if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) speech__ver().set_param(*param.get_elem(5)); + if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) data().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(), "transfer")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + transfer().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "mode")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + mode().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "coding")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + coding().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "radio")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + radio().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "speech_ctm")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + speech__ctm().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "speech_ver")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + speech__ver().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "data")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + data().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @MNCC_Types.MNCC_bearer_cap: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record value", "@MNCC_Types.MNCC_bearer_cap"); + } +} + +void MNCC__bearer__cap::set_implicit_omit() +{ +if (transfer().is_bound()) transfer().set_implicit_omit(); +if (mode().is_bound()) mode().set_implicit_omit(); +if (coding().is_bound()) coding().set_implicit_omit(); +if (radio().is_bound()) radio().set_implicit_omit(); +if (speech__ctm().is_bound()) speech__ctm().set_implicit_omit(); +if (speech__ver().is_bound()) speech__ver().set_implicit_omit(); +if (!data().is_bound()) data() = OMIT_VALUE; +else data().set_implicit_omit(); +} + +void MNCC__bearer__cap::encode_text(Text_Buf& text_buf) const +{ +field_transfer.encode_text(text_buf); +field_mode.encode_text(text_buf); +field_coding.encode_text(text_buf); +field_radio.encode_text(text_buf); +field_speech__ctm.encode_text(text_buf); +field_speech__ver.encode_text(text_buf); +field_data.encode_text(text_buf); +} + +void MNCC__bearer__cap::decode_text(Text_Buf& text_buf) +{ +field_transfer.decode_text(text_buf); +field_mode.decode_text(text_buf); +field_coding.decode_text(text_buf); +field_radio.decode_text(text_buf); +field_speech__ctm.decode_text(text_buf); +field_speech__ver.decode_text(text_buf); +field_data.decode_text(text_buf); +} + +void MNCC__bearer__cap::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void MNCC__bearer__cap::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int MNCC__bearer__cap::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) +{ (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; + decoded_field_length = field_transfer.RAW_decode(MNCC__bearer__cap_transfer_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_mode.RAW_decode(MNCC__bearer__cap_mode_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_coding.RAW_decode(MNCC__bearer__cap_coding_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_radio.RAW_decode(MNCC__bearer__cap_radio_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_speech__ctm.RAW_decode(MNCC__bearer__cap_speech__ctm_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_speech__ver.RAW_decode(MNCC__bearer__cap_speech__ver_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + if (limit > 0){ + size_t fl_start_pos = p_buf.get_pos_bit(); + decoded_field_length = field_data().RAW_decode(MNCC__bearer__cap_data_descr_, p_buf, limit, local_top_order, TRUE); + if (decoded_field_length < 1) { + field_data = OMIT_VALUE; + p_buf.set_pos_bit(fl_start_pos); + } else { + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + } + } + else field_data=OMIT_VALUE; + p_buf.set_pos_bit(last_decoded_pos); + return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); +} + +int MNCC__bearer__cap::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, MNCC__bearer__cap_transfer_descr_.raw); + myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, MNCC__bearer__cap_mode_descr_.raw); + myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, MNCC__bearer__cap_coding_descr_.raw); + myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, MNCC__bearer__cap_radio_descr_.raw); + myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, MNCC__bearer__cap_speech__ctm_descr_.raw); + myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, MNCC__bearer__cap_speech__ver_descr_.raw); + if (field_data.ispresent()) { + myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, MNCC__bearer__cap_data_descr_.raw); + } + else myleaf.body.node.nodes[6] = NULL; + encoded_length += field_transfer.RAW_encode(MNCC__bearer__cap_transfer_descr_, *myleaf.body.node.nodes[0]); + encoded_length += field_mode.RAW_encode(MNCC__bearer__cap_mode_descr_, *myleaf.body.node.nodes[1]); + encoded_length += field_coding.RAW_encode(MNCC__bearer__cap_coding_descr_, *myleaf.body.node.nodes[2]); + encoded_length += field_radio.RAW_encode(MNCC__bearer__cap_radio_descr_, *myleaf.body.node.nodes[3]); + encoded_length += field_speech__ctm.RAW_encode(MNCC__bearer__cap_speech__ctm_descr_, *myleaf.body.node.nodes[4]); + encoded_length += field_speech__ver.RAW_encode(MNCC__bearer__cap_speech__ver_descr_, *myleaf.body.node.nodes[5]); + if (field_data.ispresent()) { + encoded_length += field_data().RAW_encode(MNCC__bearer__cap_data_descr_, *myleaf.body.node.nodes[6]); + } + return myleaf.length = encoded_length; +} + +struct MNCC__bearer__cap_template::single_value_struct { +INTEGER_template field_transfer; +INTEGER_template field_mode; +INTEGER_template field_coding; +INTEGER_template field_radio; +INTEGER_template field_speech__ctm; +MNCC__speech__vers_template field_speech__ver; +MNCC__bearer__cap__data_template field_data; +}; + +void MNCC__bearer__cap_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_transfer = ANY_VALUE; +single_value->field_mode = ANY_VALUE; +single_value->field_coding = ANY_VALUE; +single_value->field_radio = ANY_VALUE; +single_value->field_speech__ctm = ANY_VALUE; +single_value->field_speech__ver = ANY_VALUE; +single_value->field_data = ANY_OR_OMIT; +} +} +} + +void MNCC__bearer__cap_template::copy_value(const MNCC__bearer__cap& other_value) +{ +single_value = new single_value_struct; +if (other_value.transfer().is_bound()) { + single_value->field_transfer = other_value.transfer(); +} else { + single_value->field_transfer.clean_up(); +} +if (other_value.mode().is_bound()) { + single_value->field_mode = other_value.mode(); +} else { + single_value->field_mode.clean_up(); +} +if (other_value.coding().is_bound()) { + single_value->field_coding = other_value.coding(); +} else { + single_value->field_coding.clean_up(); +} +if (other_value.radio().is_bound()) { + single_value->field_radio = other_value.radio(); +} else { + single_value->field_radio.clean_up(); +} +if (other_value.speech__ctm().is_bound()) { + single_value->field_speech__ctm = other_value.speech__ctm(); +} else { + single_value->field_speech__ctm.clean_up(); +} +if (other_value.speech__ver().is_bound()) { + single_value->field_speech__ver = other_value.speech__ver(); +} else { + single_value->field_speech__ver.clean_up(); +} +if (other_value.data().is_bound()) { + if (other_value.data().ispresent()) single_value->field_data = other_value.data()(); + else single_value->field_data = OMIT_VALUE; +} else { + single_value->field_data.clean_up(); +} +set_selection(SPECIFIC_VALUE); +} + +void MNCC__bearer__cap_template::copy_template(const MNCC__bearer__cap_template& other_value) +{ +switch (other_value.template_selection) { +case SPECIFIC_VALUE: +single_value = new single_value_struct; +if (UNINITIALIZED_TEMPLATE != other_value.transfer().get_selection()) { +single_value->field_transfer = other_value.transfer(); +} else { +single_value->field_transfer.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.mode().get_selection()) { +single_value->field_mode = other_value.mode(); +} else { +single_value->field_mode.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.coding().get_selection()) { +single_value->field_coding = other_value.coding(); +} else { +single_value->field_coding.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.radio().get_selection()) { +single_value->field_radio = other_value.radio(); +} else { +single_value->field_radio.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.speech__ctm().get_selection()) { +single_value->field_speech__ctm = other_value.speech__ctm(); +} else { +single_value->field_speech__ctm.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.speech__ver().get_selection()) { +single_value->field_speech__ver = other_value.speech__ver(); +} else { +single_value->field_speech__ver.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.data().get_selection()) { +single_value->field_data = other_value.data(); +} else { +single_value->field_data.clean_up(); +} +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new MNCC__bearer__cap_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of type @MNCC_Types.MNCC_bearer_cap."); +break; +} +set_selection(other_value); +} + +MNCC__bearer__cap_template::MNCC__bearer__cap_template() +{ +} + +MNCC__bearer__cap_template::MNCC__bearer__cap_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +MNCC__bearer__cap_template::MNCC__bearer__cap_template(const MNCC__bearer__cap& other_value) +{ +copy_value(other_value); +} + +MNCC__bearer__cap_template::MNCC__bearer__cap_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const MNCC__bearer__cap&)other_value); +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of type @MNCC_Types.MNCC_bearer_cap from an unbound optional field."); +} +} + +MNCC__bearer__cap_template::MNCC__bearer__cap_template(const MNCC__bearer__cap_template& other_value) +: Base_Template() +{ +copy_template(other_value); +} + +MNCC__bearer__cap_template::~MNCC__bearer__cap_template() +{ +clean_up(); +} + +MNCC__bearer__cap_template& MNCC__bearer__cap_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +MNCC__bearer__cap_template& MNCC__bearer__cap_template::operator=(const MNCC__bearer__cap& other_value) +{ +clean_up(); +copy_value(other_value); +return *this; +} + +MNCC__bearer__cap_template& MNCC__bearer__cap_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const MNCC__bearer__cap&)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 @MNCC_Types.MNCC_bearer_cap."); +} +return *this; +} + +MNCC__bearer__cap_template& MNCC__bearer__cap_template::operator=(const MNCC__bearer__cap_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean MNCC__bearer__cap_template::match(const MNCC__bearer__cap& 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.transfer().is_bound()) return FALSE; +if(!single_value->field_transfer.match(other_value.transfer(), legacy))return FALSE; +if(!other_value.mode().is_bound()) return FALSE; +if(!single_value->field_mode.match(other_value.mode(), legacy))return FALSE; +if(!other_value.coding().is_bound()) return FALSE; +if(!single_value->field_coding.match(other_value.coding(), legacy))return FALSE; +if(!other_value.radio().is_bound()) return FALSE; +if(!single_value->field_radio.match(other_value.radio(), legacy))return FALSE; +if(!other_value.speech__ctm().is_bound()) return FALSE; +if(!single_value->field_speech__ctm.match(other_value.speech__ctm(), legacy))return FALSE; +if(!other_value.speech__ver().is_bound()) return FALSE; +if(!single_value->field_speech__ver.match(other_value.speech__ver(), legacy))return FALSE; +if(!other_value.data().is_bound()) return FALSE; +if((other_value.data().ispresent() ? !single_value->field_data.match((const MNCC__bearer__cap__data&)other_value.data(), legacy) : !single_value->field_data.match_omit(legacy)))return FALSE; +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of type @MNCC_Types.MNCC_bearer_cap."); +} +return FALSE; +} + +boolean MNCC__bearer__cap_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +if (template_selection != SPECIFIC_VALUE) return TRUE; +if (single_value->field_transfer.is_bound()) return TRUE; +if (single_value->field_mode.is_bound()) return TRUE; +if (single_value->field_coding.is_bound()) return TRUE; +if (single_value->field_radio.is_bound()) return TRUE; +if (single_value->field_speech__ctm.is_bound()) return TRUE; +if (single_value->field_speech__ver.is_bound()) return TRUE; +if (single_value->field_data.is_omit() || single_value->field_data.is_bound()) return TRUE; +return FALSE; +} + +boolean MNCC__bearer__cap_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +if (!single_value->field_transfer.is_value()) return FALSE; +if (!single_value->field_mode.is_value()) return FALSE; +if (!single_value->field_coding.is_value()) return FALSE; +if (!single_value->field_radio.is_value()) return FALSE; +if (!single_value->field_speech__ctm.is_value()) return FALSE; +if (!single_value->field_speech__ver.is_value()) return FALSE; +if (!single_value->field_data.is_omit() && !single_value->field_data.is_value()) return FALSE; +return TRUE; +} + +void MNCC__bearer__cap_template::clean_up() +{ +switch (template_selection) { +case SPECIFIC_VALUE: +delete single_value; +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +delete [] value_list.list_value; +default: +break; +} +template_selection = UNINITIALIZED_TEMPLATE; +} + +MNCC__bearer__cap MNCC__bearer__cap_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 @MNCC_Types.MNCC_bearer_cap."); +MNCC__bearer__cap ret_val; +if (single_value->field_transfer.is_bound()) { +ret_val.transfer() = single_value->field_transfer.valueof(); +} +if (single_value->field_mode.is_bound()) { +ret_val.mode() = single_value->field_mode.valueof(); +} +if (single_value->field_coding.is_bound()) { +ret_val.coding() = single_value->field_coding.valueof(); +} +if (single_value->field_radio.is_bound()) { +ret_val.radio() = single_value->field_radio.valueof(); +} +if (single_value->field_speech__ctm.is_bound()) { +ret_val.speech__ctm() = single_value->field_speech__ctm.valueof(); +} +if (single_value->field_speech__ver.is_bound()) { +ret_val.speech__ver() = single_value->field_speech__ver.valueof(); +} +if (single_value->field_data.is_omit()) ret_val.data() = OMIT_VALUE; +else if (single_value->field_data.is_bound()) { +ret_val.data() = single_value->field_data.valueof(); +} +return ret_val; +} + +void MNCC__bearer__cap_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) +TTCN_error("Setting an invalid list for a template of type @MNCC_Types.MNCC_bearer_cap."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new MNCC__bearer__cap_template[list_length]; +} + +MNCC__bearer__cap_template& MNCC__bearer__cap_template::list_item(unsigned int list_index) const +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) +TTCN_error("Accessing a list element of a non-list template of type @MNCC_Types.MNCC_bearer_cap."); +if (list_index >= value_list.n_values) +TTCN_error("Index overflow in a value list template of type @MNCC_Types.MNCC_bearer_cap."); +return value_list.list_value[list_index]; +} + +INTEGER_template& MNCC__bearer__cap_template::transfer() +{ +set_specific(); +return single_value->field_transfer; +} + +const INTEGER_template& MNCC__bearer__cap_template::transfer() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field transfer of a non-specific template of type @MNCC_Types.MNCC_bearer_cap."); +return single_value->field_transfer; +} + +INTEGER_template& MNCC__bearer__cap_template::mode() +{ +set_specific(); +return single_value->field_mode; +} + +const INTEGER_template& MNCC__bearer__cap_template::mode() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field mode of a non-specific template of type @MNCC_Types.MNCC_bearer_cap."); +return single_value->field_mode; +} + +INTEGER_template& MNCC__bearer__cap_template::coding() +{ +set_specific(); +return single_value->field_coding; +} + +const INTEGER_template& MNCC__bearer__cap_template::coding() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field coding of a non-specific template of type @MNCC_Types.MNCC_bearer_cap."); +return single_value->field_coding; +} + +INTEGER_template& MNCC__bearer__cap_template::radio() +{ +set_specific(); +return single_value->field_radio; +} + +const INTEGER_template& MNCC__bearer__cap_template::radio() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field radio of a non-specific template of type @MNCC_Types.MNCC_bearer_cap."); +return single_value->field_radio; +} + +INTEGER_template& MNCC__bearer__cap_template::speech__ctm() +{ +set_specific(); +return single_value->field_speech__ctm; +} + +const INTEGER_template& MNCC__bearer__cap_template::speech__ctm() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field speech_ctm of a non-specific template of type @MNCC_Types.MNCC_bearer_cap."); +return single_value->field_speech__ctm; +} + +MNCC__speech__vers_template& MNCC__bearer__cap_template::speech__ver() +{ +set_specific(); +return single_value->field_speech__ver; +} + +const MNCC__speech__vers_template& MNCC__bearer__cap_template::speech__ver() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field speech_ver of a non-specific template of type @MNCC_Types.MNCC_bearer_cap."); +return single_value->field_speech__ver; +} + +MNCC__bearer__cap__data_template& MNCC__bearer__cap_template::data() +{ +set_specific(); +return single_value->field_data; +} + +const MNCC__bearer__cap__data_template& MNCC__bearer__cap_template::data() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field data of a non-specific template of type @MNCC_Types.MNCC_bearer_cap."); +return single_value->field_data; +} + +int MNCC__bearer__cap_template::size_of() const +{ + if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_bearer_cap which has an ifpresent attribute."); + switch (template_selection) + { + case SPECIFIC_VALUE: + { int ret_val = 6; + if (single_value->field_data.is_present()) ret_val++; + return ret_val; + } + case VALUE_LIST: + { + if (value_list.n_values<1) + TTCN_error("Internal error: Performing sizeof() operation on a template of type @MNCC_Types.MNCC_bearer_cap 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 @MNCC_Types.MNCC_bearer_cap containing a value list with different sizes."); + } + return item_size; + } + case OMIT_VALUE: + TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_bearer_cap containing omit value."); + case ANY_VALUE: + case ANY_OR_OMIT: + TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_bearer_cap containing */? value."); + case COMPLEMENTED_LIST: + TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_bearer_cap containing complemented list."); + default: + TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @MNCC_Types.MNCC_bearer_cap."); + } + return 0; +} + +void MNCC__bearer__cap_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_str("{ transfer := "); +single_value->field_transfer.log(); +TTCN_Logger::log_event_str(", mode := "); +single_value->field_mode.log(); +TTCN_Logger::log_event_str(", coding := "); +single_value->field_coding.log(); +TTCN_Logger::log_event_str(", radio := "); +single_value->field_radio.log(); +TTCN_Logger::log_event_str(", speech_ctm := "); +single_value->field_speech__ctm.log(); +TTCN_Logger::log_event_str(", speech_ver := "); +single_value->field_speech__ver.log(); +TTCN_Logger::log_event_str(", data := "); +single_value->field_data.log(); +TTCN_Logger::log_event_str(" }"); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { +if (list_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[list_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void MNCC__bearer__cap_template::log_match(const MNCC__bearer__cap& 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_transfer.match(match_value.transfer(), legacy)){ +TTCN_Logger::log_logmatch_info(".transfer"); +single_value->field_transfer.log_match(match_value.transfer(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_mode.match(match_value.mode(), legacy)){ +TTCN_Logger::log_logmatch_info(".mode"); +single_value->field_mode.log_match(match_value.mode(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_coding.match(match_value.coding(), legacy)){ +TTCN_Logger::log_logmatch_info(".coding"); +single_value->field_coding.log_match(match_value.coding(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_radio.match(match_value.radio(), legacy)){ +TTCN_Logger::log_logmatch_info(".radio"); +single_value->field_radio.log_match(match_value.radio(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_speech__ctm.match(match_value.speech__ctm(), legacy)){ +TTCN_Logger::log_logmatch_info(".speech_ctm"); +single_value->field_speech__ctm.log_match(match_value.speech__ctm(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_speech__ver.match(match_value.speech__ver(), legacy)){ +TTCN_Logger::log_logmatch_info(".speech_ver"); +single_value->field_speech__ver.log_match(match_value.speech__ver(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if (match_value.data().ispresent()){ +if(!single_value->field_data.match(match_value.data(), legacy)){ +TTCN_Logger::log_logmatch_info(".data"); +single_value->field_data.log_match(match_value.data(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +} else { +if (!single_value->field_data.match_omit(legacy)){ + TTCN_Logger::log_logmatch_info(".data := omit with "); +TTCN_Logger::print_logmatch_buffer(); +single_value->field_data.log(); +TTCN_Logger::log_event_str(" unmatched"); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +} +}else { +TTCN_Logger::print_logmatch_buffer(); +match_value.log(); +TTCN_Logger::log_event_str(" with "); +log(); +TTCN_Logger::log_event_str(" unmatched"); +} +} +return; +} +if (template_selection == SPECIFIC_VALUE) { +TTCN_Logger::log_event_str("{ transfer := "); +single_value->field_transfer.log_match(match_value.transfer(), legacy); +TTCN_Logger::log_event_str(", mode := "); +single_value->field_mode.log_match(match_value.mode(), legacy); +TTCN_Logger::log_event_str(", coding := "); +single_value->field_coding.log_match(match_value.coding(), legacy); +TTCN_Logger::log_event_str(", radio := "); +single_value->field_radio.log_match(match_value.radio(), legacy); +TTCN_Logger::log_event_str(", speech_ctm := "); +single_value->field_speech__ctm.log_match(match_value.speech__ctm(), legacy); +TTCN_Logger::log_event_str(", speech_ver := "); +single_value->field_speech__ver.log_match(match_value.speech__ver(), legacy); +TTCN_Logger::log_event_str(", data := "); +if (match_value.data().ispresent()) single_value->field_data.log_match(match_value.data(), legacy); +else { +TTCN_Logger::log_event_str("omit with "); +single_value->field_data.log(); +if (single_value->field_data.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); +else TTCN_Logger::log_event_str(" unmatched"); +} +TTCN_Logger::log_event_str(" }"); +} else { +match_value.log(); +TTCN_Logger::log_event_str(" with "); +log(); +if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); +else TTCN_Logger::log_event_str(" unmatched"); +} +} + +void MNCC__bearer__cap_template::encode_text(Text_Buf& text_buf) const +{ +encode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value->field_transfer.encode_text(text_buf); +single_value->field_mode.encode_text(text_buf); +single_value->field_coding.encode_text(text_buf); +single_value->field_radio.encode_text(text_buf); +single_value->field_speech__ctm.encode_text(text_buf); +single_value->field_speech__ver.encode_text(text_buf); +single_value->field_data.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 @MNCC_Types.MNCC_bearer_cap."); +} +} + +void MNCC__bearer__cap_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_transfer.decode_text(text_buf); +single_value->field_mode.decode_text(text_buf); +single_value->field_coding.decode_text(text_buf); +single_value->field_radio.decode_text(text_buf); +single_value->field_speech__ctm.decode_text(text_buf); +single_value->field_speech__ver.decode_text(text_buf); +single_value->field_data.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 MNCC__bearer__cap_template[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 @MNCC_Types.MNCC_bearer_cap."); +} +} + +void MNCC__bearer__cap_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: { + MNCC__bearer__cap_template new_temp; + new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); + for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) transfer().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) mode().set_param(*param.get_elem(1)); + if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) coding().set_param(*param.get_elem(2)); + if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) radio().set_param(*param.get_elem(3)); + if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) speech__ctm().set_param(*param.get_elem(4)); + if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) speech__ver().set_param(*param.get_elem(5)); + if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) data().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(), "transfer")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + transfer().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "mode")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + mode().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "coding")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + coding().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "radio")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + radio().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "speech_ctm")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + speech__ctm().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "speech_ver")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + speech__ver().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "data")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + data().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @MNCC_Types.MNCC_bearer_cap: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record template", "@MNCC_Types.MNCC_bearer_cap"); + } + is_ifpresent = param.get_ifpresent(); +} + +void MNCC__bearer__cap_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_transfer.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_bearer_cap"); +single_value->field_mode.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_bearer_cap"); +single_value->field_coding.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_bearer_cap"); +single_value->field_radio.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_bearer_cap"); +single_value->field_speech__ctm.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_bearer_cap"); +single_value->field_speech__ver.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_bearer_cap"); +single_value->field_data.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_bearer_cap"); +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 : "@MNCC_Types.MNCC_bearer_cap"); +} + +boolean MNCC__bearer__cap_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean MNCC__bearer__cap_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int l_idx=0; l_idx(enum_type other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_type_of_number."); +return enum_value > other_value; +} + +boolean GSM48__type__of__number::operator>(const GSM48__type__of__number& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_type_of_number."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_type_of_number."); +return enum_value > other_value.enum_value; +} + +const char *GSM48__type__of__number::enum_to_str(enum_type enum_par) +{ +switch (enum_par) { +case GSM48__TON__UNKNOWN: return "GSM48_TON_UNKNOWN"; +case GSM48__TON__INTERNATIONAL: return "GSM48_TON_INTERNATIONAL"; +case GSM48__TON__NATIONAL: return "GSM48_TON_NATIONAL"; +case GSM48__TON__NETWORK__SPECIFIC: return "GSM48_TON_NETWORK_SPECIFIC"; +case GSM48__TON__SHORT__CODE: return "GSM48_TON_SHORT_CODE"; +default: return ""; +} +} + +GSM48__type__of__number::enum_type GSM48__type__of__number::str_to_enum(const char *str_par) +{ +if (!strcmp(str_par, "GSM48_TON_UNKNOWN")) return GSM48__TON__UNKNOWN; +else if (!strcmp(str_par, "GSM48_TON_INTERNATIONAL")) return GSM48__TON__INTERNATIONAL; +else if (!strcmp(str_par, "GSM48_TON_NATIONAL")) return GSM48__TON__NATIONAL; +else if (!strcmp(str_par, "GSM48_TON_NETWORK_SPECIFIC")) return GSM48__TON__NETWORK__SPECIFIC; +else if (!strcmp(str_par, "GSM48_TON_SHORT_CODE")) return GSM48__TON__SHORT__CODE; +else return UNKNOWN_VALUE; +} + +boolean GSM48__type__of__number::is_valid_enum(int int_par) +{ +switch (int_par) { +case 0: +case 1: +case 2: +case 3: +case 4: +return TRUE; +default: +return FALSE; +} +} + +int GSM48__type__of__number::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 @MNCC_Types.GSM48_type_of_number.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); +return enum_par; +} + +int GSM48__type__of__number::enum2int(const GSM48__type__of__number& 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 @MNCC_Types.GSM48_type_of_number.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); +return enum_par.enum_value; +} + +void GSM48__type__of__number::int2enum(int int_val) +{ +if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @MNCC_Types.GSM48_type_of_number.", int_val); +enum_value = (enum_type)int_val; +} + +GSM48__type__of__number::operator GSM48__type__of__number::enum_type() const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @MNCC_Types.GSM48_type_of_number."); +return enum_value; +} + +void GSM48__type__of__number::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 GSM48__type__of__number::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", "@MNCC_Types.GSM48_type_of_number"); + enum_value = str_to_enum(param.get_enumerated()); + if (!is_valid_enum(enum_value)) { + param.error("Invalid enumerated value for type @MNCC_Types.GSM48_type_of_number."); + } +} + +void GSM48__type__of__number::encode_text(Text_Buf& text_buf) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @MNCC_Types.GSM48_type_of_number."); +text_buf.push_int(enum_value); +} + +void GSM48__type__of__number::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 @MNCC_Types.GSM48_type_of_number.", enum_value); +} + +void GSM48__type__of__number::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void GSM48__type__of__number::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int GSM48__type__of__number::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) +{ + 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 GSM48__type__of__number::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 GSM48__type__of__number_template::copy_template(const GSM48__type__of__number_template& other_value) +{ +set_selection(other_value); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = other_value.single_value; +break; +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new GSM48__type__of__number_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of enumerated type @MNCC_Types.GSM48_type_of_number."); +} +} + +GSM48__type__of__number_template::GSM48__type__of__number_template() +{ +} + +GSM48__type__of__number_template::GSM48__type__of__number_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +GSM48__type__of__number_template::GSM48__type__of__number_template(int other_value) + : Base_Template(SPECIFIC_VALUE) +{ +if (!GSM48__type__of__number::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @MNCC_Types.GSM48_type_of_number with unknown numeric value %d.", other_value); +single_value = (GSM48__type__of__number::enum_type)other_value; +} + +GSM48__type__of__number_template::GSM48__type__of__number_template(GSM48__type__of__number::enum_type other_value) + : Base_Template(SPECIFIC_VALUE) +{ +single_value = other_value; +} + +GSM48__type__of__number_template::GSM48__type__of__number_template(const GSM48__type__of__number& other_value) + : Base_Template(SPECIFIC_VALUE) +{ +if (other_value.enum_value == GSM48__type__of__number::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @MNCC_Types.GSM48_type_of_number."); +single_value = other_value.enum_value; +} + +GSM48__type__of__number_template::GSM48__type__of__number_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__type__of__number::enum_type)(const GSM48__type__of__number&)other_value; +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of enumerated type @MNCC_Types.GSM48_type_of_number from an unbound optional field."); +} +} + +GSM48__type__of__number_template::GSM48__type__of__number_template(const GSM48__type__of__number_template& other_value) + : Base_Template() +{ +copy_template(other_value); +} + +GSM48__type__of__number_template::~GSM48__type__of__number_template() +{ +clean_up(); +} + +boolean GSM48__type__of__number_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +return TRUE; +} + +boolean GSM48__type__of__number_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +return single_value != GSM48__type__of__number::UNBOUND_VALUE; +} + +void GSM48__type__of__number_template::clean_up() +{ +if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value; +template_selection = UNINITIALIZED_TEMPLATE; +} + +GSM48__type__of__number_template& GSM48__type__of__number_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +GSM48__type__of__number_template& GSM48__type__of__number_template::operator=(int other_value) +{ +if (!GSM48__type__of__number::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @MNCC_Types.GSM48_type_of_number.", other_value); +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__type__of__number::enum_type)other_value; +return *this; +} + +GSM48__type__of__number_template& GSM48__type__of__number_template::operator=(GSM48__type__of__number::enum_type other_value) +{ +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = other_value; +return *this; +} + +GSM48__type__of__number_template& GSM48__type__of__number_template::operator=(const GSM48__type__of__number& other_value) +{ +if (other_value.enum_value == GSM48__type__of__number::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @MNCC_Types.GSM48_type_of_number to a template."); +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = other_value.enum_value; +return *this; +} + +GSM48__type__of__number_template& GSM48__type__of__number_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__type__of__number::enum_type)(const GSM48__type__of__number&)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 @MNCC_Types.GSM48_type_of_number."); +} +return *this; +} + +GSM48__type__of__number_template& GSM48__type__of__number_template::operator=(const GSM48__type__of__number_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean GSM48__type__of__number_template::match(GSM48__type__of__number::enum_type other_value, boolean) const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +return single_value == other_value; +case OMIT_VALUE: +return FALSE; +case ANY_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of enumerated type @MNCC_Types.GSM48_type_of_number."); +} +return FALSE; +} + +boolean GSM48__type__of__number_template::match(const GSM48__type__of__number& other_value, boolean) const +{ +if (other_value.enum_value == GSM48__type__of__number::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @MNCC_Types.GSM48_type_of_number with an unbound value."); +return match(other_value.enum_value); +} + +GSM48__type__of__number::enum_type GSM48__type__of__number_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 @MNCC_Types.GSM48_type_of_number."); +return single_value; +} + +void GSM48__type__of__number_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @MNCC_Types.GSM48_type_of_number."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new GSM48__type__of__number_template[list_length]; +} + +GSM48__type__of__number_template& GSM48__type__of__number_template::list_item(unsigned int list_index) +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @MNCC_Types.GSM48_type_of_number."); +if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @MNCC_Types.GSM48_type_of_number."); +return value_list.list_value[list_index]; +} + +void GSM48__type__of__number_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_enum(GSM48__type__of__number::enum_to_str(single_value), single_value); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { +if (elem_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[elem_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void GSM48__type__of__number_template::log_match(const GSM48__type__of__number& 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 GSM48__type__of__number_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 @MNCC_Types.GSM48_type_of_number."); +} +} + +void GSM48__type__of__number_template::decode_text(Text_Buf& text_buf) +{ +clean_up(); +decode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = (GSM48__type__of__number::enum_type)text_buf.pull_int().get_val(); +if (!GSM48__type__of__number::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @MNCC_Types.GSM48_type_of_number.", 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 GSM48__type__of__number_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 @MNCC_Types.GSM48_type_of_number."); +} +} + +boolean GSM48__type__of__number_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean GSM48__type__of__number_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int i=0; 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: { + GSM48__type__of__number_template new_temp; + new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, m_p->get_size()); + for (size_t p_i=0; p_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: { + GSM48__type__of__number::enum_type enum_val = GSM48__type__of__number::str_to_enum(m_p->get_enumerated()); + if (!GSM48__type__of__number::is_valid_enum(enum_val)) { + param.error("Invalid enumerated value for type @MNCC_Types.GSM48_type_of_number."); + } + *this = enum_val; + } break; + default: + param.type_error("enumerated template", "@MNCC_Types.GSM48_type_of_number"); + } + is_ifpresent = param.get_ifpresent(); +} + +void GSM48__type__of__number_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 : "@MNCC_Types.GSM48_type_of_number"); +} + +GSM48__num__plan__ind::GSM48__num__plan__ind() +{ +enum_value = UNBOUND_VALUE; +} + +GSM48__num__plan__ind::GSM48__num__plan__ind(int other_value) +{ +if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @MNCC_Types.GSM48_num_plan_ind with invalid numeric value %d.", other_value); +enum_value = (enum_type)other_value; +} + +GSM48__num__plan__ind::GSM48__num__plan__ind(enum_type other_value) +{ +enum_value = other_value; +} + +GSM48__num__plan__ind::GSM48__num__plan__ind(const GSM48__num__plan__ind& other_value) +: Base_Type() +{ +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @MNCC_Types.GSM48_num_plan_ind."); +enum_value = other_value.enum_value; +} + +GSM48__num__plan__ind& GSM48__num__plan__ind::operator=(int other_value) +{ +if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @MNCC_Types.GSM48_num_plan_ind.", other_value); +enum_value = (enum_type)other_value; +return *this; +} + +GSM48__num__plan__ind& GSM48__num__plan__ind::operator=(enum_type other_value) +{ +enum_value = other_value; +return *this; +} + +GSM48__num__plan__ind& GSM48__num__plan__ind::operator=(const GSM48__num__plan__ind& other_value) +{ +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @MNCC_Types.GSM48_num_plan_ind."); +enum_value = other_value.enum_value; +return *this; +} + +boolean GSM48__num__plan__ind::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 @MNCC_Types.GSM48_num_plan_ind."); +return enum_value == other_value; +} + +boolean GSM48__num__plan__ind::operator==(const GSM48__num__plan__ind& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_num_plan_ind."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_num_plan_ind."); +return enum_value == other_value.enum_value; +} + +boolean GSM48__num__plan__ind::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 @MNCC_Types.GSM48_num_plan_ind."); +return enum_value < other_value; +} + +boolean GSM48__num__plan__ind::operator<(const GSM48__num__plan__ind& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_num_plan_ind."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_num_plan_ind."); +return enum_value < other_value.enum_value; +} + +boolean GSM48__num__plan__ind::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 @MNCC_Types.GSM48_num_plan_ind."); +return enum_value > other_value; +} + +boolean GSM48__num__plan__ind::operator>(const GSM48__num__plan__ind& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_num_plan_ind."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_num_plan_ind."); +return enum_value > other_value.enum_value; +} + +const char *GSM48__num__plan__ind::enum_to_str(enum_type enum_par) +{ +switch (enum_par) { +case GSM48__NUMPLAN__UNKNOWN: return "GSM48_NUMPLAN_UNKNOWN"; +case GSM48__NUMPLAN__E164: return "GSM48_NUMPLAN_E164"; +case GSM48__NUMPLAN__X121: return "GSM48_NUMPLAN_X121"; +case GSM48__NUMPLAN__F69: return "GSM48_NUMPLAN_F69"; +case GSM48__NUMPLAN__NATIONAL: return "GSM48_NUMPLAN_NATIONAL"; +case GSM48__NUMPLAN__PRIVATE: return "GSM48_NUMPLAN_PRIVATE"; +case GSM48__NUMPLAN__CTS: return "GSM48_NUMPLAN_CTS"; +case GSM48__NUMPLAN__RESERVED: return "GSM48_NUMPLAN_RESERVED"; +default: return ""; +} +} + +GSM48__num__plan__ind::enum_type GSM48__num__plan__ind::str_to_enum(const char *str_par) +{ +if (!strcmp(str_par, "GSM48_NUMPLAN_UNKNOWN")) return GSM48__NUMPLAN__UNKNOWN; +else if (!strcmp(str_par, "GSM48_NUMPLAN_E164")) return GSM48__NUMPLAN__E164; +else if (!strcmp(str_par, "GSM48_NUMPLAN_X121")) return GSM48__NUMPLAN__X121; +else if (!strcmp(str_par, "GSM48_NUMPLAN_F69")) return GSM48__NUMPLAN__F69; +else if (!strcmp(str_par, "GSM48_NUMPLAN_NATIONAL")) return GSM48__NUMPLAN__NATIONAL; +else if (!strcmp(str_par, "GSM48_NUMPLAN_PRIVATE")) return GSM48__NUMPLAN__PRIVATE; +else if (!strcmp(str_par, "GSM48_NUMPLAN_CTS")) return GSM48__NUMPLAN__CTS; +else if (!strcmp(str_par, "GSM48_NUMPLAN_RESERVED")) return GSM48__NUMPLAN__RESERVED; +else return UNKNOWN_VALUE; +} + +boolean GSM48__num__plan__ind::is_valid_enum(int int_par) +{ +switch (int_par) { +case 0: +case 1: +case 3: +case 4: +case 8: +case 9: +case 11: +case 15: +return TRUE; +default: +return FALSE; +} +} + +int GSM48__num__plan__ind::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 @MNCC_Types.GSM48_num_plan_ind.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); +return enum_par; +} + +int GSM48__num__plan__ind::enum2int(const GSM48__num__plan__ind& 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 @MNCC_Types.GSM48_num_plan_ind.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); +return enum_par.enum_value; +} + +void GSM48__num__plan__ind::int2enum(int int_val) +{ +if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @MNCC_Types.GSM48_num_plan_ind.", int_val); +enum_value = (enum_type)int_val; +} + +GSM48__num__plan__ind::operator GSM48__num__plan__ind::enum_type() const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @MNCC_Types.GSM48_num_plan_ind."); +return enum_value; +} + +void GSM48__num__plan__ind::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 GSM48__num__plan__ind::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", "@MNCC_Types.GSM48_num_plan_ind"); + enum_value = str_to_enum(param.get_enumerated()); + if (!is_valid_enum(enum_value)) { + param.error("Invalid enumerated value for type @MNCC_Types.GSM48_num_plan_ind."); + } +} + +void GSM48__num__plan__ind::encode_text(Text_Buf& text_buf) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @MNCC_Types.GSM48_num_plan_ind."); +text_buf.push_int(enum_value); +} + +void GSM48__num__plan__ind::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 @MNCC_Types.GSM48_num_plan_ind.", enum_value); +} + +void GSM48__num__plan__ind::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void GSM48__num__plan__ind::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int GSM48__num__plan__ind::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) +{ + int decoded_value = 0; + int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 4, no_err); + if (decoded_length < 0) return decoded_length; + if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value; + else { + if(no_err){ + return -1; + } else { + TTCN_EncDec_ErrorContext::error + (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name); + enum_value = UNKNOWN_VALUE; + } + } + return decoded_length; +} + +int GSM48__num__plan__ind::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const +{ + return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 4); +} + +void GSM48__num__plan__ind_template::copy_template(const GSM48__num__plan__ind_template& other_value) +{ +set_selection(other_value); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = other_value.single_value; +break; +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new GSM48__num__plan__ind_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of enumerated type @MNCC_Types.GSM48_num_plan_ind."); +} +} + +GSM48__num__plan__ind_template::GSM48__num__plan__ind_template() +{ +} + +GSM48__num__plan__ind_template::GSM48__num__plan__ind_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +GSM48__num__plan__ind_template::GSM48__num__plan__ind_template(int other_value) + : Base_Template(SPECIFIC_VALUE) +{ +if (!GSM48__num__plan__ind::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @MNCC_Types.GSM48_num_plan_ind with unknown numeric value %d.", other_value); +single_value = (GSM48__num__plan__ind::enum_type)other_value; +} + +GSM48__num__plan__ind_template::GSM48__num__plan__ind_template(GSM48__num__plan__ind::enum_type other_value) + : Base_Template(SPECIFIC_VALUE) +{ +single_value = other_value; +} + +GSM48__num__plan__ind_template::GSM48__num__plan__ind_template(const GSM48__num__plan__ind& other_value) + : Base_Template(SPECIFIC_VALUE) +{ +if (other_value.enum_value == GSM48__num__plan__ind::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @MNCC_Types.GSM48_num_plan_ind."); +single_value = other_value.enum_value; +} + +GSM48__num__plan__ind_template::GSM48__num__plan__ind_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__num__plan__ind::enum_type)(const GSM48__num__plan__ind&)other_value; +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of enumerated type @MNCC_Types.GSM48_num_plan_ind from an unbound optional field."); +} +} + +GSM48__num__plan__ind_template::GSM48__num__plan__ind_template(const GSM48__num__plan__ind_template& other_value) + : Base_Template() +{ +copy_template(other_value); +} + +GSM48__num__plan__ind_template::~GSM48__num__plan__ind_template() +{ +clean_up(); +} + +boolean GSM48__num__plan__ind_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +return TRUE; +} + +boolean GSM48__num__plan__ind_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +return single_value != GSM48__num__plan__ind::UNBOUND_VALUE; +} + +void GSM48__num__plan__ind_template::clean_up() +{ +if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value; +template_selection = UNINITIALIZED_TEMPLATE; +} + +GSM48__num__plan__ind_template& GSM48__num__plan__ind_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +GSM48__num__plan__ind_template& GSM48__num__plan__ind_template::operator=(int other_value) +{ +if (!GSM48__num__plan__ind::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @MNCC_Types.GSM48_num_plan_ind.", other_value); +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__num__plan__ind::enum_type)other_value; +return *this; +} + +GSM48__num__plan__ind_template& GSM48__num__plan__ind_template::operator=(GSM48__num__plan__ind::enum_type other_value) +{ +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = other_value; +return *this; +} + +GSM48__num__plan__ind_template& GSM48__num__plan__ind_template::operator=(const GSM48__num__plan__ind& other_value) +{ +if (other_value.enum_value == GSM48__num__plan__ind::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @MNCC_Types.GSM48_num_plan_ind to a template."); +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = other_value.enum_value; +return *this; +} + +GSM48__num__plan__ind_template& GSM48__num__plan__ind_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__num__plan__ind::enum_type)(const GSM48__num__plan__ind&)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 @MNCC_Types.GSM48_num_plan_ind."); +} +return *this; +} + +GSM48__num__plan__ind_template& GSM48__num__plan__ind_template::operator=(const GSM48__num__plan__ind_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean GSM48__num__plan__ind_template::match(GSM48__num__plan__ind::enum_type other_value, boolean) const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +return single_value == other_value; +case OMIT_VALUE: +return FALSE; +case ANY_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of enumerated type @MNCC_Types.GSM48_num_plan_ind."); +} +return FALSE; +} + +boolean GSM48__num__plan__ind_template::match(const GSM48__num__plan__ind& other_value, boolean) const +{ +if (other_value.enum_value == GSM48__num__plan__ind::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @MNCC_Types.GSM48_num_plan_ind with an unbound value."); +return match(other_value.enum_value); +} + +GSM48__num__plan__ind::enum_type GSM48__num__plan__ind_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 @MNCC_Types.GSM48_num_plan_ind."); +return single_value; +} + +void GSM48__num__plan__ind_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @MNCC_Types.GSM48_num_plan_ind."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new GSM48__num__plan__ind_template[list_length]; +} + +GSM48__num__plan__ind_template& GSM48__num__plan__ind_template::list_item(unsigned int list_index) +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @MNCC_Types.GSM48_num_plan_ind."); +if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @MNCC_Types.GSM48_num_plan_ind."); +return value_list.list_value[list_index]; +} + +void GSM48__num__plan__ind_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_enum(GSM48__num__plan__ind::enum_to_str(single_value), single_value); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { +if (elem_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[elem_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void GSM48__num__plan__ind_template::log_match(const GSM48__num__plan__ind& 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 GSM48__num__plan__ind_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 @MNCC_Types.GSM48_num_plan_ind."); +} +} + +void GSM48__num__plan__ind_template::decode_text(Text_Buf& text_buf) +{ +clean_up(); +decode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = (GSM48__num__plan__ind::enum_type)text_buf.pull_int().get_val(); +if (!GSM48__num__plan__ind::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @MNCC_Types.GSM48_num_plan_ind.", 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 GSM48__num__plan__ind_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 @MNCC_Types.GSM48_num_plan_ind."); +} +} + +boolean GSM48__num__plan__ind_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean GSM48__num__plan__ind_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int i=0; 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: { + GSM48__num__plan__ind_template new_temp; + new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, m_p->get_size()); + for (size_t p_i=0; p_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: { + GSM48__num__plan__ind::enum_type enum_val = GSM48__num__plan__ind::str_to_enum(m_p->get_enumerated()); + if (!GSM48__num__plan__ind::is_valid_enum(enum_val)) { + param.error("Invalid enumerated value for type @MNCC_Types.GSM48_num_plan_ind."); + } + *this = enum_val; + } break; + default: + param.type_error("enumerated template", "@MNCC_Types.GSM48_num_plan_ind"); + } + is_ifpresent = param.get_ifpresent(); +} + +void GSM48__num__plan__ind_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 : "@MNCC_Types.GSM48_num_plan_ind"); +} + +GSM48__present__ind::GSM48__present__ind() +{ +enum_value = UNBOUND_VALUE; +} + +GSM48__present__ind::GSM48__present__ind(int other_value) +{ +if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @MNCC_Types.GSM48_present_ind with invalid numeric value %d.", other_value); +enum_value = (enum_type)other_value; +} + +GSM48__present__ind::GSM48__present__ind(enum_type other_value) +{ +enum_value = other_value; +} + +GSM48__present__ind::GSM48__present__ind(const GSM48__present__ind& other_value) +: Base_Type() +{ +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @MNCC_Types.GSM48_present_ind."); +enum_value = other_value.enum_value; +} + +GSM48__present__ind& GSM48__present__ind::operator=(int other_value) +{ +if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @MNCC_Types.GSM48_present_ind.", other_value); +enum_value = (enum_type)other_value; +return *this; +} + +GSM48__present__ind& GSM48__present__ind::operator=(enum_type other_value) +{ +enum_value = other_value; +return *this; +} + +GSM48__present__ind& GSM48__present__ind::operator=(const GSM48__present__ind& other_value) +{ +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @MNCC_Types.GSM48_present_ind."); +enum_value = other_value.enum_value; +return *this; +} + +boolean GSM48__present__ind::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 @MNCC_Types.GSM48_present_ind."); +return enum_value == other_value; +} + +boolean GSM48__present__ind::operator==(const GSM48__present__ind& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_present_ind."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_present_ind."); +return enum_value == other_value.enum_value; +} + +boolean GSM48__present__ind::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 @MNCC_Types.GSM48_present_ind."); +return enum_value < other_value; +} + +boolean GSM48__present__ind::operator<(const GSM48__present__ind& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_present_ind."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_present_ind."); +return enum_value < other_value.enum_value; +} + +boolean GSM48__present__ind::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 @MNCC_Types.GSM48_present_ind."); +return enum_value > other_value; +} + +boolean GSM48__present__ind::operator>(const GSM48__present__ind& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_present_ind."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_present_ind."); +return enum_value > other_value.enum_value; +} + +const char *GSM48__present__ind::enum_to_str(enum_type enum_par) +{ +switch (enum_par) { +case GSM48__PRES__IND__ALLOWED: return "GSM48_PRES_IND_ALLOWED"; +case GSM48__PRES__IND__RESTRICTED: return "GSM48_PRES_IND_RESTRICTED"; +case GSM48__PRES__IND__NUM__NOT__AVAIL: return "GSM48_PRES_IND_NUM_NOT_AVAIL"; +case GSM48__PRES__IND__RESERVED: return "GSM48_PRES_IND_RESERVED"; +default: return ""; +} +} + +GSM48__present__ind::enum_type GSM48__present__ind::str_to_enum(const char *str_par) +{ +if (!strcmp(str_par, "GSM48_PRES_IND_ALLOWED")) return GSM48__PRES__IND__ALLOWED; +else if (!strcmp(str_par, "GSM48_PRES_IND_RESTRICTED")) return GSM48__PRES__IND__RESTRICTED; +else if (!strcmp(str_par, "GSM48_PRES_IND_NUM_NOT_AVAIL")) return GSM48__PRES__IND__NUM__NOT__AVAIL; +else if (!strcmp(str_par, "GSM48_PRES_IND_RESERVED")) return GSM48__PRES__IND__RESERVED; +else return UNKNOWN_VALUE; +} + +boolean GSM48__present__ind::is_valid_enum(int int_par) +{ +switch (int_par) { +case 0: +case 1: +case 2: +case 3: +return TRUE; +default: +return FALSE; +} +} + +int GSM48__present__ind::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 @MNCC_Types.GSM48_present_ind.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); +return enum_par; +} + +int GSM48__present__ind::enum2int(const GSM48__present__ind& 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 @MNCC_Types.GSM48_present_ind.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); +return enum_par.enum_value; +} + +void GSM48__present__ind::int2enum(int int_val) +{ +if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @MNCC_Types.GSM48_present_ind.", int_val); +enum_value = (enum_type)int_val; +} + +GSM48__present__ind::operator GSM48__present__ind::enum_type() const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @MNCC_Types.GSM48_present_ind."); +return enum_value; +} + +void GSM48__present__ind::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 GSM48__present__ind::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", "@MNCC_Types.GSM48_present_ind"); + enum_value = str_to_enum(param.get_enumerated()); + if (!is_valid_enum(enum_value)) { + param.error("Invalid enumerated value for type @MNCC_Types.GSM48_present_ind."); + } +} + +void GSM48__present__ind::encode_text(Text_Buf& text_buf) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @MNCC_Types.GSM48_present_ind."); +text_buf.push_int(enum_value); +} + +void GSM48__present__ind::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 @MNCC_Types.GSM48_present_ind.", enum_value); +} + +void GSM48__present__ind::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void GSM48__present__ind::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int GSM48__present__ind::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) +{ + 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 GSM48__present__ind::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 GSM48__present__ind_template::copy_template(const GSM48__present__ind_template& other_value) +{ +set_selection(other_value); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = other_value.single_value; +break; +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new GSM48__present__ind_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of enumerated type @MNCC_Types.GSM48_present_ind."); +} +} + +GSM48__present__ind_template::GSM48__present__ind_template() +{ +} + +GSM48__present__ind_template::GSM48__present__ind_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +GSM48__present__ind_template::GSM48__present__ind_template(int other_value) + : Base_Template(SPECIFIC_VALUE) +{ +if (!GSM48__present__ind::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @MNCC_Types.GSM48_present_ind with unknown numeric value %d.", other_value); +single_value = (GSM48__present__ind::enum_type)other_value; +} + +GSM48__present__ind_template::GSM48__present__ind_template(GSM48__present__ind::enum_type other_value) + : Base_Template(SPECIFIC_VALUE) +{ +single_value = other_value; +} + +GSM48__present__ind_template::GSM48__present__ind_template(const GSM48__present__ind& other_value) + : Base_Template(SPECIFIC_VALUE) +{ +if (other_value.enum_value == GSM48__present__ind::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @MNCC_Types.GSM48_present_ind."); +single_value = other_value.enum_value; +} + +GSM48__present__ind_template::GSM48__present__ind_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__present__ind::enum_type)(const GSM48__present__ind&)other_value; +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of enumerated type @MNCC_Types.GSM48_present_ind from an unbound optional field."); +} +} + +GSM48__present__ind_template::GSM48__present__ind_template(const GSM48__present__ind_template& other_value) + : Base_Template() +{ +copy_template(other_value); +} + +GSM48__present__ind_template::~GSM48__present__ind_template() +{ +clean_up(); +} + +boolean GSM48__present__ind_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +return TRUE; +} + +boolean GSM48__present__ind_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +return single_value != GSM48__present__ind::UNBOUND_VALUE; +} + +void GSM48__present__ind_template::clean_up() +{ +if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value; +template_selection = UNINITIALIZED_TEMPLATE; +} + +GSM48__present__ind_template& GSM48__present__ind_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +GSM48__present__ind_template& GSM48__present__ind_template::operator=(int other_value) +{ +if (!GSM48__present__ind::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @MNCC_Types.GSM48_present_ind.", other_value); +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__present__ind::enum_type)other_value; +return *this; +} + +GSM48__present__ind_template& GSM48__present__ind_template::operator=(GSM48__present__ind::enum_type other_value) +{ +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = other_value; +return *this; +} + +GSM48__present__ind_template& GSM48__present__ind_template::operator=(const GSM48__present__ind& other_value) +{ +if (other_value.enum_value == GSM48__present__ind::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @MNCC_Types.GSM48_present_ind to a template."); +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = other_value.enum_value; +return *this; +} + +GSM48__present__ind_template& GSM48__present__ind_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__present__ind::enum_type)(const GSM48__present__ind&)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 @MNCC_Types.GSM48_present_ind."); +} +return *this; +} + +GSM48__present__ind_template& GSM48__present__ind_template::operator=(const GSM48__present__ind_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean GSM48__present__ind_template::match(GSM48__present__ind::enum_type other_value, boolean) const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +return single_value == other_value; +case OMIT_VALUE: +return FALSE; +case ANY_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of enumerated type @MNCC_Types.GSM48_present_ind."); +} +return FALSE; +} + +boolean GSM48__present__ind_template::match(const GSM48__present__ind& other_value, boolean) const +{ +if (other_value.enum_value == GSM48__present__ind::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @MNCC_Types.GSM48_present_ind with an unbound value."); +return match(other_value.enum_value); +} + +GSM48__present__ind::enum_type GSM48__present__ind_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 @MNCC_Types.GSM48_present_ind."); +return single_value; +} + +void GSM48__present__ind_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @MNCC_Types.GSM48_present_ind."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new GSM48__present__ind_template[list_length]; +} + +GSM48__present__ind_template& GSM48__present__ind_template::list_item(unsigned int list_index) +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @MNCC_Types.GSM48_present_ind."); +if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @MNCC_Types.GSM48_present_ind."); +return value_list.list_value[list_index]; +} + +void GSM48__present__ind_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_enum(GSM48__present__ind::enum_to_str(single_value), single_value); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { +if (elem_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[elem_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void GSM48__present__ind_template::log_match(const GSM48__present__ind& 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 GSM48__present__ind_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 @MNCC_Types.GSM48_present_ind."); +} +} + +void GSM48__present__ind_template::decode_text(Text_Buf& text_buf) +{ +clean_up(); +decode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = (GSM48__present__ind::enum_type)text_buf.pull_int().get_val(); +if (!GSM48__present__ind::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @MNCC_Types.GSM48_present_ind.", 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 GSM48__present__ind_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 @MNCC_Types.GSM48_present_ind."); +} +} + +boolean GSM48__present__ind_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean GSM48__present__ind_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int i=0; 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: { + GSM48__present__ind_template new_temp; + new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, m_p->get_size()); + for (size_t p_i=0; p_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: { + GSM48__present__ind::enum_type enum_val = GSM48__present__ind::str_to_enum(m_p->get_enumerated()); + if (!GSM48__present__ind::is_valid_enum(enum_val)) { + param.error("Invalid enumerated value for type @MNCC_Types.GSM48_present_ind."); + } + *this = enum_val; + } break; + default: + param.type_error("enumerated template", "@MNCC_Types.GSM48_present_ind"); + } + is_ifpresent = param.get_ifpresent(); +} + +void GSM48__present__ind_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 : "@MNCC_Types.GSM48_present_ind"); +} + +GSM48__screening__ind::GSM48__screening__ind() +{ +enum_value = UNBOUND_VALUE; +} + +GSM48__screening__ind::GSM48__screening__ind(int other_value) +{ +if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @MNCC_Types.GSM48_screening_ind with invalid numeric value %d.", other_value); +enum_value = (enum_type)other_value; +} + +GSM48__screening__ind::GSM48__screening__ind(enum_type other_value) +{ +enum_value = other_value; +} + +GSM48__screening__ind::GSM48__screening__ind(const GSM48__screening__ind& other_value) +: Base_Type() +{ +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @MNCC_Types.GSM48_screening_ind."); +enum_value = other_value.enum_value; +} + +GSM48__screening__ind& GSM48__screening__ind::operator=(int other_value) +{ +if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @MNCC_Types.GSM48_screening_ind.", other_value); +enum_value = (enum_type)other_value; +return *this; +} + +GSM48__screening__ind& GSM48__screening__ind::operator=(enum_type other_value) +{ +enum_value = other_value; +return *this; +} + +GSM48__screening__ind& GSM48__screening__ind::operator=(const GSM48__screening__ind& other_value) +{ +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @MNCC_Types.GSM48_screening_ind."); +enum_value = other_value.enum_value; +return *this; +} + +boolean GSM48__screening__ind::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 @MNCC_Types.GSM48_screening_ind."); +return enum_value == other_value; +} + +boolean GSM48__screening__ind::operator==(const GSM48__screening__ind& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_screening_ind."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_screening_ind."); +return enum_value == other_value.enum_value; +} + +boolean GSM48__screening__ind::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 @MNCC_Types.GSM48_screening_ind."); +return enum_value < other_value; +} + +boolean GSM48__screening__ind::operator<(const GSM48__screening__ind& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_screening_ind."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_screening_ind."); +return enum_value < other_value.enum_value; +} + +boolean GSM48__screening__ind::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 @MNCC_Types.GSM48_screening_ind."); +return enum_value > other_value; +} + +boolean GSM48__screening__ind::operator>(const GSM48__screening__ind& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_screening_ind."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_screening_ind."); +return enum_value > other_value.enum_value; +} + +const char *GSM48__screening__ind::enum_to_str(enum_type enum_par) +{ +switch (enum_par) { +case GSM48__SCR__IND__NOT__SCREENED: return "GSM48_SCR_IND_NOT_SCREENED"; +case GSM48__SCR__IND__VERIF__PASSED: return "GSM48_SCR_IND_VERIF_PASSED"; +case GSM48__SCR__IND__VERIF__FAILED: return "GSM48_SCR_IND_VERIF_FAILED"; +case GSM48__SCR__IND__NETW__PROVIDED: return "GSM48_SCR_IND_NETW_PROVIDED"; +default: return ""; +} +} + +GSM48__screening__ind::enum_type GSM48__screening__ind::str_to_enum(const char *str_par) +{ +if (!strcmp(str_par, "GSM48_SCR_IND_NOT_SCREENED")) return GSM48__SCR__IND__NOT__SCREENED; +else if (!strcmp(str_par, "GSM48_SCR_IND_VERIF_PASSED")) return GSM48__SCR__IND__VERIF__PASSED; +else if (!strcmp(str_par, "GSM48_SCR_IND_VERIF_FAILED")) return GSM48__SCR__IND__VERIF__FAILED; +else if (!strcmp(str_par, "GSM48_SCR_IND_NETW_PROVIDED")) return GSM48__SCR__IND__NETW__PROVIDED; +else return UNKNOWN_VALUE; +} + +boolean GSM48__screening__ind::is_valid_enum(int int_par) +{ +switch (int_par) { +case 0: +case 1: +case 2: +case 3: +return TRUE; +default: +return FALSE; +} +} + +int GSM48__screening__ind::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 @MNCC_Types.GSM48_screening_ind.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); +return enum_par; +} + +int GSM48__screening__ind::enum2int(const GSM48__screening__ind& 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 @MNCC_Types.GSM48_screening_ind.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); +return enum_par.enum_value; +} + +void GSM48__screening__ind::int2enum(int int_val) +{ +if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @MNCC_Types.GSM48_screening_ind.", int_val); +enum_value = (enum_type)int_val; +} + +GSM48__screening__ind::operator GSM48__screening__ind::enum_type() const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @MNCC_Types.GSM48_screening_ind."); +return enum_value; +} + +void GSM48__screening__ind::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 GSM48__screening__ind::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", "@MNCC_Types.GSM48_screening_ind"); + enum_value = str_to_enum(param.get_enumerated()); + if (!is_valid_enum(enum_value)) { + param.error("Invalid enumerated value for type @MNCC_Types.GSM48_screening_ind."); + } +} + +void GSM48__screening__ind::encode_text(Text_Buf& text_buf) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @MNCC_Types.GSM48_screening_ind."); +text_buf.push_int(enum_value); +} + +void GSM48__screening__ind::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 @MNCC_Types.GSM48_screening_ind.", enum_value); +} + +void GSM48__screening__ind::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void GSM48__screening__ind::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int GSM48__screening__ind::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) +{ + 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 GSM48__screening__ind::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 GSM48__screening__ind_template::copy_template(const GSM48__screening__ind_template& other_value) +{ +set_selection(other_value); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = other_value.single_value; +break; +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new GSM48__screening__ind_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of enumerated type @MNCC_Types.GSM48_screening_ind."); +} +} + +GSM48__screening__ind_template::GSM48__screening__ind_template() +{ +} + +GSM48__screening__ind_template::GSM48__screening__ind_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +GSM48__screening__ind_template::GSM48__screening__ind_template(int other_value) + : Base_Template(SPECIFIC_VALUE) +{ +if (!GSM48__screening__ind::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @MNCC_Types.GSM48_screening_ind with unknown numeric value %d.", other_value); +single_value = (GSM48__screening__ind::enum_type)other_value; +} + +GSM48__screening__ind_template::GSM48__screening__ind_template(GSM48__screening__ind::enum_type other_value) + : Base_Template(SPECIFIC_VALUE) +{ +single_value = other_value; +} + +GSM48__screening__ind_template::GSM48__screening__ind_template(const GSM48__screening__ind& other_value) + : Base_Template(SPECIFIC_VALUE) +{ +if (other_value.enum_value == GSM48__screening__ind::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @MNCC_Types.GSM48_screening_ind."); +single_value = other_value.enum_value; +} + +GSM48__screening__ind_template::GSM48__screening__ind_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__screening__ind::enum_type)(const GSM48__screening__ind&)other_value; +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of enumerated type @MNCC_Types.GSM48_screening_ind from an unbound optional field."); +} +} + +GSM48__screening__ind_template::GSM48__screening__ind_template(const GSM48__screening__ind_template& other_value) + : Base_Template() +{ +copy_template(other_value); +} + +GSM48__screening__ind_template::~GSM48__screening__ind_template() +{ +clean_up(); +} + +boolean GSM48__screening__ind_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +return TRUE; +} + +boolean GSM48__screening__ind_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +return single_value != GSM48__screening__ind::UNBOUND_VALUE; +} + +void GSM48__screening__ind_template::clean_up() +{ +if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value; +template_selection = UNINITIALIZED_TEMPLATE; +} + +GSM48__screening__ind_template& GSM48__screening__ind_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +GSM48__screening__ind_template& GSM48__screening__ind_template::operator=(int other_value) +{ +if (!GSM48__screening__ind::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @MNCC_Types.GSM48_screening_ind.", other_value); +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__screening__ind::enum_type)other_value; +return *this; +} + +GSM48__screening__ind_template& GSM48__screening__ind_template::operator=(GSM48__screening__ind::enum_type other_value) +{ +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = other_value; +return *this; +} + +GSM48__screening__ind_template& GSM48__screening__ind_template::operator=(const GSM48__screening__ind& other_value) +{ +if (other_value.enum_value == GSM48__screening__ind::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @MNCC_Types.GSM48_screening_ind to a template."); +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = other_value.enum_value; +return *this; +} + +GSM48__screening__ind_template& GSM48__screening__ind_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__screening__ind::enum_type)(const GSM48__screening__ind&)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 @MNCC_Types.GSM48_screening_ind."); +} +return *this; +} + +GSM48__screening__ind_template& GSM48__screening__ind_template::operator=(const GSM48__screening__ind_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean GSM48__screening__ind_template::match(GSM48__screening__ind::enum_type other_value, boolean) const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +return single_value == other_value; +case OMIT_VALUE: +return FALSE; +case ANY_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of enumerated type @MNCC_Types.GSM48_screening_ind."); +} +return FALSE; +} + +boolean GSM48__screening__ind_template::match(const GSM48__screening__ind& other_value, boolean) const +{ +if (other_value.enum_value == GSM48__screening__ind::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @MNCC_Types.GSM48_screening_ind with an unbound value."); +return match(other_value.enum_value); +} + +GSM48__screening__ind::enum_type GSM48__screening__ind_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 @MNCC_Types.GSM48_screening_ind."); +return single_value; +} + +void GSM48__screening__ind_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @MNCC_Types.GSM48_screening_ind."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new GSM48__screening__ind_template[list_length]; +} + +GSM48__screening__ind_template& GSM48__screening__ind_template::list_item(unsigned int list_index) +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @MNCC_Types.GSM48_screening_ind."); +if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @MNCC_Types.GSM48_screening_ind."); +return value_list.list_value[list_index]; +} + +void GSM48__screening__ind_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_enum(GSM48__screening__ind::enum_to_str(single_value), single_value); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { +if (elem_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[elem_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void GSM48__screening__ind_template::log_match(const GSM48__screening__ind& 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 GSM48__screening__ind_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 @MNCC_Types.GSM48_screening_ind."); +} +} + +void GSM48__screening__ind_template::decode_text(Text_Buf& text_buf) +{ +clean_up(); +decode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = (GSM48__screening__ind::enum_type)text_buf.pull_int().get_val(); +if (!GSM48__screening__ind::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @MNCC_Types.GSM48_screening_ind.", 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 GSM48__screening__ind_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 @MNCC_Types.GSM48_screening_ind."); +} +} + +boolean GSM48__screening__ind_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean GSM48__screening__ind_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int i=0; 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: { + GSM48__screening__ind_template new_temp; + new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, m_p->get_size()); + for (size_t p_i=0; p_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: { + GSM48__screening__ind::enum_type enum_val = GSM48__screening__ind::str_to_enum(m_p->get_enumerated()); + if (!GSM48__screening__ind::is_valid_enum(enum_val)) { + param.error("Invalid enumerated value for type @MNCC_Types.GSM48_screening_ind."); + } + *this = enum_val; + } break; + default: + param.type_error("enumerated template", "@MNCC_Types.GSM48_screening_ind"); + } + is_ifpresent = param.get_ifpresent(); +} + +void GSM48__screening__ind_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 : "@MNCC_Types.GSM48_screening_ind"); +} + +MNCC__number::MNCC__number() +{ +} + +MNCC__number::MNCC__number(const GSM48__type__of__number& par_number__type, + const GSM48__num__plan__ind& par_plan, + const GSM48__present__ind& par_presence, + const GSM48__screening__ind& par_screen, + const CHARSTRING& par_number) + : field_number__type(par_number__type), + field_plan(par_plan), + field_presence(par_presence), + field_screen(par_screen), + field_number(par_number) +{ +} + +MNCC__number::MNCC__number(const MNCC__number& other_value) +{ +if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @MNCC_Types.MNCC_number."); +if (other_value.number__type().is_bound()) field_number__type = other_value.number__type(); +else field_number__type.clean_up(); +if (other_value.plan().is_bound()) field_plan = other_value.plan(); +else field_plan.clean_up(); +if (other_value.presence().is_bound()) field_presence = other_value.presence(); +else field_presence.clean_up(); +if (other_value.screen().is_bound()) field_screen = other_value.screen(); +else field_screen.clean_up(); +if (other_value.number().is_bound()) field_number = other_value.number(); +else field_number.clean_up(); +} + +void MNCC__number::clean_up() +{ +field_number__type.clean_up(); +field_plan.clean_up(); +field_presence.clean_up(); +field_screen.clean_up(); +field_number.clean_up(); +} + +MNCC__number& MNCC__number::operator=(const MNCC__number& other_value) +{ +if (this != &other_value) { + if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @MNCC_Types.MNCC_number."); + if (other_value.number__type().is_bound()) field_number__type = other_value.number__type(); + else field_number__type.clean_up(); + if (other_value.plan().is_bound()) field_plan = other_value.plan(); + else field_plan.clean_up(); + if (other_value.presence().is_bound()) field_presence = other_value.presence(); + else field_presence.clean_up(); + if (other_value.screen().is_bound()) field_screen = other_value.screen(); + else field_screen.clean_up(); + if (other_value.number().is_bound()) field_number = other_value.number(); + else field_number.clean_up(); +} +return *this; +} + +boolean MNCC__number::operator==(const MNCC__number& other_value) const +{ +return field_number__type==other_value.field_number__type + && field_plan==other_value.field_plan + && field_presence==other_value.field_presence + && field_screen==other_value.field_screen + && field_number==other_value.field_number; +} + +boolean MNCC__number::is_bound() const +{ +if(field_number__type.is_bound()) return TRUE; +if(field_plan.is_bound()) return TRUE; +if(field_presence.is_bound()) return TRUE; +if(field_screen.is_bound()) return TRUE; +if(field_number.is_bound()) return TRUE; +return FALSE; +} +boolean MNCC__number::is_value() const +{ +if(!field_number__type.is_value()) return FALSE; +if(!field_plan.is_value()) return FALSE; +if(!field_presence.is_value()) return FALSE; +if(!field_screen.is_value()) return FALSE; +if(!field_number.is_value()) return FALSE; +return TRUE; +} +void MNCC__number::log() const +{ +if (!is_bound()) { +TTCN_Logger::log_event_unbound(); +return; +} +TTCN_Logger::log_event_str("{ number_type := "); +field_number__type.log(); +TTCN_Logger::log_event_str(", plan := "); +field_plan.log(); +TTCN_Logger::log_event_str(", presence := "); +field_presence.log(); +TTCN_Logger::log_event_str(", screen := "); +field_screen.log(); +TTCN_Logger::log_event_str(", number := "); +field_number.log(); +TTCN_Logger::log_event_str(" }"); +} + +void MNCC__number::set_param(Module_Param& param) +{ + param.basic_check(Module_Param::BC_VALUE, "record value"); + switch (param.get_type()) { + case Module_Param::MP_Value_List: + if (50 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) number__type().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) plan().set_param(*param.get_elem(1)); + if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) presence().set_param(*param.get_elem(2)); + if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) screen().set_param(*param.get_elem(3)); + if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) number().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(), "number_type")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + number__type().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "plan")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + plan().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "presence")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + presence().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "screen")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + screen().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "number")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + number().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @MNCC_Types.MNCC_number: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record value", "@MNCC_Types.MNCC_number"); + } +} + +void MNCC__number::set_implicit_omit() +{ +if (number__type().is_bound()) number__type().set_implicit_omit(); +if (plan().is_bound()) plan().set_implicit_omit(); +if (presence().is_bound()) presence().set_implicit_omit(); +if (screen().is_bound()) screen().set_implicit_omit(); +if (number().is_bound()) number().set_implicit_omit(); +} + +void MNCC__number::encode_text(Text_Buf& text_buf) const +{ +field_number__type.encode_text(text_buf); +field_plan.encode_text(text_buf); +field_presence.encode_text(text_buf); +field_screen.encode_text(text_buf); +field_number.encode_text(text_buf); +} + +void MNCC__number::decode_text(Text_Buf& text_buf) +{ +field_number__type.decode_text(text_buf); +field_plan.decode_text(text_buf); +field_presence.decode_text(text_buf); +field_screen.decode_text(text_buf); +field_number.decode_text(text_buf); +} + +void MNCC__number::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void MNCC__number::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int MNCC__number::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) +{ (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; + decoded_field_length = field_number__type.RAW_decode(MNCC__number_number__type_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_plan.RAW_decode(MNCC__number_plan_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_presence.RAW_decode(MNCC__number_presence_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_screen.RAW_decode(MNCC__number_screen_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_number.RAW_decode(MNCC__number_number_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return 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 MNCC__number::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, MNCC__number_number__type_descr_.raw); + myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, MNCC__number_plan_descr_.raw); + myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, MNCC__number_presence_descr_.raw); + myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, MNCC__number_screen_descr_.raw); + myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, MNCC__number_number_descr_.raw); + encoded_length += field_number__type.RAW_encode(MNCC__number_number__type_descr_, *myleaf.body.node.nodes[0]); + encoded_length += field_plan.RAW_encode(MNCC__number_plan_descr_, *myleaf.body.node.nodes[1]); + encoded_length += field_presence.RAW_encode(MNCC__number_presence_descr_, *myleaf.body.node.nodes[2]); + encoded_length += field_screen.RAW_encode(MNCC__number_screen_descr_, *myleaf.body.node.nodes[3]); + encoded_length += field_number.RAW_encode(MNCC__number_number_descr_, *myleaf.body.node.nodes[4]); + return myleaf.length = encoded_length; +} + +struct MNCC__number_template::single_value_struct { +GSM48__type__of__number_template field_number__type; +GSM48__num__plan__ind_template field_plan; +GSM48__present__ind_template field_presence; +GSM48__screening__ind_template field_screen; +CHARSTRING_template field_number; +}; + +void MNCC__number_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_number__type = ANY_VALUE; +single_value->field_plan = ANY_VALUE; +single_value->field_presence = ANY_VALUE; +single_value->field_screen = ANY_VALUE; +single_value->field_number = ANY_VALUE; +} +} +} + +void MNCC__number_template::copy_value(const MNCC__number& other_value) +{ +single_value = new single_value_struct; +if (other_value.number__type().is_bound()) { + single_value->field_number__type = other_value.number__type(); +} else { + single_value->field_number__type.clean_up(); +} +if (other_value.plan().is_bound()) { + single_value->field_plan = other_value.plan(); +} else { + single_value->field_plan.clean_up(); +} +if (other_value.presence().is_bound()) { + single_value->field_presence = other_value.presence(); +} else { + single_value->field_presence.clean_up(); +} +if (other_value.screen().is_bound()) { + single_value->field_screen = other_value.screen(); +} else { + single_value->field_screen.clean_up(); +} +if (other_value.number().is_bound()) { + single_value->field_number = other_value.number(); +} else { + single_value->field_number.clean_up(); +} +set_selection(SPECIFIC_VALUE); +} + +void MNCC__number_template::copy_template(const MNCC__number_template& other_value) +{ +switch (other_value.template_selection) { +case SPECIFIC_VALUE: +single_value = new single_value_struct; +if (UNINITIALIZED_TEMPLATE != other_value.number__type().get_selection()) { +single_value->field_number__type = other_value.number__type(); +} else { +single_value->field_number__type.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.plan().get_selection()) { +single_value->field_plan = other_value.plan(); +} else { +single_value->field_plan.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.presence().get_selection()) { +single_value->field_presence = other_value.presence(); +} else { +single_value->field_presence.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.screen().get_selection()) { +single_value->field_screen = other_value.screen(); +} else { +single_value->field_screen.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.number().get_selection()) { +single_value->field_number = other_value.number(); +} else { +single_value->field_number.clean_up(); +} +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new MNCC__number_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of type @MNCC_Types.MNCC_number."); +break; +} +set_selection(other_value); +} + +MNCC__number_template::MNCC__number_template() +{ +} + +MNCC__number_template::MNCC__number_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +MNCC__number_template::MNCC__number_template(const MNCC__number& other_value) +{ +copy_value(other_value); +} + +MNCC__number_template::MNCC__number_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const MNCC__number&)other_value); +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of type @MNCC_Types.MNCC_number from an unbound optional field."); +} +} + +MNCC__number_template::MNCC__number_template(const MNCC__number_template& other_value) +: Base_Template() +{ +copy_template(other_value); +} + +MNCC__number_template::~MNCC__number_template() +{ +clean_up(); +} + +MNCC__number_template& MNCC__number_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +MNCC__number_template& MNCC__number_template::operator=(const MNCC__number& other_value) +{ +clean_up(); +copy_value(other_value); +return *this; +} + +MNCC__number_template& MNCC__number_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const MNCC__number&)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 @MNCC_Types.MNCC_number."); +} +return *this; +} + +MNCC__number_template& MNCC__number_template::operator=(const MNCC__number_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean MNCC__number_template::match(const MNCC__number& 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.number__type().is_bound()) return FALSE; +if(!single_value->field_number__type.match(other_value.number__type(), legacy))return FALSE; +if(!other_value.plan().is_bound()) return FALSE; +if(!single_value->field_plan.match(other_value.plan(), legacy))return FALSE; +if(!other_value.presence().is_bound()) return FALSE; +if(!single_value->field_presence.match(other_value.presence(), legacy))return FALSE; +if(!other_value.screen().is_bound()) return FALSE; +if(!single_value->field_screen.match(other_value.screen(), legacy))return FALSE; +if(!other_value.number().is_bound()) return FALSE; +if(!single_value->field_number.match(other_value.number(), legacy))return FALSE; +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of type @MNCC_Types.MNCC_number."); +} +return FALSE; +} + +boolean MNCC__number_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +if (template_selection != SPECIFIC_VALUE) return TRUE; +if (single_value->field_number__type.is_bound()) return TRUE; +if (single_value->field_plan.is_bound()) return TRUE; +if (single_value->field_presence.is_bound()) return TRUE; +if (single_value->field_screen.is_bound()) return TRUE; +if (single_value->field_number.is_bound()) return TRUE; +return FALSE; +} + +boolean MNCC__number_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +if (!single_value->field_number__type.is_value()) return FALSE; +if (!single_value->field_plan.is_value()) return FALSE; +if (!single_value->field_presence.is_value()) return FALSE; +if (!single_value->field_screen.is_value()) return FALSE; +if (!single_value->field_number.is_value()) return FALSE; +return TRUE; +} + +void MNCC__number_template::clean_up() +{ +switch (template_selection) { +case SPECIFIC_VALUE: +delete single_value; +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +delete [] value_list.list_value; +default: +break; +} +template_selection = UNINITIALIZED_TEMPLATE; +} + +MNCC__number MNCC__number_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 @MNCC_Types.MNCC_number."); +MNCC__number ret_val; +if (single_value->field_number__type.is_bound()) { +ret_val.number__type() = single_value->field_number__type.valueof(); +} +if (single_value->field_plan.is_bound()) { +ret_val.plan() = single_value->field_plan.valueof(); +} +if (single_value->field_presence.is_bound()) { +ret_val.presence() = single_value->field_presence.valueof(); +} +if (single_value->field_screen.is_bound()) { +ret_val.screen() = single_value->field_screen.valueof(); +} +if (single_value->field_number.is_bound()) { +ret_val.number() = single_value->field_number.valueof(); +} +return ret_val; +} + +void MNCC__number_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) +TTCN_error("Setting an invalid list for a template of type @MNCC_Types.MNCC_number."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new MNCC__number_template[list_length]; +} + +MNCC__number_template& MNCC__number_template::list_item(unsigned int list_index) const +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) +TTCN_error("Accessing a list element of a non-list template of type @MNCC_Types.MNCC_number."); +if (list_index >= value_list.n_values) +TTCN_error("Index overflow in a value list template of type @MNCC_Types.MNCC_number."); +return value_list.list_value[list_index]; +} + +GSM48__type__of__number_template& MNCC__number_template::number__type() +{ +set_specific(); +return single_value->field_number__type; +} + +const GSM48__type__of__number_template& MNCC__number_template::number__type() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field number_type of a non-specific template of type @MNCC_Types.MNCC_number."); +return single_value->field_number__type; +} + +GSM48__num__plan__ind_template& MNCC__number_template::plan() +{ +set_specific(); +return single_value->field_plan; +} + +const GSM48__num__plan__ind_template& MNCC__number_template::plan() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field plan of a non-specific template of type @MNCC_Types.MNCC_number."); +return single_value->field_plan; +} + +GSM48__present__ind_template& MNCC__number_template::presence() +{ +set_specific(); +return single_value->field_presence; +} + +const GSM48__present__ind_template& MNCC__number_template::presence() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field presence of a non-specific template of type @MNCC_Types.MNCC_number."); +return single_value->field_presence; +} + +GSM48__screening__ind_template& MNCC__number_template::screen() +{ +set_specific(); +return single_value->field_screen; +} + +const GSM48__screening__ind_template& MNCC__number_template::screen() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field screen of a non-specific template of type @MNCC_Types.MNCC_number."); +return single_value->field_screen; +} + +CHARSTRING_template& MNCC__number_template::number() +{ +set_specific(); +return single_value->field_number; +} + +const CHARSTRING_template& MNCC__number_template::number() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field number of a non-specific template of type @MNCC_Types.MNCC_number."); +return single_value->field_number; +} + +int MNCC__number_template::size_of() const +{ + if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_number 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 @MNCC_Types.MNCC_number 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 @MNCC_Types.MNCC_number containing a value list with different sizes."); + } + return item_size; + } + case OMIT_VALUE: + TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_number containing omit value."); + case ANY_VALUE: + case ANY_OR_OMIT: + TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_number containing */? value."); + case COMPLEMENTED_LIST: + TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_number containing complemented list."); + default: + TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @MNCC_Types.MNCC_number."); + } + return 0; +} + +void MNCC__number_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_str("{ number_type := "); +single_value->field_number__type.log(); +TTCN_Logger::log_event_str(", plan := "); +single_value->field_plan.log(); +TTCN_Logger::log_event_str(", presence := "); +single_value->field_presence.log(); +TTCN_Logger::log_event_str(", screen := "); +single_value->field_screen.log(); +TTCN_Logger::log_event_str(", number := "); +single_value->field_number.log(); +TTCN_Logger::log_event_str(" }"); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { +if (list_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[list_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void MNCC__number_template::log_match(const MNCC__number& 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_number__type.match(match_value.number__type(), legacy)){ +TTCN_Logger::log_logmatch_info(".number_type"); +single_value->field_number__type.log_match(match_value.number__type(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_plan.match(match_value.plan(), legacy)){ +TTCN_Logger::log_logmatch_info(".plan"); +single_value->field_plan.log_match(match_value.plan(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_presence.match(match_value.presence(), legacy)){ +TTCN_Logger::log_logmatch_info(".presence"); +single_value->field_presence.log_match(match_value.presence(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_screen.match(match_value.screen(), legacy)){ +TTCN_Logger::log_logmatch_info(".screen"); +single_value->field_screen.log_match(match_value.screen(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_number.match(match_value.number(), legacy)){ +TTCN_Logger::log_logmatch_info(".number"); +single_value->field_number.log_match(match_value.number(), 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("{ number_type := "); +single_value->field_number__type.log_match(match_value.number__type(), legacy); +TTCN_Logger::log_event_str(", plan := "); +single_value->field_plan.log_match(match_value.plan(), legacy); +TTCN_Logger::log_event_str(", presence := "); +single_value->field_presence.log_match(match_value.presence(), legacy); +TTCN_Logger::log_event_str(", screen := "); +single_value->field_screen.log_match(match_value.screen(), legacy); +TTCN_Logger::log_event_str(", number := "); +single_value->field_number.log_match(match_value.number(), 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 MNCC__number_template::encode_text(Text_Buf& text_buf) const +{ +encode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value->field_number__type.encode_text(text_buf); +single_value->field_plan.encode_text(text_buf); +single_value->field_presence.encode_text(text_buf); +single_value->field_screen.encode_text(text_buf); +single_value->field_number.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 @MNCC_Types.MNCC_number."); +} +} + +void MNCC__number_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_number__type.decode_text(text_buf); +single_value->field_plan.decode_text(text_buf); +single_value->field_presence.decode_text(text_buf); +single_value->field_screen.decode_text(text_buf); +single_value->field_number.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 MNCC__number_template[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 @MNCC_Types.MNCC_number."); +} +} + +void MNCC__number_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: { + MNCC__number_template new_temp; + new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); + for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) number__type().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) plan().set_param(*param.get_elem(1)); + if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) presence().set_param(*param.get_elem(2)); + if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) screen().set_param(*param.get_elem(3)); + if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) number().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(), "number_type")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + number__type().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "plan")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + plan().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "presence")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + presence().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "screen")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + screen().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "number")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + number().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @MNCC_Types.MNCC_number: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record template", "@MNCC_Types.MNCC_number"); + } + is_ifpresent = param.get_ifpresent(); +} + +void MNCC__number_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_number__type.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_number"); +single_value->field_plan.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_number"); +single_value->field_presence.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_number"); +single_value->field_screen.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_number"); +single_value->field_number.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_number"); +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 : "@MNCC_Types.MNCC_number"); +} + +boolean MNCC__number_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean MNCC__number_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int l_idx=0; l_idx(enum_type other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_cause_coding."); +return enum_value > other_value; +} + +boolean GSM48__cause__coding::operator>(const GSM48__cause__coding& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_cause_coding."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_cause_coding."); +return enum_value > other_value.enum_value; +} + +const char *GSM48__cause__coding::enum_to_str(enum_type enum_par) +{ +switch (enum_par) { +case GSM48__CAUSE__CS__Q931: return "GSM48_CAUSE_CS_Q931"; +case GSM48__CAUSE__CS__RSVD: return "GSM48_CAUSE_CS_RSVD"; +case GSM48__CAUSE__CS__NATIONAL: return "GSM48_CAUSE_CS_NATIONAL"; +case GSM48__CAUSE__CS__GSM: return "GSM48_CAUSE_CS_GSM"; +default: return ""; +} +} + +GSM48__cause__coding::enum_type GSM48__cause__coding::str_to_enum(const char *str_par) +{ +if (!strcmp(str_par, "GSM48_CAUSE_CS_Q931")) return GSM48__CAUSE__CS__Q931; +else if (!strcmp(str_par, "GSM48_CAUSE_CS_RSVD")) return GSM48__CAUSE__CS__RSVD; +else if (!strcmp(str_par, "GSM48_CAUSE_CS_NATIONAL")) return GSM48__CAUSE__CS__NATIONAL; +else if (!strcmp(str_par, "GSM48_CAUSE_CS_GSM")) return GSM48__CAUSE__CS__GSM; +else return UNKNOWN_VALUE; +} + +boolean GSM48__cause__coding::is_valid_enum(int int_par) +{ +switch (int_par) { +case 0: +case 1: +case 2: +case 3: +return TRUE; +default: +return FALSE; +} +} + +int GSM48__cause__coding::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 @MNCC_Types.GSM48_cause_coding.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); +return enum_par; +} + +int GSM48__cause__coding::enum2int(const GSM48__cause__coding& 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 @MNCC_Types.GSM48_cause_coding.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); +return enum_par.enum_value; +} + +void GSM48__cause__coding::int2enum(int int_val) +{ +if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @MNCC_Types.GSM48_cause_coding.", int_val); +enum_value = (enum_type)int_val; +} + +GSM48__cause__coding::operator GSM48__cause__coding::enum_type() const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @MNCC_Types.GSM48_cause_coding."); +return enum_value; +} + +void GSM48__cause__coding::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 GSM48__cause__coding::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", "@MNCC_Types.GSM48_cause_coding"); + enum_value = str_to_enum(param.get_enumerated()); + if (!is_valid_enum(enum_value)) { + param.error("Invalid enumerated value for type @MNCC_Types.GSM48_cause_coding."); + } +} + +void GSM48__cause__coding::encode_text(Text_Buf& text_buf) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @MNCC_Types.GSM48_cause_coding."); +text_buf.push_int(enum_value); +} + +void GSM48__cause__coding::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 @MNCC_Types.GSM48_cause_coding.", enum_value); +} + +void GSM48__cause__coding::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void GSM48__cause__coding::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int GSM48__cause__coding::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) +{ + 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 GSM48__cause__coding::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 GSM48__cause__coding_template::copy_template(const GSM48__cause__coding_template& other_value) +{ +set_selection(other_value); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = other_value.single_value; +break; +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new GSM48__cause__coding_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of enumerated type @MNCC_Types.GSM48_cause_coding."); +} +} + +GSM48__cause__coding_template::GSM48__cause__coding_template() +{ +} + +GSM48__cause__coding_template::GSM48__cause__coding_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +GSM48__cause__coding_template::GSM48__cause__coding_template(int other_value) + : Base_Template(SPECIFIC_VALUE) +{ +if (!GSM48__cause__coding::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @MNCC_Types.GSM48_cause_coding with unknown numeric value %d.", other_value); +single_value = (GSM48__cause__coding::enum_type)other_value; +} + +GSM48__cause__coding_template::GSM48__cause__coding_template(GSM48__cause__coding::enum_type other_value) + : Base_Template(SPECIFIC_VALUE) +{ +single_value = other_value; +} + +GSM48__cause__coding_template::GSM48__cause__coding_template(const GSM48__cause__coding& other_value) + : Base_Template(SPECIFIC_VALUE) +{ +if (other_value.enum_value == GSM48__cause__coding::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @MNCC_Types.GSM48_cause_coding."); +single_value = other_value.enum_value; +} + +GSM48__cause__coding_template::GSM48__cause__coding_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__cause__coding::enum_type)(const GSM48__cause__coding&)other_value; +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of enumerated type @MNCC_Types.GSM48_cause_coding from an unbound optional field."); +} +} + +GSM48__cause__coding_template::GSM48__cause__coding_template(const GSM48__cause__coding_template& other_value) + : Base_Template() +{ +copy_template(other_value); +} + +GSM48__cause__coding_template::~GSM48__cause__coding_template() +{ +clean_up(); +} + +boolean GSM48__cause__coding_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +return TRUE; +} + +boolean GSM48__cause__coding_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +return single_value != GSM48__cause__coding::UNBOUND_VALUE; +} + +void GSM48__cause__coding_template::clean_up() +{ +if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value; +template_selection = UNINITIALIZED_TEMPLATE; +} + +GSM48__cause__coding_template& GSM48__cause__coding_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +GSM48__cause__coding_template& GSM48__cause__coding_template::operator=(int other_value) +{ +if (!GSM48__cause__coding::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @MNCC_Types.GSM48_cause_coding.", other_value); +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__cause__coding::enum_type)other_value; +return *this; +} + +GSM48__cause__coding_template& GSM48__cause__coding_template::operator=(GSM48__cause__coding::enum_type other_value) +{ +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = other_value; +return *this; +} + +GSM48__cause__coding_template& GSM48__cause__coding_template::operator=(const GSM48__cause__coding& other_value) +{ +if (other_value.enum_value == GSM48__cause__coding::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @MNCC_Types.GSM48_cause_coding to a template."); +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = other_value.enum_value; +return *this; +} + +GSM48__cause__coding_template& GSM48__cause__coding_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__cause__coding::enum_type)(const GSM48__cause__coding&)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 @MNCC_Types.GSM48_cause_coding."); +} +return *this; +} + +GSM48__cause__coding_template& GSM48__cause__coding_template::operator=(const GSM48__cause__coding_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean GSM48__cause__coding_template::match(GSM48__cause__coding::enum_type other_value, boolean) const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +return single_value == other_value; +case OMIT_VALUE: +return FALSE; +case ANY_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of enumerated type @MNCC_Types.GSM48_cause_coding."); +} +return FALSE; +} + +boolean GSM48__cause__coding_template::match(const GSM48__cause__coding& other_value, boolean) const +{ +if (other_value.enum_value == GSM48__cause__coding::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @MNCC_Types.GSM48_cause_coding with an unbound value."); +return match(other_value.enum_value); +} + +GSM48__cause__coding::enum_type GSM48__cause__coding_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 @MNCC_Types.GSM48_cause_coding."); +return single_value; +} + +void GSM48__cause__coding_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @MNCC_Types.GSM48_cause_coding."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new GSM48__cause__coding_template[list_length]; +} + +GSM48__cause__coding_template& GSM48__cause__coding_template::list_item(unsigned int list_index) +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @MNCC_Types.GSM48_cause_coding."); +if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @MNCC_Types.GSM48_cause_coding."); +return value_list.list_value[list_index]; +} + +void GSM48__cause__coding_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_enum(GSM48__cause__coding::enum_to_str(single_value), single_value); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { +if (elem_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[elem_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void GSM48__cause__coding_template::log_match(const GSM48__cause__coding& 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 GSM48__cause__coding_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 @MNCC_Types.GSM48_cause_coding."); +} +} + +void GSM48__cause__coding_template::decode_text(Text_Buf& text_buf) +{ +clean_up(); +decode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = (GSM48__cause__coding::enum_type)text_buf.pull_int().get_val(); +if (!GSM48__cause__coding::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @MNCC_Types.GSM48_cause_coding.", 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 GSM48__cause__coding_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 @MNCC_Types.GSM48_cause_coding."); +} +} + +boolean GSM48__cause__coding_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean GSM48__cause__coding_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int i=0; 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: { + GSM48__cause__coding_template new_temp; + new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, m_p->get_size()); + for (size_t p_i=0; p_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: { + GSM48__cause__coding::enum_type enum_val = GSM48__cause__coding::str_to_enum(m_p->get_enumerated()); + if (!GSM48__cause__coding::is_valid_enum(enum_val)) { + param.error("Invalid enumerated value for type @MNCC_Types.GSM48_cause_coding."); + } + *this = enum_val; + } break; + default: + param.type_error("enumerated template", "@MNCC_Types.GSM48_cause_coding"); + } + is_ifpresent = param.get_ifpresent(); +} + +void GSM48__cause__coding_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 : "@MNCC_Types.GSM48_cause_coding"); +} + +GSM48__cause__loc::GSM48__cause__loc() +{ +enum_value = UNBOUND_VALUE; +} + +GSM48__cause__loc::GSM48__cause__loc(int other_value) +{ +if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @MNCC_Types.GSM48_cause_loc with invalid numeric value %d.", other_value); +enum_value = (enum_type)other_value; +} + +GSM48__cause__loc::GSM48__cause__loc(enum_type other_value) +{ +enum_value = other_value; +} + +GSM48__cause__loc::GSM48__cause__loc(const GSM48__cause__loc& other_value) +: Base_Type() +{ +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @MNCC_Types.GSM48_cause_loc."); +enum_value = other_value.enum_value; +} + +GSM48__cause__loc& GSM48__cause__loc::operator=(int other_value) +{ +if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @MNCC_Types.GSM48_cause_loc.", other_value); +enum_value = (enum_type)other_value; +return *this; +} + +GSM48__cause__loc& GSM48__cause__loc::operator=(enum_type other_value) +{ +enum_value = other_value; +return *this; +} + +GSM48__cause__loc& GSM48__cause__loc::operator=(const GSM48__cause__loc& other_value) +{ +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @MNCC_Types.GSM48_cause_loc."); +enum_value = other_value.enum_value; +return *this; +} + +boolean GSM48__cause__loc::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 @MNCC_Types.GSM48_cause_loc."); +return enum_value == other_value; +} + +boolean GSM48__cause__loc::operator==(const GSM48__cause__loc& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_cause_loc."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_cause_loc."); +return enum_value == other_value.enum_value; +} + +boolean GSM48__cause__loc::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 @MNCC_Types.GSM48_cause_loc."); +return enum_value < other_value; +} + +boolean GSM48__cause__loc::operator<(const GSM48__cause__loc& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_cause_loc."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_cause_loc."); +return enum_value < other_value.enum_value; +} + +boolean GSM48__cause__loc::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 @MNCC_Types.GSM48_cause_loc."); +return enum_value > other_value; +} + +boolean GSM48__cause__loc::operator>(const GSM48__cause__loc& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_cause_loc."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.GSM48_cause_loc."); +return enum_value > other_value.enum_value; +} + +const char *GSM48__cause__loc::enum_to_str(enum_type enum_par) +{ +switch (enum_par) { +case GSM48__CAUSE__LOC__USER: return "GSM48_CAUSE_LOC_USER"; +case GSM48__CAUSE__LOC__PRN__S__LU: return "GSM48_CAUSE_LOC_PRN_S_LU"; +case GSM48__CAUSE__LOC__PUN__S__LU: return "GSM48_CAUSE_LOC_PUN_S_LU"; +case GSM48__CAUSE__LOC__TRANS__NET: return "GSM48_CAUSE_LOC_TRANS_NET"; +case GSM48__CAUSE__LOC__PUN__S__RU: return "GSM48_CAUSE_LOC_PUN_S_RU"; +case GSM48__CAUSE__LOC__PRN__S__RU: return "GSM48_CAUSE_LOC_PRN_S_RU"; +case GSM48__CAUSE__LOC__INN__NET: return "GSM48_CAUSE_LOC_INN_NET"; +case GSM48__CAUSE__LOC__NET__BEYOND: return "GSM48_CAUSE_LOC_NET_BEYOND"; +default: return ""; +} +} + +GSM48__cause__loc::enum_type GSM48__cause__loc::str_to_enum(const char *str_par) +{ +if (!strcmp(str_par, "GSM48_CAUSE_LOC_USER")) return GSM48__CAUSE__LOC__USER; +else if (!strcmp(str_par, "GSM48_CAUSE_LOC_PRN_S_LU")) return GSM48__CAUSE__LOC__PRN__S__LU; +else if (!strcmp(str_par, "GSM48_CAUSE_LOC_PUN_S_LU")) return GSM48__CAUSE__LOC__PUN__S__LU; +else if (!strcmp(str_par, "GSM48_CAUSE_LOC_TRANS_NET")) return GSM48__CAUSE__LOC__TRANS__NET; +else if (!strcmp(str_par, "GSM48_CAUSE_LOC_PUN_S_RU")) return GSM48__CAUSE__LOC__PUN__S__RU; +else if (!strcmp(str_par, "GSM48_CAUSE_LOC_PRN_S_RU")) return GSM48__CAUSE__LOC__PRN__S__RU; +else if (!strcmp(str_par, "GSM48_CAUSE_LOC_INN_NET")) return GSM48__CAUSE__LOC__INN__NET; +else if (!strcmp(str_par, "GSM48_CAUSE_LOC_NET_BEYOND")) return GSM48__CAUSE__LOC__NET__BEYOND; +else return UNKNOWN_VALUE; +} + +boolean GSM48__cause__loc::is_valid_enum(int int_par) +{ +switch (int_par) { +case 0: +case 1: +case 2: +case 3: +case 4: +case 5: +case 7: +case 10: +return TRUE; +default: +return FALSE; +} +} + +int GSM48__cause__loc::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 @MNCC_Types.GSM48_cause_loc.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); +return enum_par; +} + +int GSM48__cause__loc::enum2int(const GSM48__cause__loc& 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 @MNCC_Types.GSM48_cause_loc.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); +return enum_par.enum_value; +} + +void GSM48__cause__loc::int2enum(int int_val) +{ +if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @MNCC_Types.GSM48_cause_loc.", int_val); +enum_value = (enum_type)int_val; +} + +GSM48__cause__loc::operator GSM48__cause__loc::enum_type() const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @MNCC_Types.GSM48_cause_loc."); +return enum_value; +} + +void GSM48__cause__loc::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 GSM48__cause__loc::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", "@MNCC_Types.GSM48_cause_loc"); + enum_value = str_to_enum(param.get_enumerated()); + if (!is_valid_enum(enum_value)) { + param.error("Invalid enumerated value for type @MNCC_Types.GSM48_cause_loc."); + } +} + +void GSM48__cause__loc::encode_text(Text_Buf& text_buf) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @MNCC_Types.GSM48_cause_loc."); +text_buf.push_int(enum_value); +} + +void GSM48__cause__loc::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 @MNCC_Types.GSM48_cause_loc.", enum_value); +} + +void GSM48__cause__loc::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void GSM48__cause__loc::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int GSM48__cause__loc::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) +{ + int decoded_value = 0; + int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 4, no_err); + if (decoded_length < 0) return decoded_length; + if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value; + else { + if(no_err){ + return -1; + } else { + TTCN_EncDec_ErrorContext::error + (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name); + enum_value = UNKNOWN_VALUE; + } + } + return decoded_length; +} + +int GSM48__cause__loc::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const +{ + return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 4); +} + +void GSM48__cause__loc_template::copy_template(const GSM48__cause__loc_template& other_value) +{ +set_selection(other_value); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = other_value.single_value; +break; +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new GSM48__cause__loc_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of enumerated type @MNCC_Types.GSM48_cause_loc."); +} +} + +GSM48__cause__loc_template::GSM48__cause__loc_template() +{ +} + +GSM48__cause__loc_template::GSM48__cause__loc_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +GSM48__cause__loc_template::GSM48__cause__loc_template(int other_value) + : Base_Template(SPECIFIC_VALUE) +{ +if (!GSM48__cause__loc::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @MNCC_Types.GSM48_cause_loc with unknown numeric value %d.", other_value); +single_value = (GSM48__cause__loc::enum_type)other_value; +} + +GSM48__cause__loc_template::GSM48__cause__loc_template(GSM48__cause__loc::enum_type other_value) + : Base_Template(SPECIFIC_VALUE) +{ +single_value = other_value; +} + +GSM48__cause__loc_template::GSM48__cause__loc_template(const GSM48__cause__loc& other_value) + : Base_Template(SPECIFIC_VALUE) +{ +if (other_value.enum_value == GSM48__cause__loc::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @MNCC_Types.GSM48_cause_loc."); +single_value = other_value.enum_value; +} + +GSM48__cause__loc_template::GSM48__cause__loc_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__cause__loc::enum_type)(const GSM48__cause__loc&)other_value; +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of enumerated type @MNCC_Types.GSM48_cause_loc from an unbound optional field."); +} +} + +GSM48__cause__loc_template::GSM48__cause__loc_template(const GSM48__cause__loc_template& other_value) + : Base_Template() +{ +copy_template(other_value); +} + +GSM48__cause__loc_template::~GSM48__cause__loc_template() +{ +clean_up(); +} + +boolean GSM48__cause__loc_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +return TRUE; +} + +boolean GSM48__cause__loc_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +return single_value != GSM48__cause__loc::UNBOUND_VALUE; +} + +void GSM48__cause__loc_template::clean_up() +{ +if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value; +template_selection = UNINITIALIZED_TEMPLATE; +} + +GSM48__cause__loc_template& GSM48__cause__loc_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +GSM48__cause__loc_template& GSM48__cause__loc_template::operator=(int other_value) +{ +if (!GSM48__cause__loc::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @MNCC_Types.GSM48_cause_loc.", other_value); +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__cause__loc::enum_type)other_value; +return *this; +} + +GSM48__cause__loc_template& GSM48__cause__loc_template::operator=(GSM48__cause__loc::enum_type other_value) +{ +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = other_value; +return *this; +} + +GSM48__cause__loc_template& GSM48__cause__loc_template::operator=(const GSM48__cause__loc& other_value) +{ +if (other_value.enum_value == GSM48__cause__loc::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @MNCC_Types.GSM48_cause_loc to a template."); +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = other_value.enum_value; +return *this; +} + +GSM48__cause__loc_template& GSM48__cause__loc_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +set_selection(SPECIFIC_VALUE); +single_value = (GSM48__cause__loc::enum_type)(const GSM48__cause__loc&)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 @MNCC_Types.GSM48_cause_loc."); +} +return *this; +} + +GSM48__cause__loc_template& GSM48__cause__loc_template::operator=(const GSM48__cause__loc_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean GSM48__cause__loc_template::match(GSM48__cause__loc::enum_type other_value, boolean) const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +return single_value == other_value; +case OMIT_VALUE: +return FALSE; +case ANY_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of enumerated type @MNCC_Types.GSM48_cause_loc."); +} +return FALSE; +} + +boolean GSM48__cause__loc_template::match(const GSM48__cause__loc& other_value, boolean) const +{ +if (other_value.enum_value == GSM48__cause__loc::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @MNCC_Types.GSM48_cause_loc with an unbound value."); +return match(other_value.enum_value); +} + +GSM48__cause__loc::enum_type GSM48__cause__loc_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 @MNCC_Types.GSM48_cause_loc."); +return single_value; +} + +void GSM48__cause__loc_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @MNCC_Types.GSM48_cause_loc."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new GSM48__cause__loc_template[list_length]; +} + +GSM48__cause__loc_template& GSM48__cause__loc_template::list_item(unsigned int list_index) +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @MNCC_Types.GSM48_cause_loc."); +if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @MNCC_Types.GSM48_cause_loc."); +return value_list.list_value[list_index]; +} + +void GSM48__cause__loc_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_enum(GSM48__cause__loc::enum_to_str(single_value), single_value); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { +if (elem_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[elem_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void GSM48__cause__loc_template::log_match(const GSM48__cause__loc& 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 GSM48__cause__loc_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 @MNCC_Types.GSM48_cause_loc."); +} +} + +void GSM48__cause__loc_template::decode_text(Text_Buf& text_buf) +{ +clean_up(); +decode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = (GSM48__cause__loc::enum_type)text_buf.pull_int().get_val(); +if (!GSM48__cause__loc::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @MNCC_Types.GSM48_cause_loc.", 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 GSM48__cause__loc_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 @MNCC_Types.GSM48_cause_loc."); +} +} + +boolean GSM48__cause__loc_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean GSM48__cause__loc_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int i=0; 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: { + GSM48__cause__loc_template new_temp; + new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, m_p->get_size()); + for (size_t p_i=0; p_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: { + GSM48__cause__loc::enum_type enum_val = GSM48__cause__loc::str_to_enum(m_p->get_enumerated()); + if (!GSM48__cause__loc::is_valid_enum(enum_val)) { + param.error("Invalid enumerated value for type @MNCC_Types.GSM48_cause_loc."); + } + *this = enum_val; + } break; + default: + param.type_error("enumerated template", "@MNCC_Types.GSM48_cause_loc"); + } + is_ifpresent = param.get_ifpresent(); +} + +void GSM48__cause__loc_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 : "@MNCC_Types.GSM48_cause_loc"); +} + +MNCC__cause::MNCC__cause() +{ +} + +MNCC__cause::MNCC__cause(const GSM48__cause__loc& par_location, + const GSM48__cause__coding& par_coding, + const INTEGER& par_rec, + const INTEGER& par_rec__val, + const INTEGER& par_val, + const OCTETSTRING& par_diag) + : field_location(par_location), + field_coding(par_coding), + field_rec(par_rec), + field_rec__val(par_rec__val), + field_val(par_val), + field_diag(par_diag) +{ +} + +MNCC__cause::MNCC__cause(const MNCC__cause& other_value) +{ +if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @MNCC_Types.MNCC_cause."); +if (other_value.location().is_bound()) field_location = other_value.location(); +else field_location.clean_up(); +if (other_value.coding().is_bound()) field_coding = other_value.coding(); +else field_coding.clean_up(); +if (other_value.rec().is_bound()) field_rec = other_value.rec(); +else field_rec.clean_up(); +if (other_value.rec__val().is_bound()) field_rec__val = other_value.rec__val(); +else field_rec__val.clean_up(); +if (other_value.val().is_bound()) field_val = other_value.val(); +else field_val.clean_up(); +if (other_value.diag().is_bound()) field_diag = other_value.diag(); +else field_diag.clean_up(); +} + +void MNCC__cause::clean_up() +{ +field_location.clean_up(); +field_coding.clean_up(); +field_rec.clean_up(); +field_rec__val.clean_up(); +field_val.clean_up(); +field_diag.clean_up(); +} + +MNCC__cause& MNCC__cause::operator=(const MNCC__cause& other_value) +{ +if (this != &other_value) { + if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @MNCC_Types.MNCC_cause."); + if (other_value.location().is_bound()) field_location = other_value.location(); + else field_location.clean_up(); + if (other_value.coding().is_bound()) field_coding = other_value.coding(); + else field_coding.clean_up(); + if (other_value.rec().is_bound()) field_rec = other_value.rec(); + else field_rec.clean_up(); + if (other_value.rec__val().is_bound()) field_rec__val = other_value.rec__val(); + else field_rec__val.clean_up(); + if (other_value.val().is_bound()) field_val = other_value.val(); + else field_val.clean_up(); + if (other_value.diag().is_bound()) field_diag = other_value.diag(); + else field_diag.clean_up(); +} +return *this; +} + +boolean MNCC__cause::operator==(const MNCC__cause& other_value) const +{ +return field_location==other_value.field_location + && field_coding==other_value.field_coding + && field_rec==other_value.field_rec + && field_rec__val==other_value.field_rec__val + && field_val==other_value.field_val + && field_diag==other_value.field_diag; +} + +boolean MNCC__cause::is_bound() const +{ +if(field_location.is_bound()) return TRUE; +if(field_coding.is_bound()) return TRUE; +if(field_rec.is_bound()) return TRUE; +if(field_rec__val.is_bound()) return TRUE; +if(field_val.is_bound()) return TRUE; +if(field_diag.is_bound()) return TRUE; +return FALSE; +} +boolean MNCC__cause::is_value() const +{ +if(!field_location.is_value()) return FALSE; +if(!field_coding.is_value()) return FALSE; +if(!field_rec.is_value()) return FALSE; +if(!field_rec__val.is_value()) return FALSE; +if(!field_val.is_value()) return FALSE; +if(!field_diag.is_value()) return FALSE; +return TRUE; +} +void MNCC__cause::log() const +{ +if (!is_bound()) { +TTCN_Logger::log_event_unbound(); +return; +} +TTCN_Logger::log_event_str("{ location := "); +field_location.log(); +TTCN_Logger::log_event_str(", coding := "); +field_coding.log(); +TTCN_Logger::log_event_str(", rec := "); +field_rec.log(); +TTCN_Logger::log_event_str(", rec_val := "); +field_rec__val.log(); +TTCN_Logger::log_event_str(", val := "); +field_val.log(); +TTCN_Logger::log_event_str(", diag := "); +field_diag.log(); +TTCN_Logger::log_event_str(" }"); +} + +void MNCC__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 (60 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) location().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) coding().set_param(*param.get_elem(1)); + if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) rec().set_param(*param.get_elem(2)); + if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) rec__val().set_param(*param.get_elem(3)); + if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) val().set_param(*param.get_elem(4)); + if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) diag().set_param(*param.get_elem(5)); + 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(), "location")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + location().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "coding")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + coding().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "rec")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + rec().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "rec_val")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + rec__val().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "val")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + val().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "diag")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + diag().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @MNCC_Types.MNCC_cause: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record value", "@MNCC_Types.MNCC_cause"); + } +} + +void MNCC__cause::set_implicit_omit() +{ +if (location().is_bound()) location().set_implicit_omit(); +if (coding().is_bound()) coding().set_implicit_omit(); +if (rec().is_bound()) rec().set_implicit_omit(); +if (rec__val().is_bound()) rec__val().set_implicit_omit(); +if (val().is_bound()) val().set_implicit_omit(); +if (diag().is_bound()) diag().set_implicit_omit(); +} + +void MNCC__cause::encode_text(Text_Buf& text_buf) const +{ +field_location.encode_text(text_buf); +field_coding.encode_text(text_buf); +field_rec.encode_text(text_buf); +field_rec__val.encode_text(text_buf); +field_val.encode_text(text_buf); +field_diag.encode_text(text_buf); +} + +void MNCC__cause::decode_text(Text_Buf& text_buf) +{ +field_location.decode_text(text_buf); +field_coding.decode_text(text_buf); +field_rec.decode_text(text_buf); +field_rec__val.decode_text(text_buf); +field_val.decode_text(text_buf); +field_diag.decode_text(text_buf); +} + +void MNCC__cause::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void MNCC__cause::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int MNCC__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) +{ (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; + decoded_field_length = field_location.RAW_decode(MNCC__cause_location_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_coding.RAW_decode(MNCC__cause_coding_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_rec.RAW_decode(MNCC__cause_rec_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_rec__val.RAW_decode(MNCC__cause_rec__val_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_val.RAW_decode(MNCC__cause_val_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_diag.RAW_decode(MNCC__cause_diag_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return 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 MNCC__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 = 6; + myleaf.body.node.nodes = init_nodes_of_enc_tree(6); + myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, MNCC__cause_location_descr_.raw); + myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, MNCC__cause_coding_descr_.raw); + myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, MNCC__cause_rec_descr_.raw); + myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, MNCC__cause_rec__val_descr_.raw); + myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, MNCC__cause_val_descr_.raw); + myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, MNCC__cause_diag_descr_.raw); + encoded_length += field_location.RAW_encode(MNCC__cause_location_descr_, *myleaf.body.node.nodes[0]); + encoded_length += field_coding.RAW_encode(MNCC__cause_coding_descr_, *myleaf.body.node.nodes[1]); + encoded_length += field_rec.RAW_encode(MNCC__cause_rec_descr_, *myleaf.body.node.nodes[2]); + encoded_length += field_rec__val.RAW_encode(MNCC__cause_rec__val_descr_, *myleaf.body.node.nodes[3]); + encoded_length += field_val.RAW_encode(MNCC__cause_val_descr_, *myleaf.body.node.nodes[4]); + encoded_length += field_diag.RAW_encode(MNCC__cause_diag_descr_, *myleaf.body.node.nodes[5]); + return myleaf.length = encoded_length; +} + +struct MNCC__cause_template::single_value_struct { +GSM48__cause__loc_template field_location; +GSM48__cause__coding_template field_coding; +INTEGER_template field_rec; +INTEGER_template field_rec__val; +INTEGER_template field_val; +OCTETSTRING_template field_diag; +}; + +void MNCC__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_location = ANY_VALUE; +single_value->field_coding = ANY_VALUE; +single_value->field_rec = ANY_VALUE; +single_value->field_rec__val = ANY_VALUE; +single_value->field_val = ANY_VALUE; +single_value->field_diag = ANY_VALUE; +} +} +} + +void MNCC__cause_template::copy_value(const MNCC__cause& other_value) +{ +single_value = new single_value_struct; +if (other_value.location().is_bound()) { + single_value->field_location = other_value.location(); +} else { + single_value->field_location.clean_up(); +} +if (other_value.coding().is_bound()) { + single_value->field_coding = other_value.coding(); +} else { + single_value->field_coding.clean_up(); +} +if (other_value.rec().is_bound()) { + single_value->field_rec = other_value.rec(); +} else { + single_value->field_rec.clean_up(); +} +if (other_value.rec__val().is_bound()) { + single_value->field_rec__val = other_value.rec__val(); +} else { + single_value->field_rec__val.clean_up(); +} +if (other_value.val().is_bound()) { + single_value->field_val = other_value.val(); +} else { + single_value->field_val.clean_up(); +} +if (other_value.diag().is_bound()) { + single_value->field_diag = other_value.diag(); +} else { + single_value->field_diag.clean_up(); +} +set_selection(SPECIFIC_VALUE); +} + +void MNCC__cause_template::copy_template(const MNCC__cause_template& other_value) +{ +switch (other_value.template_selection) { +case SPECIFIC_VALUE: +single_value = new single_value_struct; +if (UNINITIALIZED_TEMPLATE != other_value.location().get_selection()) { +single_value->field_location = other_value.location(); +} else { +single_value->field_location.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.coding().get_selection()) { +single_value->field_coding = other_value.coding(); +} else { +single_value->field_coding.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.rec().get_selection()) { +single_value->field_rec = other_value.rec(); +} else { +single_value->field_rec.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.rec__val().get_selection()) { +single_value->field_rec__val = other_value.rec__val(); +} else { +single_value->field_rec__val.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.val().get_selection()) { +single_value->field_val = other_value.val(); +} else { +single_value->field_val.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.diag().get_selection()) { +single_value->field_diag = other_value.diag(); +} else { +single_value->field_diag.clean_up(); +} +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new MNCC__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; +default: +TTCN_error("Copying an uninitialized/unsupported template of type @MNCC_Types.MNCC_cause."); +break; +} +set_selection(other_value); +} + +MNCC__cause_template::MNCC__cause_template() +{ +} + +MNCC__cause_template::MNCC__cause_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +MNCC__cause_template::MNCC__cause_template(const MNCC__cause& other_value) +{ +copy_value(other_value); +} + +MNCC__cause_template::MNCC__cause_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const MNCC__cause&)other_value); +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of type @MNCC_Types.MNCC_cause from an unbound optional field."); +} +} + +MNCC__cause_template::MNCC__cause_template(const MNCC__cause_template& other_value) +: Base_Template() +{ +copy_template(other_value); +} + +MNCC__cause_template::~MNCC__cause_template() +{ +clean_up(); +} + +MNCC__cause_template& MNCC__cause_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +MNCC__cause_template& MNCC__cause_template::operator=(const MNCC__cause& other_value) +{ +clean_up(); +copy_value(other_value); +return *this; +} + +MNCC__cause_template& MNCC__cause_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const MNCC__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 @MNCC_Types.MNCC_cause."); +} +return *this; +} + +MNCC__cause_template& MNCC__cause_template::operator=(const MNCC__cause_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean MNCC__cause_template::match(const MNCC__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.location().is_bound()) return FALSE; +if(!single_value->field_location.match(other_value.location(), legacy))return FALSE; +if(!other_value.coding().is_bound()) return FALSE; +if(!single_value->field_coding.match(other_value.coding(), legacy))return FALSE; +if(!other_value.rec().is_bound()) return FALSE; +if(!single_value->field_rec.match(other_value.rec(), legacy))return FALSE; +if(!other_value.rec__val().is_bound()) return FALSE; +if(!single_value->field_rec__val.match(other_value.rec__val(), legacy))return FALSE; +if(!other_value.val().is_bound()) return FALSE; +if(!single_value->field_val.match(other_value.val(), legacy))return FALSE; +if(!other_value.diag().is_bound()) return FALSE; +if(!single_value->field_diag.match(other_value.diag(), legacy))return FALSE; +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of type @MNCC_Types.MNCC_cause."); +} +return FALSE; +} + +boolean MNCC__cause_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +if (template_selection != SPECIFIC_VALUE) return TRUE; +if (single_value->field_location.is_bound()) return TRUE; +if (single_value->field_coding.is_bound()) return TRUE; +if (single_value->field_rec.is_bound()) return TRUE; +if (single_value->field_rec__val.is_bound()) return TRUE; +if (single_value->field_val.is_bound()) return TRUE; +if (single_value->field_diag.is_bound()) return TRUE; +return FALSE; +} + +boolean MNCC__cause_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +if (!single_value->field_location.is_value()) return FALSE; +if (!single_value->field_coding.is_value()) return FALSE; +if (!single_value->field_rec.is_value()) return FALSE; +if (!single_value->field_rec__val.is_value()) return FALSE; +if (!single_value->field_val.is_value()) return FALSE; +if (!single_value->field_diag.is_value()) return FALSE; +return TRUE; +} + +void MNCC__cause_template::clean_up() +{ +switch (template_selection) { +case SPECIFIC_VALUE: +delete single_value; +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +delete [] value_list.list_value; +default: +break; +} +template_selection = UNINITIALIZED_TEMPLATE; +} + +MNCC__cause MNCC__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 @MNCC_Types.MNCC_cause."); +MNCC__cause ret_val; +if (single_value->field_location.is_bound()) { +ret_val.location() = single_value->field_location.valueof(); +} +if (single_value->field_coding.is_bound()) { +ret_val.coding() = single_value->field_coding.valueof(); +} +if (single_value->field_rec.is_bound()) { +ret_val.rec() = single_value->field_rec.valueof(); +} +if (single_value->field_rec__val.is_bound()) { +ret_val.rec__val() = single_value->field_rec__val.valueof(); +} +if (single_value->field_val.is_bound()) { +ret_val.val() = single_value->field_val.valueof(); +} +if (single_value->field_diag.is_bound()) { +ret_val.diag() = single_value->field_diag.valueof(); +} +return ret_val; +} + +void MNCC__cause_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) +TTCN_error("Setting an invalid list for a template of type @MNCC_Types.MNCC_cause."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new MNCC__cause_template[list_length]; +} + +MNCC__cause_template& MNCC__cause_template::list_item(unsigned int list_index) const +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) +TTCN_error("Accessing a list element of a non-list template of type @MNCC_Types.MNCC_cause."); +if (list_index >= value_list.n_values) +TTCN_error("Index overflow in a value list template of type @MNCC_Types.MNCC_cause."); +return value_list.list_value[list_index]; +} + +GSM48__cause__loc_template& MNCC__cause_template::location() +{ +set_specific(); +return single_value->field_location; +} + +const GSM48__cause__loc_template& MNCC__cause_template::location() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field location of a non-specific template of type @MNCC_Types.MNCC_cause."); +return single_value->field_location; +} + +GSM48__cause__coding_template& MNCC__cause_template::coding() +{ +set_specific(); +return single_value->field_coding; +} + +const GSM48__cause__coding_template& MNCC__cause_template::coding() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field coding of a non-specific template of type @MNCC_Types.MNCC_cause."); +return single_value->field_coding; +} + +INTEGER_template& MNCC__cause_template::rec() +{ +set_specific(); +return single_value->field_rec; +} + +const INTEGER_template& MNCC__cause_template::rec() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field rec of a non-specific template of type @MNCC_Types.MNCC_cause."); +return single_value->field_rec; +} + +INTEGER_template& MNCC__cause_template::rec__val() +{ +set_specific(); +return single_value->field_rec__val; +} + +const INTEGER_template& MNCC__cause_template::rec__val() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field rec_val of a non-specific template of type @MNCC_Types.MNCC_cause."); +return single_value->field_rec__val; +} + +INTEGER_template& MNCC__cause_template::val() +{ +set_specific(); +return single_value->field_val; +} + +const INTEGER_template& MNCC__cause_template::val() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field val of a non-specific template of type @MNCC_Types.MNCC_cause."); +return single_value->field_val; +} + +OCTETSTRING_template& MNCC__cause_template::diag() +{ +set_specific(); +return single_value->field_diag; +} + +const OCTETSTRING_template& MNCC__cause_template::diag() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field diag of a non-specific template of type @MNCC_Types.MNCC_cause."); +return single_value->field_diag; +} + +int MNCC__cause_template::size_of() const +{ + if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_cause which has an ifpresent attribute."); + switch (template_selection) + { + case SPECIFIC_VALUE: + return 6; + case VALUE_LIST: + { + if (value_list.n_values<1) + TTCN_error("Internal error: Performing sizeof() operation on a template of type @MNCC_Types.MNCC_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 @MNCC_Types.MNCC_cause containing a value list with different sizes."); + } + return item_size; + } + case OMIT_VALUE: + TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_cause containing omit value."); + case ANY_VALUE: + case ANY_OR_OMIT: + TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_cause containing */? value."); + case COMPLEMENTED_LIST: + TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_cause containing complemented list."); + default: + TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @MNCC_Types.MNCC_cause."); + } + return 0; +} + +void MNCC__cause_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_str("{ location := "); +single_value->field_location.log(); +TTCN_Logger::log_event_str(", coding := "); +single_value->field_coding.log(); +TTCN_Logger::log_event_str(", rec := "); +single_value->field_rec.log(); +TTCN_Logger::log_event_str(", rec_val := "); +single_value->field_rec__val.log(); +TTCN_Logger::log_event_str(", val := "); +single_value->field_val.log(); +TTCN_Logger::log_event_str(", diag := "); +single_value->field_diag.log(); +TTCN_Logger::log_event_str(" }"); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { +if (list_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[list_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void MNCC__cause_template::log_match(const MNCC__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_location.match(match_value.location(), legacy)){ +TTCN_Logger::log_logmatch_info(".location"); +single_value->field_location.log_match(match_value.location(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_coding.match(match_value.coding(), legacy)){ +TTCN_Logger::log_logmatch_info(".coding"); +single_value->field_coding.log_match(match_value.coding(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_rec.match(match_value.rec(), legacy)){ +TTCN_Logger::log_logmatch_info(".rec"); +single_value->field_rec.log_match(match_value.rec(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_rec__val.match(match_value.rec__val(), legacy)){ +TTCN_Logger::log_logmatch_info(".rec_val"); +single_value->field_rec__val.log_match(match_value.rec__val(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_val.match(match_value.val(), legacy)){ +TTCN_Logger::log_logmatch_info(".val"); +single_value->field_val.log_match(match_value.val(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_diag.match(match_value.diag(), legacy)){ +TTCN_Logger::log_logmatch_info(".diag"); +single_value->field_diag.log_match(match_value.diag(), 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("{ location := "); +single_value->field_location.log_match(match_value.location(), legacy); +TTCN_Logger::log_event_str(", coding := "); +single_value->field_coding.log_match(match_value.coding(), legacy); +TTCN_Logger::log_event_str(", rec := "); +single_value->field_rec.log_match(match_value.rec(), legacy); +TTCN_Logger::log_event_str(", rec_val := "); +single_value->field_rec__val.log_match(match_value.rec__val(), legacy); +TTCN_Logger::log_event_str(", val := "); +single_value->field_val.log_match(match_value.val(), legacy); +TTCN_Logger::log_event_str(", diag := "); +single_value->field_diag.log_match(match_value.diag(), 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 MNCC__cause_template::encode_text(Text_Buf& text_buf) const +{ +encode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value->field_location.encode_text(text_buf); +single_value->field_coding.encode_text(text_buf); +single_value->field_rec.encode_text(text_buf); +single_value->field_rec__val.encode_text(text_buf); +single_value->field_val.encode_text(text_buf); +single_value->field_diag.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 @MNCC_Types.MNCC_cause."); +} +} + +void MNCC__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_location.decode_text(text_buf); +single_value->field_coding.decode_text(text_buf); +single_value->field_rec.decode_text(text_buf); +single_value->field_rec__val.decode_text(text_buf); +single_value->field_val.decode_text(text_buf); +single_value->field_diag.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 MNCC__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 @MNCC_Types.MNCC_cause."); +} +} + +void MNCC__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: { + MNCC__cause_template new_temp; + new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); + for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) location().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) coding().set_param(*param.get_elem(1)); + if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) rec().set_param(*param.get_elem(2)); + if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) rec__val().set_param(*param.get_elem(3)); + if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) val().set_param(*param.get_elem(4)); + if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) diag().set_param(*param.get_elem(5)); + 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(), "location")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + location().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "coding")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + coding().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "rec")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + rec().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "rec_val")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + rec__val().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "val")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + val().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "diag")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + diag().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @MNCC_Types.MNCC_cause: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record template", "@MNCC_Types.MNCC_cause"); + } + is_ifpresent = param.get_ifpresent(); +} + +void MNCC__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_location.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_cause"); +single_value->field_coding.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_cause"); +single_value->field_rec.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_cause"); +single_value->field_rec__val.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_cause"); +single_value->field_val.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_cause"); +single_value->field_diag.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_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 : "@MNCC_Types.MNCC_cause"); +} + +boolean MNCC__cause_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean MNCC__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 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) proto().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) info().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(), "proto")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + proto().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "info")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + info().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @MNCC_Types.MNCC_useruser: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record value", "@MNCC_Types.MNCC_useruser"); + } +} + +void MNCC__useruser::set_implicit_omit() +{ +if (proto().is_bound()) proto().set_implicit_omit(); +if (info().is_bound()) info().set_implicit_omit(); +} + +void MNCC__useruser::encode_text(Text_Buf& text_buf) const +{ +field_proto.encode_text(text_buf); +field_info.encode_text(text_buf); +} + +void MNCC__useruser::decode_text(Text_Buf& text_buf) +{ +field_proto.decode_text(text_buf); +field_info.decode_text(text_buf); +} + +void MNCC__useruser::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void MNCC__useruser::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int MNCC__useruser::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) +{ (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; + decoded_field_length = field_proto.RAW_decode(MNCC__useruser_proto_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_info.RAW_decode(MNCC__useruser_info_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return 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 MNCC__useruser::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, MNCC__useruser_proto_descr_.raw); + myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, MNCC__useruser_info_descr_.raw); + encoded_length += field_proto.RAW_encode(MNCC__useruser_proto_descr_, *myleaf.body.node.nodes[0]); + encoded_length += field_info.RAW_encode(MNCC__useruser_info_descr_, *myleaf.body.node.nodes[1]); + return myleaf.length = encoded_length; +} + +struct MNCC__useruser_template::single_value_struct { +INTEGER_template field_proto; +CHARSTRING_template field_info; +}; + +void MNCC__useruser_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_proto = ANY_VALUE; +single_value->field_info = ANY_VALUE; +} +} +} + +void MNCC__useruser_template::copy_value(const MNCC__useruser& other_value) +{ +single_value = new single_value_struct; +if (other_value.proto().is_bound()) { + single_value->field_proto = other_value.proto(); +} else { + single_value->field_proto.clean_up(); +} +if (other_value.info().is_bound()) { + single_value->field_info = other_value.info(); +} else { + single_value->field_info.clean_up(); +} +set_selection(SPECIFIC_VALUE); +} + +void MNCC__useruser_template::copy_template(const MNCC__useruser_template& other_value) +{ +switch (other_value.template_selection) { +case SPECIFIC_VALUE: +single_value = new single_value_struct; +if (UNINITIALIZED_TEMPLATE != other_value.proto().get_selection()) { +single_value->field_proto = other_value.proto(); +} else { +single_value->field_proto.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.info().get_selection()) { +single_value->field_info = other_value.info(); +} else { +single_value->field_info.clean_up(); +} +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new MNCC__useruser_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of type @MNCC_Types.MNCC_useruser."); +break; +} +set_selection(other_value); +} + +MNCC__useruser_template::MNCC__useruser_template() +{ +} + +MNCC__useruser_template::MNCC__useruser_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +MNCC__useruser_template::MNCC__useruser_template(const MNCC__useruser& other_value) +{ +copy_value(other_value); +} + +MNCC__useruser_template::MNCC__useruser_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const MNCC__useruser&)other_value); +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of type @MNCC_Types.MNCC_useruser from an unbound optional field."); +} +} + +MNCC__useruser_template::MNCC__useruser_template(const MNCC__useruser_template& other_value) +: Base_Template() +{ +copy_template(other_value); +} + +MNCC__useruser_template::~MNCC__useruser_template() +{ +clean_up(); +} + +MNCC__useruser_template& MNCC__useruser_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +MNCC__useruser_template& MNCC__useruser_template::operator=(const MNCC__useruser& other_value) +{ +clean_up(); +copy_value(other_value); +return *this; +} + +MNCC__useruser_template& MNCC__useruser_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const MNCC__useruser&)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 @MNCC_Types.MNCC_useruser."); +} +return *this; +} + +MNCC__useruser_template& MNCC__useruser_template::operator=(const MNCC__useruser_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean MNCC__useruser_template::match(const MNCC__useruser& 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.proto().is_bound()) return FALSE; +if(!single_value->field_proto.match(other_value.proto(), legacy))return FALSE; +if(!other_value.info().is_bound()) return FALSE; +if(!single_value->field_info.match(other_value.info(), legacy))return FALSE; +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of type @MNCC_Types.MNCC_useruser."); +} +return FALSE; +} + +boolean MNCC__useruser_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +if (template_selection != SPECIFIC_VALUE) return TRUE; +if (single_value->field_proto.is_bound()) return TRUE; +if (single_value->field_info.is_bound()) return TRUE; +return FALSE; +} + +boolean MNCC__useruser_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +if (!single_value->field_proto.is_value()) return FALSE; +if (!single_value->field_info.is_value()) return FALSE; +return TRUE; +} + +void MNCC__useruser_template::clean_up() +{ +switch (template_selection) { +case SPECIFIC_VALUE: +delete single_value; +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +delete [] value_list.list_value; +default: +break; +} +template_selection = UNINITIALIZED_TEMPLATE; +} + +MNCC__useruser MNCC__useruser_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 @MNCC_Types.MNCC_useruser."); +MNCC__useruser ret_val; +if (single_value->field_proto.is_bound()) { +ret_val.proto() = single_value->field_proto.valueof(); +} +if (single_value->field_info.is_bound()) { +ret_val.info() = single_value->field_info.valueof(); +} +return ret_val; +} + +void MNCC__useruser_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) +TTCN_error("Setting an invalid list for a template of type @MNCC_Types.MNCC_useruser."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new MNCC__useruser_template[list_length]; +} + +MNCC__useruser_template& MNCC__useruser_template::list_item(unsigned int list_index) const +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) +TTCN_error("Accessing a list element of a non-list template of type @MNCC_Types.MNCC_useruser."); +if (list_index >= value_list.n_values) +TTCN_error("Index overflow in a value list template of type @MNCC_Types.MNCC_useruser."); +return value_list.list_value[list_index]; +} + +INTEGER_template& MNCC__useruser_template::proto() +{ +set_specific(); +return single_value->field_proto; +} + +const INTEGER_template& MNCC__useruser_template::proto() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field proto of a non-specific template of type @MNCC_Types.MNCC_useruser."); +return single_value->field_proto; +} + +CHARSTRING_template& MNCC__useruser_template::info() +{ +set_specific(); +return single_value->field_info; +} + +const CHARSTRING_template& MNCC__useruser_template::info() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field info of a non-specific template of type @MNCC_Types.MNCC_useruser."); +return single_value->field_info; +} + +int MNCC__useruser_template::size_of() const +{ + if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_useruser 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 @MNCC_Types.MNCC_useruser 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 @MNCC_Types.MNCC_useruser containing a value list with different sizes."); + } + return item_size; + } + case OMIT_VALUE: + TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_useruser containing omit value."); + case ANY_VALUE: + case ANY_OR_OMIT: + TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_useruser containing */? value."); + case COMPLEMENTED_LIST: + TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_useruser containing complemented list."); + default: + TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @MNCC_Types.MNCC_useruser."); + } + return 0; +} + +void MNCC__useruser_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_str("{ proto := "); +single_value->field_proto.log(); +TTCN_Logger::log_event_str(", info := "); +single_value->field_info.log(); +TTCN_Logger::log_event_str(" }"); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { +if (list_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[list_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void MNCC__useruser_template::log_match(const MNCC__useruser& 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_proto.match(match_value.proto(), legacy)){ +TTCN_Logger::log_logmatch_info(".proto"); +single_value->field_proto.log_match(match_value.proto(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_info.match(match_value.info(), legacy)){ +TTCN_Logger::log_logmatch_info(".info"); +single_value->field_info.log_match(match_value.info(), 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("{ proto := "); +single_value->field_proto.log_match(match_value.proto(), legacy); +TTCN_Logger::log_event_str(", info := "); +single_value->field_info.log_match(match_value.info(), 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 MNCC__useruser_template::encode_text(Text_Buf& text_buf) const +{ +encode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value->field_proto.encode_text(text_buf); +single_value->field_info.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 @MNCC_Types.MNCC_useruser."); +} +} + +void MNCC__useruser_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_proto.decode_text(text_buf); +single_value->field_info.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 MNCC__useruser_template[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 @MNCC_Types.MNCC_useruser."); +} +} + +void MNCC__useruser_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: { + MNCC__useruser_template new_temp; + new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); + for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) proto().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) info().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(), "proto")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + proto().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "info")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + info().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @MNCC_Types.MNCC_useruser: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record template", "@MNCC_Types.MNCC_useruser"); + } + is_ifpresent = param.get_ifpresent(); +} + +void MNCC__useruser_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_proto.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_useruser"); +single_value->field_info.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_useruser"); +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 : "@MNCC_Types.MNCC_useruser"); +} + +boolean MNCC__useruser_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean MNCC__useruser_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) coding().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) location().set_param(*param.get_elem(1)); + if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) descr().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(), "coding")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + coding().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "location")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + location().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "descr")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + descr().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @MNCC_Types.MNCC_progress: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record value", "@MNCC_Types.MNCC_progress"); + } +} + +void MNCC__progress::set_implicit_omit() +{ +if (coding().is_bound()) coding().set_implicit_omit(); +if (location().is_bound()) location().set_implicit_omit(); +if (descr().is_bound()) descr().set_implicit_omit(); +} + +void MNCC__progress::encode_text(Text_Buf& text_buf) const +{ +field_coding.encode_text(text_buf); +field_location.encode_text(text_buf); +field_descr.encode_text(text_buf); +} + +void MNCC__progress::decode_text(Text_Buf& text_buf) +{ +field_coding.decode_text(text_buf); +field_location.decode_text(text_buf); +field_descr.decode_text(text_buf); +} + +void MNCC__progress::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void MNCC__progress::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int MNCC__progress::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) +{ (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; + decoded_field_length = field_coding.RAW_decode(MNCC__progress_coding_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_location.RAW_decode(MNCC__progress_location_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_descr.RAW_decode(MNCC__progress_descr_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return 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 MNCC__progress::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, MNCC__progress_coding_descr_.raw); + myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, MNCC__progress_location_descr_.raw); + myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, MNCC__progress_descr_descr_.raw); + encoded_length += field_coding.RAW_encode(MNCC__progress_coding_descr_, *myleaf.body.node.nodes[0]); + encoded_length += field_location.RAW_encode(MNCC__progress_location_descr_, *myleaf.body.node.nodes[1]); + encoded_length += field_descr.RAW_encode(MNCC__progress_descr_descr_, *myleaf.body.node.nodes[2]); + return myleaf.length = encoded_length; +} + +struct MNCC__progress_template::single_value_struct { +INTEGER_template field_coding; +INTEGER_template field_location; +INTEGER_template field_descr; +}; + +void MNCC__progress_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_coding = ANY_VALUE; +single_value->field_location = ANY_VALUE; +single_value->field_descr = ANY_VALUE; +} +} +} + +void MNCC__progress_template::copy_value(const MNCC__progress& other_value) +{ +single_value = new single_value_struct; +if (other_value.coding().is_bound()) { + single_value->field_coding = other_value.coding(); +} else { + single_value->field_coding.clean_up(); +} +if (other_value.location().is_bound()) { + single_value->field_location = other_value.location(); +} else { + single_value->field_location.clean_up(); +} +if (other_value.descr().is_bound()) { + single_value->field_descr = other_value.descr(); +} else { + single_value->field_descr.clean_up(); +} +set_selection(SPECIFIC_VALUE); +} + +void MNCC__progress_template::copy_template(const MNCC__progress_template& other_value) +{ +switch (other_value.template_selection) { +case SPECIFIC_VALUE: +single_value = new single_value_struct; +if (UNINITIALIZED_TEMPLATE != other_value.coding().get_selection()) { +single_value->field_coding = other_value.coding(); +} else { +single_value->field_coding.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.location().get_selection()) { +single_value->field_location = other_value.location(); +} else { +single_value->field_location.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.descr().get_selection()) { +single_value->field_descr = other_value.descr(); +} else { +single_value->field_descr.clean_up(); +} +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new MNCC__progress_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of type @MNCC_Types.MNCC_progress."); +break; +} +set_selection(other_value); +} + +MNCC__progress_template::MNCC__progress_template() +{ +} + +MNCC__progress_template::MNCC__progress_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +MNCC__progress_template::MNCC__progress_template(const MNCC__progress& other_value) +{ +copy_value(other_value); +} + +MNCC__progress_template::MNCC__progress_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const MNCC__progress&)other_value); +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of type @MNCC_Types.MNCC_progress from an unbound optional field."); +} +} + +MNCC__progress_template::MNCC__progress_template(const MNCC__progress_template& other_value) +: Base_Template() +{ +copy_template(other_value); +} + +MNCC__progress_template::~MNCC__progress_template() +{ +clean_up(); +} + +MNCC__progress_template& MNCC__progress_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +MNCC__progress_template& MNCC__progress_template::operator=(const MNCC__progress& other_value) +{ +clean_up(); +copy_value(other_value); +return *this; +} + +MNCC__progress_template& MNCC__progress_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const MNCC__progress&)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 @MNCC_Types.MNCC_progress."); +} +return *this; +} + +MNCC__progress_template& MNCC__progress_template::operator=(const MNCC__progress_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean MNCC__progress_template::match(const MNCC__progress& 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.coding().is_bound()) return FALSE; +if(!single_value->field_coding.match(other_value.coding(), legacy))return FALSE; +if(!other_value.location().is_bound()) return FALSE; +if(!single_value->field_location.match(other_value.location(), legacy))return FALSE; +if(!other_value.descr().is_bound()) return FALSE; +if(!single_value->field_descr.match(other_value.descr(), legacy))return FALSE; +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of type @MNCC_Types.MNCC_progress."); +} +return FALSE; +} + +boolean MNCC__progress_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +if (template_selection != SPECIFIC_VALUE) return TRUE; +if (single_value->field_coding.is_bound()) return TRUE; +if (single_value->field_location.is_bound()) return TRUE; +if (single_value->field_descr.is_bound()) return TRUE; +return FALSE; +} + +boolean MNCC__progress_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +if (!single_value->field_coding.is_value()) return FALSE; +if (!single_value->field_location.is_value()) return FALSE; +if (!single_value->field_descr.is_value()) return FALSE; +return TRUE; +} + +void MNCC__progress_template::clean_up() +{ +switch (template_selection) { +case SPECIFIC_VALUE: +delete single_value; +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +delete [] value_list.list_value; +default: +break; +} +template_selection = UNINITIALIZED_TEMPLATE; +} + +MNCC__progress MNCC__progress_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 @MNCC_Types.MNCC_progress."); +MNCC__progress ret_val; +if (single_value->field_coding.is_bound()) { +ret_val.coding() = single_value->field_coding.valueof(); +} +if (single_value->field_location.is_bound()) { +ret_val.location() = single_value->field_location.valueof(); +} +if (single_value->field_descr.is_bound()) { +ret_val.descr() = single_value->field_descr.valueof(); +} +return ret_val; +} + +void MNCC__progress_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) +TTCN_error("Setting an invalid list for a template of type @MNCC_Types.MNCC_progress."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new MNCC__progress_template[list_length]; +} + +MNCC__progress_template& MNCC__progress_template::list_item(unsigned int list_index) const +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) +TTCN_error("Accessing a list element of a non-list template of type @MNCC_Types.MNCC_progress."); +if (list_index >= value_list.n_values) +TTCN_error("Index overflow in a value list template of type @MNCC_Types.MNCC_progress."); +return value_list.list_value[list_index]; +} + +INTEGER_template& MNCC__progress_template::coding() +{ +set_specific(); +return single_value->field_coding; +} + +const INTEGER_template& MNCC__progress_template::coding() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field coding of a non-specific template of type @MNCC_Types.MNCC_progress."); +return single_value->field_coding; +} + +INTEGER_template& MNCC__progress_template::location() +{ +set_specific(); +return single_value->field_location; +} + +const INTEGER_template& MNCC__progress_template::location() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field location of a non-specific template of type @MNCC_Types.MNCC_progress."); +return single_value->field_location; +} + +INTEGER_template& MNCC__progress_template::descr() +{ +set_specific(); +return single_value->field_descr; +} + +const INTEGER_template& MNCC__progress_template::descr() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field descr of a non-specific template of type @MNCC_Types.MNCC_progress."); +return single_value->field_descr; +} + +int MNCC__progress_template::size_of() const +{ + if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_progress 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 @MNCC_Types.MNCC_progress 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 @MNCC_Types.MNCC_progress containing a value list with different sizes."); + } + return item_size; + } + case OMIT_VALUE: + TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_progress containing omit value."); + case ANY_VALUE: + case ANY_OR_OMIT: + TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_progress containing */? value."); + case COMPLEMENTED_LIST: + TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_progress containing complemented list."); + default: + TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @MNCC_Types.MNCC_progress."); + } + return 0; +} + +void MNCC__progress_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_str("{ coding := "); +single_value->field_coding.log(); +TTCN_Logger::log_event_str(", location := "); +single_value->field_location.log(); +TTCN_Logger::log_event_str(", descr := "); +single_value->field_descr.log(); +TTCN_Logger::log_event_str(" }"); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { +if (list_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[list_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void MNCC__progress_template::log_match(const MNCC__progress& 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_coding.match(match_value.coding(), legacy)){ +TTCN_Logger::log_logmatch_info(".coding"); +single_value->field_coding.log_match(match_value.coding(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_location.match(match_value.location(), legacy)){ +TTCN_Logger::log_logmatch_info(".location"); +single_value->field_location.log_match(match_value.location(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_descr.match(match_value.descr(), legacy)){ +TTCN_Logger::log_logmatch_info(".descr"); +single_value->field_descr.log_match(match_value.descr(), 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("{ coding := "); +single_value->field_coding.log_match(match_value.coding(), legacy); +TTCN_Logger::log_event_str(", location := "); +single_value->field_location.log_match(match_value.location(), legacy); +TTCN_Logger::log_event_str(", descr := "); +single_value->field_descr.log_match(match_value.descr(), 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 MNCC__progress_template::encode_text(Text_Buf& text_buf) const +{ +encode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value->field_coding.encode_text(text_buf); +single_value->field_location.encode_text(text_buf); +single_value->field_descr.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 @MNCC_Types.MNCC_progress."); +} +} + +void MNCC__progress_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_coding.decode_text(text_buf); +single_value->field_location.decode_text(text_buf); +single_value->field_descr.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 MNCC__progress_template[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 @MNCC_Types.MNCC_progress."); +} +} + +void MNCC__progress_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: { + MNCC__progress_template new_temp; + new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); + for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) coding().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) location().set_param(*param.get_elem(1)); + if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) descr().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(), "coding")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + coding().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "location")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + location().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "descr")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + descr().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @MNCC_Types.MNCC_progress: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record template", "@MNCC_Types.MNCC_progress"); + } + is_ifpresent = param.get_ifpresent(); +} + +void MNCC__progress_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_coding.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_progress"); +single_value->field_location.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_progress"); +single_value->field_descr.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_progress"); +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 : "@MNCC_Types.MNCC_progress"); +} + +boolean MNCC__progress_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean MNCC__progress_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) dtmf().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) pcp().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(), "dtmf")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + dtmf().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "pcp")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + pcp().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @MNCC_Types.MNCC_cccap: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record value", "@MNCC_Types.MNCC_cccap"); + } +} + +void MNCC__cccap::set_implicit_omit() +{ +if (dtmf().is_bound()) dtmf().set_implicit_omit(); +if (pcp().is_bound()) pcp().set_implicit_omit(); +} + +void MNCC__cccap::encode_text(Text_Buf& text_buf) const +{ +field_dtmf.encode_text(text_buf); +field_pcp.encode_text(text_buf); +} + +void MNCC__cccap::decode_text(Text_Buf& text_buf) +{ +field_dtmf.decode_text(text_buf); +field_pcp.decode_text(text_buf); +} + +void MNCC__cccap::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void MNCC__cccap::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int MNCC__cccap::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) +{ (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; + decoded_field_length = field_dtmf.RAW_decode(MNCC__cccap_dtmf_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_pcp.RAW_decode(MNCC__cccap_pcp_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return 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 MNCC__cccap::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, MNCC__cccap_dtmf_descr_.raw); + myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, MNCC__cccap_pcp_descr_.raw); + encoded_length += field_dtmf.RAW_encode(MNCC__cccap_dtmf_descr_, *myleaf.body.node.nodes[0]); + encoded_length += field_pcp.RAW_encode(MNCC__cccap_pcp_descr_, *myleaf.body.node.nodes[1]); + return myleaf.length = encoded_length; +} + +struct MNCC__cccap_template::single_value_struct { +INTEGER_template field_dtmf; +INTEGER_template field_pcp; +}; + +void MNCC__cccap_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_dtmf = ANY_VALUE; +single_value->field_pcp = ANY_VALUE; +} +} +} + +void MNCC__cccap_template::copy_value(const MNCC__cccap& other_value) +{ +single_value = new single_value_struct; +if (other_value.dtmf().is_bound()) { + single_value->field_dtmf = other_value.dtmf(); +} else { + single_value->field_dtmf.clean_up(); +} +if (other_value.pcp().is_bound()) { + single_value->field_pcp = other_value.pcp(); +} else { + single_value->field_pcp.clean_up(); +} +set_selection(SPECIFIC_VALUE); +} + +void MNCC__cccap_template::copy_template(const MNCC__cccap_template& other_value) +{ +switch (other_value.template_selection) { +case SPECIFIC_VALUE: +single_value = new single_value_struct; +if (UNINITIALIZED_TEMPLATE != other_value.dtmf().get_selection()) { +single_value->field_dtmf = other_value.dtmf(); +} else { +single_value->field_dtmf.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.pcp().get_selection()) { +single_value->field_pcp = other_value.pcp(); +} else { +single_value->field_pcp.clean_up(); +} +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new MNCC__cccap_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of type @MNCC_Types.MNCC_cccap."); +break; +} +set_selection(other_value); +} + +MNCC__cccap_template::MNCC__cccap_template() +{ +} + +MNCC__cccap_template::MNCC__cccap_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +MNCC__cccap_template::MNCC__cccap_template(const MNCC__cccap& other_value) +{ +copy_value(other_value); +} + +MNCC__cccap_template::MNCC__cccap_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const MNCC__cccap&)other_value); +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of type @MNCC_Types.MNCC_cccap from an unbound optional field."); +} +} + +MNCC__cccap_template::MNCC__cccap_template(const MNCC__cccap_template& other_value) +: Base_Template() +{ +copy_template(other_value); +} + +MNCC__cccap_template::~MNCC__cccap_template() +{ +clean_up(); +} + +MNCC__cccap_template& MNCC__cccap_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +MNCC__cccap_template& MNCC__cccap_template::operator=(const MNCC__cccap& other_value) +{ +clean_up(); +copy_value(other_value); +return *this; +} + +MNCC__cccap_template& MNCC__cccap_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const MNCC__cccap&)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 @MNCC_Types.MNCC_cccap."); +} +return *this; +} + +MNCC__cccap_template& MNCC__cccap_template::operator=(const MNCC__cccap_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean MNCC__cccap_template::match(const MNCC__cccap& 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.dtmf().is_bound()) return FALSE; +if(!single_value->field_dtmf.match(other_value.dtmf(), legacy))return FALSE; +if(!other_value.pcp().is_bound()) return FALSE; +if(!single_value->field_pcp.match(other_value.pcp(), legacy))return FALSE; +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of type @MNCC_Types.MNCC_cccap."); +} +return FALSE; +} + +boolean MNCC__cccap_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +if (template_selection != SPECIFIC_VALUE) return TRUE; +if (single_value->field_dtmf.is_bound()) return TRUE; +if (single_value->field_pcp.is_bound()) return TRUE; +return FALSE; +} + +boolean MNCC__cccap_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +if (!single_value->field_dtmf.is_value()) return FALSE; +if (!single_value->field_pcp.is_value()) return FALSE; +return TRUE; +} + +void MNCC__cccap_template::clean_up() +{ +switch (template_selection) { +case SPECIFIC_VALUE: +delete single_value; +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +delete [] value_list.list_value; +default: +break; +} +template_selection = UNINITIALIZED_TEMPLATE; +} + +MNCC__cccap MNCC__cccap_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 @MNCC_Types.MNCC_cccap."); +MNCC__cccap ret_val; +if (single_value->field_dtmf.is_bound()) { +ret_val.dtmf() = single_value->field_dtmf.valueof(); +} +if (single_value->field_pcp.is_bound()) { +ret_val.pcp() = single_value->field_pcp.valueof(); +} +return ret_val; +} + +void MNCC__cccap_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) +TTCN_error("Setting an invalid list for a template of type @MNCC_Types.MNCC_cccap."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new MNCC__cccap_template[list_length]; +} + +MNCC__cccap_template& MNCC__cccap_template::list_item(unsigned int list_index) const +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) +TTCN_error("Accessing a list element of a non-list template of type @MNCC_Types.MNCC_cccap."); +if (list_index >= value_list.n_values) +TTCN_error("Index overflow in a value list template of type @MNCC_Types.MNCC_cccap."); +return value_list.list_value[list_index]; +} + +INTEGER_template& MNCC__cccap_template::dtmf() +{ +set_specific(); +return single_value->field_dtmf; +} + +const INTEGER_template& MNCC__cccap_template::dtmf() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field dtmf of a non-specific template of type @MNCC_Types.MNCC_cccap."); +return single_value->field_dtmf; +} + +INTEGER_template& MNCC__cccap_template::pcp() +{ +set_specific(); +return single_value->field_pcp; +} + +const INTEGER_template& MNCC__cccap_template::pcp() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field pcp of a non-specific template of type @MNCC_Types.MNCC_cccap."); +return single_value->field_pcp; +} + +int MNCC__cccap_template::size_of() const +{ + if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_cccap 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 @MNCC_Types.MNCC_cccap 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 @MNCC_Types.MNCC_cccap containing a value list with different sizes."); + } + return item_size; + } + case OMIT_VALUE: + TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_cccap containing omit value."); + case ANY_VALUE: + case ANY_OR_OMIT: + TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_cccap containing */? value."); + case COMPLEMENTED_LIST: + TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_cccap containing complemented list."); + default: + TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @MNCC_Types.MNCC_cccap."); + } + return 0; +} + +void MNCC__cccap_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_str("{ dtmf := "); +single_value->field_dtmf.log(); +TTCN_Logger::log_event_str(", pcp := "); +single_value->field_pcp.log(); +TTCN_Logger::log_event_str(" }"); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { +if (list_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[list_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void MNCC__cccap_template::log_match(const MNCC__cccap& 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_dtmf.match(match_value.dtmf(), legacy)){ +TTCN_Logger::log_logmatch_info(".dtmf"); +single_value->field_dtmf.log_match(match_value.dtmf(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_pcp.match(match_value.pcp(), legacy)){ +TTCN_Logger::log_logmatch_info(".pcp"); +single_value->field_pcp.log_match(match_value.pcp(), 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("{ dtmf := "); +single_value->field_dtmf.log_match(match_value.dtmf(), legacy); +TTCN_Logger::log_event_str(", pcp := "); +single_value->field_pcp.log_match(match_value.pcp(), 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 MNCC__cccap_template::encode_text(Text_Buf& text_buf) const +{ +encode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value->field_dtmf.encode_text(text_buf); +single_value->field_pcp.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 @MNCC_Types.MNCC_cccap."); +} +} + +void MNCC__cccap_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_dtmf.decode_text(text_buf); +single_value->field_pcp.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 MNCC__cccap_template[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 @MNCC_Types.MNCC_cccap."); +} +} + +void MNCC__cccap_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: { + MNCC__cccap_template new_temp; + new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); + for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) dtmf().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) pcp().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(), "dtmf")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + dtmf().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "pcp")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + pcp().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @MNCC_Types.MNCC_cccap: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record template", "@MNCC_Types.MNCC_cccap"); + } + is_ifpresent = param.get_ifpresent(); +} + +void MNCC__cccap_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_dtmf.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_cccap"); +single_value->field_pcp.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_cccap"); +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 : "@MNCC_Types.MNCC_cccap"); +} + +boolean MNCC__cccap_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean MNCC__cccap_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int l_idx=0; l_idx(enum_type other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.MNCC_bcap."); +return enum_value > other_value; +} + +boolean MNCC__bcap::operator>(const MNCC__bcap& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @MNCC_Types.MNCC_bcap."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @MNCC_Types.MNCC_bcap."); +return enum_value > other_value.enum_value; +} + +const char *MNCC__bcap::enum_to_str(enum_type enum_par) +{ +switch (enum_par) { +case GSM__MNCC__BCAP__SPEECH: return "GSM_MNCC_BCAP_SPEECH"; +case GSM__MNCC__BCAP__UNR__DIG: return "GSM_MNCC_BCAP_UNR_DIG"; +case GSM__MNCC__BCAP__AUDIO: return "GSM_MNCC_BCAP_AUDIO"; +case GSM__MNCC__BCAP__FAX__G3: return "GSM_MNCC_BCAP_FAX_G3"; +case GSM__MNCC__BCAP__OTHER__ITC: return "GSM_MNCC_BCAP_OTHER_ITC"; +case GSM__MNCC__BCAP__RESERVED: return "GSM_MNCC_BCAP_RESERVED"; +default: return ""; +} +} + +MNCC__bcap::enum_type MNCC__bcap::str_to_enum(const char *str_par) +{ +if (!strcmp(str_par, "GSM_MNCC_BCAP_SPEECH")) return GSM__MNCC__BCAP__SPEECH; +else if (!strcmp(str_par, "GSM_MNCC_BCAP_UNR_DIG")) return GSM__MNCC__BCAP__UNR__DIG; +else if (!strcmp(str_par, "GSM_MNCC_BCAP_AUDIO")) return GSM__MNCC__BCAP__AUDIO; +else if (!strcmp(str_par, "GSM_MNCC_BCAP_FAX_G3")) return GSM__MNCC__BCAP__FAX__G3; +else if (!strcmp(str_par, "GSM_MNCC_BCAP_OTHER_ITC")) return GSM__MNCC__BCAP__OTHER__ITC; +else if (!strcmp(str_par, "GSM_MNCC_BCAP_RESERVED")) return GSM__MNCC__BCAP__RESERVED; +else return UNKNOWN_VALUE; +} + +boolean MNCC__bcap::is_valid_enum(int int_par) +{ +switch (int_par) { +case 0: +case 1: +case 2: +case 3: +case 4: +case 7: +return TRUE; +default: +return FALSE; +} +} + +int MNCC__bcap::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 @MNCC_Types.MNCC_bcap.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); +return enum_par; +} + +int MNCC__bcap::enum2int(const MNCC__bcap& 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 @MNCC_Types.MNCC_bcap.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); +return enum_par.enum_value; +} + +void MNCC__bcap::int2enum(int int_val) +{ +if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @MNCC_Types.MNCC_bcap.", int_val); +enum_value = (enum_type)int_val; +} + +MNCC__bcap::operator MNCC__bcap::enum_type() const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @MNCC_Types.MNCC_bcap."); +return enum_value; +} + +void MNCC__bcap::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 MNCC__bcap::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", "@MNCC_Types.MNCC_bcap"); + enum_value = str_to_enum(param.get_enumerated()); + if (!is_valid_enum(enum_value)) { + param.error("Invalid enumerated value for type @MNCC_Types.MNCC_bcap."); + } +} + +void MNCC__bcap::encode_text(Text_Buf& text_buf) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @MNCC_Types.MNCC_bcap."); +text_buf.push_int(enum_value); +} + +void MNCC__bcap::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 @MNCC_Types.MNCC_bcap.", enum_value); +} + +void MNCC__bcap::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void MNCC__bcap::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int MNCC__bcap::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) +{ + 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 MNCC__bcap::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 MNCC__bcap_template::copy_template(const MNCC__bcap_template& other_value) +{ +set_selection(other_value); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = other_value.single_value; +break; +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new MNCC__bcap_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of enumerated type @MNCC_Types.MNCC_bcap."); +} +} + +MNCC__bcap_template::MNCC__bcap_template() +{ +} + +MNCC__bcap_template::MNCC__bcap_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +MNCC__bcap_template::MNCC__bcap_template(int other_value) + : Base_Template(SPECIFIC_VALUE) +{ +if (!MNCC__bcap::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @MNCC_Types.MNCC_bcap with unknown numeric value %d.", other_value); +single_value = (MNCC__bcap::enum_type)other_value; +} + +MNCC__bcap_template::MNCC__bcap_template(MNCC__bcap::enum_type other_value) + : Base_Template(SPECIFIC_VALUE) +{ +single_value = other_value; +} + +MNCC__bcap_template::MNCC__bcap_template(const MNCC__bcap& other_value) + : Base_Template(SPECIFIC_VALUE) +{ +if (other_value.enum_value == MNCC__bcap::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @MNCC_Types.MNCC_bcap."); +single_value = other_value.enum_value; +} + +MNCC__bcap_template::MNCC__bcap_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +set_selection(SPECIFIC_VALUE); +single_value = (MNCC__bcap::enum_type)(const MNCC__bcap&)other_value; +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of enumerated type @MNCC_Types.MNCC_bcap from an unbound optional field."); +} +} + +MNCC__bcap_template::MNCC__bcap_template(const MNCC__bcap_template& other_value) + : Base_Template() +{ +copy_template(other_value); +} + +MNCC__bcap_template::~MNCC__bcap_template() +{ +clean_up(); +} + +boolean MNCC__bcap_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +return TRUE; +} + +boolean MNCC__bcap_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +return single_value != MNCC__bcap::UNBOUND_VALUE; +} + +void MNCC__bcap_template::clean_up() +{ +if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value; +template_selection = UNINITIALIZED_TEMPLATE; +} + +MNCC__bcap_template& MNCC__bcap_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +MNCC__bcap_template& MNCC__bcap_template::operator=(int other_value) +{ +if (!MNCC__bcap::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @MNCC_Types.MNCC_bcap.", other_value); +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = (MNCC__bcap::enum_type)other_value; +return *this; +} + +MNCC__bcap_template& MNCC__bcap_template::operator=(MNCC__bcap::enum_type other_value) +{ +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = other_value; +return *this; +} + +MNCC__bcap_template& MNCC__bcap_template::operator=(const MNCC__bcap& other_value) +{ +if (other_value.enum_value == MNCC__bcap::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @MNCC_Types.MNCC_bcap to a template."); +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = other_value.enum_value; +return *this; +} + +MNCC__bcap_template& MNCC__bcap_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +set_selection(SPECIFIC_VALUE); +single_value = (MNCC__bcap::enum_type)(const MNCC__bcap&)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 @MNCC_Types.MNCC_bcap."); +} +return *this; +} + +MNCC__bcap_template& MNCC__bcap_template::operator=(const MNCC__bcap_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean MNCC__bcap_template::match(MNCC__bcap::enum_type other_value, boolean) const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +return single_value == other_value; +case OMIT_VALUE: +return FALSE; +case ANY_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of enumerated type @MNCC_Types.MNCC_bcap."); +} +return FALSE; +} + +boolean MNCC__bcap_template::match(const MNCC__bcap& other_value, boolean) const +{ +if (other_value.enum_value == MNCC__bcap::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @MNCC_Types.MNCC_bcap with an unbound value."); +return match(other_value.enum_value); +} + +MNCC__bcap::enum_type MNCC__bcap_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 @MNCC_Types.MNCC_bcap."); +return single_value; +} + +void MNCC__bcap_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @MNCC_Types.MNCC_bcap."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new MNCC__bcap_template[list_length]; +} + +MNCC__bcap_template& MNCC__bcap_template::list_item(unsigned int list_index) +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @MNCC_Types.MNCC_bcap."); +if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @MNCC_Types.MNCC_bcap."); +return value_list.list_value[list_index]; +} + +void MNCC__bcap_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_enum(MNCC__bcap::enum_to_str(single_value), single_value); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { +if (elem_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[elem_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void MNCC__bcap_template::log_match(const MNCC__bcap& 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 MNCC__bcap_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 @MNCC_Types.MNCC_bcap."); +} +} + +void MNCC__bcap_template::decode_text(Text_Buf& text_buf) +{ +clean_up(); +decode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = (MNCC__bcap::enum_type)text_buf.pull_int().get_val(); +if (!MNCC__bcap::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @MNCC_Types.MNCC_bcap.", 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 MNCC__bcap_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 @MNCC_Types.MNCC_bcap."); +} +} + +boolean MNCC__bcap_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean MNCC__bcap_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int i=0; 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: { + MNCC__bcap_template new_temp; + new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, m_p->get_size()); + for (size_t p_i=0; p_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: { + MNCC__bcap::enum_type enum_val = MNCC__bcap::str_to_enum(m_p->get_enumerated()); + if (!MNCC__bcap::is_valid_enum(enum_val)) { + param.error("Invalid enumerated value for type @MNCC_Types.MNCC_bcap."); + } + *this = enum_val; + } break; + default: + param.type_error("enumerated template", "@MNCC_Types.MNCC_bcap"); + } + is_ifpresent = param.get_ifpresent(); +} + +void MNCC__bcap_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 : "@MNCC_Types.MNCC_bcap"); +} + +MNCC__PDU__Signal::MNCC__PDU__Signal() +{ +} + +MNCC__PDU__Signal::MNCC__PDU__Signal(const INTEGER& par_callref, + const OPTIONAL& par_bearer__cap, + const OPTIONAL& par_called, + const OPTIONAL& par_calling, + const OPTIONAL& par_redirecting, + const OPTIONAL& par_connected, + const OPTIONAL& par_cause, + const OPTIONAL& par_progress, + const OPTIONAL& par_useruser, + const OPTIONAL& par_facility, + const OPTIONAL& par_cccap, + const OPTIONAL& par_ssversion, + const INTEGER& par_clir__sup, + const INTEGER& par_clir__inv, + const OPTIONAL& par_signal, + const OPTIONAL& par_keypad, + const INTEGER& par_more, + const INTEGER& par_notify, + const OPTIONAL& par_emergency, + const CHARSTRING& par_imsi, + const INTEGER& par_lchan__type, + const INTEGER& par_lchan__mode) + : field_callref(par_callref), + field_bearer__cap(par_bearer__cap), + field_called(par_called), + field_calling(par_calling), + field_redirecting(par_redirecting), + field_connected(par_connected), + field_cause(par_cause), + field_progress(par_progress), + field_useruser(par_useruser), + field_facility(par_facility), + field_cccap(par_cccap), + field_ssversion(par_ssversion), + field_clir__sup(par_clir__sup), + field_clir__inv(par_clir__inv), + field_signal(par_signal), + field_keypad(par_keypad), + field_more(par_more), + field_notify(par_notify), + field_emergency(par_emergency), + field_imsi(par_imsi), + field_lchan__type(par_lchan__type), + field_lchan__mode(par_lchan__mode) +{ +} + +MNCC__PDU__Signal::MNCC__PDU__Signal(const MNCC__PDU__Signal& other_value) +{ +if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @MNCC_Types.MNCC_PDU_Signal."); +if (other_value.callref().is_bound()) field_callref = other_value.callref(); +else field_callref.clean_up(); +if (other_value.bearer__cap().is_bound()) field_bearer__cap = other_value.bearer__cap(); +else field_bearer__cap.clean_up(); +if (other_value.called().is_bound()) field_called = other_value.called(); +else field_called.clean_up(); +if (other_value.calling().is_bound()) field_calling = other_value.calling(); +else field_calling.clean_up(); +if (other_value.redirecting().is_bound()) field_redirecting = other_value.redirecting(); +else field_redirecting.clean_up(); +if (other_value.connected().is_bound()) field_connected = other_value.connected(); +else field_connected.clean_up(); +if (other_value.cause().is_bound()) field_cause = other_value.cause(); +else field_cause.clean_up(); +if (other_value.progress().is_bound()) field_progress = other_value.progress(); +else field_progress.clean_up(); +if (other_value.useruser().is_bound()) field_useruser = other_value.useruser(); +else field_useruser.clean_up(); +if (other_value.facility().is_bound()) field_facility = other_value.facility(); +else field_facility.clean_up(); +if (other_value.cccap().is_bound()) field_cccap = other_value.cccap(); +else field_cccap.clean_up(); +if (other_value.ssversion().is_bound()) field_ssversion = other_value.ssversion(); +else field_ssversion.clean_up(); +if (other_value.clir__sup().is_bound()) field_clir__sup = other_value.clir__sup(); +else field_clir__sup.clean_up(); +if (other_value.clir__inv().is_bound()) field_clir__inv = other_value.clir__inv(); +else field_clir__inv.clean_up(); +if (other_value.signal().is_bound()) field_signal = other_value.signal(); +else field_signal.clean_up(); +if (other_value.keypad().is_bound()) field_keypad = other_value.keypad(); +else field_keypad.clean_up(); +if (other_value.more().is_bound()) field_more = other_value.more(); +else field_more.clean_up(); +if (other_value.notify().is_bound()) field_notify = other_value.notify(); +else field_notify.clean_up(); +if (other_value.emergency().is_bound()) field_emergency = other_value.emergency(); +else field_emergency.clean_up(); +if (other_value.imsi().is_bound()) field_imsi = other_value.imsi(); +else field_imsi.clean_up(); +if (other_value.lchan__type().is_bound()) field_lchan__type = other_value.lchan__type(); +else field_lchan__type.clean_up(); +if (other_value.lchan__mode().is_bound()) field_lchan__mode = other_value.lchan__mode(); +else field_lchan__mode.clean_up(); +} + +void MNCC__PDU__Signal::clean_up() +{ +field_callref.clean_up(); +field_bearer__cap.clean_up(); +field_called.clean_up(); +field_calling.clean_up(); +field_redirecting.clean_up(); +field_connected.clean_up(); +field_cause.clean_up(); +field_progress.clean_up(); +field_useruser.clean_up(); +field_facility.clean_up(); +field_cccap.clean_up(); +field_ssversion.clean_up(); +field_clir__sup.clean_up(); +field_clir__inv.clean_up(); +field_signal.clean_up(); +field_keypad.clean_up(); +field_more.clean_up(); +field_notify.clean_up(); +field_emergency.clean_up(); +field_imsi.clean_up(); +field_lchan__type.clean_up(); +field_lchan__mode.clean_up(); +} + +MNCC__PDU__Signal& MNCC__PDU__Signal::operator=(const MNCC__PDU__Signal& other_value) +{ +if (this != &other_value) { + if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @MNCC_Types.MNCC_PDU_Signal."); + if (other_value.callref().is_bound()) field_callref = other_value.callref(); + else field_callref.clean_up(); + if (other_value.bearer__cap().is_bound()) field_bearer__cap = other_value.bearer__cap(); + else field_bearer__cap.clean_up(); + if (other_value.called().is_bound()) field_called = other_value.called(); + else field_called.clean_up(); + if (other_value.calling().is_bound()) field_calling = other_value.calling(); + else field_calling.clean_up(); + if (other_value.redirecting().is_bound()) field_redirecting = other_value.redirecting(); + else field_redirecting.clean_up(); + if (other_value.connected().is_bound()) field_connected = other_value.connected(); + else field_connected.clean_up(); + if (other_value.cause().is_bound()) field_cause = other_value.cause(); + else field_cause.clean_up(); + if (other_value.progress().is_bound()) field_progress = other_value.progress(); + else field_progress.clean_up(); + if (other_value.useruser().is_bound()) field_useruser = other_value.useruser(); + else field_useruser.clean_up(); + if (other_value.facility().is_bound()) field_facility = other_value.facility(); + else field_facility.clean_up(); + if (other_value.cccap().is_bound()) field_cccap = other_value.cccap(); + else field_cccap.clean_up(); + if (other_value.ssversion().is_bound()) field_ssversion = other_value.ssversion(); + else field_ssversion.clean_up(); + if (other_value.clir__sup().is_bound()) field_clir__sup = other_value.clir__sup(); + else field_clir__sup.clean_up(); + if (other_value.clir__inv().is_bound()) field_clir__inv = other_value.clir__inv(); + else field_clir__inv.clean_up(); + if (other_value.signal().is_bound()) field_signal = other_value.signal(); + else field_signal.clean_up(); + if (other_value.keypad().is_bound()) field_keypad = other_value.keypad(); + else field_keypad.clean_up(); + if (other_value.more().is_bound()) field_more = other_value.more(); + else field_more.clean_up(); + if (other_value.notify().is_bound()) field_notify = other_value.notify(); + else field_notify.clean_up(); + if (other_value.emergency().is_bound()) field_emergency = other_value.emergency(); + else field_emergency.clean_up(); + if (other_value.imsi().is_bound()) field_imsi = other_value.imsi(); + else field_imsi.clean_up(); + if (other_value.lchan__type().is_bound()) field_lchan__type = other_value.lchan__type(); + else field_lchan__type.clean_up(); + if (other_value.lchan__mode().is_bound()) field_lchan__mode = other_value.lchan__mode(); + else field_lchan__mode.clean_up(); +} +return *this; +} + +boolean MNCC__PDU__Signal::operator==(const MNCC__PDU__Signal& other_value) const +{ +return field_callref==other_value.field_callref + && field_bearer__cap==other_value.field_bearer__cap + && field_called==other_value.field_called + && field_calling==other_value.field_calling + && field_redirecting==other_value.field_redirecting + && field_connected==other_value.field_connected + && field_cause==other_value.field_cause + && field_progress==other_value.field_progress + && field_useruser==other_value.field_useruser + && field_facility==other_value.field_facility + && field_cccap==other_value.field_cccap + && field_ssversion==other_value.field_ssversion + && field_clir__sup==other_value.field_clir__sup + && field_clir__inv==other_value.field_clir__inv + && field_signal==other_value.field_signal + && field_keypad==other_value.field_keypad + && field_more==other_value.field_more + && field_notify==other_value.field_notify + && field_emergency==other_value.field_emergency + && field_imsi==other_value.field_imsi + && field_lchan__type==other_value.field_lchan__type + && field_lchan__mode==other_value.field_lchan__mode; +} + +boolean MNCC__PDU__Signal::is_bound() const +{ +if(field_callref.is_bound()) return TRUE; +if(OPTIONAL_OMIT == field_bearer__cap.get_selection() || field_bearer__cap.is_bound()) return TRUE; +if(OPTIONAL_OMIT == field_called.get_selection() || field_called.is_bound()) return TRUE; +if(OPTIONAL_OMIT == field_calling.get_selection() || field_calling.is_bound()) return TRUE; +if(OPTIONAL_OMIT == field_redirecting.get_selection() || field_redirecting.is_bound()) return TRUE; +if(OPTIONAL_OMIT == field_connected.get_selection() || field_connected.is_bound()) return TRUE; +if(OPTIONAL_OMIT == field_cause.get_selection() || field_cause.is_bound()) return TRUE; +if(OPTIONAL_OMIT == field_progress.get_selection() || field_progress.is_bound()) return TRUE; +if(OPTIONAL_OMIT == field_useruser.get_selection() || field_useruser.is_bound()) return TRUE; +if(OPTIONAL_OMIT == field_facility.get_selection() || field_facility.is_bound()) return TRUE; +if(OPTIONAL_OMIT == field_cccap.get_selection() || field_cccap.is_bound()) return TRUE; +if(OPTIONAL_OMIT == field_ssversion.get_selection() || field_ssversion.is_bound()) return TRUE; +if(field_clir__sup.is_bound()) return TRUE; +if(field_clir__inv.is_bound()) return TRUE; +if(OPTIONAL_OMIT == field_signal.get_selection() || field_signal.is_bound()) return TRUE; +if(OPTIONAL_OMIT == field_keypad.get_selection() || field_keypad.is_bound()) return TRUE; +if(field_more.is_bound()) return TRUE; +if(field_notify.is_bound()) return TRUE; +if(OPTIONAL_OMIT == field_emergency.get_selection() || field_emergency.is_bound()) return TRUE; +if(field_imsi.is_bound()) return TRUE; +if(field_lchan__type.is_bound()) return TRUE; +if(field_lchan__mode.is_bound()) return TRUE; +return FALSE; +} +boolean MNCC__PDU__Signal::is_value() const +{ +if(!field_callref.is_value()) return FALSE; +if(OPTIONAL_OMIT != field_bearer__cap.get_selection() && !field_bearer__cap.is_value()) return FALSE; +if(OPTIONAL_OMIT != field_called.get_selection() && !field_called.is_value()) return FALSE; +if(OPTIONAL_OMIT != field_calling.get_selection() && !field_calling.is_value()) return FALSE; +if(OPTIONAL_OMIT != field_redirecting.get_selection() && !field_redirecting.is_value()) return FALSE; +if(OPTIONAL_OMIT != field_connected.get_selection() && !field_connected.is_value()) return FALSE; +if(OPTIONAL_OMIT != field_cause.get_selection() && !field_cause.is_value()) return FALSE; +if(OPTIONAL_OMIT != field_progress.get_selection() && !field_progress.is_value()) return FALSE; +if(OPTIONAL_OMIT != field_useruser.get_selection() && !field_useruser.is_value()) return FALSE; +if(OPTIONAL_OMIT != field_facility.get_selection() && !field_facility.is_value()) return FALSE; +if(OPTIONAL_OMIT != field_cccap.get_selection() && !field_cccap.is_value()) return FALSE; +if(OPTIONAL_OMIT != field_ssversion.get_selection() && !field_ssversion.is_value()) return FALSE; +if(!field_clir__sup.is_value()) return FALSE; +if(!field_clir__inv.is_value()) return FALSE; +if(OPTIONAL_OMIT != field_signal.get_selection() && !field_signal.is_value()) return FALSE; +if(OPTIONAL_OMIT != field_keypad.get_selection() && !field_keypad.is_value()) return FALSE; +if(!field_more.is_value()) return FALSE; +if(!field_notify.is_value()) return FALSE; +if(OPTIONAL_OMIT != field_emergency.get_selection() && !field_emergency.is_value()) return FALSE; +if(!field_imsi.is_value()) return FALSE; +if(!field_lchan__type.is_value()) return FALSE; +if(!field_lchan__mode.is_value()) return FALSE; +return TRUE; +} +int MNCC__PDU__Signal::size_of() const +{ + int ret_val = 8; + if (field_bearer__cap.ispresent()) ret_val++; + if (field_called.ispresent()) ret_val++; + if (field_calling.ispresent()) ret_val++; + if (field_redirecting.ispresent()) ret_val++; + if (field_connected.ispresent()) ret_val++; + if (field_cause.ispresent()) ret_val++; + if (field_progress.ispresent()) ret_val++; + if (field_useruser.ispresent()) ret_val++; + if (field_facility.ispresent()) ret_val++; + if (field_cccap.ispresent()) ret_val++; + if (field_ssversion.ispresent()) ret_val++; + if (field_signal.ispresent()) ret_val++; + if (field_keypad.ispresent()) ret_val++; + if (field_emergency.ispresent()) ret_val++; + return ret_val; +} + +void MNCC__PDU__Signal::log() const +{ +if (!is_bound()) { +TTCN_Logger::log_event_unbound(); +return; +} +TTCN_Logger::log_event_str("{ callref := "); +field_callref.log(); +TTCN_Logger::log_event_str(", bearer_cap := "); +field_bearer__cap.log(); +TTCN_Logger::log_event_str(", called := "); +field_called.log(); +TTCN_Logger::log_event_str(", calling := "); +field_calling.log(); +TTCN_Logger::log_event_str(", redirecting := "); +field_redirecting.log(); +TTCN_Logger::log_event_str(", connected := "); +field_connected.log(); +TTCN_Logger::log_event_str(", cause := "); +field_cause.log(); +TTCN_Logger::log_event_str(", progress := "); +field_progress.log(); +TTCN_Logger::log_event_str(", useruser := "); +field_useruser.log(); +TTCN_Logger::log_event_str(", facility := "); +field_facility.log(); +TTCN_Logger::log_event_str(", cccap := "); +field_cccap.log(); +TTCN_Logger::log_event_str(", ssversion := "); +field_ssversion.log(); +TTCN_Logger::log_event_str(", clir_sup := "); +field_clir__sup.log(); +TTCN_Logger::log_event_str(", clir_inv := "); +field_clir__inv.log(); +TTCN_Logger::log_event_str(", signal := "); +field_signal.log(); +TTCN_Logger::log_event_str(", keypad := "); +field_keypad.log(); +TTCN_Logger::log_event_str(", more := "); +field_more.log(); +TTCN_Logger::log_event_str(", notify := "); +field_notify.log(); +TTCN_Logger::log_event_str(", emergency := "); +field_emergency.log(); +TTCN_Logger::log_event_str(", imsi := "); +field_imsi.log(); +TTCN_Logger::log_event_str(", lchan_type := "); +field_lchan__type.log(); +TTCN_Logger::log_event_str(", lchan_mode := "); +field_lchan__mode.log(); +TTCN_Logger::log_event_str(" }"); +} + +void MNCC__PDU__Signal::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 (220 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) callref().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) bearer__cap().set_param(*param.get_elem(1)); + if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) called().set_param(*param.get_elem(2)); + if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) calling().set_param(*param.get_elem(3)); + if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) redirecting().set_param(*param.get_elem(4)); + if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) connected().set_param(*param.get_elem(5)); + if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) cause().set_param(*param.get_elem(6)); + if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) progress().set_param(*param.get_elem(7)); + if (param.get_size()>8 && param.get_elem(8)->get_type()!=Module_Param::MP_NotUsed) useruser().set_param(*param.get_elem(8)); + if (param.get_size()>9 && param.get_elem(9)->get_type()!=Module_Param::MP_NotUsed) facility().set_param(*param.get_elem(9)); + if (param.get_size()>10 && param.get_elem(10)->get_type()!=Module_Param::MP_NotUsed) cccap().set_param(*param.get_elem(10)); + if (param.get_size()>11 && param.get_elem(11)->get_type()!=Module_Param::MP_NotUsed) ssversion().set_param(*param.get_elem(11)); + if (param.get_size()>12 && param.get_elem(12)->get_type()!=Module_Param::MP_NotUsed) clir__sup().set_param(*param.get_elem(12)); + if (param.get_size()>13 && param.get_elem(13)->get_type()!=Module_Param::MP_NotUsed) clir__inv().set_param(*param.get_elem(13)); + if (param.get_size()>14 && param.get_elem(14)->get_type()!=Module_Param::MP_NotUsed) signal().set_param(*param.get_elem(14)); + if (param.get_size()>15 && param.get_elem(15)->get_type()!=Module_Param::MP_NotUsed) keypad().set_param(*param.get_elem(15)); + if (param.get_size()>16 && param.get_elem(16)->get_type()!=Module_Param::MP_NotUsed) more().set_param(*param.get_elem(16)); + if (param.get_size()>17 && param.get_elem(17)->get_type()!=Module_Param::MP_NotUsed) notify().set_param(*param.get_elem(17)); + if (param.get_size()>18 && param.get_elem(18)->get_type()!=Module_Param::MP_NotUsed) emergency().set_param(*param.get_elem(18)); + if (param.get_size()>19 && param.get_elem(19)->get_type()!=Module_Param::MP_NotUsed) imsi().set_param(*param.get_elem(19)); + if (param.get_size()>20 && param.get_elem(20)->get_type()!=Module_Param::MP_NotUsed) lchan__type().set_param(*param.get_elem(20)); + if (param.get_size()>21 && param.get_elem(21)->get_type()!=Module_Param::MP_NotUsed) lchan__mode().set_param(*param.get_elem(21)); + 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(), "callref")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + callref().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "bearer_cap")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + bearer__cap().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "called")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + called().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "calling")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + calling().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "redirecting")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + redirecting().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "connected")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + connected().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "cause")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + cause().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "progress")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + progress().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "useruser")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + useruser().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "facility")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + facility().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "cccap")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + cccap().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "ssversion")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + ssversion().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "clir_sup")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + clir__sup().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "clir_inv")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + clir__inv().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "signal")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + signal().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "keypad")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + keypad().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "more")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + more().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "notify")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + notify().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "emergency")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + emergency().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "imsi")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + imsi().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "lchan_type")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + lchan__type().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "lchan_mode")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + lchan__mode().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @MNCC_Types.MNCC_PDU_Signal: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record value", "@MNCC_Types.MNCC_PDU_Signal"); + } +} + +void MNCC__PDU__Signal::set_implicit_omit() +{ +if (callref().is_bound()) callref().set_implicit_omit(); +if (!bearer__cap().is_bound()) bearer__cap() = OMIT_VALUE; +else bearer__cap().set_implicit_omit(); +if (!called().is_bound()) called() = OMIT_VALUE; +else called().set_implicit_omit(); +if (!calling().is_bound()) calling() = OMIT_VALUE; +else calling().set_implicit_omit(); +if (!redirecting().is_bound()) redirecting() = OMIT_VALUE; +else redirecting().set_implicit_omit(); +if (!connected().is_bound()) connected() = OMIT_VALUE; +else connected().set_implicit_omit(); +if (!cause().is_bound()) cause() = OMIT_VALUE; +else cause().set_implicit_omit(); +if (!progress().is_bound()) progress() = OMIT_VALUE; +else progress().set_implicit_omit(); +if (!useruser().is_bound()) useruser() = OMIT_VALUE; +else useruser().set_implicit_omit(); +if (!facility().is_bound()) facility() = OMIT_VALUE; +else facility().set_implicit_omit(); +if (!cccap().is_bound()) cccap() = OMIT_VALUE; +else cccap().set_implicit_omit(); +if (!ssversion().is_bound()) ssversion() = OMIT_VALUE; +else ssversion().set_implicit_omit(); +if (clir__sup().is_bound()) clir__sup().set_implicit_omit(); +if (clir__inv().is_bound()) clir__inv().set_implicit_omit(); +if (!signal().is_bound()) signal() = OMIT_VALUE; +else signal().set_implicit_omit(); +if (!keypad().is_bound()) keypad() = OMIT_VALUE; +else keypad().set_implicit_omit(); +if (more().is_bound()) more().set_implicit_omit(); +if (notify().is_bound()) notify().set_implicit_omit(); +if (!emergency().is_bound()) emergency() = OMIT_VALUE; +else emergency().set_implicit_omit(); +if (imsi().is_bound()) imsi().set_implicit_omit(); +if (lchan__type().is_bound()) lchan__type().set_implicit_omit(); +if (lchan__mode().is_bound()) lchan__mode().set_implicit_omit(); +} + +void MNCC__PDU__Signal::encode_text(Text_Buf& text_buf) const +{ +field_callref.encode_text(text_buf); +field_bearer__cap.encode_text(text_buf); +field_called.encode_text(text_buf); +field_calling.encode_text(text_buf); +field_redirecting.encode_text(text_buf); +field_connected.encode_text(text_buf); +field_cause.encode_text(text_buf); +field_progress.encode_text(text_buf); +field_useruser.encode_text(text_buf); +field_facility.encode_text(text_buf); +field_cccap.encode_text(text_buf); +field_ssversion.encode_text(text_buf); +field_clir__sup.encode_text(text_buf); +field_clir__inv.encode_text(text_buf); +field_signal.encode_text(text_buf); +field_keypad.encode_text(text_buf); +field_more.encode_text(text_buf); +field_notify.encode_text(text_buf); +field_emergency.encode_text(text_buf); +field_imsi.encode_text(text_buf); +field_lchan__type.encode_text(text_buf); +field_lchan__mode.encode_text(text_buf); +} + +void MNCC__PDU__Signal::decode_text(Text_Buf& text_buf) +{ +field_callref.decode_text(text_buf); +field_bearer__cap.decode_text(text_buf); +field_called.decode_text(text_buf); +field_calling.decode_text(text_buf); +field_redirecting.decode_text(text_buf); +field_connected.decode_text(text_buf); +field_cause.decode_text(text_buf); +field_progress.decode_text(text_buf); +field_useruser.decode_text(text_buf); +field_facility.decode_text(text_buf); +field_cccap.decode_text(text_buf); +field_ssversion.decode_text(text_buf); +field_clir__sup.decode_text(text_buf); +field_clir__inv.decode_text(text_buf); +field_signal.decode_text(text_buf); +field_keypad.decode_text(text_buf); +field_more.decode_text(text_buf); +field_notify.decode_text(text_buf); +field_emergency.decode_text(text_buf); +field_imsi.decode_text(text_buf); +field_lchan__type.decode_text(text_buf); +field_lchan__mode.decode_text(text_buf); +} + +void MNCC__PDU__Signal::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void MNCC__PDU__Signal::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int MNCC__PDU__Signal::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) +{ (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; + decoded_field_length = field_callref.RAW_decode(MNCC__PDU__Signal_callref_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + if (limit > 0){ + size_t fl_start_pos = p_buf.get_pos_bit(); + decoded_field_length = field_bearer__cap().RAW_decode(MNCC__PDU__Signal_bearer__cap_descr_, p_buf, limit, local_top_order, TRUE); + if (decoded_field_length < 1) { + field_bearer__cap = OMIT_VALUE; + p_buf.set_pos_bit(fl_start_pos); + } else { + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + } + } + else field_bearer__cap=OMIT_VALUE; + if (limit > 0){ + size_t fl_start_pos = p_buf.get_pos_bit(); + decoded_field_length = field_called().RAW_decode(MNCC__PDU__Signal_called_descr_, p_buf, limit, local_top_order, TRUE); + if (decoded_field_length < 1) { + field_called = OMIT_VALUE; + p_buf.set_pos_bit(fl_start_pos); + } else { + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + } + } + else field_called=OMIT_VALUE; + if (limit > 0){ + size_t fl_start_pos = p_buf.get_pos_bit(); + decoded_field_length = field_calling().RAW_decode(MNCC__PDU__Signal_calling_descr_, p_buf, limit, local_top_order, TRUE); + if (decoded_field_length < 1) { + field_calling = OMIT_VALUE; + p_buf.set_pos_bit(fl_start_pos); + } else { + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + } + } + else field_calling=OMIT_VALUE; + if (limit > 0){ + size_t fl_start_pos = p_buf.get_pos_bit(); + decoded_field_length = field_redirecting().RAW_decode(MNCC__PDU__Signal_redirecting_descr_, p_buf, limit, local_top_order, TRUE); + if (decoded_field_length < 1) { + field_redirecting = OMIT_VALUE; + p_buf.set_pos_bit(fl_start_pos); + } else { + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + } + } + else field_redirecting=OMIT_VALUE; + if (limit > 0){ + size_t fl_start_pos = p_buf.get_pos_bit(); + decoded_field_length = field_connected().RAW_decode(MNCC__PDU__Signal_connected_descr_, p_buf, limit, local_top_order, TRUE); + if (decoded_field_length < 1) { + field_connected = OMIT_VALUE; + p_buf.set_pos_bit(fl_start_pos); + } else { + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + } + } + else field_connected=OMIT_VALUE; + if (limit > 0){ + size_t fl_start_pos = p_buf.get_pos_bit(); + decoded_field_length = field_cause().RAW_decode(MNCC__PDU__Signal_cause_descr_, p_buf, limit, local_top_order, TRUE); + if (decoded_field_length < 1) { + field_cause = OMIT_VALUE; + p_buf.set_pos_bit(fl_start_pos); + } else { + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + } + } + else field_cause=OMIT_VALUE; + if (limit > 0){ + size_t fl_start_pos = p_buf.get_pos_bit(); + decoded_field_length = field_progress().RAW_decode(MNCC__PDU__Signal_progress_descr_, p_buf, limit, local_top_order, TRUE); + if (decoded_field_length < 1) { + field_progress = OMIT_VALUE; + p_buf.set_pos_bit(fl_start_pos); + } else { + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + } + } + else field_progress=OMIT_VALUE; + if (limit > 0){ + size_t fl_start_pos = p_buf.get_pos_bit(); + decoded_field_length = field_useruser().RAW_decode(MNCC__PDU__Signal_useruser_descr_, p_buf, limit, local_top_order, TRUE); + if (decoded_field_length < 1) { + field_useruser = OMIT_VALUE; + p_buf.set_pos_bit(fl_start_pos); + } else { + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + } + } + else field_useruser=OMIT_VALUE; + if (limit > 0){ + size_t fl_start_pos = p_buf.get_pos_bit(); + decoded_field_length = field_facility().RAW_decode(MNCC__PDU__Signal_facility_descr_, p_buf, limit, local_top_order, TRUE); + if (decoded_field_length < 1) { + field_facility = OMIT_VALUE; + p_buf.set_pos_bit(fl_start_pos); + } else { + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + } + } + else field_facility=OMIT_VALUE; + if (limit > 0){ + size_t fl_start_pos = p_buf.get_pos_bit(); + decoded_field_length = field_cccap().RAW_decode(MNCC__PDU__Signal_cccap_descr_, p_buf, limit, local_top_order, TRUE); + if (decoded_field_length < 1) { + field_cccap = OMIT_VALUE; + p_buf.set_pos_bit(fl_start_pos); + } else { + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + } + } + else field_cccap=OMIT_VALUE; + if (limit > 0){ + size_t fl_start_pos = p_buf.get_pos_bit(); + decoded_field_length = field_ssversion().RAW_decode(MNCC__PDU__Signal_ssversion_descr_, p_buf, limit, local_top_order, TRUE); + if (decoded_field_length < 1) { + field_ssversion = OMIT_VALUE; + p_buf.set_pos_bit(fl_start_pos); + } else { + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + } + } + else field_ssversion=OMIT_VALUE; + decoded_field_length = field_clir__sup.RAW_decode(MNCC__PDU__Signal_clir__sup_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_clir__inv.RAW_decode(MNCC__PDU__Signal_clir__inv_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + if (limit > 0){ + size_t fl_start_pos = p_buf.get_pos_bit(); + decoded_field_length = field_signal().RAW_decode(MNCC__PDU__Signal_signal_descr_, p_buf, limit, local_top_order, TRUE); + if (decoded_field_length < 1) { + field_signal = OMIT_VALUE; + p_buf.set_pos_bit(fl_start_pos); + } else { + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + } + } + else field_signal=OMIT_VALUE; + if (limit > 0){ + size_t fl_start_pos = p_buf.get_pos_bit(); + decoded_field_length = field_keypad().RAW_decode(MNCC__PDU__Signal_keypad_descr_, p_buf, limit, local_top_order, TRUE); + if (decoded_field_length < 1) { + field_keypad = OMIT_VALUE; + p_buf.set_pos_bit(fl_start_pos); + } else { + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + } + } + else field_keypad=OMIT_VALUE; + decoded_field_length = field_more.RAW_decode(MNCC__PDU__Signal_more_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_notify.RAW_decode(MNCC__PDU__Signal_notify_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + if (limit > 0){ + size_t fl_start_pos = p_buf.get_pos_bit(); + decoded_field_length = field_emergency().RAW_decode(MNCC__PDU__Signal_emergency_descr_, p_buf, limit, local_top_order, TRUE); + if (decoded_field_length < 1) { + field_emergency = OMIT_VALUE; + p_buf.set_pos_bit(fl_start_pos); + } else { + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + } + } + else field_emergency=OMIT_VALUE; + decoded_field_length = field_imsi.RAW_decode(MNCC__PDU__Signal_imsi_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_lchan__type.RAW_decode(MNCC__PDU__Signal_lchan__type_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_lchan__mode.RAW_decode(MNCC__PDU__Signal_lchan__mode_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return 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 MNCC__PDU__Signal::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 = 22; + myleaf.body.node.nodes = init_nodes_of_enc_tree(22); + myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, MNCC__PDU__Signal_callref_descr_.raw); + if (field_bearer__cap.ispresent()) { + myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, MNCC__PDU__Signal_bearer__cap_descr_.raw); + } + else myleaf.body.node.nodes[1] = NULL; + if (field_called.ispresent()) { + myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, MNCC__PDU__Signal_called_descr_.raw); + } + else myleaf.body.node.nodes[2] = NULL; + if (field_calling.ispresent()) { + myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, MNCC__PDU__Signal_calling_descr_.raw); + } + else myleaf.body.node.nodes[3] = NULL; + if (field_redirecting.ispresent()) { + myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, MNCC__PDU__Signal_redirecting_descr_.raw); + } + else myleaf.body.node.nodes[4] = NULL; + if (field_connected.ispresent()) { + myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, MNCC__PDU__Signal_connected_descr_.raw); + } + else myleaf.body.node.nodes[5] = NULL; + if (field_cause.ispresent()) { + myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, MNCC__PDU__Signal_cause_descr_.raw); + } + else myleaf.body.node.nodes[6] = NULL; + if (field_progress.ispresent()) { + myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, MNCC__PDU__Signal_progress_descr_.raw); + } + else myleaf.body.node.nodes[7] = NULL; + if (field_useruser.ispresent()) { + myleaf.body.node.nodes[8] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 8, MNCC__PDU__Signal_useruser_descr_.raw); + } + else myleaf.body.node.nodes[8] = NULL; + if (field_facility.ispresent()) { + myleaf.body.node.nodes[9] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 9, MNCC__PDU__Signal_facility_descr_.raw); + } + else myleaf.body.node.nodes[9] = NULL; + if (field_cccap.ispresent()) { + myleaf.body.node.nodes[10] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 10, MNCC__PDU__Signal_cccap_descr_.raw); + } + else myleaf.body.node.nodes[10] = NULL; + if (field_ssversion.ispresent()) { + myleaf.body.node.nodes[11] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 11, MNCC__PDU__Signal_ssversion_descr_.raw); + } + else myleaf.body.node.nodes[11] = NULL; + myleaf.body.node.nodes[12] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 12, MNCC__PDU__Signal_clir__sup_descr_.raw); + myleaf.body.node.nodes[13] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 13, MNCC__PDU__Signal_clir__inv_descr_.raw); + if (field_signal.ispresent()) { + myleaf.body.node.nodes[14] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 14, MNCC__PDU__Signal_signal_descr_.raw); + } + else myleaf.body.node.nodes[14] = NULL; + if (field_keypad.ispresent()) { + myleaf.body.node.nodes[15] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 15, MNCC__PDU__Signal_keypad_descr_.raw); + } + else myleaf.body.node.nodes[15] = NULL; + myleaf.body.node.nodes[16] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 16, MNCC__PDU__Signal_more_descr_.raw); + myleaf.body.node.nodes[17] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 17, MNCC__PDU__Signal_notify_descr_.raw); + if (field_emergency.ispresent()) { + myleaf.body.node.nodes[18] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 18, MNCC__PDU__Signal_emergency_descr_.raw); + } + else myleaf.body.node.nodes[18] = NULL; + myleaf.body.node.nodes[19] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 19, MNCC__PDU__Signal_imsi_descr_.raw); + myleaf.body.node.nodes[20] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 20, MNCC__PDU__Signal_lchan__type_descr_.raw); + myleaf.body.node.nodes[21] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 21, MNCC__PDU__Signal_lchan__mode_descr_.raw); + encoded_length += field_callref.RAW_encode(MNCC__PDU__Signal_callref_descr_, *myleaf.body.node.nodes[0]); + if (field_bearer__cap.ispresent()) { + encoded_length += field_bearer__cap().RAW_encode(MNCC__PDU__Signal_bearer__cap_descr_, *myleaf.body.node.nodes[1]); + } + if (field_called.ispresent()) { + encoded_length += field_called().RAW_encode(MNCC__PDU__Signal_called_descr_, *myleaf.body.node.nodes[2]); + } + if (field_calling.ispresent()) { + encoded_length += field_calling().RAW_encode(MNCC__PDU__Signal_calling_descr_, *myleaf.body.node.nodes[3]); + } + if (field_redirecting.ispresent()) { + encoded_length += field_redirecting().RAW_encode(MNCC__PDU__Signal_redirecting_descr_, *myleaf.body.node.nodes[4]); + } + if (field_connected.ispresent()) { + encoded_length += field_connected().RAW_encode(MNCC__PDU__Signal_connected_descr_, *myleaf.body.node.nodes[5]); + } + if (field_cause.ispresent()) { + encoded_length += field_cause().RAW_encode(MNCC__PDU__Signal_cause_descr_, *myleaf.body.node.nodes[6]); + } + if (field_progress.ispresent()) { + encoded_length += field_progress().RAW_encode(MNCC__PDU__Signal_progress_descr_, *myleaf.body.node.nodes[7]); + } + if (field_useruser.ispresent()) { + encoded_length += field_useruser().RAW_encode(MNCC__PDU__Signal_useruser_descr_, *myleaf.body.node.nodes[8]); + } + if (field_facility.ispresent()) { + encoded_length += field_facility().RAW_encode(MNCC__PDU__Signal_facility_descr_, *myleaf.body.node.nodes[9]); + } + if (field_cccap.ispresent()) { + encoded_length += field_cccap().RAW_encode(MNCC__PDU__Signal_cccap_descr_, *myleaf.body.node.nodes[10]); + } + if (field_ssversion.ispresent()) { + encoded_length += field_ssversion().RAW_encode(MNCC__PDU__Signal_ssversion_descr_, *myleaf.body.node.nodes[11]); + } + encoded_length += field_clir__sup.RAW_encode(MNCC__PDU__Signal_clir__sup_descr_, *myleaf.body.node.nodes[12]); + encoded_length += field_clir__inv.RAW_encode(MNCC__PDU__Signal_clir__inv_descr_, *myleaf.body.node.nodes[13]); + if (field_signal.ispresent()) { + encoded_length += field_signal().RAW_encode(MNCC__PDU__Signal_signal_descr_, *myleaf.body.node.nodes[14]); + } + if (field_keypad.ispresent()) { + encoded_length += field_keypad().RAW_encode(MNCC__PDU__Signal_keypad_descr_, *myleaf.body.node.nodes[15]); + } + encoded_length += field_more.RAW_encode(MNCC__PDU__Signal_more_descr_, *myleaf.body.node.nodes[16]); + encoded_length += field_notify.RAW_encode(MNCC__PDU__Signal_notify_descr_, *myleaf.body.node.nodes[17]); + if (field_emergency.ispresent()) { + encoded_length += field_emergency().RAW_encode(MNCC__PDU__Signal_emergency_descr_, *myleaf.body.node.nodes[18]); + } + encoded_length += field_imsi.RAW_encode(MNCC__PDU__Signal_imsi_descr_, *myleaf.body.node.nodes[19]); + encoded_length += field_lchan__type.RAW_encode(MNCC__PDU__Signal_lchan__type_descr_, *myleaf.body.node.nodes[20]); + encoded_length += field_lchan__mode.RAW_encode(MNCC__PDU__Signal_lchan__mode_descr_, *myleaf.body.node.nodes[21]); + return myleaf.length = encoded_length; +} + +struct MNCC__PDU__Signal_template::single_value_struct { +INTEGER_template field_callref; +MNCC__bearer__cap_template field_bearer__cap; +MNCC__number_template field_called; +MNCC__number_template field_calling; +MNCC__number_template field_redirecting; +MNCC__number_template field_connected; +MNCC__cause_template field_cause; +MNCC__progress_template field_progress; +MNCC__useruser_template field_useruser; +CHARSTRING_template field_facility; +MNCC__cccap_template field_cccap; +CHARSTRING_template field_ssversion; +INTEGER_template field_clir__sup; +INTEGER_template field_clir__inv; +INTEGER_template field_signal; +CHARSTRING_template field_keypad; +INTEGER_template field_more; +INTEGER_template field_notify; +INTEGER_template field_emergency; +CHARSTRING_template field_imsi; +INTEGER_template field_lchan__type; +INTEGER_template field_lchan__mode; +}; + +void MNCC__PDU__Signal_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_callref = ANY_VALUE; +single_value->field_bearer__cap = ANY_OR_OMIT; +single_value->field_called = ANY_OR_OMIT; +single_value->field_calling = ANY_OR_OMIT; +single_value->field_redirecting = ANY_OR_OMIT; +single_value->field_connected = ANY_OR_OMIT; +single_value->field_cause = ANY_OR_OMIT; +single_value->field_progress = ANY_OR_OMIT; +single_value->field_useruser = ANY_OR_OMIT; +single_value->field_facility = ANY_OR_OMIT; +single_value->field_cccap = ANY_OR_OMIT; +single_value->field_ssversion = ANY_OR_OMIT; +single_value->field_clir__sup = ANY_VALUE; +single_value->field_clir__inv = ANY_VALUE; +single_value->field_signal = ANY_OR_OMIT; +single_value->field_keypad = ANY_OR_OMIT; +single_value->field_more = ANY_VALUE; +single_value->field_notify = ANY_VALUE; +single_value->field_emergency = ANY_OR_OMIT; +single_value->field_imsi = ANY_VALUE; +single_value->field_lchan__type = ANY_VALUE; +single_value->field_lchan__mode = ANY_VALUE; +} +} +} + +void MNCC__PDU__Signal_template::copy_value(const MNCC__PDU__Signal& other_value) +{ +single_value = new single_value_struct; +if (other_value.callref().is_bound()) { + single_value->field_callref = other_value.callref(); +} else { + single_value->field_callref.clean_up(); +} +if (other_value.bearer__cap().is_bound()) { + if (other_value.bearer__cap().ispresent()) single_value->field_bearer__cap = other_value.bearer__cap()(); + else single_value->field_bearer__cap = OMIT_VALUE; +} else { + single_value->field_bearer__cap.clean_up(); +} +if (other_value.called().is_bound()) { + if (other_value.called().ispresent()) single_value->field_called = other_value.called()(); + else single_value->field_called = OMIT_VALUE; +} else { + single_value->field_called.clean_up(); +} +if (other_value.calling().is_bound()) { + if (other_value.calling().ispresent()) single_value->field_calling = other_value.calling()(); + else single_value->field_calling = OMIT_VALUE; +} else { + single_value->field_calling.clean_up(); +} +if (other_value.redirecting().is_bound()) { + if (other_value.redirecting().ispresent()) single_value->field_redirecting = other_value.redirecting()(); + else single_value->field_redirecting = OMIT_VALUE; +} else { + single_value->field_redirecting.clean_up(); +} +if (other_value.connected().is_bound()) { + if (other_value.connected().ispresent()) single_value->field_connected = other_value.connected()(); + else single_value->field_connected = OMIT_VALUE; +} else { + single_value->field_connected.clean_up(); +} +if (other_value.cause().is_bound()) { + if (other_value.cause().ispresent()) single_value->field_cause = other_value.cause()(); + else single_value->field_cause = OMIT_VALUE; +} else { + single_value->field_cause.clean_up(); +} +if (other_value.progress().is_bound()) { + if (other_value.progress().ispresent()) single_value->field_progress = other_value.progress()(); + else single_value->field_progress = OMIT_VALUE; +} else { + single_value->field_progress.clean_up(); +} +if (other_value.useruser().is_bound()) { + if (other_value.useruser().ispresent()) single_value->field_useruser = other_value.useruser()(); + else single_value->field_useruser = OMIT_VALUE; +} else { + single_value->field_useruser.clean_up(); +} +if (other_value.facility().is_bound()) { + if (other_value.facility().ispresent()) single_value->field_facility = other_value.facility()(); + else single_value->field_facility = OMIT_VALUE; +} else { + single_value->field_facility.clean_up(); +} +if (other_value.cccap().is_bound()) { + if (other_value.cccap().ispresent()) single_value->field_cccap = other_value.cccap()(); + else single_value->field_cccap = OMIT_VALUE; +} else { + single_value->field_cccap.clean_up(); +} +if (other_value.ssversion().is_bound()) { + if (other_value.ssversion().ispresent()) single_value->field_ssversion = other_value.ssversion()(); + else single_value->field_ssversion = OMIT_VALUE; +} else { + single_value->field_ssversion.clean_up(); +} +if (other_value.clir__sup().is_bound()) { + single_value->field_clir__sup = other_value.clir__sup(); +} else { + single_value->field_clir__sup.clean_up(); +} +if (other_value.clir__inv().is_bound()) { + single_value->field_clir__inv = other_value.clir__inv(); +} else { + single_value->field_clir__inv.clean_up(); +} +if (other_value.signal().is_bound()) { + if (other_value.signal().ispresent()) single_value->field_signal = other_value.signal()(); + else single_value->field_signal = OMIT_VALUE; +} else { + single_value->field_signal.clean_up(); +} +if (other_value.keypad().is_bound()) { + if (other_value.keypad().ispresent()) single_value->field_keypad = other_value.keypad()(); + else single_value->field_keypad = OMIT_VALUE; +} else { + single_value->field_keypad.clean_up(); +} +if (other_value.more().is_bound()) { + single_value->field_more = other_value.more(); +} else { + single_value->field_more.clean_up(); +} +if (other_value.notify().is_bound()) { + single_value->field_notify = other_value.notify(); +} else { + single_value->field_notify.clean_up(); +} +if (other_value.emergency().is_bound()) { + if (other_value.emergency().ispresent()) single_value->field_emergency = other_value.emergency()(); + else single_value->field_emergency = OMIT_VALUE; +} else { + single_value->field_emergency.clean_up(); +} +if (other_value.imsi().is_bound()) { + single_value->field_imsi = other_value.imsi(); +} else { + single_value->field_imsi.clean_up(); +} +if (other_value.lchan__type().is_bound()) { + single_value->field_lchan__type = other_value.lchan__type(); +} else { + single_value->field_lchan__type.clean_up(); +} +if (other_value.lchan__mode().is_bound()) { + single_value->field_lchan__mode = other_value.lchan__mode(); +} else { + single_value->field_lchan__mode.clean_up(); +} +set_selection(SPECIFIC_VALUE); +} + +void MNCC__PDU__Signal_template::copy_template(const MNCC__PDU__Signal_template& other_value) +{ +switch (other_value.template_selection) { +case SPECIFIC_VALUE: +single_value = new single_value_struct; +if (UNINITIALIZED_TEMPLATE != other_value.callref().get_selection()) { +single_value->field_callref = other_value.callref(); +} else { +single_value->field_callref.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.bearer__cap().get_selection()) { +single_value->field_bearer__cap = other_value.bearer__cap(); +} else { +single_value->field_bearer__cap.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.called().get_selection()) { +single_value->field_called = other_value.called(); +} else { +single_value->field_called.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.calling().get_selection()) { +single_value->field_calling = other_value.calling(); +} else { +single_value->field_calling.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.redirecting().get_selection()) { +single_value->field_redirecting = other_value.redirecting(); +} else { +single_value->field_redirecting.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.connected().get_selection()) { +single_value->field_connected = other_value.connected(); +} else { +single_value->field_connected.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.cause().get_selection()) { +single_value->field_cause = other_value.cause(); +} else { +single_value->field_cause.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.progress().get_selection()) { +single_value->field_progress = other_value.progress(); +} else { +single_value->field_progress.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.useruser().get_selection()) { +single_value->field_useruser = other_value.useruser(); +} else { +single_value->field_useruser.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.facility().get_selection()) { +single_value->field_facility = other_value.facility(); +} else { +single_value->field_facility.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.cccap().get_selection()) { +single_value->field_cccap = other_value.cccap(); +} else { +single_value->field_cccap.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.ssversion().get_selection()) { +single_value->field_ssversion = other_value.ssversion(); +} else { +single_value->field_ssversion.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.clir__sup().get_selection()) { +single_value->field_clir__sup = other_value.clir__sup(); +} else { +single_value->field_clir__sup.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.clir__inv().get_selection()) { +single_value->field_clir__inv = other_value.clir__inv(); +} else { +single_value->field_clir__inv.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.signal().get_selection()) { +single_value->field_signal = other_value.signal(); +} else { +single_value->field_signal.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.keypad().get_selection()) { +single_value->field_keypad = other_value.keypad(); +} else { +single_value->field_keypad.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.more().get_selection()) { +single_value->field_more = other_value.more(); +} else { +single_value->field_more.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.notify().get_selection()) { +single_value->field_notify = other_value.notify(); +} else { +single_value->field_notify.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.emergency().get_selection()) { +single_value->field_emergency = other_value.emergency(); +} else { +single_value->field_emergency.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.imsi().get_selection()) { +single_value->field_imsi = other_value.imsi(); +} else { +single_value->field_imsi.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.lchan__type().get_selection()) { +single_value->field_lchan__type = other_value.lchan__type(); +} else { +single_value->field_lchan__type.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.lchan__mode().get_selection()) { +single_value->field_lchan__mode = other_value.lchan__mode(); +} else { +single_value->field_lchan__mode.clean_up(); +} +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new MNCC__PDU__Signal_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of type @MNCC_Types.MNCC_PDU_Signal."); +break; +} +set_selection(other_value); +} + +MNCC__PDU__Signal_template::MNCC__PDU__Signal_template() +{ +} + +MNCC__PDU__Signal_template::MNCC__PDU__Signal_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +MNCC__PDU__Signal_template::MNCC__PDU__Signal_template(const MNCC__PDU__Signal& other_value) +{ +copy_value(other_value); +} + +MNCC__PDU__Signal_template::MNCC__PDU__Signal_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const MNCC__PDU__Signal&)other_value); +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of type @MNCC_Types.MNCC_PDU_Signal from an unbound optional field."); +} +} + +MNCC__PDU__Signal_template::MNCC__PDU__Signal_template(const MNCC__PDU__Signal_template& other_value) +: Base_Template() +{ +copy_template(other_value); +} + +MNCC__PDU__Signal_template::~MNCC__PDU__Signal_template() +{ +clean_up(); +} + +MNCC__PDU__Signal_template& MNCC__PDU__Signal_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +MNCC__PDU__Signal_template& MNCC__PDU__Signal_template::operator=(const MNCC__PDU__Signal& other_value) +{ +clean_up(); +copy_value(other_value); +return *this; +} + +MNCC__PDU__Signal_template& MNCC__PDU__Signal_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const MNCC__PDU__Signal&)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 @MNCC_Types.MNCC_PDU_Signal."); +} +return *this; +} + +MNCC__PDU__Signal_template& MNCC__PDU__Signal_template::operator=(const MNCC__PDU__Signal_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean MNCC__PDU__Signal_template::match(const MNCC__PDU__Signal& 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.callref().is_bound()) return FALSE; +if(!single_value->field_callref.match(other_value.callref(), legacy))return FALSE; +if(!other_value.bearer__cap().is_bound()) return FALSE; +if((other_value.bearer__cap().ispresent() ? !single_value->field_bearer__cap.match((const MNCC__bearer__cap&)other_value.bearer__cap(), legacy) : !single_value->field_bearer__cap.match_omit(legacy)))return FALSE; +if(!other_value.called().is_bound()) return FALSE; +if((other_value.called().ispresent() ? !single_value->field_called.match((const MNCC__number&)other_value.called(), legacy) : !single_value->field_called.match_omit(legacy)))return FALSE; +if(!other_value.calling().is_bound()) return FALSE; +if((other_value.calling().ispresent() ? !single_value->field_calling.match((const MNCC__number&)other_value.calling(), legacy) : !single_value->field_calling.match_omit(legacy)))return FALSE; +if(!other_value.redirecting().is_bound()) return FALSE; +if((other_value.redirecting().ispresent() ? !single_value->field_redirecting.match((const MNCC__number&)other_value.redirecting(), legacy) : !single_value->field_redirecting.match_omit(legacy)))return FALSE; +if(!other_value.connected().is_bound()) return FALSE; +if((other_value.connected().ispresent() ? !single_value->field_connected.match((const MNCC__number&)other_value.connected(), legacy) : !single_value->field_connected.match_omit(legacy)))return FALSE; +if(!other_value.cause().is_bound()) return FALSE; +if((other_value.cause().ispresent() ? !single_value->field_cause.match((const MNCC__cause&)other_value.cause(), legacy) : !single_value->field_cause.match_omit(legacy)))return FALSE; +if(!other_value.progress().is_bound()) return FALSE; +if((other_value.progress().ispresent() ? !single_value->field_progress.match((const MNCC__progress&)other_value.progress(), legacy) : !single_value->field_progress.match_omit(legacy)))return FALSE; +if(!other_value.useruser().is_bound()) return FALSE; +if((other_value.useruser().ispresent() ? !single_value->field_useruser.match((const MNCC__useruser&)other_value.useruser(), legacy) : !single_value->field_useruser.match_omit(legacy)))return FALSE; +if(!other_value.facility().is_bound()) return FALSE; +if((other_value.facility().ispresent() ? !single_value->field_facility.match((const CHARSTRING&)other_value.facility(), legacy) : !single_value->field_facility.match_omit(legacy)))return FALSE; +if(!other_value.cccap().is_bound()) return FALSE; +if((other_value.cccap().ispresent() ? !single_value->field_cccap.match((const MNCC__cccap&)other_value.cccap(), legacy) : !single_value->field_cccap.match_omit(legacy)))return FALSE; +if(!other_value.ssversion().is_bound()) return FALSE; +if((other_value.ssversion().ispresent() ? !single_value->field_ssversion.match((const CHARSTRING&)other_value.ssversion(), legacy) : !single_value->field_ssversion.match_omit(legacy)))return FALSE; +if(!other_value.clir__sup().is_bound()) return FALSE; +if(!single_value->field_clir__sup.match(other_value.clir__sup(), legacy))return FALSE; +if(!other_value.clir__inv().is_bound()) return FALSE; +if(!single_value->field_clir__inv.match(other_value.clir__inv(), legacy))return FALSE; +if(!other_value.signal().is_bound()) return FALSE; +if((other_value.signal().ispresent() ? !single_value->field_signal.match((const INTEGER&)other_value.signal(), legacy) : !single_value->field_signal.match_omit(legacy)))return FALSE; +if(!other_value.keypad().is_bound()) return FALSE; +if((other_value.keypad().ispresent() ? !single_value->field_keypad.match((const CHARSTRING&)other_value.keypad(), legacy) : !single_value->field_keypad.match_omit(legacy)))return FALSE; +if(!other_value.more().is_bound()) return FALSE; +if(!single_value->field_more.match(other_value.more(), legacy))return FALSE; +if(!other_value.notify().is_bound()) return FALSE; +if(!single_value->field_notify.match(other_value.notify(), legacy))return FALSE; +if(!other_value.emergency().is_bound()) return FALSE; +if((other_value.emergency().ispresent() ? !single_value->field_emergency.match((const INTEGER&)other_value.emergency(), legacy) : !single_value->field_emergency.match_omit(legacy)))return FALSE; +if(!other_value.imsi().is_bound()) return FALSE; +if(!single_value->field_imsi.match(other_value.imsi(), legacy))return FALSE; +if(!other_value.lchan__type().is_bound()) return FALSE; +if(!single_value->field_lchan__type.match(other_value.lchan__type(), legacy))return FALSE; +if(!other_value.lchan__mode().is_bound()) return FALSE; +if(!single_value->field_lchan__mode.match(other_value.lchan__mode(), legacy))return FALSE; +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of type @MNCC_Types.MNCC_PDU_Signal."); +} +return FALSE; +} + +boolean MNCC__PDU__Signal_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +if (template_selection != SPECIFIC_VALUE) return TRUE; +if (single_value->field_callref.is_bound()) return TRUE; +if (single_value->field_bearer__cap.is_omit() || single_value->field_bearer__cap.is_bound()) return TRUE; +if (single_value->field_called.is_omit() || single_value->field_called.is_bound()) return TRUE; +if (single_value->field_calling.is_omit() || single_value->field_calling.is_bound()) return TRUE; +if (single_value->field_redirecting.is_omit() || single_value->field_redirecting.is_bound()) return TRUE; +if (single_value->field_connected.is_omit() || single_value->field_connected.is_bound()) return TRUE; +if (single_value->field_cause.is_omit() || single_value->field_cause.is_bound()) return TRUE; +if (single_value->field_progress.is_omit() || single_value->field_progress.is_bound()) return TRUE; +if (single_value->field_useruser.is_omit() || single_value->field_useruser.is_bound()) return TRUE; +if (single_value->field_facility.is_omit() || single_value->field_facility.is_bound()) return TRUE; +if (single_value->field_cccap.is_omit() || single_value->field_cccap.is_bound()) return TRUE; +if (single_value->field_ssversion.is_omit() || single_value->field_ssversion.is_bound()) return TRUE; +if (single_value->field_clir__sup.is_bound()) return TRUE; +if (single_value->field_clir__inv.is_bound()) return TRUE; +if (single_value->field_signal.is_omit() || single_value->field_signal.is_bound()) return TRUE; +if (single_value->field_keypad.is_omit() || single_value->field_keypad.is_bound()) return TRUE; +if (single_value->field_more.is_bound()) return TRUE; +if (single_value->field_notify.is_bound()) return TRUE; +if (single_value->field_emergency.is_omit() || single_value->field_emergency.is_bound()) return TRUE; +if (single_value->field_imsi.is_bound()) return TRUE; +if (single_value->field_lchan__type.is_bound()) return TRUE; +if (single_value->field_lchan__mode.is_bound()) return TRUE; +return FALSE; +} + +boolean MNCC__PDU__Signal_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +if (!single_value->field_callref.is_value()) return FALSE; +if (!single_value->field_bearer__cap.is_omit() && !single_value->field_bearer__cap.is_value()) return FALSE; +if (!single_value->field_called.is_omit() && !single_value->field_called.is_value()) return FALSE; +if (!single_value->field_calling.is_omit() && !single_value->field_calling.is_value()) return FALSE; +if (!single_value->field_redirecting.is_omit() && !single_value->field_redirecting.is_value()) return FALSE; +if (!single_value->field_connected.is_omit() && !single_value->field_connected.is_value()) return FALSE; +if (!single_value->field_cause.is_omit() && !single_value->field_cause.is_value()) return FALSE; +if (!single_value->field_progress.is_omit() && !single_value->field_progress.is_value()) return FALSE; +if (!single_value->field_useruser.is_omit() && !single_value->field_useruser.is_value()) return FALSE; +if (!single_value->field_facility.is_omit() && !single_value->field_facility.is_value()) return FALSE; +if (!single_value->field_cccap.is_omit() && !single_value->field_cccap.is_value()) return FALSE; +if (!single_value->field_ssversion.is_omit() && !single_value->field_ssversion.is_value()) return FALSE; +if (!single_value->field_clir__sup.is_value()) return FALSE; +if (!single_value->field_clir__inv.is_value()) return FALSE; +if (!single_value->field_signal.is_omit() && !single_value->field_signal.is_value()) return FALSE; +if (!single_value->field_keypad.is_omit() && !single_value->field_keypad.is_value()) return FALSE; +if (!single_value->field_more.is_value()) return FALSE; +if (!single_value->field_notify.is_value()) return FALSE; +if (!single_value->field_emergency.is_omit() && !single_value->field_emergency.is_value()) return FALSE; +if (!single_value->field_imsi.is_value()) return FALSE; +if (!single_value->field_lchan__type.is_value()) return FALSE; +if (!single_value->field_lchan__mode.is_value()) return FALSE; +return TRUE; +} + +void MNCC__PDU__Signal_template::clean_up() +{ +switch (template_selection) { +case SPECIFIC_VALUE: +delete single_value; +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +delete [] value_list.list_value; +default: +break; +} +template_selection = UNINITIALIZED_TEMPLATE; +} + +MNCC__PDU__Signal MNCC__PDU__Signal_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 @MNCC_Types.MNCC_PDU_Signal."); +MNCC__PDU__Signal ret_val; +if (single_value->field_callref.is_bound()) { +ret_val.callref() = single_value->field_callref.valueof(); +} +if (single_value->field_bearer__cap.is_omit()) ret_val.bearer__cap() = OMIT_VALUE; +else if (single_value->field_bearer__cap.is_bound()) { +ret_val.bearer__cap() = single_value->field_bearer__cap.valueof(); +} +if (single_value->field_called.is_omit()) ret_val.called() = OMIT_VALUE; +else if (single_value->field_called.is_bound()) { +ret_val.called() = single_value->field_called.valueof(); +} +if (single_value->field_calling.is_omit()) ret_val.calling() = OMIT_VALUE; +else if (single_value->field_calling.is_bound()) { +ret_val.calling() = single_value->field_calling.valueof(); +} +if (single_value->field_redirecting.is_omit()) ret_val.redirecting() = OMIT_VALUE; +else if (single_value->field_redirecting.is_bound()) { +ret_val.redirecting() = single_value->field_redirecting.valueof(); +} +if (single_value->field_connected.is_omit()) ret_val.connected() = OMIT_VALUE; +else if (single_value->field_connected.is_bound()) { +ret_val.connected() = single_value->field_connected.valueof(); +} +if (single_value->field_cause.is_omit()) ret_val.cause() = OMIT_VALUE; +else if (single_value->field_cause.is_bound()) { +ret_val.cause() = single_value->field_cause.valueof(); +} +if (single_value->field_progress.is_omit()) ret_val.progress() = OMIT_VALUE; +else if (single_value->field_progress.is_bound()) { +ret_val.progress() = single_value->field_progress.valueof(); +} +if (single_value->field_useruser.is_omit()) ret_val.useruser() = OMIT_VALUE; +else if (single_value->field_useruser.is_bound()) { +ret_val.useruser() = single_value->field_useruser.valueof(); +} +if (single_value->field_facility.is_omit()) ret_val.facility() = OMIT_VALUE; +else if (single_value->field_facility.is_bound()) { +ret_val.facility() = single_value->field_facility.valueof(); +} +if (single_value->field_cccap.is_omit()) ret_val.cccap() = OMIT_VALUE; +else if (single_value->field_cccap.is_bound()) { +ret_val.cccap() = single_value->field_cccap.valueof(); +} +if (single_value->field_ssversion.is_omit()) ret_val.ssversion() = OMIT_VALUE; +else if (single_value->field_ssversion.is_bound()) { +ret_val.ssversion() = single_value->field_ssversion.valueof(); +} +if (single_value->field_clir__sup.is_bound()) { +ret_val.clir__sup() = single_value->field_clir__sup.valueof(); +} +if (single_value->field_clir__inv.is_bound()) { +ret_val.clir__inv() = single_value->field_clir__inv.valueof(); +} +if (single_value->field_signal.is_omit()) ret_val.signal() = OMIT_VALUE; +else if (single_value->field_signal.is_bound()) { +ret_val.signal() = single_value->field_signal.valueof(); +} +if (single_value->field_keypad.is_omit()) ret_val.keypad() = OMIT_VALUE; +else if (single_value->field_keypad.is_bound()) { +ret_val.keypad() = single_value->field_keypad.valueof(); +} +if (single_value->field_more.is_bound()) { +ret_val.more() = single_value->field_more.valueof(); +} +if (single_value->field_notify.is_bound()) { +ret_val.notify() = single_value->field_notify.valueof(); +} +if (single_value->field_emergency.is_omit()) ret_val.emergency() = OMIT_VALUE; +else if (single_value->field_emergency.is_bound()) { +ret_val.emergency() = single_value->field_emergency.valueof(); +} +if (single_value->field_imsi.is_bound()) { +ret_val.imsi() = single_value->field_imsi.valueof(); +} +if (single_value->field_lchan__type.is_bound()) { +ret_val.lchan__type() = single_value->field_lchan__type.valueof(); +} +if (single_value->field_lchan__mode.is_bound()) { +ret_val.lchan__mode() = single_value->field_lchan__mode.valueof(); +} +return ret_val; +} + +void MNCC__PDU__Signal_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) +TTCN_error("Setting an invalid list for a template of type @MNCC_Types.MNCC_PDU_Signal."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new MNCC__PDU__Signal_template[list_length]; +} + +MNCC__PDU__Signal_template& MNCC__PDU__Signal_template::list_item(unsigned int list_index) const +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) +TTCN_error("Accessing a list element of a non-list template of type @MNCC_Types.MNCC_PDU_Signal."); +if (list_index >= value_list.n_values) +TTCN_error("Index overflow in a value list template of type @MNCC_Types.MNCC_PDU_Signal."); +return value_list.list_value[list_index]; +} + +INTEGER_template& MNCC__PDU__Signal_template::callref() +{ +set_specific(); +return single_value->field_callref; +} + +const INTEGER_template& MNCC__PDU__Signal_template::callref() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field callref of a non-specific template of type @MNCC_Types.MNCC_PDU_Signal."); +return single_value->field_callref; +} + +MNCC__bearer__cap_template& MNCC__PDU__Signal_template::bearer__cap() +{ +set_specific(); +return single_value->field_bearer__cap; +} + +const MNCC__bearer__cap_template& MNCC__PDU__Signal_template::bearer__cap() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field bearer_cap of a non-specific template of type @MNCC_Types.MNCC_PDU_Signal."); +return single_value->field_bearer__cap; +} + +MNCC__number_template& MNCC__PDU__Signal_template::called() +{ +set_specific(); +return single_value->field_called; +} + +const MNCC__number_template& MNCC__PDU__Signal_template::called() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field called of a non-specific template of type @MNCC_Types.MNCC_PDU_Signal."); +return single_value->field_called; +} + +MNCC__number_template& MNCC__PDU__Signal_template::calling() +{ +set_specific(); +return single_value->field_calling; +} + +const MNCC__number_template& MNCC__PDU__Signal_template::calling() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field calling of a non-specific template of type @MNCC_Types.MNCC_PDU_Signal."); +return single_value->field_calling; +} + +MNCC__number_template& MNCC__PDU__Signal_template::redirecting() +{ +set_specific(); +return single_value->field_redirecting; +} + +const MNCC__number_template& MNCC__PDU__Signal_template::redirecting() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field redirecting of a non-specific template of type @MNCC_Types.MNCC_PDU_Signal."); +return single_value->field_redirecting; +} + +MNCC__number_template& MNCC__PDU__Signal_template::connected() +{ +set_specific(); +return single_value->field_connected; +} + +const MNCC__number_template& MNCC__PDU__Signal_template::connected() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field connected of a non-specific template of type @MNCC_Types.MNCC_PDU_Signal."); +return single_value->field_connected; +} + +MNCC__cause_template& MNCC__PDU__Signal_template::cause() +{ +set_specific(); +return single_value->field_cause; +} + +const MNCC__cause_template& MNCC__PDU__Signal_template::cause() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field cause of a non-specific template of type @MNCC_Types.MNCC_PDU_Signal."); +return single_value->field_cause; +} + +MNCC__progress_template& MNCC__PDU__Signal_template::progress() +{ +set_specific(); +return single_value->field_progress; +} + +const MNCC__progress_template& MNCC__PDU__Signal_template::progress() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field progress of a non-specific template of type @MNCC_Types.MNCC_PDU_Signal."); +return single_value->field_progress; +} + +MNCC__useruser_template& MNCC__PDU__Signal_template::useruser() +{ +set_specific(); +return single_value->field_useruser; +} + +const MNCC__useruser_template& MNCC__PDU__Signal_template::useruser() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field useruser of a non-specific template of type @MNCC_Types.MNCC_PDU_Signal."); +return single_value->field_useruser; +} + +CHARSTRING_template& MNCC__PDU__Signal_template::facility() +{ +set_specific(); +return single_value->field_facility; +} + +const CHARSTRING_template& MNCC__PDU__Signal_template::facility() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field facility of a non-specific template of type @MNCC_Types.MNCC_PDU_Signal."); +return single_value->field_facility; +} + +MNCC__cccap_template& MNCC__PDU__Signal_template::cccap() +{ +set_specific(); +return single_value->field_cccap; +} + +const MNCC__cccap_template& MNCC__PDU__Signal_template::cccap() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field cccap of a non-specific template of type @MNCC_Types.MNCC_PDU_Signal."); +return single_value->field_cccap; +} + +CHARSTRING_template& MNCC__PDU__Signal_template::ssversion() +{ +set_specific(); +return single_value->field_ssversion; +} + +const CHARSTRING_template& MNCC__PDU__Signal_template::ssversion() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field ssversion of a non-specific template of type @MNCC_Types.MNCC_PDU_Signal."); +return single_value->field_ssversion; +} + +INTEGER_template& MNCC__PDU__Signal_template::clir__sup() +{ +set_specific(); +return single_value->field_clir__sup; +} + +const INTEGER_template& MNCC__PDU__Signal_template::clir__sup() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field clir_sup of a non-specific template of type @MNCC_Types.MNCC_PDU_Signal."); +return single_value->field_clir__sup; +} + +INTEGER_template& MNCC__PDU__Signal_template::clir__inv() +{ +set_specific(); +return single_value->field_clir__inv; +} + +const INTEGER_template& MNCC__PDU__Signal_template::clir__inv() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field clir_inv of a non-specific template of type @MNCC_Types.MNCC_PDU_Signal."); +return single_value->field_clir__inv; +} + +INTEGER_template& MNCC__PDU__Signal_template::signal() +{ +set_specific(); +return single_value->field_signal; +} + +const INTEGER_template& MNCC__PDU__Signal_template::signal() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field signal of a non-specific template of type @MNCC_Types.MNCC_PDU_Signal."); +return single_value->field_signal; +} + +CHARSTRING_template& MNCC__PDU__Signal_template::keypad() +{ +set_specific(); +return single_value->field_keypad; +} + +const CHARSTRING_template& MNCC__PDU__Signal_template::keypad() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field keypad of a non-specific template of type @MNCC_Types.MNCC_PDU_Signal."); +return single_value->field_keypad; +} + +INTEGER_template& MNCC__PDU__Signal_template::more() +{ +set_specific(); +return single_value->field_more; +} + +const INTEGER_template& MNCC__PDU__Signal_template::more() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field more of a non-specific template of type @MNCC_Types.MNCC_PDU_Signal."); +return single_value->field_more; +} + +INTEGER_template& MNCC__PDU__Signal_template::notify() +{ +set_specific(); +return single_value->field_notify; +} + +const INTEGER_template& MNCC__PDU__Signal_template::notify() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field notify of a non-specific template of type @MNCC_Types.MNCC_PDU_Signal."); +return single_value->field_notify; +} + +INTEGER_template& MNCC__PDU__Signal_template::emergency() +{ +set_specific(); +return single_value->field_emergency; +} + +const INTEGER_template& MNCC__PDU__Signal_template::emergency() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field emergency of a non-specific template of type @MNCC_Types.MNCC_PDU_Signal."); +return single_value->field_emergency; +} + +CHARSTRING_template& MNCC__PDU__Signal_template::imsi() +{ +set_specific(); +return single_value->field_imsi; +} + +const CHARSTRING_template& MNCC__PDU__Signal_template::imsi() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field imsi of a non-specific template of type @MNCC_Types.MNCC_PDU_Signal."); +return single_value->field_imsi; +} + +INTEGER_template& MNCC__PDU__Signal_template::lchan__type() +{ +set_specific(); +return single_value->field_lchan__type; +} + +const INTEGER_template& MNCC__PDU__Signal_template::lchan__type() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field lchan_type of a non-specific template of type @MNCC_Types.MNCC_PDU_Signal."); +return single_value->field_lchan__type; +} + +INTEGER_template& MNCC__PDU__Signal_template::lchan__mode() +{ +set_specific(); +return single_value->field_lchan__mode; +} + +const INTEGER_template& MNCC__PDU__Signal_template::lchan__mode() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field lchan_mode of a non-specific template of type @MNCC_Types.MNCC_PDU_Signal."); +return single_value->field_lchan__mode; +} + +int MNCC__PDU__Signal_template::size_of() const +{ + if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_PDU_Signal which has an ifpresent attribute."); + switch (template_selection) + { + case SPECIFIC_VALUE: + { int ret_val = 8; + if (single_value->field_bearer__cap.is_present()) ret_val++; + if (single_value->field_called.is_present()) ret_val++; + if (single_value->field_calling.is_present()) ret_val++; + if (single_value->field_redirecting.is_present()) ret_val++; + if (single_value->field_connected.is_present()) ret_val++; + if (single_value->field_cause.is_present()) ret_val++; + if (single_value->field_progress.is_present()) ret_val++; + if (single_value->field_useruser.is_present()) ret_val++; + if (single_value->field_facility.is_present()) ret_val++; + if (single_value->field_cccap.is_present()) ret_val++; + if (single_value->field_ssversion.is_present()) ret_val++; + if (single_value->field_signal.is_present()) ret_val++; + if (single_value->field_keypad.is_present()) ret_val++; + if (single_value->field_emergency.is_present()) ret_val++; + return ret_val; + } + case VALUE_LIST: + { + if (value_list.n_values<1) + TTCN_error("Internal error: Performing sizeof() operation on a template of type @MNCC_Types.MNCC_PDU_Signal 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 @MNCC_Types.MNCC_PDU_Signal containing a value list with different sizes."); + } + return item_size; + } + case OMIT_VALUE: + TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_PDU_Signal containing omit value."); + case ANY_VALUE: + case ANY_OR_OMIT: + TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_PDU_Signal containing */? value."); + case COMPLEMENTED_LIST: + TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_PDU_Signal containing complemented list."); + default: + TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @MNCC_Types.MNCC_PDU_Signal."); + } + return 0; +} + +void MNCC__PDU__Signal_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_str("{ callref := "); +single_value->field_callref.log(); +TTCN_Logger::log_event_str(", bearer_cap := "); +single_value->field_bearer__cap.log(); +TTCN_Logger::log_event_str(", called := "); +single_value->field_called.log(); +TTCN_Logger::log_event_str(", calling := "); +single_value->field_calling.log(); +TTCN_Logger::log_event_str(", redirecting := "); +single_value->field_redirecting.log(); +TTCN_Logger::log_event_str(", connected := "); +single_value->field_connected.log(); +TTCN_Logger::log_event_str(", cause := "); +single_value->field_cause.log(); +TTCN_Logger::log_event_str(", progress := "); +single_value->field_progress.log(); +TTCN_Logger::log_event_str(", useruser := "); +single_value->field_useruser.log(); +TTCN_Logger::log_event_str(", facility := "); +single_value->field_facility.log(); +TTCN_Logger::log_event_str(", cccap := "); +single_value->field_cccap.log(); +TTCN_Logger::log_event_str(", ssversion := "); +single_value->field_ssversion.log(); +TTCN_Logger::log_event_str(", clir_sup := "); +single_value->field_clir__sup.log(); +TTCN_Logger::log_event_str(", clir_inv := "); +single_value->field_clir__inv.log(); +TTCN_Logger::log_event_str(", signal := "); +single_value->field_signal.log(); +TTCN_Logger::log_event_str(", keypad := "); +single_value->field_keypad.log(); +TTCN_Logger::log_event_str(", more := "); +single_value->field_more.log(); +TTCN_Logger::log_event_str(", notify := "); +single_value->field_notify.log(); +TTCN_Logger::log_event_str(", emergency := "); +single_value->field_emergency.log(); +TTCN_Logger::log_event_str(", imsi := "); +single_value->field_imsi.log(); +TTCN_Logger::log_event_str(", lchan_type := "); +single_value->field_lchan__type.log(); +TTCN_Logger::log_event_str(", lchan_mode := "); +single_value->field_lchan__mode.log(); +TTCN_Logger::log_event_str(" }"); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { +if (list_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[list_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void MNCC__PDU__Signal_template::log_match(const MNCC__PDU__Signal& 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_callref.match(match_value.callref(), legacy)){ +TTCN_Logger::log_logmatch_info(".callref"); +single_value->field_callref.log_match(match_value.callref(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if (match_value.bearer__cap().ispresent()){ +if(!single_value->field_bearer__cap.match(match_value.bearer__cap(), legacy)){ +TTCN_Logger::log_logmatch_info(".bearer_cap"); +single_value->field_bearer__cap.log_match(match_value.bearer__cap(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +} else { +if (!single_value->field_bearer__cap.match_omit(legacy)){ + TTCN_Logger::log_logmatch_info(".bearer_cap := omit with "); +TTCN_Logger::print_logmatch_buffer(); +single_value->field_bearer__cap.log(); +TTCN_Logger::log_event_str(" unmatched"); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +} +if (match_value.called().ispresent()){ +if(!single_value->field_called.match(match_value.called(), legacy)){ +TTCN_Logger::log_logmatch_info(".called"); +single_value->field_called.log_match(match_value.called(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +} else { +if (!single_value->field_called.match_omit(legacy)){ + TTCN_Logger::log_logmatch_info(".called := omit with "); +TTCN_Logger::print_logmatch_buffer(); +single_value->field_called.log(); +TTCN_Logger::log_event_str(" unmatched"); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +} +if (match_value.calling().ispresent()){ +if(!single_value->field_calling.match(match_value.calling(), legacy)){ +TTCN_Logger::log_logmatch_info(".calling"); +single_value->field_calling.log_match(match_value.calling(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +} else { +if (!single_value->field_calling.match_omit(legacy)){ + TTCN_Logger::log_logmatch_info(".calling := omit with "); +TTCN_Logger::print_logmatch_buffer(); +single_value->field_calling.log(); +TTCN_Logger::log_event_str(" unmatched"); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +} +if (match_value.redirecting().ispresent()){ +if(!single_value->field_redirecting.match(match_value.redirecting(), legacy)){ +TTCN_Logger::log_logmatch_info(".redirecting"); +single_value->field_redirecting.log_match(match_value.redirecting(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +} else { +if (!single_value->field_redirecting.match_omit(legacy)){ + TTCN_Logger::log_logmatch_info(".redirecting := omit with "); +TTCN_Logger::print_logmatch_buffer(); +single_value->field_redirecting.log(); +TTCN_Logger::log_event_str(" unmatched"); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +} +if (match_value.connected().ispresent()){ +if(!single_value->field_connected.match(match_value.connected(), legacy)){ +TTCN_Logger::log_logmatch_info(".connected"); +single_value->field_connected.log_match(match_value.connected(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +} else { +if (!single_value->field_connected.match_omit(legacy)){ + TTCN_Logger::log_logmatch_info(".connected := omit with "); +TTCN_Logger::print_logmatch_buffer(); +single_value->field_connected.log(); +TTCN_Logger::log_event_str(" unmatched"); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +} +if (match_value.cause().ispresent()){ +if(!single_value->field_cause.match(match_value.cause(), legacy)){ +TTCN_Logger::log_logmatch_info(".cause"); +single_value->field_cause.log_match(match_value.cause(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +} else { +if (!single_value->field_cause.match_omit(legacy)){ + TTCN_Logger::log_logmatch_info(".cause := omit with "); +TTCN_Logger::print_logmatch_buffer(); +single_value->field_cause.log(); +TTCN_Logger::log_event_str(" unmatched"); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +} +if (match_value.progress().ispresent()){ +if(!single_value->field_progress.match(match_value.progress(), legacy)){ +TTCN_Logger::log_logmatch_info(".progress"); +single_value->field_progress.log_match(match_value.progress(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +} else { +if (!single_value->field_progress.match_omit(legacy)){ + TTCN_Logger::log_logmatch_info(".progress := omit with "); +TTCN_Logger::print_logmatch_buffer(); +single_value->field_progress.log(); +TTCN_Logger::log_event_str(" unmatched"); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +} +if (match_value.useruser().ispresent()){ +if(!single_value->field_useruser.match(match_value.useruser(), legacy)){ +TTCN_Logger::log_logmatch_info(".useruser"); +single_value->field_useruser.log_match(match_value.useruser(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +} else { +if (!single_value->field_useruser.match_omit(legacy)){ + TTCN_Logger::log_logmatch_info(".useruser := omit with "); +TTCN_Logger::print_logmatch_buffer(); +single_value->field_useruser.log(); +TTCN_Logger::log_event_str(" unmatched"); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +} +if (match_value.facility().ispresent()){ +if(!single_value->field_facility.match(match_value.facility(), legacy)){ +TTCN_Logger::log_logmatch_info(".facility"); +single_value->field_facility.log_match(match_value.facility(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +} else { +if (!single_value->field_facility.match_omit(legacy)){ + TTCN_Logger::log_logmatch_info(".facility := omit with "); +TTCN_Logger::print_logmatch_buffer(); +single_value->field_facility.log(); +TTCN_Logger::log_event_str(" unmatched"); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +} +if (match_value.cccap().ispresent()){ +if(!single_value->field_cccap.match(match_value.cccap(), legacy)){ +TTCN_Logger::log_logmatch_info(".cccap"); +single_value->field_cccap.log_match(match_value.cccap(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +} else { +if (!single_value->field_cccap.match_omit(legacy)){ + TTCN_Logger::log_logmatch_info(".cccap := omit with "); +TTCN_Logger::print_logmatch_buffer(); +single_value->field_cccap.log(); +TTCN_Logger::log_event_str(" unmatched"); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +} +if (match_value.ssversion().ispresent()){ +if(!single_value->field_ssversion.match(match_value.ssversion(), legacy)){ +TTCN_Logger::log_logmatch_info(".ssversion"); +single_value->field_ssversion.log_match(match_value.ssversion(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +} else { +if (!single_value->field_ssversion.match_omit(legacy)){ + TTCN_Logger::log_logmatch_info(".ssversion := omit with "); +TTCN_Logger::print_logmatch_buffer(); +single_value->field_ssversion.log(); +TTCN_Logger::log_event_str(" unmatched"); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +} +if(!single_value->field_clir__sup.match(match_value.clir__sup(), legacy)){ +TTCN_Logger::log_logmatch_info(".clir_sup"); +single_value->field_clir__sup.log_match(match_value.clir__sup(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_clir__inv.match(match_value.clir__inv(), legacy)){ +TTCN_Logger::log_logmatch_info(".clir_inv"); +single_value->field_clir__inv.log_match(match_value.clir__inv(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if (match_value.signal().ispresent()){ +if(!single_value->field_signal.match(match_value.signal(), legacy)){ +TTCN_Logger::log_logmatch_info(".signal"); +single_value->field_signal.log_match(match_value.signal(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +} else { +if (!single_value->field_signal.match_omit(legacy)){ + TTCN_Logger::log_logmatch_info(".signal := omit with "); +TTCN_Logger::print_logmatch_buffer(); +single_value->field_signal.log(); +TTCN_Logger::log_event_str(" unmatched"); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +} +if (match_value.keypad().ispresent()){ +if(!single_value->field_keypad.match(match_value.keypad(), legacy)){ +TTCN_Logger::log_logmatch_info(".keypad"); +single_value->field_keypad.log_match(match_value.keypad(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +} else { +if (!single_value->field_keypad.match_omit(legacy)){ + TTCN_Logger::log_logmatch_info(".keypad := omit with "); +TTCN_Logger::print_logmatch_buffer(); +single_value->field_keypad.log(); +TTCN_Logger::log_event_str(" unmatched"); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +} +if(!single_value->field_more.match(match_value.more(), legacy)){ +TTCN_Logger::log_logmatch_info(".more"); +single_value->field_more.log_match(match_value.more(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_notify.match(match_value.notify(), legacy)){ +TTCN_Logger::log_logmatch_info(".notify"); +single_value->field_notify.log_match(match_value.notify(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if (match_value.emergency().ispresent()){ +if(!single_value->field_emergency.match(match_value.emergency(), legacy)){ +TTCN_Logger::log_logmatch_info(".emergency"); +single_value->field_emergency.log_match(match_value.emergency(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +} else { +if (!single_value->field_emergency.match_omit(legacy)){ + TTCN_Logger::log_logmatch_info(".emergency := omit with "); +TTCN_Logger::print_logmatch_buffer(); +single_value->field_emergency.log(); +TTCN_Logger::log_event_str(" unmatched"); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +} +if(!single_value->field_imsi.match(match_value.imsi(), legacy)){ +TTCN_Logger::log_logmatch_info(".imsi"); +single_value->field_imsi.log_match(match_value.imsi(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_lchan__type.match(match_value.lchan__type(), legacy)){ +TTCN_Logger::log_logmatch_info(".lchan_type"); +single_value->field_lchan__type.log_match(match_value.lchan__type(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_lchan__mode.match(match_value.lchan__mode(), legacy)){ +TTCN_Logger::log_logmatch_info(".lchan_mode"); +single_value->field_lchan__mode.log_match(match_value.lchan__mode(), 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("{ callref := "); +single_value->field_callref.log_match(match_value.callref(), legacy); +TTCN_Logger::log_event_str(", bearer_cap := "); +if (match_value.bearer__cap().ispresent()) single_value->field_bearer__cap.log_match(match_value.bearer__cap(), legacy); +else { +TTCN_Logger::log_event_str("omit with "); +single_value->field_bearer__cap.log(); +if (single_value->field_bearer__cap.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); +else TTCN_Logger::log_event_str(" unmatched"); +} +TTCN_Logger::log_event_str(", called := "); +if (match_value.called().ispresent()) single_value->field_called.log_match(match_value.called(), legacy); +else { +TTCN_Logger::log_event_str("omit with "); +single_value->field_called.log(); +if (single_value->field_called.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); +else TTCN_Logger::log_event_str(" unmatched"); +} +TTCN_Logger::log_event_str(", calling := "); +if (match_value.calling().ispresent()) single_value->field_calling.log_match(match_value.calling(), legacy); +else { +TTCN_Logger::log_event_str("omit with "); +single_value->field_calling.log(); +if (single_value->field_calling.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); +else TTCN_Logger::log_event_str(" unmatched"); +} +TTCN_Logger::log_event_str(", redirecting := "); +if (match_value.redirecting().ispresent()) single_value->field_redirecting.log_match(match_value.redirecting(), legacy); +else { +TTCN_Logger::log_event_str("omit with "); +single_value->field_redirecting.log(); +if (single_value->field_redirecting.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); +else TTCN_Logger::log_event_str(" unmatched"); +} +TTCN_Logger::log_event_str(", connected := "); +if (match_value.connected().ispresent()) single_value->field_connected.log_match(match_value.connected(), legacy); +else { +TTCN_Logger::log_event_str("omit with "); +single_value->field_connected.log(); +if (single_value->field_connected.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); +else TTCN_Logger::log_event_str(" unmatched"); +} +TTCN_Logger::log_event_str(", cause := "); +if (match_value.cause().ispresent()) single_value->field_cause.log_match(match_value.cause(), legacy); +else { +TTCN_Logger::log_event_str("omit with "); +single_value->field_cause.log(); +if (single_value->field_cause.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); +else TTCN_Logger::log_event_str(" unmatched"); +} +TTCN_Logger::log_event_str(", progress := "); +if (match_value.progress().ispresent()) single_value->field_progress.log_match(match_value.progress(), legacy); +else { +TTCN_Logger::log_event_str("omit with "); +single_value->field_progress.log(); +if (single_value->field_progress.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); +else TTCN_Logger::log_event_str(" unmatched"); +} +TTCN_Logger::log_event_str(", useruser := "); +if (match_value.useruser().ispresent()) single_value->field_useruser.log_match(match_value.useruser(), legacy); +else { +TTCN_Logger::log_event_str("omit with "); +single_value->field_useruser.log(); +if (single_value->field_useruser.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); +else TTCN_Logger::log_event_str(" unmatched"); +} +TTCN_Logger::log_event_str(", facility := "); +if (match_value.facility().ispresent()) single_value->field_facility.log_match(match_value.facility(), legacy); +else { +TTCN_Logger::log_event_str("omit with "); +single_value->field_facility.log(); +if (single_value->field_facility.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); +else TTCN_Logger::log_event_str(" unmatched"); +} +TTCN_Logger::log_event_str(", cccap := "); +if (match_value.cccap().ispresent()) single_value->field_cccap.log_match(match_value.cccap(), legacy); +else { +TTCN_Logger::log_event_str("omit with "); +single_value->field_cccap.log(); +if (single_value->field_cccap.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); +else TTCN_Logger::log_event_str(" unmatched"); +} +TTCN_Logger::log_event_str(", ssversion := "); +if (match_value.ssversion().ispresent()) single_value->field_ssversion.log_match(match_value.ssversion(), legacy); +else { +TTCN_Logger::log_event_str("omit with "); +single_value->field_ssversion.log(); +if (single_value->field_ssversion.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); +else TTCN_Logger::log_event_str(" unmatched"); +} +TTCN_Logger::log_event_str(", clir_sup := "); +single_value->field_clir__sup.log_match(match_value.clir__sup(), legacy); +TTCN_Logger::log_event_str(", clir_inv := "); +single_value->field_clir__inv.log_match(match_value.clir__inv(), legacy); +TTCN_Logger::log_event_str(", signal := "); +if (match_value.signal().ispresent()) single_value->field_signal.log_match(match_value.signal(), legacy); +else { +TTCN_Logger::log_event_str("omit with "); +single_value->field_signal.log(); +if (single_value->field_signal.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); +else TTCN_Logger::log_event_str(" unmatched"); +} +TTCN_Logger::log_event_str(", keypad := "); +if (match_value.keypad().ispresent()) single_value->field_keypad.log_match(match_value.keypad(), legacy); +else { +TTCN_Logger::log_event_str("omit with "); +single_value->field_keypad.log(); +if (single_value->field_keypad.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); +else TTCN_Logger::log_event_str(" unmatched"); +} +TTCN_Logger::log_event_str(", more := "); +single_value->field_more.log_match(match_value.more(), legacy); +TTCN_Logger::log_event_str(", notify := "); +single_value->field_notify.log_match(match_value.notify(), legacy); +TTCN_Logger::log_event_str(", emergency := "); +if (match_value.emergency().ispresent()) single_value->field_emergency.log_match(match_value.emergency(), legacy); +else { +TTCN_Logger::log_event_str("omit with "); +single_value->field_emergency.log(); +if (single_value->field_emergency.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); +else TTCN_Logger::log_event_str(" unmatched"); +} +TTCN_Logger::log_event_str(", imsi := "); +single_value->field_imsi.log_match(match_value.imsi(), legacy); +TTCN_Logger::log_event_str(", lchan_type := "); +single_value->field_lchan__type.log_match(match_value.lchan__type(), legacy); +TTCN_Logger::log_event_str(", lchan_mode := "); +single_value->field_lchan__mode.log_match(match_value.lchan__mode(), 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 MNCC__PDU__Signal_template::encode_text(Text_Buf& text_buf) const +{ +encode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value->field_callref.encode_text(text_buf); +single_value->field_bearer__cap.encode_text(text_buf); +single_value->field_called.encode_text(text_buf); +single_value->field_calling.encode_text(text_buf); +single_value->field_redirecting.encode_text(text_buf); +single_value->field_connected.encode_text(text_buf); +single_value->field_cause.encode_text(text_buf); +single_value->field_progress.encode_text(text_buf); +single_value->field_useruser.encode_text(text_buf); +single_value->field_facility.encode_text(text_buf); +single_value->field_cccap.encode_text(text_buf); +single_value->field_ssversion.encode_text(text_buf); +single_value->field_clir__sup.encode_text(text_buf); +single_value->field_clir__inv.encode_text(text_buf); +single_value->field_signal.encode_text(text_buf); +single_value->field_keypad.encode_text(text_buf); +single_value->field_more.encode_text(text_buf); +single_value->field_notify.encode_text(text_buf); +single_value->field_emergency.encode_text(text_buf); +single_value->field_imsi.encode_text(text_buf); +single_value->field_lchan__type.encode_text(text_buf); +single_value->field_lchan__mode.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 @MNCC_Types.MNCC_PDU_Signal."); +} +} + +void MNCC__PDU__Signal_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_callref.decode_text(text_buf); +single_value->field_bearer__cap.decode_text(text_buf); +single_value->field_called.decode_text(text_buf); +single_value->field_calling.decode_text(text_buf); +single_value->field_redirecting.decode_text(text_buf); +single_value->field_connected.decode_text(text_buf); +single_value->field_cause.decode_text(text_buf); +single_value->field_progress.decode_text(text_buf); +single_value->field_useruser.decode_text(text_buf); +single_value->field_facility.decode_text(text_buf); +single_value->field_cccap.decode_text(text_buf); +single_value->field_ssversion.decode_text(text_buf); +single_value->field_clir__sup.decode_text(text_buf); +single_value->field_clir__inv.decode_text(text_buf); +single_value->field_signal.decode_text(text_buf); +single_value->field_keypad.decode_text(text_buf); +single_value->field_more.decode_text(text_buf); +single_value->field_notify.decode_text(text_buf); +single_value->field_emergency.decode_text(text_buf); +single_value->field_imsi.decode_text(text_buf); +single_value->field_lchan__type.decode_text(text_buf); +single_value->field_lchan__mode.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 MNCC__PDU__Signal_template[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 @MNCC_Types.MNCC_PDU_Signal."); +} +} + +void MNCC__PDU__Signal_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: { + MNCC__PDU__Signal_template new_temp; + new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); + for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) callref().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) bearer__cap().set_param(*param.get_elem(1)); + if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) called().set_param(*param.get_elem(2)); + if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) calling().set_param(*param.get_elem(3)); + if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) redirecting().set_param(*param.get_elem(4)); + if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) connected().set_param(*param.get_elem(5)); + if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) cause().set_param(*param.get_elem(6)); + if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) progress().set_param(*param.get_elem(7)); + if (param.get_size()>8 && param.get_elem(8)->get_type()!=Module_Param::MP_NotUsed) useruser().set_param(*param.get_elem(8)); + if (param.get_size()>9 && param.get_elem(9)->get_type()!=Module_Param::MP_NotUsed) facility().set_param(*param.get_elem(9)); + if (param.get_size()>10 && param.get_elem(10)->get_type()!=Module_Param::MP_NotUsed) cccap().set_param(*param.get_elem(10)); + if (param.get_size()>11 && param.get_elem(11)->get_type()!=Module_Param::MP_NotUsed) ssversion().set_param(*param.get_elem(11)); + if (param.get_size()>12 && param.get_elem(12)->get_type()!=Module_Param::MP_NotUsed) clir__sup().set_param(*param.get_elem(12)); + if (param.get_size()>13 && param.get_elem(13)->get_type()!=Module_Param::MP_NotUsed) clir__inv().set_param(*param.get_elem(13)); + if (param.get_size()>14 && param.get_elem(14)->get_type()!=Module_Param::MP_NotUsed) signal().set_param(*param.get_elem(14)); + if (param.get_size()>15 && param.get_elem(15)->get_type()!=Module_Param::MP_NotUsed) keypad().set_param(*param.get_elem(15)); + if (param.get_size()>16 && param.get_elem(16)->get_type()!=Module_Param::MP_NotUsed) more().set_param(*param.get_elem(16)); + if (param.get_size()>17 && param.get_elem(17)->get_type()!=Module_Param::MP_NotUsed) notify().set_param(*param.get_elem(17)); + if (param.get_size()>18 && param.get_elem(18)->get_type()!=Module_Param::MP_NotUsed) emergency().set_param(*param.get_elem(18)); + if (param.get_size()>19 && param.get_elem(19)->get_type()!=Module_Param::MP_NotUsed) imsi().set_param(*param.get_elem(19)); + if (param.get_size()>20 && param.get_elem(20)->get_type()!=Module_Param::MP_NotUsed) lchan__type().set_param(*param.get_elem(20)); + if (param.get_size()>21 && param.get_elem(21)->get_type()!=Module_Param::MP_NotUsed) lchan__mode().set_param(*param.get_elem(21)); + 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(), "callref")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + callref().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "bearer_cap")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + bearer__cap().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "called")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + called().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "calling")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + calling().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "redirecting")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + redirecting().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "connected")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + connected().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "cause")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + cause().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "progress")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + progress().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "useruser")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + useruser().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "facility")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + facility().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "cccap")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + cccap().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "ssversion")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + ssversion().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "clir_sup")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + clir__sup().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "clir_inv")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + clir__inv().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "signal")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + signal().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "keypad")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + keypad().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "more")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + more().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "notify")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + notify().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "emergency")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + emergency().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "imsi")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + imsi().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "lchan_type")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + lchan__type().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "lchan_mode")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + lchan__mode().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @MNCC_Types.MNCC_PDU_Signal: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record template", "@MNCC_Types.MNCC_PDU_Signal"); + } + is_ifpresent = param.get_ifpresent(); +} + +void MNCC__PDU__Signal_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_callref.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_PDU_Signal"); +single_value->field_bearer__cap.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_PDU_Signal"); +single_value->field_called.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_PDU_Signal"); +single_value->field_calling.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_PDU_Signal"); +single_value->field_redirecting.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_PDU_Signal"); +single_value->field_connected.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_PDU_Signal"); +single_value->field_cause.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_PDU_Signal"); +single_value->field_progress.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_PDU_Signal"); +single_value->field_useruser.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_PDU_Signal"); +single_value->field_facility.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_PDU_Signal"); +single_value->field_cccap.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_PDU_Signal"); +single_value->field_ssversion.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_PDU_Signal"); +single_value->field_clir__sup.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_PDU_Signal"); +single_value->field_clir__inv.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_PDU_Signal"); +single_value->field_signal.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_PDU_Signal"); +single_value->field_keypad.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_PDU_Signal"); +single_value->field_more.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_PDU_Signal"); +single_value->field_notify.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_PDU_Signal"); +single_value->field_emergency.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_PDU_Signal"); +single_value->field_imsi.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_PDU_Signal"); +single_value->field_lchan__type.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_PDU_Signal"); +single_value->field_lchan__mode.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_PDU_Signal"); +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 : "@MNCC_Types.MNCC_PDU_Signal"); +} + +boolean MNCC__PDU__Signal_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean MNCC__PDU__Signal_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) callref().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) data().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(), "callref")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + callref().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "data")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + data().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @MNCC_Types.MNCC_PDU_Data: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record value", "@MNCC_Types.MNCC_PDU_Data"); + } +} + +void MNCC__PDU__Data::set_implicit_omit() +{ +if (callref().is_bound()) callref().set_implicit_omit(); +if (data().is_bound()) data().set_implicit_omit(); +} + +void MNCC__PDU__Data::encode_text(Text_Buf& text_buf) const +{ +field_callref.encode_text(text_buf); +field_data.encode_text(text_buf); +} + +void MNCC__PDU__Data::decode_text(Text_Buf& text_buf) +{ +field_callref.decode_text(text_buf); +field_data.decode_text(text_buf); +} + +void MNCC__PDU__Data::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void MNCC__PDU__Data::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int MNCC__PDU__Data::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) +{ (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; + decoded_field_length = field_callref.RAW_decode(MNCC__PDU__Data_callref_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_data.RAW_decode(MNCC__PDU__Data_data_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return 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 MNCC__PDU__Data::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, MNCC__PDU__Data_callref_descr_.raw); + myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, MNCC__PDU__Data_data_descr_.raw); + encoded_length += field_callref.RAW_encode(MNCC__PDU__Data_callref_descr_, *myleaf.body.node.nodes[0]); + encoded_length += field_data.RAW_encode(MNCC__PDU__Data_data_descr_, *myleaf.body.node.nodes[1]); + return myleaf.length = encoded_length; +} + +struct MNCC__PDU__Data_template::single_value_struct { +INTEGER_template field_callref; +OCTETSTRING_template field_data; +}; + +void MNCC__PDU__Data_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_callref = ANY_VALUE; +single_value->field_data = ANY_VALUE; +} +} +} + +void MNCC__PDU__Data_template::copy_value(const MNCC__PDU__Data& other_value) +{ +single_value = new single_value_struct; +if (other_value.callref().is_bound()) { + single_value->field_callref = other_value.callref(); +} else { + single_value->field_callref.clean_up(); +} +if (other_value.data().is_bound()) { + single_value->field_data = other_value.data(); +} else { + single_value->field_data.clean_up(); +} +set_selection(SPECIFIC_VALUE); +} + +void MNCC__PDU__Data_template::copy_template(const MNCC__PDU__Data_template& other_value) +{ +switch (other_value.template_selection) { +case SPECIFIC_VALUE: +single_value = new single_value_struct; +if (UNINITIALIZED_TEMPLATE != other_value.callref().get_selection()) { +single_value->field_callref = other_value.callref(); +} else { +single_value->field_callref.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.data().get_selection()) { +single_value->field_data = other_value.data(); +} else { +single_value->field_data.clean_up(); +} +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new MNCC__PDU__Data_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of type @MNCC_Types.MNCC_PDU_Data."); +break; +} +set_selection(other_value); +} + +MNCC__PDU__Data_template::MNCC__PDU__Data_template() +{ +} + +MNCC__PDU__Data_template::MNCC__PDU__Data_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +MNCC__PDU__Data_template::MNCC__PDU__Data_template(const MNCC__PDU__Data& other_value) +{ +copy_value(other_value); +} + +MNCC__PDU__Data_template::MNCC__PDU__Data_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const MNCC__PDU__Data&)other_value); +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of type @MNCC_Types.MNCC_PDU_Data from an unbound optional field."); +} +} + +MNCC__PDU__Data_template::MNCC__PDU__Data_template(const MNCC__PDU__Data_template& other_value) +: Base_Template() +{ +copy_template(other_value); +} + +MNCC__PDU__Data_template::~MNCC__PDU__Data_template() +{ +clean_up(); +} + +MNCC__PDU__Data_template& MNCC__PDU__Data_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +MNCC__PDU__Data_template& MNCC__PDU__Data_template::operator=(const MNCC__PDU__Data& other_value) +{ +clean_up(); +copy_value(other_value); +return *this; +} + +MNCC__PDU__Data_template& MNCC__PDU__Data_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const MNCC__PDU__Data&)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 @MNCC_Types.MNCC_PDU_Data."); +} +return *this; +} + +MNCC__PDU__Data_template& MNCC__PDU__Data_template::operator=(const MNCC__PDU__Data_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean MNCC__PDU__Data_template::match(const MNCC__PDU__Data& 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.callref().is_bound()) return FALSE; +if(!single_value->field_callref.match(other_value.callref(), legacy))return FALSE; +if(!other_value.data().is_bound()) return FALSE; +if(!single_value->field_data.match(other_value.data(), legacy))return FALSE; +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of type @MNCC_Types.MNCC_PDU_Data."); +} +return FALSE; +} + +boolean MNCC__PDU__Data_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +if (template_selection != SPECIFIC_VALUE) return TRUE; +if (single_value->field_callref.is_bound()) return TRUE; +if (single_value->field_data.is_bound()) return TRUE; +return FALSE; +} + +boolean MNCC__PDU__Data_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +if (!single_value->field_callref.is_value()) return FALSE; +if (!single_value->field_data.is_value()) return FALSE; +return TRUE; +} + +void MNCC__PDU__Data_template::clean_up() +{ +switch (template_selection) { +case SPECIFIC_VALUE: +delete single_value; +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +delete [] value_list.list_value; +default: +break; +} +template_selection = UNINITIALIZED_TEMPLATE; +} + +MNCC__PDU__Data MNCC__PDU__Data_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 @MNCC_Types.MNCC_PDU_Data."); +MNCC__PDU__Data ret_val; +if (single_value->field_callref.is_bound()) { +ret_val.callref() = single_value->field_callref.valueof(); +} +if (single_value->field_data.is_bound()) { +ret_val.data() = single_value->field_data.valueof(); +} +return ret_val; +} + +void MNCC__PDU__Data_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) +TTCN_error("Setting an invalid list for a template of type @MNCC_Types.MNCC_PDU_Data."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new MNCC__PDU__Data_template[list_length]; +} + +MNCC__PDU__Data_template& MNCC__PDU__Data_template::list_item(unsigned int list_index) const +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) +TTCN_error("Accessing a list element of a non-list template of type @MNCC_Types.MNCC_PDU_Data."); +if (list_index >= value_list.n_values) +TTCN_error("Index overflow in a value list template of type @MNCC_Types.MNCC_PDU_Data."); +return value_list.list_value[list_index]; +} + +INTEGER_template& MNCC__PDU__Data_template::callref() +{ +set_specific(); +return single_value->field_callref; +} + +const INTEGER_template& MNCC__PDU__Data_template::callref() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field callref of a non-specific template of type @MNCC_Types.MNCC_PDU_Data."); +return single_value->field_callref; +} + +OCTETSTRING_template& MNCC__PDU__Data_template::data() +{ +set_specific(); +return single_value->field_data; +} + +const OCTETSTRING_template& MNCC__PDU__Data_template::data() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field data of a non-specific template of type @MNCC_Types.MNCC_PDU_Data."); +return single_value->field_data; +} + +int MNCC__PDU__Data_template::size_of() const +{ + if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_PDU_Data 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 @MNCC_Types.MNCC_PDU_Data 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 @MNCC_Types.MNCC_PDU_Data containing a value list with different sizes."); + } + return item_size; + } + case OMIT_VALUE: + TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_PDU_Data containing omit value."); + case ANY_VALUE: + case ANY_OR_OMIT: + TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_PDU_Data containing */? value."); + case COMPLEMENTED_LIST: + TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_PDU_Data containing complemented list."); + default: + TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @MNCC_Types.MNCC_PDU_Data."); + } + return 0; +} + +void MNCC__PDU__Data_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_str("{ callref := "); +single_value->field_callref.log(); +TTCN_Logger::log_event_str(", data := "); +single_value->field_data.log(); +TTCN_Logger::log_event_str(" }"); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { +if (list_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[list_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void MNCC__PDU__Data_template::log_match(const MNCC__PDU__Data& 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_callref.match(match_value.callref(), legacy)){ +TTCN_Logger::log_logmatch_info(".callref"); +single_value->field_callref.log_match(match_value.callref(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_data.match(match_value.data(), legacy)){ +TTCN_Logger::log_logmatch_info(".data"); +single_value->field_data.log_match(match_value.data(), 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("{ callref := "); +single_value->field_callref.log_match(match_value.callref(), legacy); +TTCN_Logger::log_event_str(", data := "); +single_value->field_data.log_match(match_value.data(), 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 MNCC__PDU__Data_template::encode_text(Text_Buf& text_buf) const +{ +encode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value->field_callref.encode_text(text_buf); +single_value->field_data.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 @MNCC_Types.MNCC_PDU_Data."); +} +} + +void MNCC__PDU__Data_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_callref.decode_text(text_buf); +single_value->field_data.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 MNCC__PDU__Data_template[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 @MNCC_Types.MNCC_PDU_Data."); +} +} + +void MNCC__PDU__Data_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: { + MNCC__PDU__Data_template new_temp; + new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); + for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) callref().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) data().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(), "callref")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + callref().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "data")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + data().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @MNCC_Types.MNCC_PDU_Data: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record template", "@MNCC_Types.MNCC_PDU_Data"); + } + is_ifpresent = param.get_ifpresent(); +} + +void MNCC__PDU__Data_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_callref.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_PDU_Data"); +single_value->field_data.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_PDU_Data"); +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 : "@MNCC_Types.MNCC_PDU_Data"); +} + +boolean MNCC__PDU__Data_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean MNCC__PDU__Data_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) callref().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ip().set_param(*param.get_elem(1)); + if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) rtp__port().set_param(*param.get_elem(2)); + if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) payload__type().set_param(*param.get_elem(3)); + if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) payload__msg__type().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(), "callref")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + callref().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "ip")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + ip().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "rtp_port")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + rtp__port().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "payload_type")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + payload__type().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "payload_msg_type")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + payload__msg__type().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @MNCC_Types.MNCC_PDU_Rtp: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record value", "@MNCC_Types.MNCC_PDU_Rtp"); + } +} + +void MNCC__PDU__Rtp::set_implicit_omit() +{ +if (callref().is_bound()) callref().set_implicit_omit(); +if (ip().is_bound()) ip().set_implicit_omit(); +if (rtp__port().is_bound()) rtp__port().set_implicit_omit(); +if (payload__type().is_bound()) payload__type().set_implicit_omit(); +if (payload__msg__type().is_bound()) payload__msg__type().set_implicit_omit(); +} + +void MNCC__PDU__Rtp::encode_text(Text_Buf& text_buf) const +{ +field_callref.encode_text(text_buf); +field_ip.encode_text(text_buf); +field_rtp__port.encode_text(text_buf); +field_payload__type.encode_text(text_buf); +field_payload__msg__type.encode_text(text_buf); +} + +void MNCC__PDU__Rtp::decode_text(Text_Buf& text_buf) +{ +field_callref.decode_text(text_buf); +field_ip.decode_text(text_buf); +field_rtp__port.decode_text(text_buf); +field_payload__type.decode_text(text_buf); +field_payload__msg__type.decode_text(text_buf); +} + +void MNCC__PDU__Rtp::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void MNCC__PDU__Rtp::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int MNCC__PDU__Rtp::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) +{ (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; + decoded_field_length = field_callref.RAW_decode(MNCC__PDU__Rtp_callref_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_ip.RAW_decode(MNCC__PDU__Rtp_ip_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_rtp__port.RAW_decode(MNCC__PDU__Rtp_rtp__port_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_payload__type.RAW_decode(MNCC__PDU__Rtp_payload__type_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_payload__msg__type.RAW_decode(MNCC__PDU__Rtp_payload__msg__type_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return 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 MNCC__PDU__Rtp::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, MNCC__PDU__Rtp_callref_descr_.raw); + myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, MNCC__PDU__Rtp_ip_descr_.raw); + myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, MNCC__PDU__Rtp_rtp__port_descr_.raw); + myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, MNCC__PDU__Rtp_payload__type_descr_.raw); + myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, MNCC__PDU__Rtp_payload__msg__type_descr_.raw); + encoded_length += field_callref.RAW_encode(MNCC__PDU__Rtp_callref_descr_, *myleaf.body.node.nodes[0]); + encoded_length += field_ip.RAW_encode(MNCC__PDU__Rtp_ip_descr_, *myleaf.body.node.nodes[1]); + encoded_length += field_rtp__port.RAW_encode(MNCC__PDU__Rtp_rtp__port_descr_, *myleaf.body.node.nodes[2]); + encoded_length += field_payload__type.RAW_encode(MNCC__PDU__Rtp_payload__type_descr_, *myleaf.body.node.nodes[3]); + encoded_length += field_payload__msg__type.RAW_encode(MNCC__PDU__Rtp_payload__msg__type_descr_, *myleaf.body.node.nodes[4]); + return myleaf.length = encoded_length; +} + +struct MNCC__PDU__Rtp_template::single_value_struct { +INTEGER_template field_callref; +INTEGER_template field_ip; +INTEGER_template field_rtp__port; +INTEGER_template field_payload__type; +INTEGER_template field_payload__msg__type; +}; + +void MNCC__PDU__Rtp_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_callref = ANY_VALUE; +single_value->field_ip = ANY_VALUE; +single_value->field_rtp__port = ANY_VALUE; +single_value->field_payload__type = ANY_VALUE; +single_value->field_payload__msg__type = ANY_VALUE; +} +} +} + +void MNCC__PDU__Rtp_template::copy_value(const MNCC__PDU__Rtp& other_value) +{ +single_value = new single_value_struct; +if (other_value.callref().is_bound()) { + single_value->field_callref = other_value.callref(); +} else { + single_value->field_callref.clean_up(); +} +if (other_value.ip().is_bound()) { + single_value->field_ip = other_value.ip(); +} else { + single_value->field_ip.clean_up(); +} +if (other_value.rtp__port().is_bound()) { + single_value->field_rtp__port = other_value.rtp__port(); +} else { + single_value->field_rtp__port.clean_up(); +} +if (other_value.payload__type().is_bound()) { + single_value->field_payload__type = other_value.payload__type(); +} else { + single_value->field_payload__type.clean_up(); +} +if (other_value.payload__msg__type().is_bound()) { + single_value->field_payload__msg__type = other_value.payload__msg__type(); +} else { + single_value->field_payload__msg__type.clean_up(); +} +set_selection(SPECIFIC_VALUE); +} + +void MNCC__PDU__Rtp_template::copy_template(const MNCC__PDU__Rtp_template& other_value) +{ +switch (other_value.template_selection) { +case SPECIFIC_VALUE: +single_value = new single_value_struct; +if (UNINITIALIZED_TEMPLATE != other_value.callref().get_selection()) { +single_value->field_callref = other_value.callref(); +} else { +single_value->field_callref.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.ip().get_selection()) { +single_value->field_ip = other_value.ip(); +} else { +single_value->field_ip.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.rtp__port().get_selection()) { +single_value->field_rtp__port = other_value.rtp__port(); +} else { +single_value->field_rtp__port.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.payload__type().get_selection()) { +single_value->field_payload__type = other_value.payload__type(); +} else { +single_value->field_payload__type.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.payload__msg__type().get_selection()) { +single_value->field_payload__msg__type = other_value.payload__msg__type(); +} else { +single_value->field_payload__msg__type.clean_up(); +} +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new MNCC__PDU__Rtp_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of type @MNCC_Types.MNCC_PDU_Rtp."); +break; +} +set_selection(other_value); +} + +MNCC__PDU__Rtp_template::MNCC__PDU__Rtp_template() +{ +} + +MNCC__PDU__Rtp_template::MNCC__PDU__Rtp_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +MNCC__PDU__Rtp_template::MNCC__PDU__Rtp_template(const MNCC__PDU__Rtp& other_value) +{ +copy_value(other_value); +} + +MNCC__PDU__Rtp_template::MNCC__PDU__Rtp_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const MNCC__PDU__Rtp&)other_value); +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of type @MNCC_Types.MNCC_PDU_Rtp from an unbound optional field."); +} +} + +MNCC__PDU__Rtp_template::MNCC__PDU__Rtp_template(const MNCC__PDU__Rtp_template& other_value) +: Base_Template() +{ +copy_template(other_value); +} + +MNCC__PDU__Rtp_template::~MNCC__PDU__Rtp_template() +{ +clean_up(); +} + +MNCC__PDU__Rtp_template& MNCC__PDU__Rtp_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +MNCC__PDU__Rtp_template& MNCC__PDU__Rtp_template::operator=(const MNCC__PDU__Rtp& other_value) +{ +clean_up(); +copy_value(other_value); +return *this; +} + +MNCC__PDU__Rtp_template& MNCC__PDU__Rtp_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const MNCC__PDU__Rtp&)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 @MNCC_Types.MNCC_PDU_Rtp."); +} +return *this; +} + +MNCC__PDU__Rtp_template& MNCC__PDU__Rtp_template::operator=(const MNCC__PDU__Rtp_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean MNCC__PDU__Rtp_template::match(const MNCC__PDU__Rtp& 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.callref().is_bound()) return FALSE; +if(!single_value->field_callref.match(other_value.callref(), legacy))return FALSE; +if(!other_value.ip().is_bound()) return FALSE; +if(!single_value->field_ip.match(other_value.ip(), legacy))return FALSE; +if(!other_value.rtp__port().is_bound()) return FALSE; +if(!single_value->field_rtp__port.match(other_value.rtp__port(), legacy))return FALSE; +if(!other_value.payload__type().is_bound()) return FALSE; +if(!single_value->field_payload__type.match(other_value.payload__type(), legacy))return FALSE; +if(!other_value.payload__msg__type().is_bound()) return FALSE; +if(!single_value->field_payload__msg__type.match(other_value.payload__msg__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; +default: +TTCN_error("Matching an uninitialized/unsupported template of type @MNCC_Types.MNCC_PDU_Rtp."); +} +return FALSE; +} + +boolean MNCC__PDU__Rtp_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +if (template_selection != SPECIFIC_VALUE) return TRUE; +if (single_value->field_callref.is_bound()) return TRUE; +if (single_value->field_ip.is_bound()) return TRUE; +if (single_value->field_rtp__port.is_bound()) return TRUE; +if (single_value->field_payload__type.is_bound()) return TRUE; +if (single_value->field_payload__msg__type.is_bound()) return TRUE; +return FALSE; +} + +boolean MNCC__PDU__Rtp_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +if (!single_value->field_callref.is_value()) return FALSE; +if (!single_value->field_ip.is_value()) return FALSE; +if (!single_value->field_rtp__port.is_value()) return FALSE; +if (!single_value->field_payload__type.is_value()) return FALSE; +if (!single_value->field_payload__msg__type.is_value()) return FALSE; +return TRUE; +} + +void MNCC__PDU__Rtp_template::clean_up() +{ +switch (template_selection) { +case SPECIFIC_VALUE: +delete single_value; +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +delete [] value_list.list_value; +default: +break; +} +template_selection = UNINITIALIZED_TEMPLATE; +} + +MNCC__PDU__Rtp MNCC__PDU__Rtp_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 @MNCC_Types.MNCC_PDU_Rtp."); +MNCC__PDU__Rtp ret_val; +if (single_value->field_callref.is_bound()) { +ret_val.callref() = single_value->field_callref.valueof(); +} +if (single_value->field_ip.is_bound()) { +ret_val.ip() = single_value->field_ip.valueof(); +} +if (single_value->field_rtp__port.is_bound()) { +ret_val.rtp__port() = single_value->field_rtp__port.valueof(); +} +if (single_value->field_payload__type.is_bound()) { +ret_val.payload__type() = single_value->field_payload__type.valueof(); +} +if (single_value->field_payload__msg__type.is_bound()) { +ret_val.payload__msg__type() = single_value->field_payload__msg__type.valueof(); +} +return ret_val; +} + +void MNCC__PDU__Rtp_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) +TTCN_error("Setting an invalid list for a template of type @MNCC_Types.MNCC_PDU_Rtp."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new MNCC__PDU__Rtp_template[list_length]; +} + +MNCC__PDU__Rtp_template& MNCC__PDU__Rtp_template::list_item(unsigned int list_index) const +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) +TTCN_error("Accessing a list element of a non-list template of type @MNCC_Types.MNCC_PDU_Rtp."); +if (list_index >= value_list.n_values) +TTCN_error("Index overflow in a value list template of type @MNCC_Types.MNCC_PDU_Rtp."); +return value_list.list_value[list_index]; +} + +INTEGER_template& MNCC__PDU__Rtp_template::callref() +{ +set_specific(); +return single_value->field_callref; +} + +const INTEGER_template& MNCC__PDU__Rtp_template::callref() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field callref of a non-specific template of type @MNCC_Types.MNCC_PDU_Rtp."); +return single_value->field_callref; +} + +INTEGER_template& MNCC__PDU__Rtp_template::ip() +{ +set_specific(); +return single_value->field_ip; +} + +const INTEGER_template& MNCC__PDU__Rtp_template::ip() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field ip of a non-specific template of type @MNCC_Types.MNCC_PDU_Rtp."); +return single_value->field_ip; +} + +INTEGER_template& MNCC__PDU__Rtp_template::rtp__port() +{ +set_specific(); +return single_value->field_rtp__port; +} + +const INTEGER_template& MNCC__PDU__Rtp_template::rtp__port() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field rtp_port of a non-specific template of type @MNCC_Types.MNCC_PDU_Rtp."); +return single_value->field_rtp__port; +} + +INTEGER_template& MNCC__PDU__Rtp_template::payload__type() +{ +set_specific(); +return single_value->field_payload__type; +} + +const INTEGER_template& MNCC__PDU__Rtp_template::payload__type() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field payload_type of a non-specific template of type @MNCC_Types.MNCC_PDU_Rtp."); +return single_value->field_payload__type; +} + +INTEGER_template& MNCC__PDU__Rtp_template::payload__msg__type() +{ +set_specific(); +return single_value->field_payload__msg__type; +} + +const INTEGER_template& MNCC__PDU__Rtp_template::payload__msg__type() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field payload_msg_type of a non-specific template of type @MNCC_Types.MNCC_PDU_Rtp."); +return single_value->field_payload__msg__type; +} + +int MNCC__PDU__Rtp_template::size_of() const +{ + if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_PDU_Rtp 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 @MNCC_Types.MNCC_PDU_Rtp 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 @MNCC_Types.MNCC_PDU_Rtp containing a value list with different sizes."); + } + return item_size; + } + case OMIT_VALUE: + TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_PDU_Rtp containing omit value."); + case ANY_VALUE: + case ANY_OR_OMIT: + TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_PDU_Rtp containing */? value."); + case COMPLEMENTED_LIST: + TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_PDU_Rtp containing complemented list."); + default: + TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @MNCC_Types.MNCC_PDU_Rtp."); + } + return 0; +} + +void MNCC__PDU__Rtp_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_str("{ callref := "); +single_value->field_callref.log(); +TTCN_Logger::log_event_str(", ip := "); +single_value->field_ip.log(); +TTCN_Logger::log_event_str(", rtp_port := "); +single_value->field_rtp__port.log(); +TTCN_Logger::log_event_str(", payload_type := "); +single_value->field_payload__type.log(); +TTCN_Logger::log_event_str(", payload_msg_type := "); +single_value->field_payload__msg__type.log(); +TTCN_Logger::log_event_str(" }"); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { +if (list_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[list_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void MNCC__PDU__Rtp_template::log_match(const MNCC__PDU__Rtp& 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_callref.match(match_value.callref(), legacy)){ +TTCN_Logger::log_logmatch_info(".callref"); +single_value->field_callref.log_match(match_value.callref(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_ip.match(match_value.ip(), legacy)){ +TTCN_Logger::log_logmatch_info(".ip"); +single_value->field_ip.log_match(match_value.ip(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_rtp__port.match(match_value.rtp__port(), legacy)){ +TTCN_Logger::log_logmatch_info(".rtp_port"); +single_value->field_rtp__port.log_match(match_value.rtp__port(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_payload__type.match(match_value.payload__type(), legacy)){ +TTCN_Logger::log_logmatch_info(".payload_type"); +single_value->field_payload__type.log_match(match_value.payload__type(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_payload__msg__type.match(match_value.payload__msg__type(), legacy)){ +TTCN_Logger::log_logmatch_info(".payload_msg_type"); +single_value->field_payload__msg__type.log_match(match_value.payload__msg__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("{ callref := "); +single_value->field_callref.log_match(match_value.callref(), legacy); +TTCN_Logger::log_event_str(", ip := "); +single_value->field_ip.log_match(match_value.ip(), legacy); +TTCN_Logger::log_event_str(", rtp_port := "); +single_value->field_rtp__port.log_match(match_value.rtp__port(), legacy); +TTCN_Logger::log_event_str(", payload_type := "); +single_value->field_payload__type.log_match(match_value.payload__type(), legacy); +TTCN_Logger::log_event_str(", payload_msg_type := "); +single_value->field_payload__msg__type.log_match(match_value.payload__msg__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 MNCC__PDU__Rtp_template::encode_text(Text_Buf& text_buf) const +{ +encode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value->field_callref.encode_text(text_buf); +single_value->field_ip.encode_text(text_buf); +single_value->field_rtp__port.encode_text(text_buf); +single_value->field_payload__type.encode_text(text_buf); +single_value->field_payload__msg__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 @MNCC_Types.MNCC_PDU_Rtp."); +} +} + +void MNCC__PDU__Rtp_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_callref.decode_text(text_buf); +single_value->field_ip.decode_text(text_buf); +single_value->field_rtp__port.decode_text(text_buf); +single_value->field_payload__type.decode_text(text_buf); +single_value->field_payload__msg__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 MNCC__PDU__Rtp_template[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 @MNCC_Types.MNCC_PDU_Rtp."); +} +} + +void MNCC__PDU__Rtp_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: { + MNCC__PDU__Rtp_template new_temp; + new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); + for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) callref().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ip().set_param(*param.get_elem(1)); + if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) rtp__port().set_param(*param.get_elem(2)); + if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) payload__type().set_param(*param.get_elem(3)); + if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) payload__msg__type().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(), "callref")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + callref().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "ip")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + ip().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "rtp_port")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + rtp__port().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "payload_type")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + payload__type().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "payload_msg_type")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + payload__msg__type().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @MNCC_Types.MNCC_PDU_Rtp: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record template", "@MNCC_Types.MNCC_PDU_Rtp"); + } + is_ifpresent = param.get_ifpresent(); +} + +void MNCC__PDU__Rtp_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_callref.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_PDU_Rtp"); +single_value->field_ip.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_PDU_Rtp"); +single_value->field_rtp__port.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_PDU_Rtp"); +single_value->field_payload__type.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_PDU_Rtp"); +single_value->field_payload__msg__type.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_PDU_Rtp"); +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 : "@MNCC_Types.MNCC_PDU_Rtp"); +} + +boolean MNCC__PDU__Rtp_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean MNCC__PDU__Rtp_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) version().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) mncc__size().set_param(*param.get_elem(1)); + if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) data__frame__size().set_param(*param.get_elem(2)); + if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) called__offset().set_param(*param.get_elem(3)); + if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) signal__offset().set_param(*param.get_elem(4)); + if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) emergency__offset().set_param(*param.get_elem(5)); + if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) lchan__type__offset().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(), "version")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + version().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "mncc_size")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + mncc__size().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "data_frame_size")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + data__frame__size().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "called_offset")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + called__offset().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "signal_offset")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + signal__offset().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "emergency_offset")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + emergency__offset().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "lchan_type_offset")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + lchan__type__offset().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @MNCC_Types.MNCC_PDU_Hello: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record value", "@MNCC_Types.MNCC_PDU_Hello"); + } +} + +void MNCC__PDU__Hello::set_implicit_omit() +{ +if (version().is_bound()) version().set_implicit_omit(); +if (mncc__size().is_bound()) mncc__size().set_implicit_omit(); +if (data__frame__size().is_bound()) data__frame__size().set_implicit_omit(); +if (called__offset().is_bound()) called__offset().set_implicit_omit(); +if (signal__offset().is_bound()) signal__offset().set_implicit_omit(); +if (emergency__offset().is_bound()) emergency__offset().set_implicit_omit(); +if (lchan__type__offset().is_bound()) lchan__type__offset().set_implicit_omit(); +} + +void MNCC__PDU__Hello::encode_text(Text_Buf& text_buf) const +{ +field_version.encode_text(text_buf); +field_mncc__size.encode_text(text_buf); +field_data__frame__size.encode_text(text_buf); +field_called__offset.encode_text(text_buf); +field_signal__offset.encode_text(text_buf); +field_emergency__offset.encode_text(text_buf); +field_lchan__type__offset.encode_text(text_buf); +} + +void MNCC__PDU__Hello::decode_text(Text_Buf& text_buf) +{ +field_version.decode_text(text_buf); +field_mncc__size.decode_text(text_buf); +field_data__frame__size.decode_text(text_buf); +field_called__offset.decode_text(text_buf); +field_signal__offset.decode_text(text_buf); +field_emergency__offset.decode_text(text_buf); +field_lchan__type__offset.decode_text(text_buf); +} + +void MNCC__PDU__Hello::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void MNCC__PDU__Hello::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int MNCC__PDU__Hello::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) +{ (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; + decoded_field_length = field_version.RAW_decode(MNCC__PDU__Hello_version_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_mncc__size.RAW_decode(MNCC__PDU__Hello_mncc__size_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_data__frame__size.RAW_decode(MNCC__PDU__Hello_data__frame__size_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_called__offset.RAW_decode(MNCC__PDU__Hello_called__offset_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_signal__offset.RAW_decode(MNCC__PDU__Hello_signal__offset_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_emergency__offset.RAW_decode(MNCC__PDU__Hello_emergency__offset_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_lchan__type__offset.RAW_decode(MNCC__PDU__Hello_lchan__type__offset_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return 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 MNCC__PDU__Hello::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, MNCC__PDU__Hello_version_descr_.raw); + myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, MNCC__PDU__Hello_mncc__size_descr_.raw); + myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, MNCC__PDU__Hello_data__frame__size_descr_.raw); + myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, MNCC__PDU__Hello_called__offset_descr_.raw); + myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, MNCC__PDU__Hello_signal__offset_descr_.raw); + myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, MNCC__PDU__Hello_emergency__offset_descr_.raw); + myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, MNCC__PDU__Hello_lchan__type__offset_descr_.raw); + encoded_length += field_version.RAW_encode(MNCC__PDU__Hello_version_descr_, *myleaf.body.node.nodes[0]); + encoded_length += field_mncc__size.RAW_encode(MNCC__PDU__Hello_mncc__size_descr_, *myleaf.body.node.nodes[1]); + encoded_length += field_data__frame__size.RAW_encode(MNCC__PDU__Hello_data__frame__size_descr_, *myleaf.body.node.nodes[2]); + encoded_length += field_called__offset.RAW_encode(MNCC__PDU__Hello_called__offset_descr_, *myleaf.body.node.nodes[3]); + encoded_length += field_signal__offset.RAW_encode(MNCC__PDU__Hello_signal__offset_descr_, *myleaf.body.node.nodes[4]); + encoded_length += field_emergency__offset.RAW_encode(MNCC__PDU__Hello_emergency__offset_descr_, *myleaf.body.node.nodes[5]); + encoded_length += field_lchan__type__offset.RAW_encode(MNCC__PDU__Hello_lchan__type__offset_descr_, *myleaf.body.node.nodes[6]); + return myleaf.length = encoded_length; +} + +struct MNCC__PDU__Hello_template::single_value_struct { +INTEGER_template field_version; +INTEGER_template field_mncc__size; +INTEGER_template field_data__frame__size; +INTEGER_template field_called__offset; +INTEGER_template field_signal__offset; +INTEGER_template field_emergency__offset; +INTEGER_template field_lchan__type__offset; +}; + +void MNCC__PDU__Hello_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_version = ANY_VALUE; +single_value->field_mncc__size = ANY_VALUE; +single_value->field_data__frame__size = ANY_VALUE; +single_value->field_called__offset = ANY_VALUE; +single_value->field_signal__offset = ANY_VALUE; +single_value->field_emergency__offset = ANY_VALUE; +single_value->field_lchan__type__offset = ANY_VALUE; +} +} +} + +void MNCC__PDU__Hello_template::copy_value(const MNCC__PDU__Hello& other_value) +{ +single_value = new single_value_struct; +if (other_value.version().is_bound()) { + single_value->field_version = other_value.version(); +} else { + single_value->field_version.clean_up(); +} +if (other_value.mncc__size().is_bound()) { + single_value->field_mncc__size = other_value.mncc__size(); +} else { + single_value->field_mncc__size.clean_up(); +} +if (other_value.data__frame__size().is_bound()) { + single_value->field_data__frame__size = other_value.data__frame__size(); +} else { + single_value->field_data__frame__size.clean_up(); +} +if (other_value.called__offset().is_bound()) { + single_value->field_called__offset = other_value.called__offset(); +} else { + single_value->field_called__offset.clean_up(); +} +if (other_value.signal__offset().is_bound()) { + single_value->field_signal__offset = other_value.signal__offset(); +} else { + single_value->field_signal__offset.clean_up(); +} +if (other_value.emergency__offset().is_bound()) { + single_value->field_emergency__offset = other_value.emergency__offset(); +} else { + single_value->field_emergency__offset.clean_up(); +} +if (other_value.lchan__type__offset().is_bound()) { + single_value->field_lchan__type__offset = other_value.lchan__type__offset(); +} else { + single_value->field_lchan__type__offset.clean_up(); +} +set_selection(SPECIFIC_VALUE); +} + +void MNCC__PDU__Hello_template::copy_template(const MNCC__PDU__Hello_template& other_value) +{ +switch (other_value.template_selection) { +case SPECIFIC_VALUE: +single_value = new single_value_struct; +if (UNINITIALIZED_TEMPLATE != other_value.version().get_selection()) { +single_value->field_version = other_value.version(); +} else { +single_value->field_version.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.mncc__size().get_selection()) { +single_value->field_mncc__size = other_value.mncc__size(); +} else { +single_value->field_mncc__size.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.data__frame__size().get_selection()) { +single_value->field_data__frame__size = other_value.data__frame__size(); +} else { +single_value->field_data__frame__size.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.called__offset().get_selection()) { +single_value->field_called__offset = other_value.called__offset(); +} else { +single_value->field_called__offset.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.signal__offset().get_selection()) { +single_value->field_signal__offset = other_value.signal__offset(); +} else { +single_value->field_signal__offset.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.emergency__offset().get_selection()) { +single_value->field_emergency__offset = other_value.emergency__offset(); +} else { +single_value->field_emergency__offset.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.lchan__type__offset().get_selection()) { +single_value->field_lchan__type__offset = other_value.lchan__type__offset(); +} else { +single_value->field_lchan__type__offset.clean_up(); +} +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new MNCC__PDU__Hello_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of type @MNCC_Types.MNCC_PDU_Hello."); +break; +} +set_selection(other_value); +} + +MNCC__PDU__Hello_template::MNCC__PDU__Hello_template() +{ +} + +MNCC__PDU__Hello_template::MNCC__PDU__Hello_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +MNCC__PDU__Hello_template::MNCC__PDU__Hello_template(const MNCC__PDU__Hello& other_value) +{ +copy_value(other_value); +} + +MNCC__PDU__Hello_template::MNCC__PDU__Hello_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const MNCC__PDU__Hello&)other_value); +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of type @MNCC_Types.MNCC_PDU_Hello from an unbound optional field."); +} +} + +MNCC__PDU__Hello_template::MNCC__PDU__Hello_template(const MNCC__PDU__Hello_template& other_value) +: Base_Template() +{ +copy_template(other_value); +} + +MNCC__PDU__Hello_template::~MNCC__PDU__Hello_template() +{ +clean_up(); +} + +MNCC__PDU__Hello_template& MNCC__PDU__Hello_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +MNCC__PDU__Hello_template& MNCC__PDU__Hello_template::operator=(const MNCC__PDU__Hello& other_value) +{ +clean_up(); +copy_value(other_value); +return *this; +} + +MNCC__PDU__Hello_template& MNCC__PDU__Hello_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const MNCC__PDU__Hello&)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 @MNCC_Types.MNCC_PDU_Hello."); +} +return *this; +} + +MNCC__PDU__Hello_template& MNCC__PDU__Hello_template::operator=(const MNCC__PDU__Hello_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean MNCC__PDU__Hello_template::match(const MNCC__PDU__Hello& 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.version().is_bound()) return FALSE; +if(!single_value->field_version.match(other_value.version(), legacy))return FALSE; +if(!other_value.mncc__size().is_bound()) return FALSE; +if(!single_value->field_mncc__size.match(other_value.mncc__size(), legacy))return FALSE; +if(!other_value.data__frame__size().is_bound()) return FALSE; +if(!single_value->field_data__frame__size.match(other_value.data__frame__size(), legacy))return FALSE; +if(!other_value.called__offset().is_bound()) return FALSE; +if(!single_value->field_called__offset.match(other_value.called__offset(), legacy))return FALSE; +if(!other_value.signal__offset().is_bound()) return FALSE; +if(!single_value->field_signal__offset.match(other_value.signal__offset(), legacy))return FALSE; +if(!other_value.emergency__offset().is_bound()) return FALSE; +if(!single_value->field_emergency__offset.match(other_value.emergency__offset(), legacy))return FALSE; +if(!other_value.lchan__type__offset().is_bound()) return FALSE; +if(!single_value->field_lchan__type__offset.match(other_value.lchan__type__offset(), legacy))return FALSE; +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of type @MNCC_Types.MNCC_PDU_Hello."); +} +return FALSE; +} + +boolean MNCC__PDU__Hello_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +if (template_selection != SPECIFIC_VALUE) return TRUE; +if (single_value->field_version.is_bound()) return TRUE; +if (single_value->field_mncc__size.is_bound()) return TRUE; +if (single_value->field_data__frame__size.is_bound()) return TRUE; +if (single_value->field_called__offset.is_bound()) return TRUE; +if (single_value->field_signal__offset.is_bound()) return TRUE; +if (single_value->field_emergency__offset.is_bound()) return TRUE; +if (single_value->field_lchan__type__offset.is_bound()) return TRUE; +return FALSE; +} + +boolean MNCC__PDU__Hello_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +if (!single_value->field_version.is_value()) return FALSE; +if (!single_value->field_mncc__size.is_value()) return FALSE; +if (!single_value->field_data__frame__size.is_value()) return FALSE; +if (!single_value->field_called__offset.is_value()) return FALSE; +if (!single_value->field_signal__offset.is_value()) return FALSE; +if (!single_value->field_emergency__offset.is_value()) return FALSE; +if (!single_value->field_lchan__type__offset.is_value()) return FALSE; +return TRUE; +} + +void MNCC__PDU__Hello_template::clean_up() +{ +switch (template_selection) { +case SPECIFIC_VALUE: +delete single_value; +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +delete [] value_list.list_value; +default: +break; +} +template_selection = UNINITIALIZED_TEMPLATE; +} + +MNCC__PDU__Hello MNCC__PDU__Hello_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 @MNCC_Types.MNCC_PDU_Hello."); +MNCC__PDU__Hello ret_val; +if (single_value->field_version.is_bound()) { +ret_val.version() = single_value->field_version.valueof(); +} +if (single_value->field_mncc__size.is_bound()) { +ret_val.mncc__size() = single_value->field_mncc__size.valueof(); +} +if (single_value->field_data__frame__size.is_bound()) { +ret_val.data__frame__size() = single_value->field_data__frame__size.valueof(); +} +if (single_value->field_called__offset.is_bound()) { +ret_val.called__offset() = single_value->field_called__offset.valueof(); +} +if (single_value->field_signal__offset.is_bound()) { +ret_val.signal__offset() = single_value->field_signal__offset.valueof(); +} +if (single_value->field_emergency__offset.is_bound()) { +ret_val.emergency__offset() = single_value->field_emergency__offset.valueof(); +} +if (single_value->field_lchan__type__offset.is_bound()) { +ret_val.lchan__type__offset() = single_value->field_lchan__type__offset.valueof(); +} +return ret_val; +} + +void MNCC__PDU__Hello_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) +TTCN_error("Setting an invalid list for a template of type @MNCC_Types.MNCC_PDU_Hello."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new MNCC__PDU__Hello_template[list_length]; +} + +MNCC__PDU__Hello_template& MNCC__PDU__Hello_template::list_item(unsigned int list_index) const +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) +TTCN_error("Accessing a list element of a non-list template of type @MNCC_Types.MNCC_PDU_Hello."); +if (list_index >= value_list.n_values) +TTCN_error("Index overflow in a value list template of type @MNCC_Types.MNCC_PDU_Hello."); +return value_list.list_value[list_index]; +} + +INTEGER_template& MNCC__PDU__Hello_template::version() +{ +set_specific(); +return single_value->field_version; +} + +const INTEGER_template& MNCC__PDU__Hello_template::version() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field version of a non-specific template of type @MNCC_Types.MNCC_PDU_Hello."); +return single_value->field_version; +} + +INTEGER_template& MNCC__PDU__Hello_template::mncc__size() +{ +set_specific(); +return single_value->field_mncc__size; +} + +const INTEGER_template& MNCC__PDU__Hello_template::mncc__size() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field mncc_size of a non-specific template of type @MNCC_Types.MNCC_PDU_Hello."); +return single_value->field_mncc__size; +} + +INTEGER_template& MNCC__PDU__Hello_template::data__frame__size() +{ +set_specific(); +return single_value->field_data__frame__size; +} + +const INTEGER_template& MNCC__PDU__Hello_template::data__frame__size() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field data_frame_size of a non-specific template of type @MNCC_Types.MNCC_PDU_Hello."); +return single_value->field_data__frame__size; +} + +INTEGER_template& MNCC__PDU__Hello_template::called__offset() +{ +set_specific(); +return single_value->field_called__offset; +} + +const INTEGER_template& MNCC__PDU__Hello_template::called__offset() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field called_offset of a non-specific template of type @MNCC_Types.MNCC_PDU_Hello."); +return single_value->field_called__offset; +} + +INTEGER_template& MNCC__PDU__Hello_template::signal__offset() +{ +set_specific(); +return single_value->field_signal__offset; +} + +const INTEGER_template& MNCC__PDU__Hello_template::signal__offset() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field signal_offset of a non-specific template of type @MNCC_Types.MNCC_PDU_Hello."); +return single_value->field_signal__offset; +} + +INTEGER_template& MNCC__PDU__Hello_template::emergency__offset() +{ +set_specific(); +return single_value->field_emergency__offset; +} + +const INTEGER_template& MNCC__PDU__Hello_template::emergency__offset() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field emergency_offset of a non-specific template of type @MNCC_Types.MNCC_PDU_Hello."); +return single_value->field_emergency__offset; +} + +INTEGER_template& MNCC__PDU__Hello_template::lchan__type__offset() +{ +set_specific(); +return single_value->field_lchan__type__offset; +} + +const INTEGER_template& MNCC__PDU__Hello_template::lchan__type__offset() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field lchan_type_offset of a non-specific template of type @MNCC_Types.MNCC_PDU_Hello."); +return single_value->field_lchan__type__offset; +} + +int MNCC__PDU__Hello_template::size_of() const +{ + if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_PDU_Hello 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 @MNCC_Types.MNCC_PDU_Hello 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 @MNCC_Types.MNCC_PDU_Hello containing a value list with different sizes."); + } + return item_size; + } + case OMIT_VALUE: + TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_PDU_Hello containing omit value."); + case ANY_VALUE: + case ANY_OR_OMIT: + TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_PDU_Hello containing */? value."); + case COMPLEMENTED_LIST: + TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_PDU_Hello containing complemented list."); + default: + TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @MNCC_Types.MNCC_PDU_Hello."); + } + return 0; +} + +void MNCC__PDU__Hello_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_str("{ version := "); +single_value->field_version.log(); +TTCN_Logger::log_event_str(", mncc_size := "); +single_value->field_mncc__size.log(); +TTCN_Logger::log_event_str(", data_frame_size := "); +single_value->field_data__frame__size.log(); +TTCN_Logger::log_event_str(", called_offset := "); +single_value->field_called__offset.log(); +TTCN_Logger::log_event_str(", signal_offset := "); +single_value->field_signal__offset.log(); +TTCN_Logger::log_event_str(", emergency_offset := "); +single_value->field_emergency__offset.log(); +TTCN_Logger::log_event_str(", lchan_type_offset := "); +single_value->field_lchan__type__offset.log(); +TTCN_Logger::log_event_str(" }"); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { +if (list_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[list_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void MNCC__PDU__Hello_template::log_match(const MNCC__PDU__Hello& 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_version.match(match_value.version(), legacy)){ +TTCN_Logger::log_logmatch_info(".version"); +single_value->field_version.log_match(match_value.version(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_mncc__size.match(match_value.mncc__size(), legacy)){ +TTCN_Logger::log_logmatch_info(".mncc_size"); +single_value->field_mncc__size.log_match(match_value.mncc__size(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_data__frame__size.match(match_value.data__frame__size(), legacy)){ +TTCN_Logger::log_logmatch_info(".data_frame_size"); +single_value->field_data__frame__size.log_match(match_value.data__frame__size(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_called__offset.match(match_value.called__offset(), legacy)){ +TTCN_Logger::log_logmatch_info(".called_offset"); +single_value->field_called__offset.log_match(match_value.called__offset(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_signal__offset.match(match_value.signal__offset(), legacy)){ +TTCN_Logger::log_logmatch_info(".signal_offset"); +single_value->field_signal__offset.log_match(match_value.signal__offset(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_emergency__offset.match(match_value.emergency__offset(), legacy)){ +TTCN_Logger::log_logmatch_info(".emergency_offset"); +single_value->field_emergency__offset.log_match(match_value.emergency__offset(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_lchan__type__offset.match(match_value.lchan__type__offset(), legacy)){ +TTCN_Logger::log_logmatch_info(".lchan_type_offset"); +single_value->field_lchan__type__offset.log_match(match_value.lchan__type__offset(), 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("{ version := "); +single_value->field_version.log_match(match_value.version(), legacy); +TTCN_Logger::log_event_str(", mncc_size := "); +single_value->field_mncc__size.log_match(match_value.mncc__size(), legacy); +TTCN_Logger::log_event_str(", data_frame_size := "); +single_value->field_data__frame__size.log_match(match_value.data__frame__size(), legacy); +TTCN_Logger::log_event_str(", called_offset := "); +single_value->field_called__offset.log_match(match_value.called__offset(), legacy); +TTCN_Logger::log_event_str(", signal_offset := "); +single_value->field_signal__offset.log_match(match_value.signal__offset(), legacy); +TTCN_Logger::log_event_str(", emergency_offset := "); +single_value->field_emergency__offset.log_match(match_value.emergency__offset(), legacy); +TTCN_Logger::log_event_str(", lchan_type_offset := "); +single_value->field_lchan__type__offset.log_match(match_value.lchan__type__offset(), 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 MNCC__PDU__Hello_template::encode_text(Text_Buf& text_buf) const +{ +encode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value->field_version.encode_text(text_buf); +single_value->field_mncc__size.encode_text(text_buf); +single_value->field_data__frame__size.encode_text(text_buf); +single_value->field_called__offset.encode_text(text_buf); +single_value->field_signal__offset.encode_text(text_buf); +single_value->field_emergency__offset.encode_text(text_buf); +single_value->field_lchan__type__offset.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 @MNCC_Types.MNCC_PDU_Hello."); +} +} + +void MNCC__PDU__Hello_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_version.decode_text(text_buf); +single_value->field_mncc__size.decode_text(text_buf); +single_value->field_data__frame__size.decode_text(text_buf); +single_value->field_called__offset.decode_text(text_buf); +single_value->field_signal__offset.decode_text(text_buf); +single_value->field_emergency__offset.decode_text(text_buf); +single_value->field_lchan__type__offset.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 MNCC__PDU__Hello_template[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 @MNCC_Types.MNCC_PDU_Hello."); +} +} + +void MNCC__PDU__Hello_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: { + MNCC__PDU__Hello_template new_temp; + new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); + for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) version().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) mncc__size().set_param(*param.get_elem(1)); + if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) data__frame__size().set_param(*param.get_elem(2)); + if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) called__offset().set_param(*param.get_elem(3)); + if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) signal__offset().set_param(*param.get_elem(4)); + if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) emergency__offset().set_param(*param.get_elem(5)); + if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) lchan__type__offset().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(), "version")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + version().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "mncc_size")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + mncc__size().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "data_frame_size")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + data__frame__size().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "called_offset")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + called__offset().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "signal_offset")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + signal__offset().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "emergency_offset")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + emergency__offset().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "lchan_type_offset")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + lchan__type__offset().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @MNCC_Types.MNCC_PDU_Hello: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record template", "@MNCC_Types.MNCC_PDU_Hello"); + } + is_ifpresent = param.get_ifpresent(); +} + +void MNCC__PDU__Hello_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_version.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_PDU_Hello"); +single_value->field_mncc__size.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_PDU_Hello"); +single_value->field_data__frame__size.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_PDU_Hello"); +single_value->field_called__offset.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_PDU_Hello"); +single_value->field_signal__offset.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_PDU_Hello"); +single_value->field_emergency__offset.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_PDU_Hello"); +single_value->field_lchan__type__offset.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_PDU_Hello"); +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 : "@MNCC_Types.MNCC_PDU_Hello"); +} + +boolean MNCC__PDU__Hello_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean MNCC__PDU__Hello_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int l_idx=0; l_idxis_value(); +case ALT_data: return field_data->is_value(); +case ALT_rtp: return field_rtp->is_value(); +case ALT_hello: return field_hello->is_value(); +default: TTCN_error("Invalid selection in union is_bound");} +} + +void MNCC__MsgUnion::clean_up() +{ +switch (union_selection) { +case ALT_signal: + delete field_signal; + break; +case ALT_data: + delete field_data; + break; +case ALT_rtp: + delete field_rtp; + break; +case ALT_hello: + delete field_hello; + break; +default: + break; +} +union_selection = UNBOUND_VALUE; +} + +void MNCC__MsgUnion::log() const +{ +switch (union_selection) { +case ALT_signal: +TTCN_Logger::log_event_str("{ signal := "); +field_signal->log(); +TTCN_Logger::log_event_str(" }"); +break; +case ALT_data: +TTCN_Logger::log_event_str("{ data := "); +field_data->log(); +TTCN_Logger::log_event_str(" }"); +break; +case ALT_rtp: +TTCN_Logger::log_event_str("{ rtp := "); +field_rtp->log(); +TTCN_Logger::log_event_str(" }"); +break; +case ALT_hello: +TTCN_Logger::log_event_str("{ hello := "); +field_hello->log(); +TTCN_Logger::log_event_str(" }"); +break; +default: +TTCN_Logger::log_event_unbound(); +} +} + +void MNCC__MsgUnion::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); + if (!strcmp(mp_last->get_id()->get_name(), "signal")) { + signal().set_param(*mp_last); + if (!signal().is_bound()) clean_up(); + return; + } + if (!strcmp(mp_last->get_id()->get_name(), "data")) { + data().set_param(*mp_last); + if (!data().is_bound()) clean_up(); + return; + } + if (!strcmp(mp_last->get_id()->get_name(), "rtp")) { + rtp().set_param(*mp_last); + if (!rtp().is_bound()) clean_up(); + return; + } + if (!strcmp(mp_last->get_id()->get_name(), "hello")) { + hello().set_param(*mp_last); + if (!hello().is_bound()) clean_up(); + return; + } + mp_last->error("Field %s does not exist in type @MNCC_Types.MNCC_MsgUnion.", mp_last->get_id()->get_name()); +} + +void MNCC__MsgUnion::set_implicit_omit() +{ +switch (union_selection) { +case ALT_signal: +field_signal->set_implicit_omit(); break; +case ALT_data: +field_data->set_implicit_omit(); break; +case ALT_rtp: +field_rtp->set_implicit_omit(); break; +case ALT_hello: +field_hello->set_implicit_omit(); break; +default: break; +} +} + +void MNCC__MsgUnion::encode_text(Text_Buf& text_buf) const +{ +text_buf.push_int(union_selection); +switch (union_selection) { +case ALT_signal: +field_signal->encode_text(text_buf); +break; +case ALT_data: +field_data->encode_text(text_buf); +break; +case ALT_rtp: +field_rtp->encode_text(text_buf); +break; +case ALT_hello: +field_hello->encode_text(text_buf); +break; +default: +TTCN_error("Text encoder: Encoding an unbound value of union type @MNCC_Types.MNCC_MsgUnion."); +} +} + +void MNCC__MsgUnion::decode_text(Text_Buf& text_buf) +{ +switch ((union_selection_type)text_buf.pull_int().get_val()) { +case ALT_signal: +signal().decode_text(text_buf); +break; +case ALT_data: +data().decode_text(text_buf); +break; +case ALT_rtp: +rtp().decode_text(text_buf); +break; +case ALT_hello: +hello().decode_text(text_buf); +break; +default: +TTCN_error("Text decoder: Unrecognized union selector was received for type @MNCC_Types.MNCC_MsgUnion."); +} +} + +void MNCC__MsgUnion::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void MNCC__MsgUnion::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int MNCC__MsgUnion::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) +{ + 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: + decoded_length = signal().RAW_decode(MNCC__MsgUnion_signal_descr_, p_buf, limit, top_bit_ord, no_err); + break; + case 1: + decoded_length = data().RAW_decode(MNCC__MsgUnion_data_descr_, p_buf, limit, top_bit_ord, no_err); + break; + case 2: + decoded_length = rtp().RAW_decode(MNCC__MsgUnion_rtp_descr_, p_buf, limit, top_bit_ord, no_err); + break; + case 3: + decoded_length = hello().RAW_decode(MNCC__MsgUnion_hello_descr_, p_buf, limit, top_bit_ord, no_err); + break; + default: break; + } + return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; + } else { + p_buf.set_pos_bit(starting_pos); + decoded_length = signal().RAW_decode(MNCC__MsgUnion_signal_descr_, p_buf, limit, top_bit_ord, TRUE); + if (decoded_length >= 0) { + return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; + } + p_buf.set_pos_bit(starting_pos); + decoded_length = data().RAW_decode(MNCC__MsgUnion_data_descr_, p_buf, limit, top_bit_ord, TRUE); + if (decoded_length >= 0) { + return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; + } + p_buf.set_pos_bit(starting_pos); + decoded_length = rtp().RAW_decode(MNCC__MsgUnion_rtp_descr_, p_buf, limit, top_bit_ord, TRUE); + if (decoded_length >= 0) { + return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; + } + p_buf.set_pos_bit(starting_pos); + decoded_length = hello().RAW_decode(MNCC__MsgUnion_hello_descr_, p_buf, limit, top_bit_ord, TRUE); + if (decoded_length >= 0) { + return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; + } + } + clean_up(); + return -1; +} + +int MNCC__MsgUnion::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const +{ + int encoded_length = 0; + myleaf.isleaf = FALSE; + myleaf.body.node.num_of_nodes = 4; myleaf.body.node.nodes = init_nodes_of_enc_tree(4); + memset(myleaf.body.node.nodes, 0, 4 * sizeof(RAW_enc_tree *)); + switch (union_selection) { + case ALT_signal: + myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 0, MNCC__MsgUnion_signal_descr_.raw); + encoded_length = field_signal->RAW_encode(MNCC__MsgUnion_signal_descr_, *myleaf.body.node.nodes[0]); + myleaf.body.node.nodes[0]->coding_descr = &MNCC__MsgUnion_signal_descr_; + break; + case ALT_data: + myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 1, MNCC__MsgUnion_data_descr_.raw); + encoded_length = field_data->RAW_encode(MNCC__MsgUnion_data_descr_, *myleaf.body.node.nodes[1]); + myleaf.body.node.nodes[1]->coding_descr = &MNCC__MsgUnion_data_descr_; + break; + case ALT_rtp: + myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 2, MNCC__MsgUnion_rtp_descr_.raw); + encoded_length = field_rtp->RAW_encode(MNCC__MsgUnion_rtp_descr_, *myleaf.body.node.nodes[2]); + myleaf.body.node.nodes[2]->coding_descr = &MNCC__MsgUnion_rtp_descr_; + break; + case ALT_hello: + myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 3, MNCC__MsgUnion_hello_descr_.raw); + encoded_length = field_hello->RAW_encode(MNCC__MsgUnion_hello_descr_, *myleaf.body.node.nodes[3]); + myleaf.body.node.nodes[3]->coding_descr = &MNCC__MsgUnion_hello_descr_; + break; + default: + TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); + } + return encoded_length; +} + +void MNCC__MsgUnion_template::copy_value(const MNCC__MsgUnion& other_value) +{ +single_value.union_selection = other_value.get_selection(); +switch (single_value.union_selection) { +case MNCC__MsgUnion::ALT_signal: +single_value.field_signal = new MNCC__PDU__Signal_template(other_value.signal()); +break; +case MNCC__MsgUnion::ALT_data: +single_value.field_data = new MNCC__PDU__Data_template(other_value.data()); +break; +case MNCC__MsgUnion::ALT_rtp: +single_value.field_rtp = new MNCC__PDU__Rtp_template(other_value.rtp()); +break; +case MNCC__MsgUnion::ALT_hello: +single_value.field_hello = new MNCC__PDU__Hello_template(other_value.hello()); +break; +default: +TTCN_error("Initializing a template with an unbound value of type @MNCC_Types.MNCC_MsgUnion."); +} +set_selection(SPECIFIC_VALUE); +} + +void MNCC__MsgUnion_template::copy_template(const MNCC__MsgUnion_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 MNCC__MsgUnion::ALT_signal: +single_value.field_signal = new MNCC__PDU__Signal_template(*other_value.single_value.field_signal); +break; +case MNCC__MsgUnion::ALT_data: +single_value.field_data = new MNCC__PDU__Data_template(*other_value.single_value.field_data); +break; +case MNCC__MsgUnion::ALT_rtp: +single_value.field_rtp = new MNCC__PDU__Rtp_template(*other_value.single_value.field_rtp); +break; +case MNCC__MsgUnion::ALT_hello: +single_value.field_hello = new MNCC__PDU__Hello_template(*other_value.single_value.field_hello); +break; +default: +TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @MNCC_Types.MNCC_MsgUnion."); +} +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new MNCC__MsgUnion_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized template of union type @MNCC_Types.MNCC_MsgUnion."); +} +set_selection(other_value); +} + +MNCC__MsgUnion_template::MNCC__MsgUnion_template() +{ +} + +MNCC__MsgUnion_template::MNCC__MsgUnion_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +MNCC__MsgUnion_template::MNCC__MsgUnion_template(const MNCC__MsgUnion& other_value) +{ +copy_value(other_value); +} + +MNCC__MsgUnion_template::MNCC__MsgUnion_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const MNCC__MsgUnion&)other_value); +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of union type @MNCC_Types.MNCC_MsgUnion from an unbound optional field."); +} +} + +MNCC__MsgUnion_template::MNCC__MsgUnion_template(const MNCC__MsgUnion_template& other_value) +: Base_Template(){ +copy_template(other_value); +} + +MNCC__MsgUnion_template::~MNCC__MsgUnion_template() +{ +clean_up(); +} + +void MNCC__MsgUnion_template::clean_up() +{ +switch (template_selection) { +case SPECIFIC_VALUE: +switch (single_value.union_selection) { +case MNCC__MsgUnion::ALT_signal: +delete single_value.field_signal; +break; +case MNCC__MsgUnion::ALT_data: +delete single_value.field_data; +break; +case MNCC__MsgUnion::ALT_rtp: +delete single_value.field_rtp; +break; +case MNCC__MsgUnion::ALT_hello: +delete single_value.field_hello; +default: +break; +} +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +delete [] value_list.list_value; +default: +break; +} +template_selection = UNINITIALIZED_TEMPLATE; +} + +MNCC__MsgUnion_template& MNCC__MsgUnion_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +MNCC__MsgUnion_template& MNCC__MsgUnion_template::operator=(const MNCC__MsgUnion& other_value) +{ +clean_up(); +copy_value(other_value); +return *this; +} + +MNCC__MsgUnion_template& MNCC__MsgUnion_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const MNCC__MsgUnion&)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 @MNCC_Types.MNCC_MsgUnion."); +} +return *this; +} + +MNCC__MsgUnion_template& MNCC__MsgUnion_template::operator=(const MNCC__MsgUnion_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean MNCC__MsgUnion_template::match(const MNCC__MsgUnion& 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: +{ +MNCC__MsgUnion::union_selection_type value_selection = other_value.get_selection(); +if (value_selection == MNCC__MsgUnion::UNBOUND_VALUE) return FALSE; +if (value_selection != single_value.union_selection) return FALSE; +switch (value_selection) { +case MNCC__MsgUnion::ALT_signal: +return single_value.field_signal->match(other_value.signal(), legacy); +case MNCC__MsgUnion::ALT_data: +return single_value.field_data->match(other_value.data(), legacy); +case MNCC__MsgUnion::ALT_rtp: +return single_value.field_rtp->match(other_value.rtp(), legacy); +case MNCC__MsgUnion::ALT_hello: +return single_value.field_hello->match(other_value.hello(), legacy); +default: +TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @MNCC_Types.MNCC_MsgUnion."); +} +} +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error ("Matching an uninitialized template of union type @MNCC_Types.MNCC_MsgUnion."); +} +return FALSE; +} + +boolean MNCC__MsgUnion_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +switch (single_value.union_selection) { +case MNCC__MsgUnion::ALT_signal: +return single_value.field_signal->is_value(); +case MNCC__MsgUnion::ALT_data: +return single_value.field_data->is_value(); +case MNCC__MsgUnion::ALT_rtp: +return single_value.field_rtp->is_value(); +case MNCC__MsgUnion::ALT_hello: +return single_value.field_hello->is_value(); +default: +TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @MNCC_Types.MNCC_MsgUnion."); +} +} + +MNCC__MsgUnion MNCC__MsgUnion_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 @MNCC_Types.MNCC_MsgUnion."); +MNCC__MsgUnion ret_val; +switch (single_value.union_selection) { +case MNCC__MsgUnion::ALT_signal: +ret_val.signal() = single_value.field_signal->valueof(); +break; +case MNCC__MsgUnion::ALT_data: +ret_val.data() = single_value.field_data->valueof(); +break; +case MNCC__MsgUnion::ALT_rtp: +ret_val.rtp() = single_value.field_rtp->valueof(); +break; +case MNCC__MsgUnion::ALT_hello: +ret_val.hello() = single_value.field_hello->valueof(); +break; +default: +TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @MNCC_Types.MNCC_MsgUnion."); +} +return ret_val; +} + +MNCC__MsgUnion_template& MNCC__MsgUnion_template::list_item(unsigned int list_index) const +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @MNCC_Types.MNCC_MsgUnion."); +if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @MNCC_Types.MNCC_MsgUnion."); +return value_list.list_value[list_index]; +} +void MNCC__MsgUnion_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error ("Internal error: Setting an invalid list for a template of union type @MNCC_Types.MNCC_MsgUnion."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new MNCC__MsgUnion_template[list_length]; +} + +MNCC__PDU__Signal_template& MNCC__MsgUnion_template::signal() +{ +if (template_selection != SPECIFIC_VALUE || single_value.union_selection != MNCC__MsgUnion::ALT_signal) { +template_sel old_selection = template_selection; +clean_up(); +if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_signal = new MNCC__PDU__Signal_template(ANY_VALUE); +else single_value.field_signal = new MNCC__PDU__Signal_template; +single_value.union_selection = MNCC__MsgUnion::ALT_signal; +set_selection(SPECIFIC_VALUE); +} +return *single_value.field_signal; +} + +const MNCC__PDU__Signal_template& MNCC__MsgUnion_template::signal() const +{ +if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field signal in a non-specific template of union type @MNCC_Types.MNCC_MsgUnion."); +if (single_value.union_selection != MNCC__MsgUnion::ALT_signal) TTCN_error("Accessing non-selected field signal in a template of union type @MNCC_Types.MNCC_MsgUnion."); +return *single_value.field_signal; +} + +MNCC__PDU__Data_template& MNCC__MsgUnion_template::data() +{ +if (template_selection != SPECIFIC_VALUE || single_value.union_selection != MNCC__MsgUnion::ALT_data) { +template_sel old_selection = template_selection; +clean_up(); +if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_data = new MNCC__PDU__Data_template(ANY_VALUE); +else single_value.field_data = new MNCC__PDU__Data_template; +single_value.union_selection = MNCC__MsgUnion::ALT_data; +set_selection(SPECIFIC_VALUE); +} +return *single_value.field_data; +} + +const MNCC__PDU__Data_template& MNCC__MsgUnion_template::data() const +{ +if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field data in a non-specific template of union type @MNCC_Types.MNCC_MsgUnion."); +if (single_value.union_selection != MNCC__MsgUnion::ALT_data) TTCN_error("Accessing non-selected field data in a template of union type @MNCC_Types.MNCC_MsgUnion."); +return *single_value.field_data; +} + +MNCC__PDU__Rtp_template& MNCC__MsgUnion_template::rtp() +{ +if (template_selection != SPECIFIC_VALUE || single_value.union_selection != MNCC__MsgUnion::ALT_rtp) { +template_sel old_selection = template_selection; +clean_up(); +if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_rtp = new MNCC__PDU__Rtp_template(ANY_VALUE); +else single_value.field_rtp = new MNCC__PDU__Rtp_template; +single_value.union_selection = MNCC__MsgUnion::ALT_rtp; +set_selection(SPECIFIC_VALUE); +} +return *single_value.field_rtp; +} + +const MNCC__PDU__Rtp_template& MNCC__MsgUnion_template::rtp() const +{ +if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field rtp in a non-specific template of union type @MNCC_Types.MNCC_MsgUnion."); +if (single_value.union_selection != MNCC__MsgUnion::ALT_rtp) TTCN_error("Accessing non-selected field rtp in a template of union type @MNCC_Types.MNCC_MsgUnion."); +return *single_value.field_rtp; +} + +MNCC__PDU__Hello_template& MNCC__MsgUnion_template::hello() +{ +if (template_selection != SPECIFIC_VALUE || single_value.union_selection != MNCC__MsgUnion::ALT_hello) { +template_sel old_selection = template_selection; +clean_up(); +if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_hello = new MNCC__PDU__Hello_template(ANY_VALUE); +else single_value.field_hello = new MNCC__PDU__Hello_template; +single_value.union_selection = MNCC__MsgUnion::ALT_hello; +set_selection(SPECIFIC_VALUE); +} +return *single_value.field_hello; +} + +const MNCC__PDU__Hello_template& MNCC__MsgUnion_template::hello() const +{ +if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field hello in a non-specific template of union type @MNCC_Types.MNCC_MsgUnion."); +if (single_value.union_selection != MNCC__MsgUnion::ALT_hello) TTCN_error("Accessing non-selected field hello in a template of union type @MNCC_Types.MNCC_MsgUnion."); +return *single_value.field_hello; +} + +boolean MNCC__MsgUnion_template::ischosen(MNCC__MsgUnion::union_selection_type checked_selection) const +{ +if (checked_selection == MNCC__MsgUnion::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @MNCC_Types.MNCC_MsgUnion."); +switch (template_selection) { +case SPECIFIC_VALUE: +if (single_value.union_selection == MNCC__MsgUnion::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @MNCC_Types.MNCC_MsgUnion."); +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 @MNCC_Types.MNCC_MsgUnion 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 MNCC__MsgUnion_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +switch (single_value.union_selection) { +case MNCC__MsgUnion::ALT_signal: +TTCN_Logger::log_event_str("{ signal := "); +single_value.field_signal->log(); +TTCN_Logger::log_event_str(" }"); +break; +case MNCC__MsgUnion::ALT_data: +TTCN_Logger::log_event_str("{ data := "); +single_value.field_data->log(); +TTCN_Logger::log_event_str(" }"); +break; +case MNCC__MsgUnion::ALT_rtp: +TTCN_Logger::log_event_str("{ rtp := "); +single_value.field_rtp->log(); +TTCN_Logger::log_event_str(" }"); +break; +case MNCC__MsgUnion::ALT_hello: +TTCN_Logger::log_event_str("{ hello := "); +single_value.field_hello->log(); +TTCN_Logger::log_event_str(" }"); +break; +default: +TTCN_Logger::log_event_str(""); +} +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { +if (list_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[list_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void MNCC__MsgUnion_template::log_match(const MNCC__MsgUnion& match_value, boolean legacy) const +{ +if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity() && match(match_value, legacy)){ +TTCN_Logger::print_logmatch_buffer(); +TTCN_Logger::log_event_str(" matched"); +return; +} +if (template_selection == SPECIFIC_VALUE && single_value.union_selection == match_value.get_selection()) { +switch (single_value.union_selection) { +case MNCC__MsgUnion::ALT_signal: +if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ +TTCN_Logger::log_logmatch_info(".signal"); +single_value.field_signal->log_match(match_value.signal(), legacy); +} else { +TTCN_Logger::log_event_str("{ signal := "); +single_value.field_signal->log_match(match_value.signal(), legacy); +TTCN_Logger::log_event_str(" }"); +} +break; +case MNCC__MsgUnion::ALT_data: +if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ +TTCN_Logger::log_logmatch_info(".data"); +single_value.field_data->log_match(match_value.data(), legacy); +} else { +TTCN_Logger::log_event_str("{ data := "); +single_value.field_data->log_match(match_value.data(), legacy); +TTCN_Logger::log_event_str(" }"); +} +break; +case MNCC__MsgUnion::ALT_rtp: +if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ +TTCN_Logger::log_logmatch_info(".rtp"); +single_value.field_rtp->log_match(match_value.rtp(), legacy); +} else { +TTCN_Logger::log_event_str("{ rtp := "); +single_value.field_rtp->log_match(match_value.rtp(), legacy); +TTCN_Logger::log_event_str(" }"); +} +break; +case MNCC__MsgUnion::ALT_hello: +if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ +TTCN_Logger::log_logmatch_info(".hello"); +single_value.field_hello->log_match(match_value.hello(), legacy); +} else { +TTCN_Logger::log_event_str("{ hello := "); +single_value.field_hello->log_match(match_value.hello(), 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 MNCC__MsgUnion_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 MNCC__MsgUnion::ALT_signal: +single_value.field_signal->encode_text(text_buf); +break; +case MNCC__MsgUnion::ALT_data: +single_value.field_data->encode_text(text_buf); +break; +case MNCC__MsgUnion::ALT_rtp: +single_value.field_rtp->encode_text(text_buf); +break; +case MNCC__MsgUnion::ALT_hello: +single_value.field_hello->encode_text(text_buf); +break; +default: +TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @MNCC_Types.MNCC_MsgUnion."); +} +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 @MNCC_Types.MNCC_MsgUnion."); +} +} + +void MNCC__MsgUnion_template::decode_text(Text_Buf& text_buf) +{ +clean_up(); +decode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +{ +single_value.union_selection = MNCC__MsgUnion::UNBOUND_VALUE; +MNCC__MsgUnion::union_selection_type new_selection = (MNCC__MsgUnion::union_selection_type)text_buf.pull_int().get_val(); +switch (new_selection) { +case MNCC__MsgUnion::ALT_signal: +single_value.field_signal = new MNCC__PDU__Signal_template; +single_value.field_signal->decode_text(text_buf); +break; +case MNCC__MsgUnion::ALT_data: +single_value.field_data = new MNCC__PDU__Data_template; +single_value.field_data->decode_text(text_buf); +break; +case MNCC__MsgUnion::ALT_rtp: +single_value.field_rtp = new MNCC__PDU__Rtp_template; +single_value.field_rtp->decode_text(text_buf); +break; +case MNCC__MsgUnion::ALT_hello: +single_value.field_hello = new MNCC__PDU__Hello_template; +single_value.field_hello->decode_text(text_buf); +break; +default: +TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @MNCC_Types.MNCC_MsgUnion."); +} +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 MNCC__MsgUnion_template[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 @MNCC_Types.MNCC_MsgUnion."); +} +} + +boolean MNCC__MsgUnion_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean MNCC__MsgUnion_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int v_idx=0; v_idx(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 `@MNCC_Types.MNCC_MsgUnion'"); + } + if (strcmp("signal", param_field) == 0) { + signal().set_param(param); + return; + } else if (strcmp("data", param_field) == 0) { + data().set_param(param); + return; + } else if (strcmp("rtp", param_field) == 0) { + rtp().set_param(param); + return; + } else if (strcmp("hello", param_field) == 0) { + hello().set_param(param); + return; + } else param.error("Field `%s' not found in union template type `@MNCC_Types.MNCC_MsgUnion'", 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: { + MNCC__MsgUnion_template new_temp; + new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, m_p->get_size()); + for (size_t p_i=0; p_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", "@MNCC_Types.MNCC_MsgUnion"); + break; + case Module_Param::MP_Assignment_List: { + Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); + if (!strcmp(mp_last->get_id()->get_name(), "signal")) { + signal().set_param(*mp_last); + break; + } + if (!strcmp(mp_last->get_id()->get_name(), "data")) { + data().set_param(*mp_last); + break; + } + if (!strcmp(mp_last->get_id()->get_name(), "rtp")) { + rtp().set_param(*mp_last); + break; + } + if (!strcmp(mp_last->get_id()->get_name(), "hello")) { + hello().set_param(*mp_last); + break; + } + mp_last->error("Field %s does not exist in type @MNCC_Types.MNCC_MsgUnion.", mp_last->get_id()->get_name()); + } break; + default: + param.type_error("union template", "@MNCC_Types.MNCC_MsgUnion"); + } + is_ifpresent = param.get_ifpresent(); +} + +void MNCC__MsgUnion_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 MNCC__MsgUnion::ALT_signal: +single_value.field_signal->check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_MsgUnion"); +return; +case MNCC__MsgUnion::ALT_data: +single_value.field_data->check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_MsgUnion"); +return; +case MNCC__MsgUnion::ALT_rtp: +single_value.field_rtp->check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_MsgUnion"); +return; +case MNCC__MsgUnion::ALT_hello: +single_value.field_hello->check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_MsgUnion"); +return; +default: +TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @MNCC_Types.MNCC_MsgUnion."); +} +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 : "@MNCC_Types.MNCC_MsgUnion"); +} + +MNCC__PDU::MNCC__PDU() +{ +} + +MNCC__PDU::MNCC__PDU(const MNCC__MsgType& par_msg__type, + const MNCC__MsgUnion& par_u) + : field_msg__type(par_msg__type), + field_u(par_u) +{ +} + +MNCC__PDU::MNCC__PDU(const MNCC__PDU& other_value) +{ +if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @MNCC_Types.MNCC_PDU."); +if (other_value.msg__type().is_bound()) field_msg__type = other_value.msg__type(); +else field_msg__type.clean_up(); +if (other_value.u().is_bound()) field_u = other_value.u(); +else field_u.clean_up(); +} + +void MNCC__PDU::clean_up() +{ +field_msg__type.clean_up(); +field_u.clean_up(); +} + +MNCC__PDU& MNCC__PDU::operator=(const MNCC__PDU& other_value) +{ +if (this != &other_value) { + if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @MNCC_Types.MNCC_PDU."); + if (other_value.msg__type().is_bound()) field_msg__type = other_value.msg__type(); + else field_msg__type.clean_up(); + if (other_value.u().is_bound()) field_u = other_value.u(); + else field_u.clean_up(); +} +return *this; +} + +boolean MNCC__PDU::operator==(const MNCC__PDU& other_value) const +{ +return field_msg__type==other_value.field_msg__type + && field_u==other_value.field_u; +} + +boolean MNCC__PDU::is_bound() const +{ +if(field_msg__type.is_bound()) return TRUE; +if(field_u.is_bound()) return TRUE; +return FALSE; +} +boolean MNCC__PDU::is_value() const +{ +if(!field_msg__type.is_value()) return FALSE; +if(!field_u.is_value()) return FALSE; +return TRUE; +} +void MNCC__PDU::log() const +{ +if (!is_bound()) { +TTCN_Logger::log_event_unbound(); +return; +} +TTCN_Logger::log_event_str("{ msg_type := "); +field_msg__type.log(); +TTCN_Logger::log_event_str(", u := "); +field_u.log(); +TTCN_Logger::log_event_str(" }"); +} + +void MNCC__PDU::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) msg__type().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) u().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(), "msg_type")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + msg__type().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "u")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + u().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @MNCC_Types.MNCC_PDU: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record value", "@MNCC_Types.MNCC_PDU"); + } +} + +void MNCC__PDU::set_implicit_omit() +{ +if (msg__type().is_bound()) msg__type().set_implicit_omit(); +if (u().is_bound()) u().set_implicit_omit(); +} + +void MNCC__PDU::encode_text(Text_Buf& text_buf) const +{ +field_msg__type.encode_text(text_buf); +field_u.encode_text(text_buf); +} + +void MNCC__PDU::decode_text(Text_Buf& text_buf) +{ +field_msg__type.decode_text(text_buf); +field_u.decode_text(text_buf); +} + +void MNCC__PDU::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void MNCC__PDU::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int MNCC__PDU::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) +{ (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; + int selected_field = -1; + 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; + decoded_field_length = field_msg__type.RAW_decode(MNCC__PDU_msg__type_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return 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_msg__type == MNCC__MsgType::MNCC__SOCKET__HELLO) selected_field = 3; + else if (field_msg__type == MNCC__MsgType::MNCC__RTP__CREATE || field_msg__type == MNCC__MsgType::MNCC__RTP__CONNECT || field_msg__type == MNCC__MsgType::MNCC__RTP__FREE) selected_field = 2; + else if (field_msg__type == MNCC__MsgType::GSM__TCHF__FRAME || field_msg__type == MNCC__MsgType::GSM__TCHF__FRAME__EFR || field_msg__type == MNCC__MsgType::GSM__TCHH__FRAME || field_msg__type == MNCC__MsgType::GSM__TCH__FRAME__AMR || field_msg__type == MNCC__MsgType::GSM__BAD__FRAME) selected_field = 1; + else selected_field = 0; + decoded_field_length = field_u.RAW_decode(MNCC__PDU_u_descr_, p_buf, limit, local_top_order, no_err, selected_field); + if (decoded_field_length < 0) return 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 MNCC__PDU::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, MNCC__PDU_msg__type_descr_.raw); + myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, MNCC__PDU_u_descr_.raw); + encoded_length += field_msg__type.RAW_encode(MNCC__PDU_msg__type_descr_, *myleaf.body.node.nodes[0]); + encoded_length += field_u.RAW_encode(MNCC__PDU_u_descr_, *myleaf.body.node.nodes[1]); + switch (field_u.get_selection()) { + case MNCC__MsgUnion::ALT_hello: + if (field_msg__type != MNCC__MsgType::MNCC__SOCKET__HELLO) { + RAW_enc_tr_pos pr_pos; + pr_pos.level = myleaf.curr_pos.level + 1; + int new_pos[] = { 0 }; + pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos); + MNCC__MsgType new_val(MNCC__MsgType::MNCC__SOCKET__HELLO); + RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos); + if (temp_leaf != NULL) + new_val.RAW_encode(MNCC__PDU_msg__type_descr_,*temp_leaf); + else + TTCN_EncDec_ErrorContext::error + (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); + free_tree_pos(pr_pos.pos); + } + break; + case MNCC__MsgUnion::ALT_rtp: + if (field_msg__type != MNCC__MsgType::MNCC__RTP__CREATE && field_msg__type != MNCC__MsgType::MNCC__RTP__CONNECT && field_msg__type != MNCC__MsgType::MNCC__RTP__FREE) { + RAW_enc_tr_pos pr_pos; + pr_pos.level = myleaf.curr_pos.level + 1; + int new_pos[] = { 0 }; + pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos); + MNCC__MsgType new_val(MNCC__MsgType::MNCC__RTP__CREATE); + RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos); + if (temp_leaf != NULL) + new_val.RAW_encode(MNCC__PDU_msg__type_descr_,*temp_leaf); + else + TTCN_EncDec_ErrorContext::error + (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); + free_tree_pos(pr_pos.pos); + } + break; + case MNCC__MsgUnion::ALT_data: + if (field_msg__type != MNCC__MsgType::GSM__TCHF__FRAME && field_msg__type != MNCC__MsgType::GSM__TCHF__FRAME__EFR && field_msg__type != MNCC__MsgType::GSM__TCHH__FRAME && field_msg__type != MNCC__MsgType::GSM__TCH__FRAME__AMR && field_msg__type != MNCC__MsgType::GSM__BAD__FRAME) { + RAW_enc_tr_pos pr_pos; + pr_pos.level = myleaf.curr_pos.level + 1; + int new_pos[] = { 0 }; + pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos); + MNCC__MsgType new_val(MNCC__MsgType::GSM__TCHF__FRAME); + RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos); + if (temp_leaf != NULL) + new_val.RAW_encode(MNCC__PDU_msg__type_descr_,*temp_leaf); + else + TTCN_EncDec_ErrorContext::error + (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); + free_tree_pos(pr_pos.pos); + } + break; + default:; + } + return myleaf.length = encoded_length; +} + +struct MNCC__PDU_template::single_value_struct { +MNCC__MsgType_template field_msg__type; +MNCC__MsgUnion_template field_u; +}; + +void MNCC__PDU_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_msg__type = ANY_VALUE; +single_value->field_u = ANY_VALUE; +} +} +} + +void MNCC__PDU_template::copy_value(const MNCC__PDU& other_value) +{ +single_value = new single_value_struct; +if (other_value.msg__type().is_bound()) { + single_value->field_msg__type = other_value.msg__type(); +} else { + single_value->field_msg__type.clean_up(); +} +if (other_value.u().is_bound()) { + single_value->field_u = other_value.u(); +} else { + single_value->field_u.clean_up(); +} +set_selection(SPECIFIC_VALUE); +} + +void MNCC__PDU_template::copy_template(const MNCC__PDU_template& other_value) +{ +switch (other_value.template_selection) { +case SPECIFIC_VALUE: +single_value = new single_value_struct; +if (UNINITIALIZED_TEMPLATE != other_value.msg__type().get_selection()) { +single_value->field_msg__type = other_value.msg__type(); +} else { +single_value->field_msg__type.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.u().get_selection()) { +single_value->field_u = other_value.u(); +} else { +single_value->field_u.clean_up(); +} +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new MNCC__PDU_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of type @MNCC_Types.MNCC_PDU."); +break; +} +set_selection(other_value); +} + +MNCC__PDU_template::MNCC__PDU_template() +{ +} + +MNCC__PDU_template::MNCC__PDU_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +MNCC__PDU_template::MNCC__PDU_template(const MNCC__PDU& other_value) +{ +copy_value(other_value); +} + +MNCC__PDU_template::MNCC__PDU_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const MNCC__PDU&)other_value); +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of type @MNCC_Types.MNCC_PDU from an unbound optional field."); +} +} + +MNCC__PDU_template::MNCC__PDU_template(const MNCC__PDU_template& other_value) +: Base_Template() +{ +copy_template(other_value); +} + +MNCC__PDU_template::~MNCC__PDU_template() +{ +clean_up(); +} + +MNCC__PDU_template& MNCC__PDU_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +MNCC__PDU_template& MNCC__PDU_template::operator=(const MNCC__PDU& other_value) +{ +clean_up(); +copy_value(other_value); +return *this; +} + +MNCC__PDU_template& MNCC__PDU_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const MNCC__PDU&)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 @MNCC_Types.MNCC_PDU."); +} +return *this; +} + +MNCC__PDU_template& MNCC__PDU_template::operator=(const MNCC__PDU_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean MNCC__PDU_template::match(const MNCC__PDU& 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.msg__type().is_bound()) return FALSE; +if(!single_value->field_msg__type.match(other_value.msg__type(), legacy))return FALSE; +if(!other_value.u().is_bound()) return FALSE; +if(!single_value->field_u.match(other_value.u(), legacy))return FALSE; +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of type @MNCC_Types.MNCC_PDU."); +} +return FALSE; +} + +boolean MNCC__PDU_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +if (template_selection != SPECIFIC_VALUE) return TRUE; +if (single_value->field_msg__type.is_bound()) return TRUE; +if (single_value->field_u.is_bound()) return TRUE; +return FALSE; +} + +boolean MNCC__PDU_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +if (!single_value->field_msg__type.is_value()) return FALSE; +if (!single_value->field_u.is_value()) return FALSE; +return TRUE; +} + +void MNCC__PDU_template::clean_up() +{ +switch (template_selection) { +case SPECIFIC_VALUE: +delete single_value; +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +delete [] value_list.list_value; +default: +break; +} +template_selection = UNINITIALIZED_TEMPLATE; +} + +MNCC__PDU MNCC__PDU_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 @MNCC_Types.MNCC_PDU."); +MNCC__PDU ret_val; +if (single_value->field_msg__type.is_bound()) { +ret_val.msg__type() = single_value->field_msg__type.valueof(); +} +if (single_value->field_u.is_bound()) { +ret_val.u() = single_value->field_u.valueof(); +} +return ret_val; +} + +void MNCC__PDU_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) +TTCN_error("Setting an invalid list for a template of type @MNCC_Types.MNCC_PDU."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new MNCC__PDU_template[list_length]; +} + +MNCC__PDU_template& MNCC__PDU_template::list_item(unsigned int list_index) const +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) +TTCN_error("Accessing a list element of a non-list template of type @MNCC_Types.MNCC_PDU."); +if (list_index >= value_list.n_values) +TTCN_error("Index overflow in a value list template of type @MNCC_Types.MNCC_PDU."); +return value_list.list_value[list_index]; +} + +MNCC__MsgType_template& MNCC__PDU_template::msg__type() +{ +set_specific(); +return single_value->field_msg__type; +} + +const MNCC__MsgType_template& MNCC__PDU_template::msg__type() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field msg_type of a non-specific template of type @MNCC_Types.MNCC_PDU."); +return single_value->field_msg__type; +} + +MNCC__MsgUnion_template& MNCC__PDU_template::u() +{ +set_specific(); +return single_value->field_u; +} + +const MNCC__MsgUnion_template& MNCC__PDU_template::u() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field u of a non-specific template of type @MNCC_Types.MNCC_PDU."); +return single_value->field_u; +} + +int MNCC__PDU_template::size_of() const +{ + if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_PDU 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 @MNCC_Types.MNCC_PDU 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 @MNCC_Types.MNCC_PDU containing a value list with different sizes."); + } + return item_size; + } + case OMIT_VALUE: + TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_PDU containing omit value."); + case ANY_VALUE: + case ANY_OR_OMIT: + TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_PDU containing */? value."); + case COMPLEMENTED_LIST: + TTCN_error("Performing sizeof() operation on a template of type @MNCC_Types.MNCC_PDU containing complemented list."); + default: + TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @MNCC_Types.MNCC_PDU."); + } + return 0; +} + +void MNCC__PDU_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_str("{ msg_type := "); +single_value->field_msg__type.log(); +TTCN_Logger::log_event_str(", u := "); +single_value->field_u.log(); +TTCN_Logger::log_event_str(" }"); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { +if (list_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[list_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void MNCC__PDU_template::log_match(const MNCC__PDU& 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_msg__type.match(match_value.msg__type(), legacy)){ +TTCN_Logger::log_logmatch_info(".msg_type"); +single_value->field_msg__type.log_match(match_value.msg__type(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_u.match(match_value.u(), legacy)){ +TTCN_Logger::log_logmatch_info(".u"); +single_value->field_u.log_match(match_value.u(), 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("{ msg_type := "); +single_value->field_msg__type.log_match(match_value.msg__type(), legacy); +TTCN_Logger::log_event_str(", u := "); +single_value->field_u.log_match(match_value.u(), 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 MNCC__PDU_template::encode_text(Text_Buf& text_buf) const +{ +encode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value->field_msg__type.encode_text(text_buf); +single_value->field_u.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 @MNCC_Types.MNCC_PDU."); +} +} + +void MNCC__PDU_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_msg__type.decode_text(text_buf); +single_value->field_u.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 MNCC__PDU_template[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 @MNCC_Types.MNCC_PDU."); +} +} + +void MNCC__PDU_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: { + MNCC__PDU_template new_temp; + new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); + for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msg__type().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) u().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(), "msg_type")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + msg__type().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "u")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + u().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @MNCC_Types.MNCC_PDU: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record template", "@MNCC_Types.MNCC_PDU"); + } + is_ifpresent = param.get_ifpresent(); +} + +void MNCC__PDU_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_msg__type.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_PDU"); +single_value->field_u.check_restriction(t_res, t_name ? t_name : "@MNCC_Types.MNCC_PDU"); +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 : "@MNCC_Types.MNCC_PDU"); +} + +boolean MNCC__PDU_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean MNCC__PDU_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int l_idx=0; l_idx(pdu).u().rtp().callref(); +} +else { +current_location.update_lineno(1919); +/* MNCC_Types.ttcn, line 1919 */ +boolean tmp_56; +{ +boolean tmp_53 = pdu.is_bound(); +if(tmp_53) { +const MNCC__PDU& tmp_54 = pdu; +const MNCC__MsgUnion& tmp_55 = tmp_54.u(); +tmp_53 = tmp_55.is_bound(); +if(tmp_53) { +tmp_53 = tmp_55.ischosen(MNCC__MsgUnion::ALT_data); +} +} +tmp_56 = tmp_53; +} +if (tmp_56) { +current_location.update_lineno(1920); +/* MNCC_Types.ttcn, line 1920 */ +return const_cast< const MNCC__PDU&>(pdu).u().data().callref(); +} +else { +current_location.update_lineno(1921); +/* MNCC_Types.ttcn, line 1921 */ +boolean tmp_60; +{ +boolean tmp_57 = pdu.is_bound(); +if(tmp_57) { +const MNCC__PDU& tmp_58 = pdu; +const MNCC__MsgUnion& tmp_59 = tmp_58.u(); +tmp_57 = tmp_59.is_bound(); +if(tmp_57) { +tmp_57 = tmp_59.ischosen(MNCC__MsgUnion::ALT_signal); +} +} +tmp_60 = tmp_57; +} +if (tmp_60) { +current_location.update_lineno(1922); +/* MNCC_Types.ttcn, line 1922 */ +return const_cast< const MNCC__PDU&>(pdu).u().signal().callref(); +} +else { +current_location.update_lineno(1924); +/* MNCC_Types.ttcn, line 1924 */ +TTCN_Runtime::setverdict(FAIL,(TTCN_Logger::begin_event_log2str(),TTCN_Logger::log_event_str("Unable to determine Callref for MNCC"),pdu.log(),TTCN_Logger::end_event_log2str())); +current_location.update_lineno(1925); +/* MNCC_Types.ttcn, line 1925 */ +TTCN_Runtime::stop_execution(); +} +} +} +} +} + + +/* Bodies of static functions */ + +static void pre_init_module() +{ +TTCN_Location current_location("MNCC_Types.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "MNCC_Types"); +Osmocom__Types::module_object.pre_init_module(); +current_location.update_lineno(136); +/* MNCC_Types.ttcn, line 136 */ +const_GSM__MAX__FACILITY = 128; +current_location.update_lineno(137); +/* MNCC_Types.ttcn, line 137 */ +const_GSM__MAX__SSVERSION = 128; +current_location.update_lineno(138); +/* MNCC_Types.ttcn, line 138 */ +const_GSM__MAX__USERUSER = 128; +module_object.add_function("enc_MNCC_PDU", (genericfunc_t)&enc__MNCC__PDU, NULL); +module_object.add_function("dec_MNCC_PDU", (genericfunc_t)&dec__MNCC__PDU, NULL); +module_object.add_function("f_mncc_get_call_id", (genericfunc_t)&f__mncc__get__call__id, NULL); +} + +static void post_init_module() +{ +TTCN_Location current_location("MNCC_Types.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "MNCC_Types"); +Osmocom__Types::module_object.post_init_module(); +current_location.update_lineno(166); +/* MNCC_Types.ttcn, line 166 */ +template_ts__MNCC__bcap__voice.transfer() = 0; +template_ts__MNCC__bcap__voice.mode() = 0; +template_ts__MNCC__bcap__voice.coding() = 0; +template_ts__MNCC__bcap__voice.radio() = 3; +template_ts__MNCC__bcap__voice.speech__ctm() = 0; +{ +MNCC__speech__vers_template& tmp_0 = template_ts__MNCC__bcap__voice.speech__ver(); +tmp_0.set_size(6); +tmp_0[0] = 0; +tmp_0[1] = 2; +tmp_0[2] = 4; +tmp_0[3] = 1; +tmp_0[4] = 5; +tmp_0[5] = -1; +} +template_ts__MNCC__bcap__voice.data() = OMIT_VALUE; +const_ts__MNCC__number_ton_defval = GSM48__type__of__number::GSM48__TON__INTERNATIONAL; +const_ts__MNCC__number_npi_defval = GSM48__num__plan__ind::GSM48__NUMPLAN__E164; +const_ts__MNCC__number_pres_defval = GSM48__present__ind::GSM48__PRES__IND__ALLOWED; +const_ts__MNCC__number_screen_defval = GSM48__screening__ind::GSM48__SCR__IND__NOT__SCREENED; +template_tr__MNCC__number_ton_defval = ANY_VALUE; +template_tr__MNCC__number_npi_defval = ANY_VALUE; +template_tr__MNCC__number_pres_defval = ANY_VALUE; +template_tr__MNCC__number_screen_defval = ANY_VALUE; +const_ts__MNCC__cause_loc_defval = GSM48__cause__loc::GSM48__CAUSE__LOC__PUN__S__LU; +const_ts__MNCC__cause_coding_defval = GSM48__cause__coding::GSM48__CAUSE__CS__GSM; +const_ts__MNCC__cause_diag_defval = os_0; +const_ts__MNCC__HELLO_version_defval = 5; +const_ts__MNCC__SETUP__req_imsi_defval = cs_0; +template_tr__MNCC__SETUP__req_call__id_defval = ANY_VALUE; +template_tr__MNCC__SETUP__req_called_defval = ANY_VALUE; +template_tr__MNCC__SETUP__req_calling_defval = ANY_OR_OMIT; +template_tr__MNCC__SETUP__req_imsi_defval = ANY_VALUE; +const_ts__MNCC__SETUP__rsp_imsi_defval = cs_0; +template_ts__MNCC__SETUP__rsp_connected_defval = OMIT_VALUE; +template_tr__MNCC__SETUP__rsp_imsi_defval = ANY_VALUE; +template_tr__MNCC__SETUP__rsp_connected_defval = ANY_OR_OMIT; +template_tr__MNCC__SETUP__ind_call__id_defval = ANY_VALUE; +template_tr__MNCC__SETUP__ind_called_defval = ANY_VALUE; +template_tr__MNCC__SETUP__ind_calling_defval = ANY_OR_OMIT; +template_tr__MNCC__SETUP__ind_imsi_defval = ANY_VALUE; +template_ts__MNCC__SETUP__ind_calling_defval = OMIT_VALUE; +template_ts__MNCC__SETUP__ind_imsi_defval = OMIT_VALUE; +template_ts__MNCC__SETUP__ind_bcap_defval = ts__MNCC__bcap__voice; +template_ts__MNCC__SETUP__CNF_connected_defval = OMIT_VALUE; +template_tr__MNCC__SETUP__cnf_connected_defval = ANY_OR_OMIT; +template_tr__MNCC__SETUP__COMPL__ind_call__id_defval = ANY_VALUE; +template_tr__MNCC__REJ__req_cause_defval = ANY_OR_OMIT; +template_ts__MNCC__REJ__ind_cause_defval = OMIT_VALUE; +template_tr__MNCC__CALL__CONF__ind_bcap_defval = ANY_OR_OMIT; +template_tr__MNCC__CALL__CONF__ind_cause_defval = ANY_OR_OMIT; +template_tr__MNCC__CALL__CONF__ind_cccap_defval = ANY_OR_OMIT; +template_ts__MNCC__CALL__CONF__ind_bcap_defval = OMIT_VALUE; +template_ts__MNCC__CALL__CONF__ind_cause_defval = OMIT_VALUE; +template_ts__MNCC__CALL__CONF__ind_cccap_defval = OMIT_VALUE; +template_ts__MNCC__CALL__PROC__req_bcap_defval = OMIT_VALUE; +template_ts__MNCC__CALL__PROC__req_prog_defval = OMIT_VALUE; +template_ts__MNCC__CALL__PROC__req_fac_defval = OMIT_VALUE; +template_ts__MNCC__CALL__PROC__req_cccap_defval = OMIT_VALUE; +template_tr__MNCC__CALL__PROC__req_bcap_defval = ANY_OR_OMIT; +template_tr__MNCC__CALL__PROC__req_prog_defval = ANY_OR_OMIT; +template_tr__MNCC__CALL__PROC__req_fac_defval = ANY_OR_OMIT; +template_tr__MNCC__CALL__PROC__req_cccap_defval = ANY_OR_OMIT; +template_ts__MNCC__PROGRESS__req_uu_defval = OMIT_VALUE; +template_ts__MNCC__ALERT__req_prog_defval = OMIT_VALUE; +template_ts__MNCC__ALERT__req_fac_defval = OMIT_VALUE; +template_ts__MNCC__ALERT__req_uu_defval = OMIT_VALUE; +template_tr__MNCC__ALERT__req_prog_defval = ANY_OR_OMIT; +template_tr__MNCC__ALERT__req_fac_defval = ANY_OR_OMIT; +template_tr__MNCC__ALERT__req_uu_defval = ANY_OR_OMIT; +template_tr__MNCC__ALERT__ind_prog_defval = OMIT_VALUE; +template_tr__MNCC__ALERT__ind_fac_defval = OMIT_VALUE; +template_tr__MNCC__ALERT__ind_uu_defval = OMIT_VALUE; +template_ts__MNCC__ALERT__ind_prog_defval = OMIT_VALUE; +template_ts__MNCC__ALERT__ind_fac_defval = OMIT_VALUE; +template_ts__MNCC__ALERT__ind_uu_defval = OMIT_VALUE; +template_tr__MNCC__DISC__ind_call__id_defval = ANY_VALUE; +template_tr__MNCC__DISC__ind_cause_defval = ANY_VALUE; +template_tr__MNCC__DISC__ind_prog_defval = ANY_OR_OMIT; +template_tr__MNCC__DISC__ind_fac_defval = ANY_OR_OMIT; +template_tr__MNCC__DISC__ind_uu_defval = ANY_OR_OMIT; +template_ts__MNCC__DISC__ind_prog_defval = OMIT_VALUE; +template_ts__MNCC__DISC__ind_fac_defval = OMIT_VALUE; +template_ts__MNCC__DISC__ind_uu_defval = OMIT_VALUE; +template_ts__MNCC__DISC__req_prog_defval = OMIT_VALUE; +template_ts__MNCC__DISC__req_fac_defval = OMIT_VALUE; +template_ts__MNCC__DISC__req_uu_defval = OMIT_VALUE; +template_tr__MNCC__DISC__req_cause_defval = ANY_OR_OMIT; +template_tr__MNCC__DISC__req_prog_defval = OMIT_VALUE; +template_tr__MNCC__DISC__req_fac_defval = OMIT_VALUE; +template_tr__MNCC__DISC__req_uu_defval = OMIT_VALUE; +template_tr__MNCC__REL__ind_call__id_defval = ANY_VALUE; +template_tr__MNCC__REL__ind_cause_defval = ANY_VALUE; +template_tr__MNCC__REL__ind_fac_defval = ANY_OR_OMIT; +template_tr__MNCC__REL__ind_uu_defval = ANY_OR_OMIT; +template_ts__MNCC__REL__ind_fac_defval = OMIT_VALUE; +template_ts__MNCC__REL__ind_uu_defval = OMIT_VALUE; +template_ts__MNCC__REL__req_fac_defval = OMIT_VALUE; +template_ts__MNCC__REL__req_uu_defval = OMIT_VALUE; +template_tr__MNCC__REL__req_cause_defval = ANY_OR_OMIT; +template_tr__MNCC__REL__req_fac_defval = ANY_OR_OMIT; +template_tr__MNCC__REL__req_uu_defval = ANY_OR_OMIT; +template_tr__MNCC__REL__cnf_call__id_defval = ANY_VALUE; +template_tr__MNCC__REL__cnf_cause_defval = ANY_VALUE; +template_tr__MNCC__REL__cnf_fac_defval = ANY_OR_OMIT; +template_tr__MNCC__REL__cnf_uu_defval = ANY_OR_OMIT; +template_ts__MNCC__REL__cnf_fac_defval = OMIT_VALUE; +template_ts__MNCC__REL__cnf_uu_defval = OMIT_VALUE; +template_tr__MNCC__FACILITY__ind_call__id_defval = ANY_VALUE; +template_tr__MNCC__FACILITY__ind_fac_defval = ANY_VALUE; +template_tr__MNCC__START__DTMF__ind_call__id_defval = ANY_VALUE; +template_tr__MNCC__START__DTMF__ind_keypad_defval = ANY_VALUE; +template_tr__MNCC__STOP__DTMF__ind_call__id_defval = ANY_VALUE; +template_tr__MNCC__MODIFY__ind_call__id_defval = ANY_VALUE; +template_tr__MNCC__MODIFY__ind_bcap_defval = ANY_VALUE; +template_tr__MNCC__MODIFY__cnf_call__id_defval = ANY_VALUE; +template_tr__MNCC__MODIFY__cnf_bcap_defval = ANY_VALUE; +template_tr__MNCC__USERINFO__ind_call__id_defval = ANY_VALUE; +template_tr__MNCC__USERINFO__ind_uu_defval = ANY_VALUE; +template_tr__MNCC__HOLD__ind_call__id_defval = ANY_VALUE; +template_tr__MNCC__RETRIEVE__ind_call__id_defval = ANY_VALUE; +template_tr__MNCC__RTP__CREATE_call__id_defval = ANY_VALUE; +template_tr__MNCC__RTP__CONNECT_ip_defval = ANY_VALUE; +template_tr__MNCC__RTP__CONNECT_rtp__port_defval = ANY_VALUE; +template_tr__MNCC__RTP__CONNECT_pt_defval = ANY_VALUE; +} + + +} /* end of namespace */ diff --git a/titan/MNCC_Types.hh b/titan/MNCC_Types.hh new file mode 100644 index 0000000..f7c697a --- /dev/null +++ b/titan/MNCC_Types.hh @@ -0,0 +1,4049 @@ +// This C++ header file was generated by the TTCN-3 compiler +// of the TTCN-3 Test Executor version CRL 113 200/6 R3B +// for Harald Welte (laforge@nataraja) on Sun Mar 25 21:50:30 2018 + +// Copyright (c) 2000-2017 Ericsson Telecom AB + +// Do not edit this file unless you know what you are doing. + +#ifndef MNCC__Types_HH +#define MNCC__Types_HH + +#ifdef TITAN_RUNTIME_2 +#error Generated code does not match with used runtime.\ + Code was generated without -R option but -DTITAN_RUNTIME_2 was used. +#endif + +/* Header file includes */ + +#include +#include "Osmocom_Types.hh" + +#if TTCN3_VERSION != 60301 +#error Version mismatch detected.\ + Please check the version of the TTCN-3 compiler and the base library.\ + Run make clean and rebuild the project if the version of the compiler changed recently. +#endif + +#ifndef LINUX +#error This file should be compiled on LINUX +#endif + +#undef MNCC__Types_HH +#endif + +namespace MNCC__Types { + +/* Forward declarations of classes */ + +class GSM48__bcap__ra; +class GSM48__bcap__ra_template; +class GSM48__bcap__sig__access; +class GSM48__bcap__sig__access_template; +class GSM48__bcap__user__rate; +class GSM48__bcap__user__rate_template; +class GSM48__bcap__parity; +class GSM48__bcap__parity_template; +class GSM48__bcap__interm__rate; +class GSM48__bcap__interm__rate_template; +class GSM48__bcap__transp; +class GSM48__bcap__transp_template; +class GSM48__bcap__modem__type; +class GSM48__bcap__modem__type_template; +class MNCC__MsgType; +class MNCC__MsgType_template; +class MNCC__bearer__cap__data; +class MNCC__bearer__cap__data_template; +typedef PreGenRecordOf::PREGEN__RECORD__OF__INTEGER MNCC__speech__vers; +typedef PreGenRecordOf::PREGEN__RECORD__OF__INTEGER_template MNCC__speech__vers_template; +class MNCC__bearer__cap; +class MNCC__bearer__cap_template; +class GSM48__type__of__number; +class GSM48__type__of__number_template; +class GSM48__num__plan__ind; +class GSM48__num__plan__ind_template; +class GSM48__present__ind; +class GSM48__present__ind_template; +class GSM48__screening__ind; +class GSM48__screening__ind_template; +class MNCC__number; +class MNCC__number_template; +class GSM48__cause__coding; +class GSM48__cause__coding_template; +class GSM48__cause__loc; +class GSM48__cause__loc_template; +class MNCC__cause; +class MNCC__cause_template; +class MNCC__useruser; +class MNCC__useruser_template; +class MNCC__progress; +class MNCC__progress_template; +class MNCC__cccap; +class MNCC__cccap_template; +class MNCC__bcap; +class MNCC__bcap_template; +class MNCC__PDU__Signal; +class MNCC__PDU__Signal_template; +class MNCC__PDU__Data; +class MNCC__PDU__Data_template; +class MNCC__PDU__Rtp; +class MNCC__PDU__Rtp_template; +class MNCC__PDU__Hello; +class MNCC__PDU__Hello_template; +class MNCC__MsgUnion; +class MNCC__MsgUnion_template; +class MNCC__PDU; +class MNCC__PDU_template; + +} /* end of namespace */ + +#ifndef MNCC__Types_HH +#define MNCC__Types_HH + +namespace MNCC__Types { + +/* Type definitions */ + +typedef INTEGER int_; +typedef INTEGER_template int__template; +typedef INTEGER MNCC__notify; +typedef INTEGER_template MNCC__notify_template; +typedef CHARSTRING MNCC__keypad; +typedef CHARSTRING_template MNCC__keypad_template; + +/* Class definitions */ + +class GSM48__bcap__ra : public Base_Type { // enum +friend class GSM48__bcap__ra_template; +public: +enum enum_type { GSM48__BCAP__RA__NONE = 0, GSM48__BCAP__RA__V110__X30 = 1, GSM48__BCAP__RA__X31 = 2, GSM48__BCAP__RA__OTHER = 3, UNKNOWN_VALUE = 4, UNBOUND_VALUE = 5 }; +private: +enum_type enum_value; + +public: +GSM48__bcap__ra(); +GSM48__bcap__ra(int other_value); +GSM48__bcap__ra(enum_type other_value); +GSM48__bcap__ra(const GSM48__bcap__ra& other_value); + +GSM48__bcap__ra& operator=(int other_value); +GSM48__bcap__ra& operator=(enum_type other_value); +GSM48__bcap__ra& operator=(const GSM48__bcap__ra& other_value); + +boolean operator==(enum_type other_value) const; +boolean operator==(const GSM48__bcap__ra& other_value) const; +inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); } +inline boolean operator!=(const GSM48__bcap__ra& other_value) const { return !(*this == other_value); } +boolean operator<(enum_type other_value) const; +boolean operator<(const GSM48__bcap__ra& other_value) const; +boolean operator>(enum_type other_value) const; +boolean operator>(const GSM48__bcap__ra& other_value) const; +inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); } +inline boolean operator<=(const GSM48__bcap__ra& other_value) const { return !(*this > other_value); } +inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); } +inline boolean operator>=(const GSM48__bcap__ra& other_value) const { return !(*this < other_value); } + +static const char *enum_to_str(enum_type enum_par); +static enum_type str_to_enum(const char *str_par); +static boolean is_valid_enum(int int_par); + +static int enum2int(enum_type enum_par); +static int enum2int(const GSM48__bcap__ra& enum_par); +int as_int() const { return enum2int(enum_value); } +void from_int(int p_val) { *this = p_val; } +void int2enum(int int_val); +operator enum_type() const; +inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; } +inline boolean is_value() const { return enum_value != UNBOUND_VALUE; } +inline void clean_up(){ enum_value = UNBOUND_VALUE; } +inline boolean is_present() const { return is_bound(); } +void log() const; +void set_param(Module_Param& param); +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class GSM48__bcap__ra_template : public Base_Template { +union { +GSM48__bcap__ra::enum_type single_value; +struct { +unsigned int n_values; +GSM48__bcap__ra_template *list_value; +} value_list; +}; + +void copy_template(const GSM48__bcap__ra_template& other_value); + +public: +GSM48__bcap__ra_template(); +GSM48__bcap__ra_template(template_sel other_value); +GSM48__bcap__ra_template(int other_value); +GSM48__bcap__ra_template(GSM48__bcap__ra::enum_type other_value); +GSM48__bcap__ra_template(const GSM48__bcap__ra& other_value); +GSM48__bcap__ra_template(const OPTIONAL& other_value); +GSM48__bcap__ra_template(const GSM48__bcap__ra_template& other_value); +~GSM48__bcap__ra_template(); + +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +GSM48__bcap__ra_template& operator=(template_sel other_value); +GSM48__bcap__ra_template& operator=(int other_value); +GSM48__bcap__ra_template& operator=(GSM48__bcap__ra::enum_type other_value); +GSM48__bcap__ra_template& operator=(const GSM48__bcap__ra& other_value); +GSM48__bcap__ra_template& operator=(const OPTIONAL& other_value); +GSM48__bcap__ra_template& operator=(const GSM48__bcap__ra_template& other_value); + +boolean match(GSM48__bcap__ra::enum_type other_value, boolean legacy = FALSE) const; +boolean match(const GSM48__bcap__ra& other_value, boolean legacy = FALSE) const; +GSM48__bcap__ra::enum_type valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +GSM48__bcap__ra_template& list_item(unsigned int list_index); +void log() const; +void log_match(const GSM48__bcap__ra& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +}; + +class GSM48__bcap__sig__access : public Base_Type { // enum +friend class GSM48__bcap__sig__access_template; +public: +enum enum_type { GSM48__BCAP__SA__NONE = 0, GSM48__BCAP__SA__I440__I450 = 1, GSM48__BCAP__SA__X21 = 2, GSM48__BCAP__SA__X28__DP__IN = 3, GSM48__BCAP__SA__X28__DP__UN = 4, GSM48__BCAP__SA__X28__NDP = 5, GSM48__BCAP__SA__X32 = 6, UNKNOWN_VALUE = 7, UNBOUND_VALUE = 8 }; +private: +enum_type enum_value; + +public: +GSM48__bcap__sig__access(); +GSM48__bcap__sig__access(int other_value); +GSM48__bcap__sig__access(enum_type other_value); +GSM48__bcap__sig__access(const GSM48__bcap__sig__access& other_value); + +GSM48__bcap__sig__access& operator=(int other_value); +GSM48__bcap__sig__access& operator=(enum_type other_value); +GSM48__bcap__sig__access& operator=(const GSM48__bcap__sig__access& other_value); + +boolean operator==(enum_type other_value) const; +boolean operator==(const GSM48__bcap__sig__access& other_value) const; +inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); } +inline boolean operator!=(const GSM48__bcap__sig__access& other_value) const { return !(*this == other_value); } +boolean operator<(enum_type other_value) const; +boolean operator<(const GSM48__bcap__sig__access& other_value) const; +boolean operator>(enum_type other_value) const; +boolean operator>(const GSM48__bcap__sig__access& other_value) const; +inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); } +inline boolean operator<=(const GSM48__bcap__sig__access& other_value) const { return !(*this > other_value); } +inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); } +inline boolean operator>=(const GSM48__bcap__sig__access& other_value) const { return !(*this < other_value); } + +static const char *enum_to_str(enum_type enum_par); +static enum_type str_to_enum(const char *str_par); +static boolean is_valid_enum(int int_par); + +static int enum2int(enum_type enum_par); +static int enum2int(const GSM48__bcap__sig__access& enum_par); +int as_int() const { return enum2int(enum_value); } +void from_int(int p_val) { *this = p_val; } +void int2enum(int int_val); +operator enum_type() const; +inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; } +inline boolean is_value() const { return enum_value != UNBOUND_VALUE; } +inline void clean_up(){ enum_value = UNBOUND_VALUE; } +inline boolean is_present() const { return is_bound(); } +void log() const; +void set_param(Module_Param& param); +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class GSM48__bcap__sig__access_template : public Base_Template { +union { +GSM48__bcap__sig__access::enum_type single_value; +struct { +unsigned int n_values; +GSM48__bcap__sig__access_template *list_value; +} value_list; +}; + +void copy_template(const GSM48__bcap__sig__access_template& other_value); + +public: +GSM48__bcap__sig__access_template(); +GSM48__bcap__sig__access_template(template_sel other_value); +GSM48__bcap__sig__access_template(int other_value); +GSM48__bcap__sig__access_template(GSM48__bcap__sig__access::enum_type other_value); +GSM48__bcap__sig__access_template(const GSM48__bcap__sig__access& other_value); +GSM48__bcap__sig__access_template(const OPTIONAL& other_value); +GSM48__bcap__sig__access_template(const GSM48__bcap__sig__access_template& other_value); +~GSM48__bcap__sig__access_template(); + +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +GSM48__bcap__sig__access_template& operator=(template_sel other_value); +GSM48__bcap__sig__access_template& operator=(int other_value); +GSM48__bcap__sig__access_template& operator=(GSM48__bcap__sig__access::enum_type other_value); +GSM48__bcap__sig__access_template& operator=(const GSM48__bcap__sig__access& other_value); +GSM48__bcap__sig__access_template& operator=(const OPTIONAL& other_value); +GSM48__bcap__sig__access_template& operator=(const GSM48__bcap__sig__access_template& other_value); + +boolean match(GSM48__bcap__sig__access::enum_type other_value, boolean legacy = FALSE) const; +boolean match(const GSM48__bcap__sig__access& other_value, boolean legacy = FALSE) const; +GSM48__bcap__sig__access::enum_type valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +GSM48__bcap__sig__access_template& list_item(unsigned int list_index); +void log() const; +void log_match(const GSM48__bcap__sig__access& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +}; + +class GSM48__bcap__user__rate : public Base_Type { // enum +friend class GSM48__bcap__user__rate_template; +public: +enum enum_type { GSM48__BCAP__UR__NONE = 0, GSM48__BCAP__UR__300 = 1, GSM48__BCAP__UR__1200 = 2, GSM48__BCAP__UR__2400 = 3, GSM48__BCAP__UR__4800 = 4, GSM48__BCAP__UR__9600 = 5, GSM48__BCAP__UR__12000 = 6, GSM48__BCAP__UR__1200__75 = 7, UNKNOWN_VALUE = 8, UNBOUND_VALUE = 9 }; +private: +enum_type enum_value; + +public: +GSM48__bcap__user__rate(); +GSM48__bcap__user__rate(int other_value); +GSM48__bcap__user__rate(enum_type other_value); +GSM48__bcap__user__rate(const GSM48__bcap__user__rate& other_value); + +GSM48__bcap__user__rate& operator=(int other_value); +GSM48__bcap__user__rate& operator=(enum_type other_value); +GSM48__bcap__user__rate& operator=(const GSM48__bcap__user__rate& other_value); + +boolean operator==(enum_type other_value) const; +boolean operator==(const GSM48__bcap__user__rate& other_value) const; +inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); } +inline boolean operator!=(const GSM48__bcap__user__rate& other_value) const { return !(*this == other_value); } +boolean operator<(enum_type other_value) const; +boolean operator<(const GSM48__bcap__user__rate& other_value) const; +boolean operator>(enum_type other_value) const; +boolean operator>(const GSM48__bcap__user__rate& other_value) const; +inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); } +inline boolean operator<=(const GSM48__bcap__user__rate& other_value) const { return !(*this > other_value); } +inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); } +inline boolean operator>=(const GSM48__bcap__user__rate& other_value) const { return !(*this < other_value); } + +static const char *enum_to_str(enum_type enum_par); +static enum_type str_to_enum(const char *str_par); +static boolean is_valid_enum(int int_par); + +static int enum2int(enum_type enum_par); +static int enum2int(const GSM48__bcap__user__rate& enum_par); +int as_int() const { return enum2int(enum_value); } +void from_int(int p_val) { *this = p_val; } +void int2enum(int int_val); +operator enum_type() const; +inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; } +inline boolean is_value() const { return enum_value != UNBOUND_VALUE; } +inline void clean_up(){ enum_value = UNBOUND_VALUE; } +inline boolean is_present() const { return is_bound(); } +void log() const; +void set_param(Module_Param& param); +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class GSM48__bcap__user__rate_template : public Base_Template { +union { +GSM48__bcap__user__rate::enum_type single_value; +struct { +unsigned int n_values; +GSM48__bcap__user__rate_template *list_value; +} value_list; +}; + +void copy_template(const GSM48__bcap__user__rate_template& other_value); + +public: +GSM48__bcap__user__rate_template(); +GSM48__bcap__user__rate_template(template_sel other_value); +GSM48__bcap__user__rate_template(int other_value); +GSM48__bcap__user__rate_template(GSM48__bcap__user__rate::enum_type other_value); +GSM48__bcap__user__rate_template(const GSM48__bcap__user__rate& other_value); +GSM48__bcap__user__rate_template(const OPTIONAL& other_value); +GSM48__bcap__user__rate_template(const GSM48__bcap__user__rate_template& other_value); +~GSM48__bcap__user__rate_template(); + +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +GSM48__bcap__user__rate_template& operator=(template_sel other_value); +GSM48__bcap__user__rate_template& operator=(int other_value); +GSM48__bcap__user__rate_template& operator=(GSM48__bcap__user__rate::enum_type other_value); +GSM48__bcap__user__rate_template& operator=(const GSM48__bcap__user__rate& other_value); +GSM48__bcap__user__rate_template& operator=(const OPTIONAL& other_value); +GSM48__bcap__user__rate_template& operator=(const GSM48__bcap__user__rate_template& other_value); + +boolean match(GSM48__bcap__user__rate::enum_type other_value, boolean legacy = FALSE) const; +boolean match(const GSM48__bcap__user__rate& other_value, boolean legacy = FALSE) const; +GSM48__bcap__user__rate::enum_type valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +GSM48__bcap__user__rate_template& list_item(unsigned int list_index); +void log() const; +void log_match(const GSM48__bcap__user__rate& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +}; + +class GSM48__bcap__parity : public Base_Type { // enum +friend class GSM48__bcap__parity_template; +public: +enum enum_type { GSM48__BCAP__PAR__ODD = 0, GSM48__BCAP__PAR__EVEN = 2, GSM48__BCAP__PAR__NONE = 3, GSM48__BCAP__PAR__ZERO = 4, GSM48__BCAP__PAR__ONE = 5, UNKNOWN_VALUE = 1, UNBOUND_VALUE = 6 }; +private: +enum_type enum_value; + +public: +GSM48__bcap__parity(); +GSM48__bcap__parity(int other_value); +GSM48__bcap__parity(enum_type other_value); +GSM48__bcap__parity(const GSM48__bcap__parity& other_value); + +GSM48__bcap__parity& operator=(int other_value); +GSM48__bcap__parity& operator=(enum_type other_value); +GSM48__bcap__parity& operator=(const GSM48__bcap__parity& other_value); + +boolean operator==(enum_type other_value) const; +boolean operator==(const GSM48__bcap__parity& other_value) const; +inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); } +inline boolean operator!=(const GSM48__bcap__parity& other_value) const { return !(*this == other_value); } +boolean operator<(enum_type other_value) const; +boolean operator<(const GSM48__bcap__parity& other_value) const; +boolean operator>(enum_type other_value) const; +boolean operator>(const GSM48__bcap__parity& other_value) const; +inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); } +inline boolean operator<=(const GSM48__bcap__parity& other_value) const { return !(*this > other_value); } +inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); } +inline boolean operator>=(const GSM48__bcap__parity& other_value) const { return !(*this < other_value); } + +static const char *enum_to_str(enum_type enum_par); +static enum_type str_to_enum(const char *str_par); +static boolean is_valid_enum(int int_par); + +static int enum2int(enum_type enum_par); +static int enum2int(const GSM48__bcap__parity& enum_par); +int as_int() const { return enum2int(enum_value); } +void from_int(int p_val) { *this = p_val; } +void int2enum(int int_val); +operator enum_type() const; +inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; } +inline boolean is_value() const { return enum_value != UNBOUND_VALUE; } +inline void clean_up(){ enum_value = UNBOUND_VALUE; } +inline boolean is_present() const { return is_bound(); } +void log() const; +void set_param(Module_Param& param); +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class GSM48__bcap__parity_template : public Base_Template { +union { +GSM48__bcap__parity::enum_type single_value; +struct { +unsigned int n_values; +GSM48__bcap__parity_template *list_value; +} value_list; +}; + +void copy_template(const GSM48__bcap__parity_template& other_value); + +public: +GSM48__bcap__parity_template(); +GSM48__bcap__parity_template(template_sel other_value); +GSM48__bcap__parity_template(int other_value); +GSM48__bcap__parity_template(GSM48__bcap__parity::enum_type other_value); +GSM48__bcap__parity_template(const GSM48__bcap__parity& other_value); +GSM48__bcap__parity_template(const OPTIONAL& other_value); +GSM48__bcap__parity_template(const GSM48__bcap__parity_template& other_value); +~GSM48__bcap__parity_template(); + +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +GSM48__bcap__parity_template& operator=(template_sel other_value); +GSM48__bcap__parity_template& operator=(int other_value); +GSM48__bcap__parity_template& operator=(GSM48__bcap__parity::enum_type other_value); +GSM48__bcap__parity_template& operator=(const GSM48__bcap__parity& other_value); +GSM48__bcap__parity_template& operator=(const OPTIONAL& other_value); +GSM48__bcap__parity_template& operator=(const GSM48__bcap__parity_template& other_value); + +boolean match(GSM48__bcap__parity::enum_type other_value, boolean legacy = FALSE) const; +boolean match(const GSM48__bcap__parity& other_value, boolean legacy = FALSE) const; +GSM48__bcap__parity::enum_type valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +GSM48__bcap__parity_template& list_item(unsigned int list_index); +void log() const; +void log_match(const GSM48__bcap__parity& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +}; + +class GSM48__bcap__interm__rate : public Base_Type { // enum +friend class GSM48__bcap__interm__rate_template; +public: +enum enum_type { GSM48__BCAP__IR__NONE = 0, GSM48__BCAP__IR__8k = 2, GSM48__BCAP__IR__16k = 3, UNKNOWN_VALUE = 1, UNBOUND_VALUE = 4 }; +private: +enum_type enum_value; + +public: +GSM48__bcap__interm__rate(); +GSM48__bcap__interm__rate(int other_value); +GSM48__bcap__interm__rate(enum_type other_value); +GSM48__bcap__interm__rate(const GSM48__bcap__interm__rate& other_value); + +GSM48__bcap__interm__rate& operator=(int other_value); +GSM48__bcap__interm__rate& operator=(enum_type other_value); +GSM48__bcap__interm__rate& operator=(const GSM48__bcap__interm__rate& other_value); + +boolean operator==(enum_type other_value) const; +boolean operator==(const GSM48__bcap__interm__rate& other_value) const; +inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); } +inline boolean operator!=(const GSM48__bcap__interm__rate& other_value) const { return !(*this == other_value); } +boolean operator<(enum_type other_value) const; +boolean operator<(const GSM48__bcap__interm__rate& other_value) const; +boolean operator>(enum_type other_value) const; +boolean operator>(const GSM48__bcap__interm__rate& other_value) const; +inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); } +inline boolean operator<=(const GSM48__bcap__interm__rate& other_value) const { return !(*this > other_value); } +inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); } +inline boolean operator>=(const GSM48__bcap__interm__rate& other_value) const { return !(*this < other_value); } + +static const char *enum_to_str(enum_type enum_par); +static enum_type str_to_enum(const char *str_par); +static boolean is_valid_enum(int int_par); + +static int enum2int(enum_type enum_par); +static int enum2int(const GSM48__bcap__interm__rate& enum_par); +int as_int() const { return enum2int(enum_value); } +void from_int(int p_val) { *this = p_val; } +void int2enum(int int_val); +operator enum_type() const; +inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; } +inline boolean is_value() const { return enum_value != UNBOUND_VALUE; } +inline void clean_up(){ enum_value = UNBOUND_VALUE; } +inline boolean is_present() const { return is_bound(); } +void log() const; +void set_param(Module_Param& param); +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class GSM48__bcap__interm__rate_template : public Base_Template { +union { +GSM48__bcap__interm__rate::enum_type single_value; +struct { +unsigned int n_values; +GSM48__bcap__interm__rate_template *list_value; +} value_list; +}; + +void copy_template(const GSM48__bcap__interm__rate_template& other_value); + +public: +GSM48__bcap__interm__rate_template(); +GSM48__bcap__interm__rate_template(template_sel other_value); +GSM48__bcap__interm__rate_template(int other_value); +GSM48__bcap__interm__rate_template(GSM48__bcap__interm__rate::enum_type other_value); +GSM48__bcap__interm__rate_template(const GSM48__bcap__interm__rate& other_value); +GSM48__bcap__interm__rate_template(const OPTIONAL& other_value); +GSM48__bcap__interm__rate_template(const GSM48__bcap__interm__rate_template& other_value); +~GSM48__bcap__interm__rate_template(); + +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +GSM48__bcap__interm__rate_template& operator=(template_sel other_value); +GSM48__bcap__interm__rate_template& operator=(int other_value); +GSM48__bcap__interm__rate_template& operator=(GSM48__bcap__interm__rate::enum_type other_value); +GSM48__bcap__interm__rate_template& operator=(const GSM48__bcap__interm__rate& other_value); +GSM48__bcap__interm__rate_template& operator=(const OPTIONAL& other_value); +GSM48__bcap__interm__rate_template& operator=(const GSM48__bcap__interm__rate_template& other_value); + +boolean match(GSM48__bcap__interm__rate::enum_type other_value, boolean legacy = FALSE) const; +boolean match(const GSM48__bcap__interm__rate& other_value, boolean legacy = FALSE) const; +GSM48__bcap__interm__rate::enum_type valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +GSM48__bcap__interm__rate_template& list_item(unsigned int list_index); +void log() const; +void log_match(const GSM48__bcap__interm__rate& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +}; + +class GSM48__bcap__transp : public Base_Type { // enum +friend class GSM48__bcap__transp_template; +public: +enum enum_type { GSM48__BCAP__TR__TRANSP = 0, GSM48__BCAP__TR__RLP = 1, GSM48__BCAP__TR__TR__PREF = 2, GSM48__BCAP__TR__RLP__PREF = 3, UNKNOWN_VALUE = 4, UNBOUND_VALUE = 5 }; +private: +enum_type enum_value; + +public: +GSM48__bcap__transp(); +GSM48__bcap__transp(int other_value); +GSM48__bcap__transp(enum_type other_value); +GSM48__bcap__transp(const GSM48__bcap__transp& other_value); + +GSM48__bcap__transp& operator=(int other_value); +GSM48__bcap__transp& operator=(enum_type other_value); +GSM48__bcap__transp& operator=(const GSM48__bcap__transp& other_value); + +boolean operator==(enum_type other_value) const; +boolean operator==(const GSM48__bcap__transp& other_value) const; +inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); } +inline boolean operator!=(const GSM48__bcap__transp& other_value) const { return !(*this == other_value); } +boolean operator<(enum_type other_value) const; +boolean operator<(const GSM48__bcap__transp& other_value) const; +boolean operator>(enum_type other_value) const; +boolean operator>(const GSM48__bcap__transp& other_value) const; +inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); } +inline boolean operator<=(const GSM48__bcap__transp& other_value) const { return !(*this > other_value); } +inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); } +inline boolean operator>=(const GSM48__bcap__transp& other_value) const { return !(*this < other_value); } + +static const char *enum_to_str(enum_type enum_par); +static enum_type str_to_enum(const char *str_par); +static boolean is_valid_enum(int int_par); + +static int enum2int(enum_type enum_par); +static int enum2int(const GSM48__bcap__transp& enum_par); +int as_int() const { return enum2int(enum_value); } +void from_int(int p_val) { *this = p_val; } +void int2enum(int int_val); +operator enum_type() const; +inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; } +inline boolean is_value() const { return enum_value != UNBOUND_VALUE; } +inline void clean_up(){ enum_value = UNBOUND_VALUE; } +inline boolean is_present() const { return is_bound(); } +void log() const; +void set_param(Module_Param& param); +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class GSM48__bcap__transp_template : public Base_Template { +union { +GSM48__bcap__transp::enum_type single_value; +struct { +unsigned int n_values; +GSM48__bcap__transp_template *list_value; +} value_list; +}; + +void copy_template(const GSM48__bcap__transp_template& other_value); + +public: +GSM48__bcap__transp_template(); +GSM48__bcap__transp_template(template_sel other_value); +GSM48__bcap__transp_template(int other_value); +GSM48__bcap__transp_template(GSM48__bcap__transp::enum_type other_value); +GSM48__bcap__transp_template(const GSM48__bcap__transp& other_value); +GSM48__bcap__transp_template(const OPTIONAL& other_value); +GSM48__bcap__transp_template(const GSM48__bcap__transp_template& other_value); +~GSM48__bcap__transp_template(); + +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +GSM48__bcap__transp_template& operator=(template_sel other_value); +GSM48__bcap__transp_template& operator=(int other_value); +GSM48__bcap__transp_template& operator=(GSM48__bcap__transp::enum_type other_value); +GSM48__bcap__transp_template& operator=(const GSM48__bcap__transp& other_value); +GSM48__bcap__transp_template& operator=(const OPTIONAL& other_value); +GSM48__bcap__transp_template& operator=(const GSM48__bcap__transp_template& other_value); + +boolean match(GSM48__bcap__transp::enum_type other_value, boolean legacy = FALSE) const; +boolean match(const GSM48__bcap__transp& other_value, boolean legacy = FALSE) const; +GSM48__bcap__transp::enum_type valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +GSM48__bcap__transp_template& list_item(unsigned int list_index); +void log() const; +void log_match(const GSM48__bcap__transp& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +}; + +class GSM48__bcap__modem__type : public Base_Type { // enum +friend class GSM48__bcap__modem__type_template; +public: +enum enum_type { GSM48__BCAP__MT__NONE = 0, GSM48__BCAP__MT__V21 = 1, GSM48__BCAP__MT__V22 = 2, GSM48__BCAP__MT__V22bis = 3, GSM48__BCAP__MT__V23 = 4, GSM48__BCAP__MT__V26ter = 5, GSM48__BCAP__MT__V32 = 6, GSM48__BCAP__MT__UNDEF = 7, GSM48__BCAP__MT__AUTO__1 = 8, UNKNOWN_VALUE = 9, UNBOUND_VALUE = 10 }; +private: +enum_type enum_value; + +public: +GSM48__bcap__modem__type(); +GSM48__bcap__modem__type(int other_value); +GSM48__bcap__modem__type(enum_type other_value); +GSM48__bcap__modem__type(const GSM48__bcap__modem__type& other_value); + +GSM48__bcap__modem__type& operator=(int other_value); +GSM48__bcap__modem__type& operator=(enum_type other_value); +GSM48__bcap__modem__type& operator=(const GSM48__bcap__modem__type& other_value); + +boolean operator==(enum_type other_value) const; +boolean operator==(const GSM48__bcap__modem__type& other_value) const; +inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); } +inline boolean operator!=(const GSM48__bcap__modem__type& other_value) const { return !(*this == other_value); } +boolean operator<(enum_type other_value) const; +boolean operator<(const GSM48__bcap__modem__type& other_value) const; +boolean operator>(enum_type other_value) const; +boolean operator>(const GSM48__bcap__modem__type& other_value) const; +inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); } +inline boolean operator<=(const GSM48__bcap__modem__type& other_value) const { return !(*this > other_value); } +inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); } +inline boolean operator>=(const GSM48__bcap__modem__type& other_value) const { return !(*this < other_value); } + +static const char *enum_to_str(enum_type enum_par); +static enum_type str_to_enum(const char *str_par); +static boolean is_valid_enum(int int_par); + +static int enum2int(enum_type enum_par); +static int enum2int(const GSM48__bcap__modem__type& enum_par); +int as_int() const { return enum2int(enum_value); } +void from_int(int p_val) { *this = p_val; } +void int2enum(int int_val); +operator enum_type() const; +inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; } +inline boolean is_value() const { return enum_value != UNBOUND_VALUE; } +inline void clean_up(){ enum_value = UNBOUND_VALUE; } +inline boolean is_present() const { return is_bound(); } +void log() const; +void set_param(Module_Param& param); +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class GSM48__bcap__modem__type_template : public Base_Template { +union { +GSM48__bcap__modem__type::enum_type single_value; +struct { +unsigned int n_values; +GSM48__bcap__modem__type_template *list_value; +} value_list; +}; + +void copy_template(const GSM48__bcap__modem__type_template& other_value); + +public: +GSM48__bcap__modem__type_template(); +GSM48__bcap__modem__type_template(template_sel other_value); +GSM48__bcap__modem__type_template(int other_value); +GSM48__bcap__modem__type_template(GSM48__bcap__modem__type::enum_type other_value); +GSM48__bcap__modem__type_template(const GSM48__bcap__modem__type& other_value); +GSM48__bcap__modem__type_template(const OPTIONAL& other_value); +GSM48__bcap__modem__type_template(const GSM48__bcap__modem__type_template& other_value); +~GSM48__bcap__modem__type_template(); + +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +GSM48__bcap__modem__type_template& operator=(template_sel other_value); +GSM48__bcap__modem__type_template& operator=(int other_value); +GSM48__bcap__modem__type_template& operator=(GSM48__bcap__modem__type::enum_type other_value); +GSM48__bcap__modem__type_template& operator=(const GSM48__bcap__modem__type& other_value); +GSM48__bcap__modem__type_template& operator=(const OPTIONAL& other_value); +GSM48__bcap__modem__type_template& operator=(const GSM48__bcap__modem__type_template& other_value); + +boolean match(GSM48__bcap__modem__type::enum_type other_value, boolean legacy = FALSE) const; +boolean match(const GSM48__bcap__modem__type& other_value, boolean legacy = FALSE) const; +GSM48__bcap__modem__type::enum_type valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +GSM48__bcap__modem__type_template& list_item(unsigned int list_index); +void log() const; +void log_match(const GSM48__bcap__modem__type& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +}; + +class MNCC__MsgType : public Base_Type { // enum +friend class MNCC__MsgType_template; +public: +enum enum_type { MNCC__SETUP__REQ = 257, MNCC__SETUP__IND = 258, MNCC__SETUP__RSP = 259, MNCC__SETUP__CNF = 260, MNCC__SETUP__COMPL__REQ = 261, MNCC__SETUP__COMPL__IND = 262, MNCC__CALL__CONF__IND = 263, MNCC__CALL__PROC__REQ = 264, MNCC__PROGRESS__REQ = 265, MNCC__ALERT__REQ = 266, MNCC__ALERT__IND = 267, MNCC__NOTIFY__REQ = 268, MNCC__NOTIFY__IND = 269, MNCC__DISC__REQ = 270, MNCC__DISC__IND = 271, MNCC__REL__REQ = 272, MNCC__REL__IND = 273, MNCC__REL__CNF = 274, MNCC__FACILITY__REQ = 275, MNCC__FACILITY__IND = 276, MNCC__START__DTMF__IND = 277, MNCC__START__DTMF__RSP = 278, MNCC__START__DTMF__REJ = 279, MNCC__STOP__DTMF__IND = 280, MNCC__STOP__DTMF__RSP = 281, MNCC__MODIFY__REQ = 282, MNCC__MODIFY__IND = 283, MNCC__MODIFY__RSP = 284, MNCC__MODIFY__CNF = 285, MNCC__MODIFY__REJ = 286, MNCC__HOLD__IND = 287, MNCC__HOLD__CNF = 288, MNCC__HOLD__REJ = 289, MNCC__RETRIEVE__IND = 290, MNCC__RETRIEVE__CNF = 291, MNCC__RETRIEVE__REJ = 292, MNCC__USERINFO__REQ = 293, MNCC__USERINFO__IND = 294, MNCC__REJ__REQ = 295, MNCC__REJ__IND = 296, MNCC__BRIDGE = 512, MNCC__FRAME__RECV = 513, MNCC__FRAME__DROP = 514, MNCC__LCHAN__MODIFY = 515, MNCC__RTP__CREATE = 516, MNCC__RTP__CONNECT = 517, MNCC__RTP__FREE = 518, GSM__TCHF__FRAME = 768, GSM__TCHF__FRAME__EFR = 769, GSM__TCHH__FRAME = 770, GSM__TCH__FRAME__AMR = 771, GSM__BAD__FRAME = 1023, MNCC__SOCKET__HELLO = 1024, UNKNOWN_VALUE = 0, UNBOUND_VALUE = 1 }; +private: +enum_type enum_value; + +public: +MNCC__MsgType(); +MNCC__MsgType(int other_value); +MNCC__MsgType(enum_type other_value); +MNCC__MsgType(const MNCC__MsgType& other_value); + +MNCC__MsgType& operator=(int other_value); +MNCC__MsgType& operator=(enum_type other_value); +MNCC__MsgType& operator=(const MNCC__MsgType& other_value); + +boolean operator==(enum_type other_value) const; +boolean operator==(const MNCC__MsgType& other_value) const; +inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); } +inline boolean operator!=(const MNCC__MsgType& other_value) const { return !(*this == other_value); } +boolean operator<(enum_type other_value) const; +boolean operator<(const MNCC__MsgType& other_value) const; +boolean operator>(enum_type other_value) const; +boolean operator>(const MNCC__MsgType& other_value) const; +inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); } +inline boolean operator<=(const MNCC__MsgType& other_value) const { return !(*this > other_value); } +inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); } +inline boolean operator>=(const MNCC__MsgType& other_value) const { return !(*this < other_value); } + +static const char *enum_to_str(enum_type enum_par); +static enum_type str_to_enum(const char *str_par); +static boolean is_valid_enum(int int_par); + +static int enum2int(enum_type enum_par); +static int enum2int(const MNCC__MsgType& enum_par); +int as_int() const { return enum2int(enum_value); } +void from_int(int p_val) { *this = p_val; } +void int2enum(int int_val); +operator enum_type() const; +inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; } +inline boolean is_value() const { return enum_value != UNBOUND_VALUE; } +inline void clean_up(){ enum_value = UNBOUND_VALUE; } +inline boolean is_present() const { return is_bound(); } +void log() const; +void set_param(Module_Param& param); +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class MNCC__MsgType_template : public Base_Template { +union { +MNCC__MsgType::enum_type single_value; +struct { +unsigned int n_values; +MNCC__MsgType_template *list_value; +} value_list; +}; + +void copy_template(const MNCC__MsgType_template& other_value); + +public: +MNCC__MsgType_template(); +MNCC__MsgType_template(template_sel other_value); +MNCC__MsgType_template(int other_value); +MNCC__MsgType_template(MNCC__MsgType::enum_type other_value); +MNCC__MsgType_template(const MNCC__MsgType& other_value); +MNCC__MsgType_template(const OPTIONAL& other_value); +MNCC__MsgType_template(const MNCC__MsgType_template& other_value); +~MNCC__MsgType_template(); + +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +MNCC__MsgType_template& operator=(template_sel other_value); +MNCC__MsgType_template& operator=(int other_value); +MNCC__MsgType_template& operator=(MNCC__MsgType::enum_type other_value); +MNCC__MsgType_template& operator=(const MNCC__MsgType& other_value); +MNCC__MsgType_template& operator=(const OPTIONAL& other_value); +MNCC__MsgType_template& operator=(const MNCC__MsgType_template& other_value); + +boolean match(MNCC__MsgType::enum_type other_value, boolean legacy = FALSE) const; +boolean match(const MNCC__MsgType& other_value, boolean legacy = FALSE) const; +MNCC__MsgType::enum_type valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +MNCC__MsgType_template& list_item(unsigned int list_index); +void log() const; +void log_match(const MNCC__MsgType& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +}; + +class MNCC__bearer__cap__data : public Base_Type { + GSM48__bcap__ra field_rate__adaptation; + GSM48__bcap__sig__access field_sig__access; + INTEGER field_async; + INTEGER field_nr__stop__bits; + INTEGER field_nr__data__bits; + GSM48__bcap__user__rate field_user__rate; + GSM48__bcap__parity field_parity; + GSM48__bcap__interm__rate field_interm__rate; + GSM48__bcap__transp field_transp; + GSM48__bcap__modem__type field_modem__type; +public: + MNCC__bearer__cap__data(); + MNCC__bearer__cap__data(const GSM48__bcap__ra& par_rate__adaptation, + const GSM48__bcap__sig__access& par_sig__access, + const INTEGER& par_async, + const INTEGER& par_nr__stop__bits, + const INTEGER& par_nr__data__bits, + const GSM48__bcap__user__rate& par_user__rate, + const GSM48__bcap__parity& par_parity, + const GSM48__bcap__interm__rate& par_interm__rate, + const GSM48__bcap__transp& par_transp, + const GSM48__bcap__modem__type& par_modem__type); + MNCC__bearer__cap__data(const MNCC__bearer__cap__data& other_value); + inline boolean is_component() { return FALSE; } + void clean_up(); + MNCC__bearer__cap__data& operator=(const MNCC__bearer__cap__data& other_value); + boolean operator==(const MNCC__bearer__cap__data& other_value) const; + inline boolean operator!=(const MNCC__bearer__cap__data& other_value) const + { return !(*this == other_value); } + + boolean is_bound() const; + +inline boolean is_present() const { return is_bound(); } + boolean is_value() const; + + inline GSM48__bcap__ra& rate__adaptation() + {return field_rate__adaptation;} + inline const GSM48__bcap__ra& rate__adaptation() const + {return field_rate__adaptation;} + inline GSM48__bcap__sig__access& sig__access() + {return field_sig__access;} + inline const GSM48__bcap__sig__access& sig__access() const + {return field_sig__access;} + inline INTEGER& async() + {return field_async;} + inline const INTEGER& async() const + {return field_async;} + inline INTEGER& nr__stop__bits() + {return field_nr__stop__bits;} + inline const INTEGER& nr__stop__bits() const + {return field_nr__stop__bits;} + inline INTEGER& nr__data__bits() + {return field_nr__data__bits;} + inline const INTEGER& nr__data__bits() const + {return field_nr__data__bits;} + inline GSM48__bcap__user__rate& user__rate() + {return field_user__rate;} + inline const GSM48__bcap__user__rate& user__rate() const + {return field_user__rate;} + inline GSM48__bcap__parity& parity() + {return field_parity;} + inline const GSM48__bcap__parity& parity() const + {return field_parity;} + inline GSM48__bcap__interm__rate& interm__rate() + {return field_interm__rate;} + inline const GSM48__bcap__interm__rate& interm__rate() const + {return field_interm__rate;} + inline GSM48__bcap__transp& transp() + {return field_transp;} + inline const GSM48__bcap__transp& transp() const + {return field_transp;} + inline GSM48__bcap__modem__type& modem__type() + {return field_modem__type;} + inline const GSM48__bcap__modem__type& modem__type() const + {return field_modem__type;} + inline int size_of() const + {return 10;} + void log() const; + void set_param(Module_Param& param); + void set_implicit_omit(); + void encode_text(Text_Buf& text_buf) const; + void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class MNCC__bearer__cap__data_template : public Base_Template { +struct single_value_struct; +union { +single_value_struct *single_value; +struct { +unsigned int n_values; +MNCC__bearer__cap__data_template *list_value; +} value_list; +}; + +void set_specific(); +void copy_value(const MNCC__bearer__cap__data& other_value); +void copy_template(const MNCC__bearer__cap__data_template& other_value); + +public: +MNCC__bearer__cap__data_template(); +MNCC__bearer__cap__data_template(template_sel other_value); +MNCC__bearer__cap__data_template(const MNCC__bearer__cap__data& other_value); +MNCC__bearer__cap__data_template(const OPTIONAL& other_value); +MNCC__bearer__cap__data_template(const MNCC__bearer__cap__data_template& other_value); +~MNCC__bearer__cap__data_template(); +MNCC__bearer__cap__data_template& operator=(template_sel other_value); +MNCC__bearer__cap__data_template& operator=(const MNCC__bearer__cap__data& other_value); +MNCC__bearer__cap__data_template& operator=(const OPTIONAL& other_value); +MNCC__bearer__cap__data_template& operator=(const MNCC__bearer__cap__data_template& other_value); +boolean match(const MNCC__bearer__cap__data& other_value, boolean legacy = FALSE) const; +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +MNCC__bearer__cap__data valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +MNCC__bearer__cap__data_template& list_item(unsigned int list_index) const; +GSM48__bcap__ra_template& rate__adaptation(); +const GSM48__bcap__ra_template& rate__adaptation() const; +GSM48__bcap__sig__access_template& sig__access(); +const GSM48__bcap__sig__access_template& sig__access() const; +INTEGER_template& async(); +const INTEGER_template& async() const; +INTEGER_template& nr__stop__bits(); +const INTEGER_template& nr__stop__bits() const; +INTEGER_template& nr__data__bits(); +const INTEGER_template& nr__data__bits() const; +GSM48__bcap__user__rate_template& user__rate(); +const GSM48__bcap__user__rate_template& user__rate() const; +GSM48__bcap__parity_template& parity(); +const GSM48__bcap__parity_template& parity() const; +GSM48__bcap__interm__rate_template& interm__rate(); +const GSM48__bcap__interm__rate_template& interm__rate() const; +GSM48__bcap__transp_template& transp(); +const GSM48__bcap__transp_template& transp() const; +GSM48__bcap__modem__type_template& modem__type(); +const GSM48__bcap__modem__type_template& modem__type() const; +int size_of() const; +void log() const; +void log_match(const MNCC__bearer__cap__data& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +}; + +class MNCC__bearer__cap : public Base_Type { + INTEGER field_transfer; + INTEGER field_mode; + INTEGER field_coding; + INTEGER field_radio; + INTEGER field_speech__ctm; + MNCC__speech__vers field_speech__ver; + OPTIONAL field_data; +public: + MNCC__bearer__cap(); + MNCC__bearer__cap(const INTEGER& par_transfer, + const INTEGER& par_mode, + const INTEGER& par_coding, + const INTEGER& par_radio, + const INTEGER& par_speech__ctm, + const MNCC__speech__vers& par_speech__ver, + const OPTIONAL& par_data); + MNCC__bearer__cap(const MNCC__bearer__cap& other_value); + inline boolean is_component() { return FALSE; } + void clean_up(); + MNCC__bearer__cap& operator=(const MNCC__bearer__cap& other_value); + boolean operator==(const MNCC__bearer__cap& other_value) const; + inline boolean operator!=(const MNCC__bearer__cap& other_value) const + { return !(*this == other_value); } + + boolean is_bound() const; + +inline boolean is_present() const { return is_bound(); } + boolean is_value() const; + + inline INTEGER& transfer() + {return field_transfer;} + inline const INTEGER& transfer() const + {return field_transfer;} + inline INTEGER& mode() + {return field_mode;} + inline const INTEGER& mode() const + {return field_mode;} + inline INTEGER& coding() + {return field_coding;} + inline const INTEGER& coding() const + {return field_coding;} + inline INTEGER& radio() + {return field_radio;} + inline const INTEGER& radio() const + {return field_radio;} + inline INTEGER& speech__ctm() + {return field_speech__ctm;} + inline const INTEGER& speech__ctm() const + {return field_speech__ctm;} + inline MNCC__speech__vers& speech__ver() + {return field_speech__ver;} + inline const MNCC__speech__vers& speech__ver() const + {return field_speech__ver;} + inline OPTIONAL& data() + {return field_data;} + inline const OPTIONAL& data() const + {return field_data;} + int size_of() const; + void log() const; + void set_param(Module_Param& param); + void set_implicit_omit(); + void encode_text(Text_Buf& text_buf) const; + void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class MNCC__bearer__cap_template : public Base_Template { +struct single_value_struct; +union { +single_value_struct *single_value; +struct { +unsigned int n_values; +MNCC__bearer__cap_template *list_value; +} value_list; +}; + +void set_specific(); +void copy_value(const MNCC__bearer__cap& other_value); +void copy_template(const MNCC__bearer__cap_template& other_value); + +public: +MNCC__bearer__cap_template(); +MNCC__bearer__cap_template(template_sel other_value); +MNCC__bearer__cap_template(const MNCC__bearer__cap& other_value); +MNCC__bearer__cap_template(const OPTIONAL& other_value); +MNCC__bearer__cap_template(const MNCC__bearer__cap_template& other_value); +~MNCC__bearer__cap_template(); +MNCC__bearer__cap_template& operator=(template_sel other_value); +MNCC__bearer__cap_template& operator=(const MNCC__bearer__cap& other_value); +MNCC__bearer__cap_template& operator=(const OPTIONAL& other_value); +MNCC__bearer__cap_template& operator=(const MNCC__bearer__cap_template& other_value); +boolean match(const MNCC__bearer__cap& other_value, boolean legacy = FALSE) const; +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +MNCC__bearer__cap valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +MNCC__bearer__cap_template& list_item(unsigned int list_index) const; +INTEGER_template& transfer(); +const INTEGER_template& transfer() const; +INTEGER_template& mode(); +const INTEGER_template& mode() const; +INTEGER_template& coding(); +const INTEGER_template& coding() const; +INTEGER_template& radio(); +const INTEGER_template& radio() const; +INTEGER_template& speech__ctm(); +const INTEGER_template& speech__ctm() const; +MNCC__speech__vers_template& speech__ver(); +const MNCC__speech__vers_template& speech__ver() const; +MNCC__bearer__cap__data_template& data(); +const MNCC__bearer__cap__data_template& data() const; +int size_of() const; +void log() const; +void log_match(const MNCC__bearer__cap& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +}; + +class GSM48__type__of__number : public Base_Type { // enum +friend class GSM48__type__of__number_template; +public: +enum enum_type { GSM48__TON__UNKNOWN = 0, GSM48__TON__INTERNATIONAL = 1, GSM48__TON__NATIONAL = 2, GSM48__TON__NETWORK__SPECIFIC = 3, GSM48__TON__SHORT__CODE = 4, UNKNOWN_VALUE = 5, UNBOUND_VALUE = 6 }; +private: +enum_type enum_value; + +public: +GSM48__type__of__number(); +GSM48__type__of__number(int other_value); +GSM48__type__of__number(enum_type other_value); +GSM48__type__of__number(const GSM48__type__of__number& other_value); + +GSM48__type__of__number& operator=(int other_value); +GSM48__type__of__number& operator=(enum_type other_value); +GSM48__type__of__number& operator=(const GSM48__type__of__number& other_value); + +boolean operator==(enum_type other_value) const; +boolean operator==(const GSM48__type__of__number& other_value) const; +inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); } +inline boolean operator!=(const GSM48__type__of__number& other_value) const { return !(*this == other_value); } +boolean operator<(enum_type other_value) const; +boolean operator<(const GSM48__type__of__number& other_value) const; +boolean operator>(enum_type other_value) const; +boolean operator>(const GSM48__type__of__number& other_value) const; +inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); } +inline boolean operator<=(const GSM48__type__of__number& other_value) const { return !(*this > other_value); } +inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); } +inline boolean operator>=(const GSM48__type__of__number& other_value) const { return !(*this < other_value); } + +static const char *enum_to_str(enum_type enum_par); +static enum_type str_to_enum(const char *str_par); +static boolean is_valid_enum(int int_par); + +static int enum2int(enum_type enum_par); +static int enum2int(const GSM48__type__of__number& enum_par); +int as_int() const { return enum2int(enum_value); } +void from_int(int p_val) { *this = p_val; } +void int2enum(int int_val); +operator enum_type() const; +inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; } +inline boolean is_value() const { return enum_value != UNBOUND_VALUE; } +inline void clean_up(){ enum_value = UNBOUND_VALUE; } +inline boolean is_present() const { return is_bound(); } +void log() const; +void set_param(Module_Param& param); +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class GSM48__type__of__number_template : public Base_Template { +union { +GSM48__type__of__number::enum_type single_value; +struct { +unsigned int n_values; +GSM48__type__of__number_template *list_value; +} value_list; +}; + +void copy_template(const GSM48__type__of__number_template& other_value); + +public: +GSM48__type__of__number_template(); +GSM48__type__of__number_template(template_sel other_value); +GSM48__type__of__number_template(int other_value); +GSM48__type__of__number_template(GSM48__type__of__number::enum_type other_value); +GSM48__type__of__number_template(const GSM48__type__of__number& other_value); +GSM48__type__of__number_template(const OPTIONAL& other_value); +GSM48__type__of__number_template(const GSM48__type__of__number_template& other_value); +~GSM48__type__of__number_template(); + +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +GSM48__type__of__number_template& operator=(template_sel other_value); +GSM48__type__of__number_template& operator=(int other_value); +GSM48__type__of__number_template& operator=(GSM48__type__of__number::enum_type other_value); +GSM48__type__of__number_template& operator=(const GSM48__type__of__number& other_value); +GSM48__type__of__number_template& operator=(const OPTIONAL& other_value); +GSM48__type__of__number_template& operator=(const GSM48__type__of__number_template& other_value); + +boolean match(GSM48__type__of__number::enum_type other_value, boolean legacy = FALSE) const; +boolean match(const GSM48__type__of__number& other_value, boolean legacy = FALSE) const; +GSM48__type__of__number::enum_type valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +GSM48__type__of__number_template& list_item(unsigned int list_index); +void log() const; +void log_match(const GSM48__type__of__number& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +}; + +class GSM48__num__plan__ind : public Base_Type { // enum +friend class GSM48__num__plan__ind_template; +public: +enum enum_type { GSM48__NUMPLAN__UNKNOWN = 0, GSM48__NUMPLAN__E164 = 1, GSM48__NUMPLAN__X121 = 3, GSM48__NUMPLAN__F69 = 4, GSM48__NUMPLAN__NATIONAL = 8, GSM48__NUMPLAN__PRIVATE = 9, GSM48__NUMPLAN__CTS = 11, GSM48__NUMPLAN__RESERVED = 15, UNKNOWN_VALUE = 2, UNBOUND_VALUE = 5 }; +private: +enum_type enum_value; + +public: +GSM48__num__plan__ind(); +GSM48__num__plan__ind(int other_value); +GSM48__num__plan__ind(enum_type other_value); +GSM48__num__plan__ind(const GSM48__num__plan__ind& other_value); + +GSM48__num__plan__ind& operator=(int other_value); +GSM48__num__plan__ind& operator=(enum_type other_value); +GSM48__num__plan__ind& operator=(const GSM48__num__plan__ind& other_value); + +boolean operator==(enum_type other_value) const; +boolean operator==(const GSM48__num__plan__ind& other_value) const; +inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); } +inline boolean operator!=(const GSM48__num__plan__ind& other_value) const { return !(*this == other_value); } +boolean operator<(enum_type other_value) const; +boolean operator<(const GSM48__num__plan__ind& other_value) const; +boolean operator>(enum_type other_value) const; +boolean operator>(const GSM48__num__plan__ind& other_value) const; +inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); } +inline boolean operator<=(const GSM48__num__plan__ind& other_value) const { return !(*this > other_value); } +inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); } +inline boolean operator>=(const GSM48__num__plan__ind& other_value) const { return !(*this < other_value); } + +static const char *enum_to_str(enum_type enum_par); +static enum_type str_to_enum(const char *str_par); +static boolean is_valid_enum(int int_par); + +static int enum2int(enum_type enum_par); +static int enum2int(const GSM48__num__plan__ind& enum_par); +int as_int() const { return enum2int(enum_value); } +void from_int(int p_val) { *this = p_val; } +void int2enum(int int_val); +operator enum_type() const; +inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; } +inline boolean is_value() const { return enum_value != UNBOUND_VALUE; } +inline void clean_up(){ enum_value = UNBOUND_VALUE; } +inline boolean is_present() const { return is_bound(); } +void log() const; +void set_param(Module_Param& param); +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class GSM48__num__plan__ind_template : public Base_Template { +union { +GSM48__num__plan__ind::enum_type single_value; +struct { +unsigned int n_values; +GSM48__num__plan__ind_template *list_value; +} value_list; +}; + +void copy_template(const GSM48__num__plan__ind_template& other_value); + +public: +GSM48__num__plan__ind_template(); +GSM48__num__plan__ind_template(template_sel other_value); +GSM48__num__plan__ind_template(int other_value); +GSM48__num__plan__ind_template(GSM48__num__plan__ind::enum_type other_value); +GSM48__num__plan__ind_template(const GSM48__num__plan__ind& other_value); +GSM48__num__plan__ind_template(const OPTIONAL& other_value); +GSM48__num__plan__ind_template(const GSM48__num__plan__ind_template& other_value); +~GSM48__num__plan__ind_template(); + +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +GSM48__num__plan__ind_template& operator=(template_sel other_value); +GSM48__num__plan__ind_template& operator=(int other_value); +GSM48__num__plan__ind_template& operator=(GSM48__num__plan__ind::enum_type other_value); +GSM48__num__plan__ind_template& operator=(const GSM48__num__plan__ind& other_value); +GSM48__num__plan__ind_template& operator=(const OPTIONAL& other_value); +GSM48__num__plan__ind_template& operator=(const GSM48__num__plan__ind_template& other_value); + +boolean match(GSM48__num__plan__ind::enum_type other_value, boolean legacy = FALSE) const; +boolean match(const GSM48__num__plan__ind& other_value, boolean legacy = FALSE) const; +GSM48__num__plan__ind::enum_type valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +GSM48__num__plan__ind_template& list_item(unsigned int list_index); +void log() const; +void log_match(const GSM48__num__plan__ind& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +}; + +class GSM48__present__ind : public Base_Type { // enum +friend class GSM48__present__ind_template; +public: +enum enum_type { GSM48__PRES__IND__ALLOWED = 0, GSM48__PRES__IND__RESTRICTED = 1, GSM48__PRES__IND__NUM__NOT__AVAIL = 2, GSM48__PRES__IND__RESERVED = 3, UNKNOWN_VALUE = 4, UNBOUND_VALUE = 5 }; +private: +enum_type enum_value; + +public: +GSM48__present__ind(); +GSM48__present__ind(int other_value); +GSM48__present__ind(enum_type other_value); +GSM48__present__ind(const GSM48__present__ind& other_value); + +GSM48__present__ind& operator=(int other_value); +GSM48__present__ind& operator=(enum_type other_value); +GSM48__present__ind& operator=(const GSM48__present__ind& other_value); + +boolean operator==(enum_type other_value) const; +boolean operator==(const GSM48__present__ind& other_value) const; +inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); } +inline boolean operator!=(const GSM48__present__ind& other_value) const { return !(*this == other_value); } +boolean operator<(enum_type other_value) const; +boolean operator<(const GSM48__present__ind& other_value) const; +boolean operator>(enum_type other_value) const; +boolean operator>(const GSM48__present__ind& other_value) const; +inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); } +inline boolean operator<=(const GSM48__present__ind& other_value) const { return !(*this > other_value); } +inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); } +inline boolean operator>=(const GSM48__present__ind& other_value) const { return !(*this < other_value); } + +static const char *enum_to_str(enum_type enum_par); +static enum_type str_to_enum(const char *str_par); +static boolean is_valid_enum(int int_par); + +static int enum2int(enum_type enum_par); +static int enum2int(const GSM48__present__ind& enum_par); +int as_int() const { return enum2int(enum_value); } +void from_int(int p_val) { *this = p_val; } +void int2enum(int int_val); +operator enum_type() const; +inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; } +inline boolean is_value() const { return enum_value != UNBOUND_VALUE; } +inline void clean_up(){ enum_value = UNBOUND_VALUE; } +inline boolean is_present() const { return is_bound(); } +void log() const; +void set_param(Module_Param& param); +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class GSM48__present__ind_template : public Base_Template { +union { +GSM48__present__ind::enum_type single_value; +struct { +unsigned int n_values; +GSM48__present__ind_template *list_value; +} value_list; +}; + +void copy_template(const GSM48__present__ind_template& other_value); + +public: +GSM48__present__ind_template(); +GSM48__present__ind_template(template_sel other_value); +GSM48__present__ind_template(int other_value); +GSM48__present__ind_template(GSM48__present__ind::enum_type other_value); +GSM48__present__ind_template(const GSM48__present__ind& other_value); +GSM48__present__ind_template(const OPTIONAL& other_value); +GSM48__present__ind_template(const GSM48__present__ind_template& other_value); +~GSM48__present__ind_template(); + +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +GSM48__present__ind_template& operator=(template_sel other_value); +GSM48__present__ind_template& operator=(int other_value); +GSM48__present__ind_template& operator=(GSM48__present__ind::enum_type other_value); +GSM48__present__ind_template& operator=(const GSM48__present__ind& other_value); +GSM48__present__ind_template& operator=(const OPTIONAL& other_value); +GSM48__present__ind_template& operator=(const GSM48__present__ind_template& other_value); + +boolean match(GSM48__present__ind::enum_type other_value, boolean legacy = FALSE) const; +boolean match(const GSM48__present__ind& other_value, boolean legacy = FALSE) const; +GSM48__present__ind::enum_type valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +GSM48__present__ind_template& list_item(unsigned int list_index); +void log() const; +void log_match(const GSM48__present__ind& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +}; + +class GSM48__screening__ind : public Base_Type { // enum +friend class GSM48__screening__ind_template; +public: +enum enum_type { GSM48__SCR__IND__NOT__SCREENED = 0, GSM48__SCR__IND__VERIF__PASSED = 1, GSM48__SCR__IND__VERIF__FAILED = 2, GSM48__SCR__IND__NETW__PROVIDED = 3, UNKNOWN_VALUE = 4, UNBOUND_VALUE = 5 }; +private: +enum_type enum_value; + +public: +GSM48__screening__ind(); +GSM48__screening__ind(int other_value); +GSM48__screening__ind(enum_type other_value); +GSM48__screening__ind(const GSM48__screening__ind& other_value); + +GSM48__screening__ind& operator=(int other_value); +GSM48__screening__ind& operator=(enum_type other_value); +GSM48__screening__ind& operator=(const GSM48__screening__ind& other_value); + +boolean operator==(enum_type other_value) const; +boolean operator==(const GSM48__screening__ind& other_value) const; +inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); } +inline boolean operator!=(const GSM48__screening__ind& other_value) const { return !(*this == other_value); } +boolean operator<(enum_type other_value) const; +boolean operator<(const GSM48__screening__ind& other_value) const; +boolean operator>(enum_type other_value) const; +boolean operator>(const GSM48__screening__ind& other_value) const; +inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); } +inline boolean operator<=(const GSM48__screening__ind& other_value) const { return !(*this > other_value); } +inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); } +inline boolean operator>=(const GSM48__screening__ind& other_value) const { return !(*this < other_value); } + +static const char *enum_to_str(enum_type enum_par); +static enum_type str_to_enum(const char *str_par); +static boolean is_valid_enum(int int_par); + +static int enum2int(enum_type enum_par); +static int enum2int(const GSM48__screening__ind& enum_par); +int as_int() const { return enum2int(enum_value); } +void from_int(int p_val) { *this = p_val; } +void int2enum(int int_val); +operator enum_type() const; +inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; } +inline boolean is_value() const { return enum_value != UNBOUND_VALUE; } +inline void clean_up(){ enum_value = UNBOUND_VALUE; } +inline boolean is_present() const { return is_bound(); } +void log() const; +void set_param(Module_Param& param); +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class GSM48__screening__ind_template : public Base_Template { +union { +GSM48__screening__ind::enum_type single_value; +struct { +unsigned int n_values; +GSM48__screening__ind_template *list_value; +} value_list; +}; + +void copy_template(const GSM48__screening__ind_template& other_value); + +public: +GSM48__screening__ind_template(); +GSM48__screening__ind_template(template_sel other_value); +GSM48__screening__ind_template(int other_value); +GSM48__screening__ind_template(GSM48__screening__ind::enum_type other_value); +GSM48__screening__ind_template(const GSM48__screening__ind& other_value); +GSM48__screening__ind_template(const OPTIONAL& other_value); +GSM48__screening__ind_template(const GSM48__screening__ind_template& other_value); +~GSM48__screening__ind_template(); + +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +GSM48__screening__ind_template& operator=(template_sel other_value); +GSM48__screening__ind_template& operator=(int other_value); +GSM48__screening__ind_template& operator=(GSM48__screening__ind::enum_type other_value); +GSM48__screening__ind_template& operator=(const GSM48__screening__ind& other_value); +GSM48__screening__ind_template& operator=(const OPTIONAL& other_value); +GSM48__screening__ind_template& operator=(const GSM48__screening__ind_template& other_value); + +boolean match(GSM48__screening__ind::enum_type other_value, boolean legacy = FALSE) const; +boolean match(const GSM48__screening__ind& other_value, boolean legacy = FALSE) const; +GSM48__screening__ind::enum_type valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +GSM48__screening__ind_template& list_item(unsigned int list_index); +void log() const; +void log_match(const GSM48__screening__ind& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +}; + +class MNCC__number : public Base_Type { + GSM48__type__of__number field_number__type; + GSM48__num__plan__ind field_plan; + GSM48__present__ind field_presence; + GSM48__screening__ind field_screen; + CHARSTRING field_number; +public: + MNCC__number(); + MNCC__number(const GSM48__type__of__number& par_number__type, + const GSM48__num__plan__ind& par_plan, + const GSM48__present__ind& par_presence, + const GSM48__screening__ind& par_screen, + const CHARSTRING& par_number); + MNCC__number(const MNCC__number& other_value); + inline boolean is_component() { return FALSE; } + void clean_up(); + MNCC__number& operator=(const MNCC__number& other_value); + boolean operator==(const MNCC__number& other_value) const; + inline boolean operator!=(const MNCC__number& other_value) const + { return !(*this == other_value); } + + boolean is_bound() const; + +inline boolean is_present() const { return is_bound(); } + boolean is_value() const; + + inline GSM48__type__of__number& number__type() + {return field_number__type;} + inline const GSM48__type__of__number& number__type() const + {return field_number__type;} + inline GSM48__num__plan__ind& plan() + {return field_plan;} + inline const GSM48__num__plan__ind& plan() const + {return field_plan;} + inline GSM48__present__ind& presence() + {return field_presence;} + inline const GSM48__present__ind& presence() const + {return field_presence;} + inline GSM48__screening__ind& screen() + {return field_screen;} + inline const GSM48__screening__ind& screen() const + {return field_screen;} + inline CHARSTRING& number() + {return field_number;} + inline const CHARSTRING& number() const + {return field_number;} + inline int size_of() const + {return 5;} + void log() const; + void set_param(Module_Param& param); + void set_implicit_omit(); + void encode_text(Text_Buf& text_buf) const; + void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class MNCC__number_template : public Base_Template { +struct single_value_struct; +union { +single_value_struct *single_value; +struct { +unsigned int n_values; +MNCC__number_template *list_value; +} value_list; +}; + +void set_specific(); +void copy_value(const MNCC__number& other_value); +void copy_template(const MNCC__number_template& other_value); + +public: +MNCC__number_template(); +MNCC__number_template(template_sel other_value); +MNCC__number_template(const MNCC__number& other_value); +MNCC__number_template(const OPTIONAL& other_value); +MNCC__number_template(const MNCC__number_template& other_value); +~MNCC__number_template(); +MNCC__number_template& operator=(template_sel other_value); +MNCC__number_template& operator=(const MNCC__number& other_value); +MNCC__number_template& operator=(const OPTIONAL& other_value); +MNCC__number_template& operator=(const MNCC__number_template& other_value); +boolean match(const MNCC__number& other_value, boolean legacy = FALSE) const; +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +MNCC__number valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +MNCC__number_template& list_item(unsigned int list_index) const; +GSM48__type__of__number_template& number__type(); +const GSM48__type__of__number_template& number__type() const; +GSM48__num__plan__ind_template& plan(); +const GSM48__num__plan__ind_template& plan() const; +GSM48__present__ind_template& presence(); +const GSM48__present__ind_template& presence() const; +GSM48__screening__ind_template& screen(); +const GSM48__screening__ind_template& screen() const; +CHARSTRING_template& number(); +const CHARSTRING_template& number() const; +int size_of() const; +void log() const; +void log_match(const MNCC__number& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +}; + +class GSM48__cause__coding : public Base_Type { // enum +friend class GSM48__cause__coding_template; +public: +enum enum_type { GSM48__CAUSE__CS__Q931 = 0, GSM48__CAUSE__CS__RSVD = 1, GSM48__CAUSE__CS__NATIONAL = 2, GSM48__CAUSE__CS__GSM = 3, UNKNOWN_VALUE = 4, UNBOUND_VALUE = 5 }; +private: +enum_type enum_value; + +public: +GSM48__cause__coding(); +GSM48__cause__coding(int other_value); +GSM48__cause__coding(enum_type other_value); +GSM48__cause__coding(const GSM48__cause__coding& other_value); + +GSM48__cause__coding& operator=(int other_value); +GSM48__cause__coding& operator=(enum_type other_value); +GSM48__cause__coding& operator=(const GSM48__cause__coding& other_value); + +boolean operator==(enum_type other_value) const; +boolean operator==(const GSM48__cause__coding& other_value) const; +inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); } +inline boolean operator!=(const GSM48__cause__coding& other_value) const { return !(*this == other_value); } +boolean operator<(enum_type other_value) const; +boolean operator<(const GSM48__cause__coding& other_value) const; +boolean operator>(enum_type other_value) const; +boolean operator>(const GSM48__cause__coding& other_value) const; +inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); } +inline boolean operator<=(const GSM48__cause__coding& other_value) const { return !(*this > other_value); } +inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); } +inline boolean operator>=(const GSM48__cause__coding& other_value) const { return !(*this < other_value); } + +static const char *enum_to_str(enum_type enum_par); +static enum_type str_to_enum(const char *str_par); +static boolean is_valid_enum(int int_par); + +static int enum2int(enum_type enum_par); +static int enum2int(const GSM48__cause__coding& enum_par); +int as_int() const { return enum2int(enum_value); } +void from_int(int p_val) { *this = p_val; } +void int2enum(int int_val); +operator enum_type() const; +inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; } +inline boolean is_value() const { return enum_value != UNBOUND_VALUE; } +inline void clean_up(){ enum_value = UNBOUND_VALUE; } +inline boolean is_present() const { return is_bound(); } +void log() const; +void set_param(Module_Param& param); +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class GSM48__cause__coding_template : public Base_Template { +union { +GSM48__cause__coding::enum_type single_value; +struct { +unsigned int n_values; +GSM48__cause__coding_template *list_value; +} value_list; +}; + +void copy_template(const GSM48__cause__coding_template& other_value); + +public: +GSM48__cause__coding_template(); +GSM48__cause__coding_template(template_sel other_value); +GSM48__cause__coding_template(int other_value); +GSM48__cause__coding_template(GSM48__cause__coding::enum_type other_value); +GSM48__cause__coding_template(const GSM48__cause__coding& other_value); +GSM48__cause__coding_template(const OPTIONAL& other_value); +GSM48__cause__coding_template(const GSM48__cause__coding_template& other_value); +~GSM48__cause__coding_template(); + +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +GSM48__cause__coding_template& operator=(template_sel other_value); +GSM48__cause__coding_template& operator=(int other_value); +GSM48__cause__coding_template& operator=(GSM48__cause__coding::enum_type other_value); +GSM48__cause__coding_template& operator=(const GSM48__cause__coding& other_value); +GSM48__cause__coding_template& operator=(const OPTIONAL& other_value); +GSM48__cause__coding_template& operator=(const GSM48__cause__coding_template& other_value); + +boolean match(GSM48__cause__coding::enum_type other_value, boolean legacy = FALSE) const; +boolean match(const GSM48__cause__coding& other_value, boolean legacy = FALSE) const; +GSM48__cause__coding::enum_type valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +GSM48__cause__coding_template& list_item(unsigned int list_index); +void log() const; +void log_match(const GSM48__cause__coding& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +}; + +class GSM48__cause__loc : public Base_Type { // enum +friend class GSM48__cause__loc_template; +public: +enum enum_type { GSM48__CAUSE__LOC__USER = 0, GSM48__CAUSE__LOC__PRN__S__LU = 1, GSM48__CAUSE__LOC__PUN__S__LU = 2, GSM48__CAUSE__LOC__TRANS__NET = 3, GSM48__CAUSE__LOC__PUN__S__RU = 4, GSM48__CAUSE__LOC__PRN__S__RU = 5, GSM48__CAUSE__LOC__INN__NET = 7, GSM48__CAUSE__LOC__NET__BEYOND = 10, UNKNOWN_VALUE = 6, UNBOUND_VALUE = 8 }; +private: +enum_type enum_value; + +public: +GSM48__cause__loc(); +GSM48__cause__loc(int other_value); +GSM48__cause__loc(enum_type other_value); +GSM48__cause__loc(const GSM48__cause__loc& other_value); + +GSM48__cause__loc& operator=(int other_value); +GSM48__cause__loc& operator=(enum_type other_value); +GSM48__cause__loc& operator=(const GSM48__cause__loc& other_value); + +boolean operator==(enum_type other_value) const; +boolean operator==(const GSM48__cause__loc& other_value) const; +inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); } +inline boolean operator!=(const GSM48__cause__loc& other_value) const { return !(*this == other_value); } +boolean operator<(enum_type other_value) const; +boolean operator<(const GSM48__cause__loc& other_value) const; +boolean operator>(enum_type other_value) const; +boolean operator>(const GSM48__cause__loc& other_value) const; +inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); } +inline boolean operator<=(const GSM48__cause__loc& other_value) const { return !(*this > other_value); } +inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); } +inline boolean operator>=(const GSM48__cause__loc& other_value) const { return !(*this < other_value); } + +static const char *enum_to_str(enum_type enum_par); +static enum_type str_to_enum(const char *str_par); +static boolean is_valid_enum(int int_par); + +static int enum2int(enum_type enum_par); +static int enum2int(const GSM48__cause__loc& enum_par); +int as_int() const { return enum2int(enum_value); } +void from_int(int p_val) { *this = p_val; } +void int2enum(int int_val); +operator enum_type() const; +inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; } +inline boolean is_value() const { return enum_value != UNBOUND_VALUE; } +inline void clean_up(){ enum_value = UNBOUND_VALUE; } +inline boolean is_present() const { return is_bound(); } +void log() const; +void set_param(Module_Param& param); +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class GSM48__cause__loc_template : public Base_Template { +union { +GSM48__cause__loc::enum_type single_value; +struct { +unsigned int n_values; +GSM48__cause__loc_template *list_value; +} value_list; +}; + +void copy_template(const GSM48__cause__loc_template& other_value); + +public: +GSM48__cause__loc_template(); +GSM48__cause__loc_template(template_sel other_value); +GSM48__cause__loc_template(int other_value); +GSM48__cause__loc_template(GSM48__cause__loc::enum_type other_value); +GSM48__cause__loc_template(const GSM48__cause__loc& other_value); +GSM48__cause__loc_template(const OPTIONAL& other_value); +GSM48__cause__loc_template(const GSM48__cause__loc_template& other_value); +~GSM48__cause__loc_template(); + +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +GSM48__cause__loc_template& operator=(template_sel other_value); +GSM48__cause__loc_template& operator=(int other_value); +GSM48__cause__loc_template& operator=(GSM48__cause__loc::enum_type other_value); +GSM48__cause__loc_template& operator=(const GSM48__cause__loc& other_value); +GSM48__cause__loc_template& operator=(const OPTIONAL& other_value); +GSM48__cause__loc_template& operator=(const GSM48__cause__loc_template& other_value); + +boolean match(GSM48__cause__loc::enum_type other_value, boolean legacy = FALSE) const; +boolean match(const GSM48__cause__loc& other_value, boolean legacy = FALSE) const; +GSM48__cause__loc::enum_type valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +GSM48__cause__loc_template& list_item(unsigned int list_index); +void log() const; +void log_match(const GSM48__cause__loc& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +}; + +class MNCC__cause : public Base_Type { + GSM48__cause__loc field_location; + GSM48__cause__coding field_coding; + INTEGER field_rec; + INTEGER field_rec__val; + INTEGER field_val; + OCTETSTRING field_diag; +public: + MNCC__cause(); + MNCC__cause(const GSM48__cause__loc& par_location, + const GSM48__cause__coding& par_coding, + const INTEGER& par_rec, + const INTEGER& par_rec__val, + const INTEGER& par_val, + const OCTETSTRING& par_diag); + MNCC__cause(const MNCC__cause& other_value); + inline boolean is_component() { return FALSE; } + void clean_up(); + MNCC__cause& operator=(const MNCC__cause& other_value); + boolean operator==(const MNCC__cause& other_value) const; + inline boolean operator!=(const MNCC__cause& other_value) const + { return !(*this == other_value); } + + boolean is_bound() const; + +inline boolean is_present() const { return is_bound(); } + boolean is_value() const; + + inline GSM48__cause__loc& location() + {return field_location;} + inline const GSM48__cause__loc& location() const + {return field_location;} + inline GSM48__cause__coding& coding() + {return field_coding;} + inline const GSM48__cause__coding& coding() const + {return field_coding;} + inline INTEGER& rec() + {return field_rec;} + inline const INTEGER& rec() const + {return field_rec;} + inline INTEGER& rec__val() + {return field_rec__val;} + inline const INTEGER& rec__val() const + {return field_rec__val;} + inline INTEGER& val() + {return field_val;} + inline const INTEGER& val() const + {return field_val;} + inline OCTETSTRING& diag() + {return field_diag;} + inline const OCTETSTRING& diag() const + {return field_diag;} + inline int size_of() const + {return 6;} + void log() const; + void set_param(Module_Param& param); + void set_implicit_omit(); + void encode_text(Text_Buf& text_buf) const; + void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class MNCC__cause_template : public Base_Template { +struct single_value_struct; +union { +single_value_struct *single_value; +struct { +unsigned int n_values; +MNCC__cause_template *list_value; +} value_list; +}; + +void set_specific(); +void copy_value(const MNCC__cause& other_value); +void copy_template(const MNCC__cause_template& other_value); + +public: +MNCC__cause_template(); +MNCC__cause_template(template_sel other_value); +MNCC__cause_template(const MNCC__cause& other_value); +MNCC__cause_template(const OPTIONAL& other_value); +MNCC__cause_template(const MNCC__cause_template& other_value); +~MNCC__cause_template(); +MNCC__cause_template& operator=(template_sel other_value); +MNCC__cause_template& operator=(const MNCC__cause& other_value); +MNCC__cause_template& operator=(const OPTIONAL& other_value); +MNCC__cause_template& operator=(const MNCC__cause_template& other_value); +boolean match(const MNCC__cause& other_value, boolean legacy = FALSE) const; +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +MNCC__cause valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +MNCC__cause_template& list_item(unsigned int list_index) const; +GSM48__cause__loc_template& location(); +const GSM48__cause__loc_template& location() const; +GSM48__cause__coding_template& coding(); +const GSM48__cause__coding_template& coding() const; +INTEGER_template& rec(); +const INTEGER_template& rec() const; +INTEGER_template& rec__val(); +const INTEGER_template& rec__val() const; +INTEGER_template& val(); +const INTEGER_template& val() const; +OCTETSTRING_template& diag(); +const OCTETSTRING_template& diag() const; +int size_of() const; +void log() const; +void log_match(const MNCC__cause& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +}; + +class MNCC__useruser : public Base_Type { + INTEGER field_proto; + CHARSTRING field_info; +public: + MNCC__useruser(); + MNCC__useruser(const INTEGER& par_proto, + const CHARSTRING& par_info); + MNCC__useruser(const MNCC__useruser& other_value); + inline boolean is_component() { return FALSE; } + void clean_up(); + MNCC__useruser& operator=(const MNCC__useruser& other_value); + boolean operator==(const MNCC__useruser& other_value) const; + inline boolean operator!=(const MNCC__useruser& other_value) const + { return !(*this == other_value); } + + boolean is_bound() const; + +inline boolean is_present() const { return is_bound(); } + boolean is_value() const; + + inline INTEGER& proto() + {return field_proto;} + inline const INTEGER& proto() const + {return field_proto;} + inline CHARSTRING& info() + {return field_info;} + inline const CHARSTRING& info() const + {return field_info;} + inline int size_of() const + {return 2;} + void log() const; + void set_param(Module_Param& param); + void set_implicit_omit(); + void encode_text(Text_Buf& text_buf) const; + void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class MNCC__useruser_template : public Base_Template { +struct single_value_struct; +union { +single_value_struct *single_value; +struct { +unsigned int n_values; +MNCC__useruser_template *list_value; +} value_list; +}; + +void set_specific(); +void copy_value(const MNCC__useruser& other_value); +void copy_template(const MNCC__useruser_template& other_value); + +public: +MNCC__useruser_template(); +MNCC__useruser_template(template_sel other_value); +MNCC__useruser_template(const MNCC__useruser& other_value); +MNCC__useruser_template(const OPTIONAL& other_value); +MNCC__useruser_template(const MNCC__useruser_template& other_value); +~MNCC__useruser_template(); +MNCC__useruser_template& operator=(template_sel other_value); +MNCC__useruser_template& operator=(const MNCC__useruser& other_value); +MNCC__useruser_template& operator=(const OPTIONAL& other_value); +MNCC__useruser_template& operator=(const MNCC__useruser_template& other_value); +boolean match(const MNCC__useruser& other_value, boolean legacy = FALSE) const; +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +MNCC__useruser valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +MNCC__useruser_template& list_item(unsigned int list_index) const; +INTEGER_template& proto(); +const INTEGER_template& proto() const; +CHARSTRING_template& info(); +const CHARSTRING_template& info() const; +int size_of() const; +void log() const; +void log_match(const MNCC__useruser& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +}; + +class MNCC__progress : public Base_Type { + INTEGER field_coding; + INTEGER field_location; + INTEGER field_descr; +public: + MNCC__progress(); + MNCC__progress(const INTEGER& par_coding, + const INTEGER& par_location, + const INTEGER& par_descr); + MNCC__progress(const MNCC__progress& other_value); + inline boolean is_component() { return FALSE; } + void clean_up(); + MNCC__progress& operator=(const MNCC__progress& other_value); + boolean operator==(const MNCC__progress& other_value) const; + inline boolean operator!=(const MNCC__progress& other_value) const + { return !(*this == other_value); } + + boolean is_bound() const; + +inline boolean is_present() const { return is_bound(); } + boolean is_value() const; + + inline INTEGER& coding() + {return field_coding;} + inline const INTEGER& coding() const + {return field_coding;} + inline INTEGER& location() + {return field_location;} + inline const INTEGER& location() const + {return field_location;} + inline INTEGER& descr() + {return field_descr;} + inline const INTEGER& descr() const + {return field_descr;} + inline int size_of() const + {return 3;} + void log() const; + void set_param(Module_Param& param); + void set_implicit_omit(); + void encode_text(Text_Buf& text_buf) const; + void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class MNCC__progress_template : public Base_Template { +struct single_value_struct; +union { +single_value_struct *single_value; +struct { +unsigned int n_values; +MNCC__progress_template *list_value; +} value_list; +}; + +void set_specific(); +void copy_value(const MNCC__progress& other_value); +void copy_template(const MNCC__progress_template& other_value); + +public: +MNCC__progress_template(); +MNCC__progress_template(template_sel other_value); +MNCC__progress_template(const MNCC__progress& other_value); +MNCC__progress_template(const OPTIONAL& other_value); +MNCC__progress_template(const MNCC__progress_template& other_value); +~MNCC__progress_template(); +MNCC__progress_template& operator=(template_sel other_value); +MNCC__progress_template& operator=(const MNCC__progress& other_value); +MNCC__progress_template& operator=(const OPTIONAL& other_value); +MNCC__progress_template& operator=(const MNCC__progress_template& other_value); +boolean match(const MNCC__progress& other_value, boolean legacy = FALSE) const; +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +MNCC__progress valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +MNCC__progress_template& list_item(unsigned int list_index) const; +INTEGER_template& coding(); +const INTEGER_template& coding() const; +INTEGER_template& location(); +const INTEGER_template& location() const; +INTEGER_template& descr(); +const INTEGER_template& descr() const; +int size_of() const; +void log() const; +void log_match(const MNCC__progress& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +}; + +class MNCC__cccap : public Base_Type { + INTEGER field_dtmf; + INTEGER field_pcp; +public: + MNCC__cccap(); + MNCC__cccap(const INTEGER& par_dtmf, + const INTEGER& par_pcp); + MNCC__cccap(const MNCC__cccap& other_value); + inline boolean is_component() { return FALSE; } + void clean_up(); + MNCC__cccap& operator=(const MNCC__cccap& other_value); + boolean operator==(const MNCC__cccap& other_value) const; + inline boolean operator!=(const MNCC__cccap& other_value) const + { return !(*this == other_value); } + + boolean is_bound() const; + +inline boolean is_present() const { return is_bound(); } + boolean is_value() const; + + inline INTEGER& dtmf() + {return field_dtmf;} + inline const INTEGER& dtmf() const + {return field_dtmf;} + inline INTEGER& pcp() + {return field_pcp;} + inline const INTEGER& pcp() const + {return field_pcp;} + inline int size_of() const + {return 2;} + void log() const; + void set_param(Module_Param& param); + void set_implicit_omit(); + void encode_text(Text_Buf& text_buf) const; + void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class MNCC__cccap_template : public Base_Template { +struct single_value_struct; +union { +single_value_struct *single_value; +struct { +unsigned int n_values; +MNCC__cccap_template *list_value; +} value_list; +}; + +void set_specific(); +void copy_value(const MNCC__cccap& other_value); +void copy_template(const MNCC__cccap_template& other_value); + +public: +MNCC__cccap_template(); +MNCC__cccap_template(template_sel other_value); +MNCC__cccap_template(const MNCC__cccap& other_value); +MNCC__cccap_template(const OPTIONAL& other_value); +MNCC__cccap_template(const MNCC__cccap_template& other_value); +~MNCC__cccap_template(); +MNCC__cccap_template& operator=(template_sel other_value); +MNCC__cccap_template& operator=(const MNCC__cccap& other_value); +MNCC__cccap_template& operator=(const OPTIONAL& other_value); +MNCC__cccap_template& operator=(const MNCC__cccap_template& other_value); +boolean match(const MNCC__cccap& other_value, boolean legacy = FALSE) const; +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +MNCC__cccap valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +MNCC__cccap_template& list_item(unsigned int list_index) const; +INTEGER_template& dtmf(); +const INTEGER_template& dtmf() const; +INTEGER_template& pcp(); +const INTEGER_template& pcp() const; +int size_of() const; +void log() const; +void log_match(const MNCC__cccap& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +}; + +class MNCC__bcap : public Base_Type { // enum +friend class MNCC__bcap_template; +public: +enum enum_type { GSM__MNCC__BCAP__SPEECH = 0, GSM__MNCC__BCAP__UNR__DIG = 1, GSM__MNCC__BCAP__AUDIO = 2, GSM__MNCC__BCAP__FAX__G3 = 3, GSM__MNCC__BCAP__OTHER__ITC = 4, GSM__MNCC__BCAP__RESERVED = 7, UNKNOWN_VALUE = 5, UNBOUND_VALUE = 6 }; +private: +enum_type enum_value; + +public: +MNCC__bcap(); +MNCC__bcap(int other_value); +MNCC__bcap(enum_type other_value); +MNCC__bcap(const MNCC__bcap& other_value); + +MNCC__bcap& operator=(int other_value); +MNCC__bcap& operator=(enum_type other_value); +MNCC__bcap& operator=(const MNCC__bcap& other_value); + +boolean operator==(enum_type other_value) const; +boolean operator==(const MNCC__bcap& other_value) const; +inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); } +inline boolean operator!=(const MNCC__bcap& other_value) const { return !(*this == other_value); } +boolean operator<(enum_type other_value) const; +boolean operator<(const MNCC__bcap& other_value) const; +boolean operator>(enum_type other_value) const; +boolean operator>(const MNCC__bcap& other_value) const; +inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); } +inline boolean operator<=(const MNCC__bcap& other_value) const { return !(*this > other_value); } +inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); } +inline boolean operator>=(const MNCC__bcap& other_value) const { return !(*this < other_value); } + +static const char *enum_to_str(enum_type enum_par); +static enum_type str_to_enum(const char *str_par); +static boolean is_valid_enum(int int_par); + +static int enum2int(enum_type enum_par); +static int enum2int(const MNCC__bcap& enum_par); +int as_int() const { return enum2int(enum_value); } +void from_int(int p_val) { *this = p_val; } +void int2enum(int int_val); +operator enum_type() const; +inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; } +inline boolean is_value() const { return enum_value != UNBOUND_VALUE; } +inline void clean_up(){ enum_value = UNBOUND_VALUE; } +inline boolean is_present() const { return is_bound(); } +void log() const; +void set_param(Module_Param& param); +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class MNCC__bcap_template : public Base_Template { +union { +MNCC__bcap::enum_type single_value; +struct { +unsigned int n_values; +MNCC__bcap_template *list_value; +} value_list; +}; + +void copy_template(const MNCC__bcap_template& other_value); + +public: +MNCC__bcap_template(); +MNCC__bcap_template(template_sel other_value); +MNCC__bcap_template(int other_value); +MNCC__bcap_template(MNCC__bcap::enum_type other_value); +MNCC__bcap_template(const MNCC__bcap& other_value); +MNCC__bcap_template(const OPTIONAL& other_value); +MNCC__bcap_template(const MNCC__bcap_template& other_value); +~MNCC__bcap_template(); + +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +MNCC__bcap_template& operator=(template_sel other_value); +MNCC__bcap_template& operator=(int other_value); +MNCC__bcap_template& operator=(MNCC__bcap::enum_type other_value); +MNCC__bcap_template& operator=(const MNCC__bcap& other_value); +MNCC__bcap_template& operator=(const OPTIONAL& other_value); +MNCC__bcap_template& operator=(const MNCC__bcap_template& other_value); + +boolean match(MNCC__bcap::enum_type other_value, boolean legacy = FALSE) const; +boolean match(const MNCC__bcap& other_value, boolean legacy = FALSE) const; +MNCC__bcap::enum_type valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +MNCC__bcap_template& list_item(unsigned int list_index); +void log() const; +void log_match(const MNCC__bcap& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +}; + +class MNCC__PDU__Signal : public Base_Type { + INTEGER field_callref; + OPTIONAL field_bearer__cap; + OPTIONAL field_called; + OPTIONAL field_calling; + OPTIONAL field_redirecting; + OPTIONAL field_connected; + OPTIONAL field_cause; + OPTIONAL field_progress; + OPTIONAL field_useruser; + OPTIONAL field_facility; + OPTIONAL field_cccap; + OPTIONAL field_ssversion; + INTEGER field_clir__sup; + INTEGER field_clir__inv; + OPTIONAL field_signal; + OPTIONAL field_keypad; + INTEGER field_more; + INTEGER field_notify; + OPTIONAL field_emergency; + CHARSTRING field_imsi; + INTEGER field_lchan__type; + INTEGER field_lchan__mode; +public: + MNCC__PDU__Signal(); + MNCC__PDU__Signal(const INTEGER& par_callref, + const OPTIONAL& par_bearer__cap, + const OPTIONAL& par_called, + const OPTIONAL& par_calling, + const OPTIONAL& par_redirecting, + const OPTIONAL& par_connected, + const OPTIONAL& par_cause, + const OPTIONAL& par_progress, + const OPTIONAL& par_useruser, + const OPTIONAL& par_facility, + const OPTIONAL& par_cccap, + const OPTIONAL& par_ssversion, + const INTEGER& par_clir__sup, + const INTEGER& par_clir__inv, + const OPTIONAL& par_signal, + const OPTIONAL& par_keypad, + const INTEGER& par_more, + const INTEGER& par_notify, + const OPTIONAL& par_emergency, + const CHARSTRING& par_imsi, + const INTEGER& par_lchan__type, + const INTEGER& par_lchan__mode); + MNCC__PDU__Signal(const MNCC__PDU__Signal& other_value); + inline boolean is_component() { return FALSE; } + void clean_up(); + MNCC__PDU__Signal& operator=(const MNCC__PDU__Signal& other_value); + boolean operator==(const MNCC__PDU__Signal& other_value) const; + inline boolean operator!=(const MNCC__PDU__Signal& other_value) const + { return !(*this == other_value); } + + boolean is_bound() const; + +inline boolean is_present() const { return is_bound(); } + boolean is_value() const; + + inline INTEGER& callref() + {return field_callref;} + inline const INTEGER& callref() const + {return field_callref;} + inline OPTIONAL& bearer__cap() + {return field_bearer__cap;} + inline const OPTIONAL& bearer__cap() const + {return field_bearer__cap;} + inline OPTIONAL& called() + {return field_called;} + inline const OPTIONAL& called() const + {return field_called;} + inline OPTIONAL& calling() + {return field_calling;} + inline const OPTIONAL& calling() const + {return field_calling;} + inline OPTIONAL& redirecting() + {return field_redirecting;} + inline const OPTIONAL& redirecting() const + {return field_redirecting;} + inline OPTIONAL& connected() + {return field_connected;} + inline const OPTIONAL& connected() const + {return field_connected;} + inline OPTIONAL& cause() + {return field_cause;} + inline const OPTIONAL& cause() const + {return field_cause;} + inline OPTIONAL& progress() + {return field_progress;} + inline const OPTIONAL& progress() const + {return field_progress;} + inline OPTIONAL& useruser() + {return field_useruser;} + inline const OPTIONAL& useruser() const + {return field_useruser;} + inline OPTIONAL& facility() + {return field_facility;} + inline const OPTIONAL& facility() const + {return field_facility;} + inline OPTIONAL& cccap() + {return field_cccap;} + inline const OPTIONAL& cccap() const + {return field_cccap;} + inline OPTIONAL& ssversion() + {return field_ssversion;} + inline const OPTIONAL& ssversion() const + {return field_ssversion;} + inline INTEGER& clir__sup() + {return field_clir__sup;} + inline const INTEGER& clir__sup() const + {return field_clir__sup;} + inline INTEGER& clir__inv() + {return field_clir__inv;} + inline const INTEGER& clir__inv() const + {return field_clir__inv;} + inline OPTIONAL& signal() + {return field_signal;} + inline const OPTIONAL& signal() const + {return field_signal;} + inline OPTIONAL& keypad() + {return field_keypad;} + inline const OPTIONAL& keypad() const + {return field_keypad;} + inline INTEGER& more() + {return field_more;} + inline const INTEGER& more() const + {return field_more;} + inline INTEGER& notify() + {return field_notify;} + inline const INTEGER& notify() const + {return field_notify;} + inline OPTIONAL& emergency() + {return field_emergency;} + inline const OPTIONAL& emergency() const + {return field_emergency;} + inline CHARSTRING& imsi() + {return field_imsi;} + inline const CHARSTRING& imsi() const + {return field_imsi;} + inline INTEGER& lchan__type() + {return field_lchan__type;} + inline const INTEGER& lchan__type() const + {return field_lchan__type;} + inline INTEGER& lchan__mode() + {return field_lchan__mode;} + inline const INTEGER& lchan__mode() const + {return field_lchan__mode;} + int size_of() const; + void log() const; + void set_param(Module_Param& param); + void set_implicit_omit(); + void encode_text(Text_Buf& text_buf) const; + void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class MNCC__PDU__Signal_template : public Base_Template { +struct single_value_struct; +union { +single_value_struct *single_value; +struct { +unsigned int n_values; +MNCC__PDU__Signal_template *list_value; +} value_list; +}; + +void set_specific(); +void copy_value(const MNCC__PDU__Signal& other_value); +void copy_template(const MNCC__PDU__Signal_template& other_value); + +public: +MNCC__PDU__Signal_template(); +MNCC__PDU__Signal_template(template_sel other_value); +MNCC__PDU__Signal_template(const MNCC__PDU__Signal& other_value); +MNCC__PDU__Signal_template(const OPTIONAL& other_value); +MNCC__PDU__Signal_template(const MNCC__PDU__Signal_template& other_value); +~MNCC__PDU__Signal_template(); +MNCC__PDU__Signal_template& operator=(template_sel other_value); +MNCC__PDU__Signal_template& operator=(const MNCC__PDU__Signal& other_value); +MNCC__PDU__Signal_template& operator=(const OPTIONAL& other_value); +MNCC__PDU__Signal_template& operator=(const MNCC__PDU__Signal_template& other_value); +boolean match(const MNCC__PDU__Signal& other_value, boolean legacy = FALSE) const; +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +MNCC__PDU__Signal valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +MNCC__PDU__Signal_template& list_item(unsigned int list_index) const; +INTEGER_template& callref(); +const INTEGER_template& callref() const; +MNCC__bearer__cap_template& bearer__cap(); +const MNCC__bearer__cap_template& bearer__cap() const; +MNCC__number_template& called(); +const MNCC__number_template& called() const; +MNCC__number_template& calling(); +const MNCC__number_template& calling() const; +MNCC__number_template& redirecting(); +const MNCC__number_template& redirecting() const; +MNCC__number_template& connected(); +const MNCC__number_template& connected() const; +MNCC__cause_template& cause(); +const MNCC__cause_template& cause() const; +MNCC__progress_template& progress(); +const MNCC__progress_template& progress() const; +MNCC__useruser_template& useruser(); +const MNCC__useruser_template& useruser() const; +CHARSTRING_template& facility(); +const CHARSTRING_template& facility() const; +MNCC__cccap_template& cccap(); +const MNCC__cccap_template& cccap() const; +CHARSTRING_template& ssversion(); +const CHARSTRING_template& ssversion() const; +INTEGER_template& clir__sup(); +const INTEGER_template& clir__sup() const; +INTEGER_template& clir__inv(); +const INTEGER_template& clir__inv() const; +INTEGER_template& signal(); +const INTEGER_template& signal() const; +CHARSTRING_template& keypad(); +const CHARSTRING_template& keypad() const; +INTEGER_template& more(); +const INTEGER_template& more() const; +INTEGER_template& notify(); +const INTEGER_template& notify() const; +INTEGER_template& emergency(); +const INTEGER_template& emergency() const; +CHARSTRING_template& imsi(); +const CHARSTRING_template& imsi() const; +INTEGER_template& lchan__type(); +const INTEGER_template& lchan__type() const; +INTEGER_template& lchan__mode(); +const INTEGER_template& lchan__mode() const; +int size_of() const; +void log() const; +void log_match(const MNCC__PDU__Signal& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +}; + +class MNCC__PDU__Data : public Base_Type { + INTEGER field_callref; + OCTETSTRING field_data; +public: + MNCC__PDU__Data(); + MNCC__PDU__Data(const INTEGER& par_callref, + const OCTETSTRING& par_data); + MNCC__PDU__Data(const MNCC__PDU__Data& other_value); + inline boolean is_component() { return FALSE; } + void clean_up(); + MNCC__PDU__Data& operator=(const MNCC__PDU__Data& other_value); + boolean operator==(const MNCC__PDU__Data& other_value) const; + inline boolean operator!=(const MNCC__PDU__Data& other_value) const + { return !(*this == other_value); } + + boolean is_bound() const; + +inline boolean is_present() const { return is_bound(); } + boolean is_value() const; + + inline INTEGER& callref() + {return field_callref;} + inline const INTEGER& callref() const + {return field_callref;} + inline OCTETSTRING& data() + {return field_data;} + inline const OCTETSTRING& data() const + {return field_data;} + inline int size_of() const + {return 2;} + void log() const; + void set_param(Module_Param& param); + void set_implicit_omit(); + void encode_text(Text_Buf& text_buf) const; + void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class MNCC__PDU__Data_template : public Base_Template { +struct single_value_struct; +union { +single_value_struct *single_value; +struct { +unsigned int n_values; +MNCC__PDU__Data_template *list_value; +} value_list; +}; + +void set_specific(); +void copy_value(const MNCC__PDU__Data& other_value); +void copy_template(const MNCC__PDU__Data_template& other_value); + +public: +MNCC__PDU__Data_template(); +MNCC__PDU__Data_template(template_sel other_value); +MNCC__PDU__Data_template(const MNCC__PDU__Data& other_value); +MNCC__PDU__Data_template(const OPTIONAL& other_value); +MNCC__PDU__Data_template(const MNCC__PDU__Data_template& other_value); +~MNCC__PDU__Data_template(); +MNCC__PDU__Data_template& operator=(template_sel other_value); +MNCC__PDU__Data_template& operator=(const MNCC__PDU__Data& other_value); +MNCC__PDU__Data_template& operator=(const OPTIONAL& other_value); +MNCC__PDU__Data_template& operator=(const MNCC__PDU__Data_template& other_value); +boolean match(const MNCC__PDU__Data& other_value, boolean legacy = FALSE) const; +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +MNCC__PDU__Data valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +MNCC__PDU__Data_template& list_item(unsigned int list_index) const; +INTEGER_template& callref(); +const INTEGER_template& callref() const; +OCTETSTRING_template& data(); +const OCTETSTRING_template& data() const; +int size_of() const; +void log() const; +void log_match(const MNCC__PDU__Data& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +}; + +class MNCC__PDU__Rtp : public Base_Type { + INTEGER field_callref; + INTEGER field_ip; + INTEGER field_rtp__port; + INTEGER field_payload__type; + INTEGER field_payload__msg__type; +public: + MNCC__PDU__Rtp(); + MNCC__PDU__Rtp(const INTEGER& par_callref, + const INTEGER& par_ip, + const INTEGER& par_rtp__port, + const INTEGER& par_payload__type, + const INTEGER& par_payload__msg__type); + MNCC__PDU__Rtp(const MNCC__PDU__Rtp& other_value); + inline boolean is_component() { return FALSE; } + void clean_up(); + MNCC__PDU__Rtp& operator=(const MNCC__PDU__Rtp& other_value); + boolean operator==(const MNCC__PDU__Rtp& other_value) const; + inline boolean operator!=(const MNCC__PDU__Rtp& other_value) const + { return !(*this == other_value); } + + boolean is_bound() const; + +inline boolean is_present() const { return is_bound(); } + boolean is_value() const; + + inline INTEGER& callref() + {return field_callref;} + inline const INTEGER& callref() const + {return field_callref;} + inline INTEGER& ip() + {return field_ip;} + inline const INTEGER& ip() const + {return field_ip;} + inline INTEGER& rtp__port() + {return field_rtp__port;} + inline const INTEGER& rtp__port() const + {return field_rtp__port;} + inline INTEGER& payload__type() + {return field_payload__type;} + inline const INTEGER& payload__type() const + {return field_payload__type;} + inline INTEGER& payload__msg__type() + {return field_payload__msg__type;} + inline const INTEGER& payload__msg__type() const + {return field_payload__msg__type;} + inline int size_of() const + {return 5;} + void log() const; + void set_param(Module_Param& param); + void set_implicit_omit(); + void encode_text(Text_Buf& text_buf) const; + void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class MNCC__PDU__Rtp_template : public Base_Template { +struct single_value_struct; +union { +single_value_struct *single_value; +struct { +unsigned int n_values; +MNCC__PDU__Rtp_template *list_value; +} value_list; +}; + +void set_specific(); +void copy_value(const MNCC__PDU__Rtp& other_value); +void copy_template(const MNCC__PDU__Rtp_template& other_value); + +public: +MNCC__PDU__Rtp_template(); +MNCC__PDU__Rtp_template(template_sel other_value); +MNCC__PDU__Rtp_template(const MNCC__PDU__Rtp& other_value); +MNCC__PDU__Rtp_template(const OPTIONAL& other_value); +MNCC__PDU__Rtp_template(const MNCC__PDU__Rtp_template& other_value); +~MNCC__PDU__Rtp_template(); +MNCC__PDU__Rtp_template& operator=(template_sel other_value); +MNCC__PDU__Rtp_template& operator=(const MNCC__PDU__Rtp& other_value); +MNCC__PDU__Rtp_template& operator=(const OPTIONAL& other_value); +MNCC__PDU__Rtp_template& operator=(const MNCC__PDU__Rtp_template& other_value); +boolean match(const MNCC__PDU__Rtp& other_value, boolean legacy = FALSE) const; +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +MNCC__PDU__Rtp valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +MNCC__PDU__Rtp_template& list_item(unsigned int list_index) const; +INTEGER_template& callref(); +const INTEGER_template& callref() const; +INTEGER_template& ip(); +const INTEGER_template& ip() const; +INTEGER_template& rtp__port(); +const INTEGER_template& rtp__port() const; +INTEGER_template& payload__type(); +const INTEGER_template& payload__type() const; +INTEGER_template& payload__msg__type(); +const INTEGER_template& payload__msg__type() const; +int size_of() const; +void log() const; +void log_match(const MNCC__PDU__Rtp& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +}; + +class MNCC__PDU__Hello : public Base_Type { + INTEGER field_version; + INTEGER field_mncc__size; + INTEGER field_data__frame__size; + INTEGER field_called__offset; + INTEGER field_signal__offset; + INTEGER field_emergency__offset; + INTEGER field_lchan__type__offset; +public: + MNCC__PDU__Hello(); + MNCC__PDU__Hello(const INTEGER& par_version, + const INTEGER& par_mncc__size, + const INTEGER& par_data__frame__size, + const INTEGER& par_called__offset, + const INTEGER& par_signal__offset, + const INTEGER& par_emergency__offset, + const INTEGER& par_lchan__type__offset); + MNCC__PDU__Hello(const MNCC__PDU__Hello& other_value); + inline boolean is_component() { return FALSE; } + void clean_up(); + MNCC__PDU__Hello& operator=(const MNCC__PDU__Hello& other_value); + boolean operator==(const MNCC__PDU__Hello& other_value) const; + inline boolean operator!=(const MNCC__PDU__Hello& other_value) const + { return !(*this == other_value); } + + boolean is_bound() const; + +inline boolean is_present() const { return is_bound(); } + boolean is_value() const; + + inline INTEGER& version() + {return field_version;} + inline const INTEGER& version() const + {return field_version;} + inline INTEGER& mncc__size() + {return field_mncc__size;} + inline const INTEGER& mncc__size() const + {return field_mncc__size;} + inline INTEGER& data__frame__size() + {return field_data__frame__size;} + inline const INTEGER& data__frame__size() const + {return field_data__frame__size;} + inline INTEGER& called__offset() + {return field_called__offset;} + inline const INTEGER& called__offset() const + {return field_called__offset;} + inline INTEGER& signal__offset() + {return field_signal__offset;} + inline const INTEGER& signal__offset() const + {return field_signal__offset;} + inline INTEGER& emergency__offset() + {return field_emergency__offset;} + inline const INTEGER& emergency__offset() const + {return field_emergency__offset;} + inline INTEGER& lchan__type__offset() + {return field_lchan__type__offset;} + inline const INTEGER& lchan__type__offset() const + {return field_lchan__type__offset;} + inline int size_of() const + {return 7;} + void log() const; + void set_param(Module_Param& param); + void set_implicit_omit(); + void encode_text(Text_Buf& text_buf) const; + void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class MNCC__PDU__Hello_template : public Base_Template { +struct single_value_struct; +union { +single_value_struct *single_value; +struct { +unsigned int n_values; +MNCC__PDU__Hello_template *list_value; +} value_list; +}; + +void set_specific(); +void copy_value(const MNCC__PDU__Hello& other_value); +void copy_template(const MNCC__PDU__Hello_template& other_value); + +public: +MNCC__PDU__Hello_template(); +MNCC__PDU__Hello_template(template_sel other_value); +MNCC__PDU__Hello_template(const MNCC__PDU__Hello& other_value); +MNCC__PDU__Hello_template(const OPTIONAL& other_value); +MNCC__PDU__Hello_template(const MNCC__PDU__Hello_template& other_value); +~MNCC__PDU__Hello_template(); +MNCC__PDU__Hello_template& operator=(template_sel other_value); +MNCC__PDU__Hello_template& operator=(const MNCC__PDU__Hello& other_value); +MNCC__PDU__Hello_template& operator=(const OPTIONAL& other_value); +MNCC__PDU__Hello_template& operator=(const MNCC__PDU__Hello_template& other_value); +boolean match(const MNCC__PDU__Hello& other_value, boolean legacy = FALSE) const; +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +MNCC__PDU__Hello valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +MNCC__PDU__Hello_template& list_item(unsigned int list_index) const; +INTEGER_template& version(); +const INTEGER_template& version() const; +INTEGER_template& mncc__size(); +const INTEGER_template& mncc__size() const; +INTEGER_template& data__frame__size(); +const INTEGER_template& data__frame__size() const; +INTEGER_template& called__offset(); +const INTEGER_template& called__offset() const; +INTEGER_template& signal__offset(); +const INTEGER_template& signal__offset() const; +INTEGER_template& emergency__offset(); +const INTEGER_template& emergency__offset() const; +INTEGER_template& lchan__type__offset(); +const INTEGER_template& lchan__type__offset() const; +int size_of() const; +void log() const; +void log_match(const MNCC__PDU__Hello& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +}; + +class MNCC__MsgUnion : public Base_Type { +public: +enum union_selection_type { UNBOUND_VALUE = 0, ALT_signal = 1, ALT_data = 2, ALT_rtp = 3, ALT_hello = 4 }; +private: +union_selection_type union_selection; +union { +MNCC__PDU__Signal *field_signal; +MNCC__PDU__Data *field_data; +MNCC__PDU__Rtp *field_rtp; +MNCC__PDU__Hello *field_hello; +}; +void copy_value(const MNCC__MsgUnion& other_value); + +public: +MNCC__MsgUnion(); +MNCC__MsgUnion(const MNCC__MsgUnion& other_value); +~MNCC__MsgUnion(); +MNCC__MsgUnion& operator=(const MNCC__MsgUnion& other_value); +boolean operator==(const MNCC__MsgUnion& other_value) const; +inline boolean operator!=(const MNCC__MsgUnion& other_value) const { return !(*this == other_value); } +MNCC__PDU__Signal& signal(); +const MNCC__PDU__Signal& signal() const; +MNCC__PDU__Data& data(); +const MNCC__PDU__Data& data() const; +MNCC__PDU__Rtp& rtp(); +const MNCC__PDU__Rtp& rtp() const; +MNCC__PDU__Hello& hello(); +const MNCC__PDU__Hello& hello() const; +inline union_selection_type get_selection() const { return union_selection; } +boolean ischosen(union_selection_type checked_selection) const; +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +inline boolean is_present() const { return is_bound(); } +void log() const; +void set_param(Module_Param& param); + void set_implicit_omit(); +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class MNCC__MsgUnion_template : public Base_Template { +union { +struct { +MNCC__MsgUnion::union_selection_type union_selection; +union { +MNCC__PDU__Signal_template *field_signal; +MNCC__PDU__Data_template *field_data; +MNCC__PDU__Rtp_template *field_rtp; +MNCC__PDU__Hello_template *field_hello; +}; +} single_value; +struct { +unsigned int n_values; +MNCC__MsgUnion_template *list_value; +} value_list; +}; +void copy_value(const MNCC__MsgUnion& other_value); + +void copy_template(const MNCC__MsgUnion_template& other_value); + +public: +MNCC__MsgUnion_template(); +MNCC__MsgUnion_template(template_sel other_value); +MNCC__MsgUnion_template(const MNCC__MsgUnion& other_value); +MNCC__MsgUnion_template(const OPTIONAL& other_value); +MNCC__MsgUnion_template(const MNCC__MsgUnion_template& other_value); +~MNCC__MsgUnion_template(); +void clean_up(); +MNCC__MsgUnion_template& operator=(template_sel other_value); +MNCC__MsgUnion_template& operator=(const MNCC__MsgUnion& other_value); +MNCC__MsgUnion_template& operator=(const OPTIONAL& other_value); +MNCC__MsgUnion_template& operator=(const MNCC__MsgUnion_template& other_value); +boolean match(const MNCC__MsgUnion& other_value, boolean legacy = FALSE) const; +boolean is_value() const;MNCC__MsgUnion valueof() const; +MNCC__MsgUnion_template& list_item(unsigned int list_index) const; +void set_type(template_sel template_type, unsigned int list_length); +MNCC__PDU__Signal_template& signal(); +const MNCC__PDU__Signal_template& signal() const; +MNCC__PDU__Data_template& data(); +const MNCC__PDU__Data_template& data() const; +MNCC__PDU__Rtp_template& rtp(); +const MNCC__PDU__Rtp_template& rtp() const; +MNCC__PDU__Hello_template& hello(); +const MNCC__PDU__Hello_template& hello() const; +boolean ischosen(MNCC__MsgUnion::union_selection_type checked_selection) const; +void log() const; +void log_match(const MNCC__MsgUnion& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +}; + +class MNCC__PDU : public Base_Type { + MNCC__MsgType field_msg__type; + MNCC__MsgUnion field_u; +public: + MNCC__PDU(); + MNCC__PDU(const MNCC__MsgType& par_msg__type, + const MNCC__MsgUnion& par_u); + MNCC__PDU(const MNCC__PDU& other_value); + inline boolean is_component() { return FALSE; } + void clean_up(); + MNCC__PDU& operator=(const MNCC__PDU& other_value); + boolean operator==(const MNCC__PDU& other_value) const; + inline boolean operator!=(const MNCC__PDU& other_value) const + { return !(*this == other_value); } + + boolean is_bound() const; + +inline boolean is_present() const { return is_bound(); } + boolean is_value() const; + + inline MNCC__MsgType& msg__type() + {return field_msg__type;} + inline const MNCC__MsgType& msg__type() const + {return field_msg__type;} + inline MNCC__MsgUnion& u() + {return field_u;} + inline const MNCC__MsgUnion& u() const + {return field_u;} + inline int size_of() const + {return 2;} + void log() const; + void set_param(Module_Param& param); + void set_implicit_omit(); + void encode_text(Text_Buf& text_buf) const; + void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class MNCC__PDU_template : public Base_Template { +struct single_value_struct; +union { +single_value_struct *single_value; +struct { +unsigned int n_values; +MNCC__PDU_template *list_value; +} value_list; +}; + +void set_specific(); +void copy_value(const MNCC__PDU& other_value); +void copy_template(const MNCC__PDU_template& other_value); + +public: +MNCC__PDU_template(); +MNCC__PDU_template(template_sel other_value); +MNCC__PDU_template(const MNCC__PDU& other_value); +MNCC__PDU_template(const OPTIONAL& other_value); +MNCC__PDU_template(const MNCC__PDU_template& other_value); +~MNCC__PDU_template(); +MNCC__PDU_template& operator=(template_sel other_value); +MNCC__PDU_template& operator=(const MNCC__PDU& other_value); +MNCC__PDU_template& operator=(const OPTIONAL& other_value); +MNCC__PDU_template& operator=(const MNCC__PDU_template& other_value); +boolean match(const MNCC__PDU& other_value, boolean legacy = FALSE) const; +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +MNCC__PDU valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +MNCC__PDU_template& list_item(unsigned int list_index) const; +MNCC__MsgType_template& msg__type(); +const MNCC__MsgType_template& msg__type() const; +MNCC__MsgUnion_template& u(); +const MNCC__MsgUnion_template& u() const; +int size_of() const; +void log() const; +void log_match(const MNCC__PDU& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +}; + + +/* Function prototypes */ + +extern void int__encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER int__decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void GSM48__bcap__ra_encoder(const GSM48__bcap__ra& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER GSM48__bcap__ra_decoder(OCTETSTRING& input_stream, GSM48__bcap__ra& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void GSM48__bcap__sig__access_encoder(const GSM48__bcap__sig__access& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER GSM48__bcap__sig__access_decoder(OCTETSTRING& input_stream, GSM48__bcap__sig__access& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void GSM48__bcap__user__rate_encoder(const GSM48__bcap__user__rate& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER GSM48__bcap__user__rate_decoder(OCTETSTRING& input_stream, GSM48__bcap__user__rate& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void GSM48__bcap__parity_encoder(const GSM48__bcap__parity& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER GSM48__bcap__parity_decoder(OCTETSTRING& input_stream, GSM48__bcap__parity& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void GSM48__bcap__interm__rate_encoder(const GSM48__bcap__interm__rate& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER GSM48__bcap__interm__rate_decoder(OCTETSTRING& input_stream, GSM48__bcap__interm__rate& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void GSM48__bcap__transp_encoder(const GSM48__bcap__transp& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER GSM48__bcap__transp_decoder(OCTETSTRING& input_stream, GSM48__bcap__transp& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void GSM48__bcap__modem__type_encoder(const GSM48__bcap__modem__type& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER GSM48__bcap__modem__type_decoder(OCTETSTRING& input_stream, GSM48__bcap__modem__type& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__MsgType_encoder(const MNCC__MsgType& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__MsgType_decoder(OCTETSTRING& input_stream, MNCC__MsgType& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__bearer__cap__data_rate__adaptation_encoder(const GSM48__bcap__ra& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__bearer__cap__data_rate__adaptation_decoder(OCTETSTRING& input_stream, GSM48__bcap__ra& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__bearer__cap__data_sig__access_encoder(const GSM48__bcap__sig__access& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__bearer__cap__data_sig__access_decoder(OCTETSTRING& input_stream, GSM48__bcap__sig__access& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__bearer__cap__data_async_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__bearer__cap__data_async_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__bearer__cap__data_nr__stop__bits_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__bearer__cap__data_nr__stop__bits_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__bearer__cap__data_nr__data__bits_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__bearer__cap__data_nr__data__bits_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__bearer__cap__data_user__rate_encoder(const GSM48__bcap__user__rate& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__bearer__cap__data_user__rate_decoder(OCTETSTRING& input_stream, GSM48__bcap__user__rate& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__bearer__cap__data_parity_encoder(const GSM48__bcap__parity& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__bearer__cap__data_parity_decoder(OCTETSTRING& input_stream, GSM48__bcap__parity& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__bearer__cap__data_interm__rate_encoder(const GSM48__bcap__interm__rate& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__bearer__cap__data_interm__rate_decoder(OCTETSTRING& input_stream, GSM48__bcap__interm__rate& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__bearer__cap__data_transp_encoder(const GSM48__bcap__transp& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__bearer__cap__data_transp_decoder(OCTETSTRING& input_stream, GSM48__bcap__transp& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__bearer__cap__data_modem__type_encoder(const GSM48__bcap__modem__type& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__bearer__cap__data_modem__type_decoder(OCTETSTRING& input_stream, GSM48__bcap__modem__type& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__bearer__cap__data_encoder(const MNCC__bearer__cap__data& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__bearer__cap__data_decoder(OCTETSTRING& input_stream, MNCC__bearer__cap__data& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__speech__vers_0_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__speech__vers_0_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__speech__vers_encoder(const MNCC__speech__vers& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__speech__vers_decoder(OCTETSTRING& input_stream, MNCC__speech__vers& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__bearer__cap_transfer_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__bearer__cap_transfer_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__bearer__cap_mode_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__bearer__cap_mode_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__bearer__cap_coding_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__bearer__cap_coding_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__bearer__cap_radio_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__bearer__cap_radio_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__bearer__cap_speech__ctm_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__bearer__cap_speech__ctm_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__bearer__cap_speech__ver_encoder(const MNCC__speech__vers& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__bearer__cap_speech__ver_decoder(OCTETSTRING& input_stream, MNCC__speech__vers& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__bearer__cap_data_encoder(const MNCC__bearer__cap__data& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__bearer__cap_data_decoder(OCTETSTRING& input_stream, MNCC__bearer__cap__data& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__bearer__cap_encoder(const MNCC__bearer__cap& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__bearer__cap_decoder(OCTETSTRING& input_stream, MNCC__bearer__cap& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void GSM48__type__of__number_encoder(const GSM48__type__of__number& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER GSM48__type__of__number_decoder(OCTETSTRING& input_stream, GSM48__type__of__number& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__number_number__type_encoder(const GSM48__type__of__number& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__number_number__type_decoder(OCTETSTRING& input_stream, GSM48__type__of__number& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void GSM48__num__plan__ind_encoder(const GSM48__num__plan__ind& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER GSM48__num__plan__ind_decoder(OCTETSTRING& input_stream, GSM48__num__plan__ind& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__number_plan_encoder(const GSM48__num__plan__ind& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__number_plan_decoder(OCTETSTRING& input_stream, GSM48__num__plan__ind& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void GSM48__present__ind_encoder(const GSM48__present__ind& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER GSM48__present__ind_decoder(OCTETSTRING& input_stream, GSM48__present__ind& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__number_presence_encoder(const GSM48__present__ind& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__number_presence_decoder(OCTETSTRING& input_stream, GSM48__present__ind& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void GSM48__screening__ind_encoder(const GSM48__screening__ind& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER GSM48__screening__ind_decoder(OCTETSTRING& input_stream, GSM48__screening__ind& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__number_screen_encoder(const GSM48__screening__ind& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__number_screen_decoder(OCTETSTRING& input_stream, GSM48__screening__ind& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__number_number_encoder(const CHARSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__number_number_decoder(OCTETSTRING& input_stream, CHARSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__number_encoder(const MNCC__number& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__number_decoder(OCTETSTRING& input_stream, MNCC__number& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void GSM48__cause__coding_encoder(const GSM48__cause__coding& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER GSM48__cause__coding_decoder(OCTETSTRING& input_stream, GSM48__cause__coding& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void GSM48__cause__loc_encoder(const GSM48__cause__loc& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER GSM48__cause__loc_decoder(OCTETSTRING& input_stream, GSM48__cause__loc& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern MNCC__number_template ts__MNCC__number(const CHARSTRING& number, const GSM48__type__of__number& ton, const GSM48__num__plan__ind& npi, const GSM48__present__ind& pres, const GSM48__screening__ind& screen); +extern MNCC__number_template tr__MNCC__number(const CHARSTRING_template& number, const GSM48__type__of__number_template& ton, const GSM48__num__plan__ind_template& npi, const GSM48__present__ind_template& pres, const GSM48__screening__ind_template& screen); +extern void MNCC__cause_location_encoder(const GSM48__cause__loc& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__cause_location_decoder(OCTETSTRING& input_stream, GSM48__cause__loc& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__cause_coding_encoder(const GSM48__cause__coding& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__cause_coding_decoder(OCTETSTRING& input_stream, GSM48__cause__coding& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__cause_rec_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__cause_rec_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__cause_rec__val_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__cause_rec__val_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__cause_val_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__cause_val_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__cause_diag_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__cause_diag_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__cause_encoder(const MNCC__cause& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__cause_decoder(OCTETSTRING& input_stream, MNCC__cause& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern MNCC__cause_template ts__MNCC__cause(const INTEGER& val, const GSM48__cause__loc& loc, const GSM48__cause__coding& coding, const OCTETSTRING& diag); +extern void MNCC__useruser_proto_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__useruser_proto_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__useruser_info_encoder(const CHARSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__useruser_info_decoder(OCTETSTRING& input_stream, CHARSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__useruser_encoder(const MNCC__useruser& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__useruser_decoder(OCTETSTRING& input_stream, MNCC__useruser& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__progress_coding_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__progress_coding_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__progress_location_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__progress_location_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__progress_descr_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__progress_descr_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__progress_encoder(const MNCC__progress& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__progress_decoder(OCTETSTRING& input_stream, MNCC__progress& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__cccap_dtmf_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__cccap_dtmf_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__cccap_pcp_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__cccap_pcp_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__cccap_encoder(const MNCC__cccap& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__cccap_decoder(OCTETSTRING& input_stream, MNCC__cccap& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__notify_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__notify_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__keypad_encoder(const CHARSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__keypad_decoder(OCTETSTRING& input_stream, CHARSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__bcap_encoder(const MNCC__bcap& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__bcap_decoder(OCTETSTRING& input_stream, MNCC__bcap& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Signal_callref_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Signal_callref_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Signal_clir__sup_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Signal_clir__sup_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Signal_clir__inv_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Signal_clir__inv_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Signal_more_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Signal_more_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Signal_notify_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Signal_notify_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Signal_imsi_encoder(const CHARSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Signal_imsi_decoder(OCTETSTRING& input_stream, CHARSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Signal_lchan__type_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Signal_lchan__type_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Signal_lchan__mode_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Signal_lchan__mode_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Signal_bearer__cap_encoder(const MNCC__bearer__cap& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Signal_bearer__cap_decoder(OCTETSTRING& input_stream, MNCC__bearer__cap& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Signal_called_encoder(const MNCC__number& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Signal_called_decoder(OCTETSTRING& input_stream, MNCC__number& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Signal_calling_encoder(const MNCC__number& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Signal_calling_decoder(OCTETSTRING& input_stream, MNCC__number& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Signal_redirecting_encoder(const MNCC__number& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Signal_redirecting_decoder(OCTETSTRING& input_stream, MNCC__number& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Signal_connected_encoder(const MNCC__number& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Signal_connected_decoder(OCTETSTRING& input_stream, MNCC__number& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Signal_cause_encoder(const MNCC__cause& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Signal_cause_decoder(OCTETSTRING& input_stream, MNCC__cause& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Signal_progress_encoder(const MNCC__progress& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Signal_progress_decoder(OCTETSTRING& input_stream, MNCC__progress& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Signal_useruser_encoder(const MNCC__useruser& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Signal_useruser_decoder(OCTETSTRING& input_stream, MNCC__useruser& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Signal_facility_encoder(const CHARSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Signal_facility_decoder(OCTETSTRING& input_stream, CHARSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Signal_cccap_encoder(const MNCC__cccap& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Signal_cccap_decoder(OCTETSTRING& input_stream, MNCC__cccap& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Signal_ssversion_encoder(const CHARSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Signal_ssversion_decoder(OCTETSTRING& input_stream, CHARSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Signal_signal_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Signal_signal_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Signal_keypad_encoder(const CHARSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Signal_keypad_decoder(OCTETSTRING& input_stream, CHARSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Signal_emergency_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Signal_emergency_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Signal_encoder(const MNCC__PDU__Signal& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Signal_decoder(OCTETSTRING& input_stream, MNCC__PDU__Signal& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Data_callref_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Data_callref_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Data_data_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Data_data_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Data_encoder(const MNCC__PDU__Data& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Data_decoder(OCTETSTRING& input_stream, MNCC__PDU__Data& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Rtp_callref_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Rtp_callref_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Rtp_ip_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Rtp_ip_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Rtp_rtp__port_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Rtp_rtp__port_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Rtp_payload__type_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Rtp_payload__type_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Rtp_payload__msg__type_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Rtp_payload__msg__type_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Rtp_encoder(const MNCC__PDU__Rtp& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Rtp_decoder(OCTETSTRING& input_stream, MNCC__PDU__Rtp& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Hello_version_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Hello_version_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Hello_mncc__size_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Hello_mncc__size_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Hello_data__frame__size_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Hello_data__frame__size_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Hello_called__offset_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Hello_called__offset_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Hello_signal__offset_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Hello_signal__offset_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Hello_emergency__offset_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Hello_emergency__offset_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Hello_lchan__type__offset_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Hello_lchan__type__offset_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU__Hello_encoder(const MNCC__PDU__Hello& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU__Hello_decoder(OCTETSTRING& input_stream, MNCC__PDU__Hello& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__MsgUnion_signal_encoder(const MNCC__PDU__Signal& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__MsgUnion_signal_decoder(OCTETSTRING& input_stream, MNCC__PDU__Signal& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__MsgUnion_data_encoder(const MNCC__PDU__Data& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__MsgUnion_data_decoder(OCTETSTRING& input_stream, MNCC__PDU__Data& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__MsgUnion_rtp_encoder(const MNCC__PDU__Rtp& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__MsgUnion_rtp_decoder(OCTETSTRING& input_stream, MNCC__PDU__Rtp& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__MsgUnion_hello_encoder(const MNCC__PDU__Hello& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__MsgUnion_hello_decoder(OCTETSTRING& input_stream, MNCC__PDU__Hello& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__MsgUnion_encoder(const MNCC__MsgUnion& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__MsgUnion_decoder(OCTETSTRING& input_stream, MNCC__MsgUnion& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU_msg__type_encoder(const MNCC__MsgType& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU_msg__type_decoder(OCTETSTRING& input_stream, MNCC__MsgType& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU_u_encoder(const MNCC__MsgUnion& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU_u_decoder(OCTETSTRING& input_stream, MNCC__MsgUnion& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void MNCC__PDU_encoder(const MNCC__PDU& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER MNCC__PDU_decoder(OCTETSTRING& input_stream, MNCC__PDU& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern OCTETSTRING enc__MNCC__PDU(const MNCC__PDU& pdu); +extern MNCC__PDU dec__MNCC__PDU(const OCTETSTRING& stream); +extern MNCC__PDU_template ts__MNCC__HELLO(const INTEGER& version); +extern MNCC__PDU_template ts__MNCC__Sign(const MNCC__MsgType& msg__type, const MNCC__PDU__Signal& sign); +extern MNCC__PDU_template ts__MNCC__SIMPLE(const MNCC__MsgType& msg__type, const INTEGER& call__id); +extern MNCC__PDU_template tr__MNCC__SIMPLE(const MNCC__MsgType_template& msg__type, const INTEGER_template& call__id); +extern MNCC__PDU_template ts__MNCC__SETUP__req(const INTEGER& call__id, const CHARSTRING& called, const CHARSTRING& calling, const CHARSTRING& imsi); +extern MNCC__PDU_template tr__MNCC__SETUP__req(const INTEGER_template& call__id, const CHARSTRING_template& called, const CHARSTRING_template& calling, const CHARSTRING_template& imsi); +extern MNCC__PDU_template ts__MNCC__SETUP__rsp(const INTEGER& call__id, const CHARSTRING& imsi, const MNCC__number_template& connected); +extern MNCC__PDU_template tr__MNCC__SETUP__rsp(const INTEGER_template& call__id, const CHARSTRING_template& imsi, const MNCC__number_template& connected); +extern MNCC__PDU_template tr__MNCC__SETUP__ind(const INTEGER_template& call__id, const MNCC__number_template& called, const MNCC__number_template& calling, const CHARSTRING_template& imsi); +extern MNCC__PDU_template ts__MNCC__SETUP__ind(const INTEGER& call__id, const MNCC__number& called, const MNCC__number_template& calling, const CHARSTRING_template& imsi, const MNCC__bearer__cap_template& bcap); +extern MNCC__PDU_template ts__MNCC__SETUP__CNF(const INTEGER& call__id, const MNCC__number_template& connected); +extern MNCC__PDU_template tr__MNCC__SETUP__cnf(const INTEGER& call__id, const MNCC__number_template& connected); +extern MNCC__PDU_template tr__MNCC__SETUP__COMPL__req(const INTEGER_template& call__id); +extern MNCC__PDU_template tr__MNCC__SETUP__COMPL__ind(const INTEGER_template& call__id); +extern MNCC__PDU_template ts__MNCC__SETUP__COMPL__ind(const INTEGER& call__id); +extern MNCC__PDU_template tr__MNCC__REJ__req(const INTEGER_template& call__id, const MNCC__cause_template& cause); +extern MNCC__PDU_template ts__MNCC__REJ__ind(const INTEGER& call__id, const MNCC__cause_template& cause); +extern MNCC__PDU_template tr__MNCC__CALL__CONF__ind(const INTEGER_template& call__id, const MNCC__bearer__cap_template& bcap, const MNCC__cause_template& cause, const MNCC__cccap_template& cccap); +extern MNCC__PDU_template ts__MNCC__CALL__CONF__ind(const INTEGER& call__id, const MNCC__bearer__cap_template& bcap, const MNCC__cause_template& cause, const MNCC__cccap_template& cccap); +extern MNCC__PDU_template ts__MNCC__CALL__PROC__req(const INTEGER& call__id, const MNCC__bearer__cap_template& bcap, const MNCC__progress_template& prog, const CHARSTRING_template& fac, const MNCC__cccap_template& cccap); +extern MNCC__PDU_template tr__MNCC__CALL__PROC__req(const INTEGER_template& call__id, const MNCC__bearer__cap_template& bcap, const MNCC__progress_template& prog, const CHARSTRING_template& fac, const MNCC__cccap_template& cccap); +extern MNCC__PDU_template ts__MNCC__PROGRESS__req(const INTEGER& call__id, const MNCC__progress& prog, const MNCC__useruser_template& uu); +extern MNCC__PDU_template ts__MNCC__ALERT__req(const INTEGER& call__id, const MNCC__progress_template& prog, const CHARSTRING_template& fac, const MNCC__useruser_template& uu); +extern MNCC__PDU_template tr__MNCC__ALERT__req(const INTEGER_template& call__id, const MNCC__progress_template& prog, const CHARSTRING_template& fac, const MNCC__useruser_template& uu); +extern MNCC__PDU_template tr__MNCC__ALERT__ind(const INTEGER_template& call__id, const MNCC__progress_template& prog, const CHARSTRING_template& fac, const MNCC__useruser_template& uu); +extern MNCC__PDU_template ts__MNCC__ALERT__ind(const INTEGER& call__id, const MNCC__progress_template& prog, const CHARSTRING_template& fac, const MNCC__useruser_template& uu); +extern MNCC__PDU_template ts__MNCC__NOTIFY__req(const INTEGER& call__id, const INTEGER& notify); +extern MNCC__PDU_template tr__MNCC__NOTIFY__ind(const INTEGER_template& call__id, const INTEGER_template& notify); +extern MNCC__PDU_template tr__MNCC__DISC__ind(const INTEGER_template& call__id, const MNCC__cause_template& cause, const MNCC__progress_template& prog, const CHARSTRING_template& fac, const MNCC__useruser_template& uu); +extern MNCC__PDU_template ts__MNCC__DISC__ind(const INTEGER& call__id, const MNCC__cause_template& cause, const MNCC__progress_template& prog, const CHARSTRING_template& fac, const MNCC__useruser_template& uu); +extern MNCC__PDU_template ts__MNCC__DISC__req(const INTEGER& call__id, const MNCC__cause& cause, const MNCC__progress_template& prog, const CHARSTRING_template& fac, const MNCC__useruser_template& uu); +extern MNCC__PDU_template tr__MNCC__DISC__req(const INTEGER_template& call__id, const MNCC__cause_template& cause, const MNCC__progress_template& prog, const CHARSTRING_template& fac, const MNCC__useruser_template& uu); +extern MNCC__PDU_template tr__MNCC__REL__ind(const INTEGER_template& call__id, const MNCC__cause_template& cause, const CHARSTRING_template& fac, const MNCC__useruser_template& uu); +extern MNCC__PDU_template ts__MNCC__REL__ind(const INTEGER& call__id, const MNCC__cause_template& cause, const CHARSTRING_template& fac, const MNCC__useruser_template& uu); +extern MNCC__PDU_template ts__MNCC__REL__req(const INTEGER& call__id, const MNCC__cause& cause, const CHARSTRING_template& fac, const MNCC__useruser_template& uu); +extern MNCC__PDU_template tr__MNCC__REL__req(const INTEGER_template& call__id, const MNCC__cause_template& cause, const CHARSTRING_template& fac, const MNCC__useruser_template& uu); +extern MNCC__PDU_template tr__MNCC__REL__cnf(const INTEGER_template& call__id, const MNCC__cause_template& cause, const CHARSTRING_template& fac, const MNCC__useruser_template& uu); +extern MNCC__PDU_template ts__MNCC__REL__cnf(const INTEGER& call__id, const MNCC__cause_template& cause, const CHARSTRING_template& fac, const MNCC__useruser_template& uu); +extern MNCC__PDU_template ts__MNCC__FACILITY__req(const INTEGER& call__id, const CHARSTRING& fac); +extern MNCC__PDU_template tr__MNCC__FACILITY__ind(const INTEGER_template& call__id, const CHARSTRING_template& fac); +extern MNCC__PDU_template tr__MNCC__START__DTMF__ind(const INTEGER_template& call__id, const CHARSTRING_template& keypad); +extern MNCC__PDU_template ts__MNCC__START__DTMF__rsp(const INTEGER& call__id, const CHARSTRING& keypad); +extern MNCC__PDU_template ts__MNCC__START__DTMF__rej(const INTEGER& call__id, const MNCC__cause& cause); +extern MNCC__PDU_template tr__MNCC__STOP__DTMF__ind(const INTEGER_template& call__id); +extern MNCC__PDU_template ts__MNCC__STOP__DTMF__rsp(const INTEGER& call__id); +extern MNCC__PDU_template tr__MNCC__MODIFY__ind(const INTEGER_template& call__id, const MNCC__bearer__cap_template& bcap); +extern MNCC__PDU_template ts__MNCC__MODIFY__rsp(const INTEGER& call__id, const MNCC__bearer__cap& bcap); +extern MNCC__PDU_template ts__MNCC__MODIFY__req(const INTEGER& call__id, const MNCC__bearer__cap& bcap); +extern MNCC__PDU_template tr__MNCC__MODIFY__cnf(const INTEGER_template& call__id, const MNCC__bearer__cap_template& bcap); +extern MNCC__PDU_template ts__MNCC__USERINFO__req(const INTEGER& call__id, const MNCC__useruser& uu, const INTEGER& more); +extern MNCC__PDU_template tr__MNCC__USERINFO__ind(const INTEGER_template& call__id, const MNCC__useruser_template& uu, const INTEGER& more); +extern MNCC__PDU_template tr__MNCC__HOLD__ind(const INTEGER_template& call__id); +extern MNCC__PDU_template ts__MNCC__HOLD__cnf(const INTEGER& call__id); +extern MNCC__PDU_template ts__MNCC__HOLD__rej(const INTEGER& call__id, const MNCC__cause& cause); +extern MNCC__PDU_template tr__MNCC__RETRIEVE__ind(const INTEGER_template& call__id); +extern MNCC__PDU_template ts__MNCC__RETRIEVE__cnf(const INTEGER& call__id); +extern MNCC__PDU_template ts__MNCC__RETRIEVE__rej(const INTEGER& call__id, const MNCC__cause& cause); +extern MNCC__PDU_template ts__MNCC__SIMPLE__RTP(const MNCC__MsgType& msg__type, const INTEGER& call__id); +extern MNCC__PDU_template ts__MNCC__RTP__CREATE(const INTEGER& call__id); +extern MNCC__PDU_template tr__MNCC__RTP__CREATE(const INTEGER_template& call__id); +extern MNCC__PDU_template ts__MNCC__RTP__CONNECT(const INTEGER& call__id, const INTEGER& ip, const INTEGER& rtp__port, const INTEGER& pt); +extern MNCC__PDU_template tr__MNCC__RTP__CONNECT(const INTEGER_template& call__id, const INTEGER_template& ip, const INTEGER_template& rtp__port, const INTEGER_template& pt); +extern MNCC__PDU_template ts__MNCC__RTP__FREE(const INTEGER& call__id); +extern INTEGER f__mncc__get__call__id(const MNCC__PDU& pdu); + +/* Global variable declarations */ + +extern const TTCN_RAWdescriptor_t int__raw_; +extern const XERdescriptor_t int__xer_; +extern const TTCN_JSONdescriptor_t int__json_; +extern const TTCN_Typedescriptor_t int__descr_; +extern UNIVERSAL_CHARSTRING int__default_coding; +extern const TTCN_RAWdescriptor_t GSM48__bcap__ra_raw_; +extern const TTCN_Typedescriptor_t GSM48__bcap__ra_descr_; +extern UNIVERSAL_CHARSTRING GSM48__bcap__ra_default_coding; +extern const TTCN_RAWdescriptor_t GSM48__bcap__sig__access_raw_; +extern const TTCN_Typedescriptor_t GSM48__bcap__sig__access_descr_; +extern UNIVERSAL_CHARSTRING GSM48__bcap__sig__access_default_coding; +extern const TTCN_RAWdescriptor_t GSM48__bcap__user__rate_raw_; +extern const TTCN_Typedescriptor_t GSM48__bcap__user__rate_descr_; +extern UNIVERSAL_CHARSTRING GSM48__bcap__user__rate_default_coding; +extern const TTCN_RAWdescriptor_t GSM48__bcap__parity_raw_; +extern const TTCN_Typedescriptor_t GSM48__bcap__parity_descr_; +extern UNIVERSAL_CHARSTRING GSM48__bcap__parity_default_coding; +extern const TTCN_RAWdescriptor_t GSM48__bcap__interm__rate_raw_; +extern const TTCN_Typedescriptor_t GSM48__bcap__interm__rate_descr_; +extern UNIVERSAL_CHARSTRING GSM48__bcap__interm__rate_default_coding; +extern const TTCN_RAWdescriptor_t GSM48__bcap__transp_raw_; +extern const TTCN_Typedescriptor_t GSM48__bcap__transp_descr_; +extern UNIVERSAL_CHARSTRING GSM48__bcap__transp_default_coding; +extern const TTCN_RAWdescriptor_t GSM48__bcap__modem__type_raw_; +extern const TTCN_Typedescriptor_t GSM48__bcap__modem__type_descr_; +extern UNIVERSAL_CHARSTRING GSM48__bcap__modem__type_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__MsgType_raw_; +extern const TTCN_Typedescriptor_t MNCC__MsgType_descr_; +extern UNIVERSAL_CHARSTRING MNCC__MsgType_default_coding; +extern const INTEGER& GSM__MAX__FACILITY; +extern const INTEGER& GSM__MAX__SSVERSION; +extern const INTEGER& GSM__MAX__USERUSER; +extern const TTCN_RAWdescriptor_t MNCC__bearer__cap__data_rate__adaptation_raw_; +extern const TTCN_Typedescriptor_t MNCC__bearer__cap__data_rate__adaptation_descr_; +extern UNIVERSAL_CHARSTRING MNCC__bearer__cap__data_rate__adaptation_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__bearer__cap__data_sig__access_raw_; +extern const TTCN_Typedescriptor_t MNCC__bearer__cap__data_sig__access_descr_; +extern UNIVERSAL_CHARSTRING MNCC__bearer__cap__data_sig__access_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__bearer__cap__data_async_raw_; +extern const XERdescriptor_t MNCC__bearer__cap__data_async_xer_; +extern const TTCN_JSONdescriptor_t MNCC__bearer__cap__data_async_json_; +extern const TTCN_OERdescriptor_t MNCC__bearer__cap__data_async_oer_; +extern const TTCN_Typedescriptor_t MNCC__bearer__cap__data_async_descr_; +extern UNIVERSAL_CHARSTRING MNCC__bearer__cap__data_async_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__bearer__cap__data_nr__stop__bits_raw_; +extern const XERdescriptor_t MNCC__bearer__cap__data_nr__stop__bits_xer_; +extern const TTCN_JSONdescriptor_t MNCC__bearer__cap__data_nr__stop__bits_json_; +extern const TTCN_OERdescriptor_t MNCC__bearer__cap__data_nr__stop__bits_oer_; +extern const TTCN_Typedescriptor_t MNCC__bearer__cap__data_nr__stop__bits_descr_; +extern UNIVERSAL_CHARSTRING MNCC__bearer__cap__data_nr__stop__bits_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__bearer__cap__data_nr__data__bits_raw_; +extern const XERdescriptor_t MNCC__bearer__cap__data_nr__data__bits_xer_; +extern const TTCN_JSONdescriptor_t MNCC__bearer__cap__data_nr__data__bits_json_; +extern const TTCN_OERdescriptor_t MNCC__bearer__cap__data_nr__data__bits_oer_; +extern const TTCN_Typedescriptor_t MNCC__bearer__cap__data_nr__data__bits_descr_; +extern UNIVERSAL_CHARSTRING MNCC__bearer__cap__data_nr__data__bits_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__bearer__cap__data_user__rate_raw_; +extern const TTCN_Typedescriptor_t MNCC__bearer__cap__data_user__rate_descr_; +extern UNIVERSAL_CHARSTRING MNCC__bearer__cap__data_user__rate_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__bearer__cap__data_parity_raw_; +extern const TTCN_Typedescriptor_t MNCC__bearer__cap__data_parity_descr_; +extern UNIVERSAL_CHARSTRING MNCC__bearer__cap__data_parity_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__bearer__cap__data_interm__rate_raw_; +extern const TTCN_Typedescriptor_t MNCC__bearer__cap__data_interm__rate_descr_; +extern UNIVERSAL_CHARSTRING MNCC__bearer__cap__data_interm__rate_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__bearer__cap__data_transp_raw_; +extern const TTCN_Typedescriptor_t MNCC__bearer__cap__data_transp_descr_; +extern UNIVERSAL_CHARSTRING MNCC__bearer__cap__data_transp_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__bearer__cap__data_modem__type_raw_; +extern const TTCN_Typedescriptor_t MNCC__bearer__cap__data_modem__type_descr_; +extern UNIVERSAL_CHARSTRING MNCC__bearer__cap__data_modem__type_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__bearer__cap__data_raw_; +extern const TTCN_Typedescriptor_t MNCC__bearer__cap__data_descr_; +extern UNIVERSAL_CHARSTRING MNCC__bearer__cap__data_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__speech__vers_raw_; +extern const TTCN_Typedescriptor_t MNCC__speech__vers_descr_; +extern const TTCN_RAWdescriptor_t MNCC__speech__vers_0_raw_; +extern const XERdescriptor_t MNCC__speech__vers_0_xer_; +extern const TTCN_JSONdescriptor_t MNCC__speech__vers_0_json_; +extern const TTCN_OERdescriptor_t MNCC__speech__vers_0_oer_; +extern const TTCN_Typedescriptor_t MNCC__speech__vers_0_descr_; +extern UNIVERSAL_CHARSTRING MNCC__speech__vers_0_default_coding; +extern UNIVERSAL_CHARSTRING MNCC__speech__vers_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__bearer__cap_transfer_raw_; +extern const XERdescriptor_t MNCC__bearer__cap_transfer_xer_; +extern const TTCN_JSONdescriptor_t MNCC__bearer__cap_transfer_json_; +extern const TTCN_OERdescriptor_t MNCC__bearer__cap_transfer_oer_; +extern const TTCN_Typedescriptor_t MNCC__bearer__cap_transfer_descr_; +extern UNIVERSAL_CHARSTRING MNCC__bearer__cap_transfer_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__bearer__cap_mode_raw_; +extern const XERdescriptor_t MNCC__bearer__cap_mode_xer_; +extern const TTCN_JSONdescriptor_t MNCC__bearer__cap_mode_json_; +extern const TTCN_OERdescriptor_t MNCC__bearer__cap_mode_oer_; +extern const TTCN_Typedescriptor_t MNCC__bearer__cap_mode_descr_; +extern UNIVERSAL_CHARSTRING MNCC__bearer__cap_mode_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__bearer__cap_coding_raw_; +extern const XERdescriptor_t MNCC__bearer__cap_coding_xer_; +extern const TTCN_JSONdescriptor_t MNCC__bearer__cap_coding_json_; +extern const TTCN_OERdescriptor_t MNCC__bearer__cap_coding_oer_; +extern const TTCN_Typedescriptor_t MNCC__bearer__cap_coding_descr_; +extern UNIVERSAL_CHARSTRING MNCC__bearer__cap_coding_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__bearer__cap_radio_raw_; +extern const XERdescriptor_t MNCC__bearer__cap_radio_xer_; +extern const TTCN_JSONdescriptor_t MNCC__bearer__cap_radio_json_; +extern const TTCN_OERdescriptor_t MNCC__bearer__cap_radio_oer_; +extern const TTCN_Typedescriptor_t MNCC__bearer__cap_radio_descr_; +extern UNIVERSAL_CHARSTRING MNCC__bearer__cap_radio_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__bearer__cap_speech__ctm_raw_; +extern const XERdescriptor_t MNCC__bearer__cap_speech__ctm_xer_; +extern const TTCN_JSONdescriptor_t MNCC__bearer__cap_speech__ctm_json_; +extern const TTCN_OERdescriptor_t MNCC__bearer__cap_speech__ctm_oer_; +extern const TTCN_Typedescriptor_t MNCC__bearer__cap_speech__ctm_descr_; +extern UNIVERSAL_CHARSTRING MNCC__bearer__cap_speech__ctm_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__bearer__cap_speech__ver_raw_; +extern const TTCN_Typedescriptor_t MNCC__bearer__cap_speech__ver_descr_; +extern UNIVERSAL_CHARSTRING MNCC__bearer__cap_speech__ver_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__bearer__cap_raw_; +extern const TTCN_Typedescriptor_t MNCC__bearer__cap_descr_; +extern const TTCN_RAWdescriptor_t MNCC__bearer__cap_data_raw_; +extern const TTCN_Typedescriptor_t MNCC__bearer__cap_data_descr_; +extern UNIVERSAL_CHARSTRING MNCC__bearer__cap_data_default_coding; +extern UNIVERSAL_CHARSTRING MNCC__bearer__cap_default_coding; +extern const MNCC__bearer__cap_template& ts__MNCC__bcap__voice; +extern const TTCN_RAWdescriptor_t GSM48__type__of__number_raw_; +extern const TTCN_Typedescriptor_t GSM48__type__of__number_descr_; +extern UNIVERSAL_CHARSTRING GSM48__type__of__number_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__number_number__type_raw_; +extern const TTCN_Typedescriptor_t MNCC__number_number__type_descr_; +extern UNIVERSAL_CHARSTRING MNCC__number_number__type_default_coding; +extern const TTCN_RAWdescriptor_t GSM48__num__plan__ind_raw_; +extern const TTCN_Typedescriptor_t GSM48__num__plan__ind_descr_; +extern UNIVERSAL_CHARSTRING GSM48__num__plan__ind_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__number_plan_raw_; +extern const TTCN_Typedescriptor_t MNCC__number_plan_descr_; +extern UNIVERSAL_CHARSTRING MNCC__number_plan_default_coding; +extern const TTCN_RAWdescriptor_t GSM48__present__ind_raw_; +extern const TTCN_Typedescriptor_t GSM48__present__ind_descr_; +extern UNIVERSAL_CHARSTRING GSM48__present__ind_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__number_presence_raw_; +extern const TTCN_Typedescriptor_t MNCC__number_presence_descr_; +extern UNIVERSAL_CHARSTRING MNCC__number_presence_default_coding; +extern const TTCN_RAWdescriptor_t GSM48__screening__ind_raw_; +extern const TTCN_Typedescriptor_t GSM48__screening__ind_descr_; +extern UNIVERSAL_CHARSTRING GSM48__screening__ind_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__number_screen_raw_; +extern const TTCN_Typedescriptor_t MNCC__number_screen_descr_; +extern UNIVERSAL_CHARSTRING MNCC__number_screen_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__number_number_raw_; +extern const XERdescriptor_t MNCC__number_number_xer_; +extern const TTCN_JSONdescriptor_t MNCC__number_number_json_; +extern const TTCN_Typedescriptor_t MNCC__number_number_descr_; +extern UNIVERSAL_CHARSTRING MNCC__number_number_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__number_raw_; +extern const TTCN_Typedescriptor_t MNCC__number_descr_; +extern UNIVERSAL_CHARSTRING MNCC__number_default_coding; +extern const TTCN_RAWdescriptor_t GSM48__cause__coding_raw_; +extern const TTCN_Typedescriptor_t GSM48__cause__coding_descr_; +extern UNIVERSAL_CHARSTRING GSM48__cause__coding_default_coding; +extern const TTCN_RAWdescriptor_t GSM48__cause__loc_raw_; +extern const TTCN_Typedescriptor_t GSM48__cause__loc_descr_; +extern UNIVERSAL_CHARSTRING GSM48__cause__loc_default_coding; +extern const GSM48__type__of__number& ts__MNCC__number_ton_defval; +extern const GSM48__num__plan__ind& ts__MNCC__number_npi_defval; +extern const GSM48__present__ind& ts__MNCC__number_pres_defval; +extern const GSM48__screening__ind& ts__MNCC__number_screen_defval; +extern const GSM48__type__of__number_template& tr__MNCC__number_ton_defval; +extern const GSM48__num__plan__ind_template& tr__MNCC__number_npi_defval; +extern const GSM48__present__ind_template& tr__MNCC__number_pres_defval; +extern const GSM48__screening__ind_template& tr__MNCC__number_screen_defval; +extern const TTCN_RAWdescriptor_t MNCC__cause_location_raw_; +extern const TTCN_Typedescriptor_t MNCC__cause_location_descr_; +extern UNIVERSAL_CHARSTRING MNCC__cause_location_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__cause_coding_raw_; +extern const TTCN_Typedescriptor_t MNCC__cause_coding_descr_; +extern UNIVERSAL_CHARSTRING MNCC__cause_coding_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__cause_rec_raw_; +extern const XERdescriptor_t MNCC__cause_rec_xer_; +extern const TTCN_JSONdescriptor_t MNCC__cause_rec_json_; +extern const TTCN_OERdescriptor_t MNCC__cause_rec_oer_; +extern const TTCN_Typedescriptor_t MNCC__cause_rec_descr_; +extern UNIVERSAL_CHARSTRING MNCC__cause_rec_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__cause_rec__val_raw_; +extern const XERdescriptor_t MNCC__cause_rec__val_xer_; +extern const TTCN_JSONdescriptor_t MNCC__cause_rec__val_json_; +extern const TTCN_OERdescriptor_t MNCC__cause_rec__val_oer_; +extern const TTCN_Typedescriptor_t MNCC__cause_rec__val_descr_; +extern UNIVERSAL_CHARSTRING MNCC__cause_rec__val_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__cause_val_raw_; +extern const XERdescriptor_t MNCC__cause_val_xer_; +extern const TTCN_JSONdescriptor_t MNCC__cause_val_json_; +extern const TTCN_OERdescriptor_t MNCC__cause_val_oer_; +extern const TTCN_Typedescriptor_t MNCC__cause_val_descr_; +extern UNIVERSAL_CHARSTRING MNCC__cause_val_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__cause_diag_raw_; +extern const XERdescriptor_t MNCC__cause_diag_xer_; +extern const TTCN_JSONdescriptor_t MNCC__cause_diag_json_; +extern const TTCN_OERdescriptor_t MNCC__cause_diag_oer_; +extern const TTCN_Typedescriptor_t MNCC__cause_diag_descr_; +extern UNIVERSAL_CHARSTRING MNCC__cause_diag_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__cause_raw_; +extern const TTCN_Typedescriptor_t MNCC__cause_descr_; +extern UNIVERSAL_CHARSTRING MNCC__cause_default_coding; +extern const GSM48__cause__loc& ts__MNCC__cause_loc_defval; +extern const GSM48__cause__coding& ts__MNCC__cause_coding_defval; +extern const OCTETSTRING& ts__MNCC__cause_diag_defval; +extern const TTCN_RAWdescriptor_t MNCC__useruser_proto_raw_; +extern const XERdescriptor_t MNCC__useruser_proto_xer_; +extern const TTCN_JSONdescriptor_t MNCC__useruser_proto_json_; +extern const TTCN_OERdescriptor_t MNCC__useruser_proto_oer_; +extern const TTCN_Typedescriptor_t MNCC__useruser_proto_descr_; +extern UNIVERSAL_CHARSTRING MNCC__useruser_proto_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__useruser_info_raw_; +extern const XERdescriptor_t MNCC__useruser_info_xer_; +extern const TTCN_JSONdescriptor_t MNCC__useruser_info_json_; +extern const TTCN_Typedescriptor_t MNCC__useruser_info_descr_; +extern UNIVERSAL_CHARSTRING MNCC__useruser_info_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__useruser_raw_; +extern const TTCN_Typedescriptor_t MNCC__useruser_descr_; +extern UNIVERSAL_CHARSTRING MNCC__useruser_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__progress_coding_raw_; +extern const XERdescriptor_t MNCC__progress_coding_xer_; +extern const TTCN_JSONdescriptor_t MNCC__progress_coding_json_; +extern const TTCN_OERdescriptor_t MNCC__progress_coding_oer_; +extern const TTCN_Typedescriptor_t MNCC__progress_coding_descr_; +extern UNIVERSAL_CHARSTRING MNCC__progress_coding_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__progress_location_raw_; +extern const XERdescriptor_t MNCC__progress_location_xer_; +extern const TTCN_JSONdescriptor_t MNCC__progress_location_json_; +extern const TTCN_OERdescriptor_t MNCC__progress_location_oer_; +extern const TTCN_Typedescriptor_t MNCC__progress_location_descr_; +extern UNIVERSAL_CHARSTRING MNCC__progress_location_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__progress_descr_raw_; +extern const XERdescriptor_t MNCC__progress_descr_xer_; +extern const TTCN_JSONdescriptor_t MNCC__progress_descr_json_; +extern const TTCN_OERdescriptor_t MNCC__progress_descr_oer_; +extern const TTCN_Typedescriptor_t MNCC__progress_descr_descr_; +extern UNIVERSAL_CHARSTRING MNCC__progress_descr_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__progress_raw_; +extern const TTCN_Typedescriptor_t MNCC__progress_descr_; +extern UNIVERSAL_CHARSTRING MNCC__progress_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__cccap_dtmf_raw_; +extern const XERdescriptor_t MNCC__cccap_dtmf_xer_; +extern const TTCN_JSONdescriptor_t MNCC__cccap_dtmf_json_; +extern const TTCN_OERdescriptor_t MNCC__cccap_dtmf_oer_; +extern const TTCN_Typedescriptor_t MNCC__cccap_dtmf_descr_; +extern UNIVERSAL_CHARSTRING MNCC__cccap_dtmf_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__cccap_pcp_raw_; +extern const XERdescriptor_t MNCC__cccap_pcp_xer_; +extern const TTCN_JSONdescriptor_t MNCC__cccap_pcp_json_; +extern const TTCN_OERdescriptor_t MNCC__cccap_pcp_oer_; +extern const TTCN_Typedescriptor_t MNCC__cccap_pcp_descr_; +extern UNIVERSAL_CHARSTRING MNCC__cccap_pcp_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__cccap_raw_; +extern const TTCN_Typedescriptor_t MNCC__cccap_descr_; +extern UNIVERSAL_CHARSTRING MNCC__cccap_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__notify_raw_; +extern const XERdescriptor_t MNCC__notify_xer_; +extern const TTCN_JSONdescriptor_t MNCC__notify_json_; +extern const TTCN_OERdescriptor_t MNCC__notify_oer_; +extern const TTCN_Typedescriptor_t MNCC__notify_descr_; +extern UNIVERSAL_CHARSTRING MNCC__notify_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__keypad_raw_; +extern const XERdescriptor_t MNCC__keypad_xer_; +extern const TTCN_JSONdescriptor_t MNCC__keypad_json_; +extern const TTCN_Typedescriptor_t MNCC__keypad_descr_; +extern UNIVERSAL_CHARSTRING MNCC__keypad_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__bcap_raw_; +extern const TTCN_Typedescriptor_t MNCC__bcap_descr_; +extern UNIVERSAL_CHARSTRING MNCC__bcap_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Signal_callref_raw_; +extern const XERdescriptor_t MNCC__PDU__Signal_callref_xer_; +extern const TTCN_JSONdescriptor_t MNCC__PDU__Signal_callref_json_; +extern const TTCN_OERdescriptor_t MNCC__PDU__Signal_callref_oer_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Signal_callref_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Signal_callref_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Signal_clir__sup_raw_; +extern const XERdescriptor_t MNCC__PDU__Signal_clir__sup_xer_; +extern const TTCN_JSONdescriptor_t MNCC__PDU__Signal_clir__sup_json_; +extern const TTCN_OERdescriptor_t MNCC__PDU__Signal_clir__sup_oer_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Signal_clir__sup_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Signal_clir__sup_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Signal_clir__inv_raw_; +extern const XERdescriptor_t MNCC__PDU__Signal_clir__inv_xer_; +extern const TTCN_JSONdescriptor_t MNCC__PDU__Signal_clir__inv_json_; +extern const TTCN_OERdescriptor_t MNCC__PDU__Signal_clir__inv_oer_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Signal_clir__inv_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Signal_clir__inv_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Signal_more_raw_; +extern const XERdescriptor_t MNCC__PDU__Signal_more_xer_; +extern const TTCN_JSONdescriptor_t MNCC__PDU__Signal_more_json_; +extern const TTCN_OERdescriptor_t MNCC__PDU__Signal_more_oer_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Signal_more_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Signal_more_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Signal_notify_raw_; +extern const XERdescriptor_t MNCC__PDU__Signal_notify_xer_; +extern const TTCN_JSONdescriptor_t MNCC__PDU__Signal_notify_json_; +extern const TTCN_OERdescriptor_t MNCC__PDU__Signal_notify_oer_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Signal_notify_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Signal_notify_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Signal_imsi_raw_; +extern const XERdescriptor_t MNCC__PDU__Signal_imsi_xer_; +extern const TTCN_JSONdescriptor_t MNCC__PDU__Signal_imsi_json_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Signal_imsi_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Signal_imsi_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Signal_lchan__type_raw_; +extern const XERdescriptor_t MNCC__PDU__Signal_lchan__type_xer_; +extern const TTCN_JSONdescriptor_t MNCC__PDU__Signal_lchan__type_json_; +extern const TTCN_OERdescriptor_t MNCC__PDU__Signal_lchan__type_oer_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Signal_lchan__type_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Signal_lchan__type_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Signal_lchan__mode_raw_; +extern const XERdescriptor_t MNCC__PDU__Signal_lchan__mode_xer_; +extern const TTCN_JSONdescriptor_t MNCC__PDU__Signal_lchan__mode_json_; +extern const TTCN_OERdescriptor_t MNCC__PDU__Signal_lchan__mode_oer_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Signal_lchan__mode_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Signal_lchan__mode_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Signal_raw_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Signal_descr_; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Signal_bearer__cap_raw_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Signal_bearer__cap_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Signal_bearer__cap_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Signal_called_raw_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Signal_called_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Signal_called_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Signal_calling_raw_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Signal_calling_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Signal_calling_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Signal_redirecting_raw_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Signal_redirecting_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Signal_redirecting_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Signal_connected_raw_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Signal_connected_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Signal_connected_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Signal_cause_raw_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Signal_cause_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Signal_cause_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Signal_progress_raw_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Signal_progress_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Signal_progress_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Signal_useruser_raw_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Signal_useruser_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Signal_useruser_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Signal_facility_raw_; +extern const XERdescriptor_t MNCC__PDU__Signal_facility_xer_; +extern const TTCN_JSONdescriptor_t MNCC__PDU__Signal_facility_json_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Signal_facility_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Signal_facility_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Signal_cccap_raw_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Signal_cccap_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Signal_cccap_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Signal_ssversion_raw_; +extern const XERdescriptor_t MNCC__PDU__Signal_ssversion_xer_; +extern const TTCN_JSONdescriptor_t MNCC__PDU__Signal_ssversion_json_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Signal_ssversion_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Signal_ssversion_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Signal_signal_raw_; +extern const XERdescriptor_t MNCC__PDU__Signal_signal_xer_; +extern const TTCN_JSONdescriptor_t MNCC__PDU__Signal_signal_json_; +extern const TTCN_OERdescriptor_t MNCC__PDU__Signal_signal_oer_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Signal_signal_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Signal_signal_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Signal_keypad_raw_; +extern const XERdescriptor_t MNCC__PDU__Signal_keypad_xer_; +extern const TTCN_JSONdescriptor_t MNCC__PDU__Signal_keypad_json_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Signal_keypad_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Signal_keypad_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Signal_emergency_raw_; +extern const XERdescriptor_t MNCC__PDU__Signal_emergency_xer_; +extern const TTCN_JSONdescriptor_t MNCC__PDU__Signal_emergency_json_; +extern const TTCN_OERdescriptor_t MNCC__PDU__Signal_emergency_oer_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Signal_emergency_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Signal_emergency_default_coding; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Signal_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Data_callref_raw_; +extern const XERdescriptor_t MNCC__PDU__Data_callref_xer_; +extern const TTCN_JSONdescriptor_t MNCC__PDU__Data_callref_json_; +extern const TTCN_OERdescriptor_t MNCC__PDU__Data_callref_oer_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Data_callref_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Data_callref_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Data_data_raw_; +extern const XERdescriptor_t MNCC__PDU__Data_data_xer_; +extern const TTCN_JSONdescriptor_t MNCC__PDU__Data_data_json_; +extern const TTCN_OERdescriptor_t MNCC__PDU__Data_data_oer_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Data_data_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Data_data_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Data_raw_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Data_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Data_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Rtp_callref_raw_; +extern const XERdescriptor_t MNCC__PDU__Rtp_callref_xer_; +extern const TTCN_JSONdescriptor_t MNCC__PDU__Rtp_callref_json_; +extern const TTCN_OERdescriptor_t MNCC__PDU__Rtp_callref_oer_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Rtp_callref_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Rtp_callref_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Rtp_ip_raw_; +extern const XERdescriptor_t MNCC__PDU__Rtp_ip_xer_; +extern const TTCN_JSONdescriptor_t MNCC__PDU__Rtp_ip_json_; +extern const TTCN_OERdescriptor_t MNCC__PDU__Rtp_ip_oer_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Rtp_ip_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Rtp_ip_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Rtp_rtp__port_raw_; +extern const XERdescriptor_t MNCC__PDU__Rtp_rtp__port_xer_; +extern const TTCN_JSONdescriptor_t MNCC__PDU__Rtp_rtp__port_json_; +extern const TTCN_OERdescriptor_t MNCC__PDU__Rtp_rtp__port_oer_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Rtp_rtp__port_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Rtp_rtp__port_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Rtp_payload__type_raw_; +extern const XERdescriptor_t MNCC__PDU__Rtp_payload__type_xer_; +extern const TTCN_JSONdescriptor_t MNCC__PDU__Rtp_payload__type_json_; +extern const TTCN_OERdescriptor_t MNCC__PDU__Rtp_payload__type_oer_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Rtp_payload__type_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Rtp_payload__type_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Rtp_payload__msg__type_raw_; +extern const XERdescriptor_t MNCC__PDU__Rtp_payload__msg__type_xer_; +extern const TTCN_JSONdescriptor_t MNCC__PDU__Rtp_payload__msg__type_json_; +extern const TTCN_OERdescriptor_t MNCC__PDU__Rtp_payload__msg__type_oer_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Rtp_payload__msg__type_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Rtp_payload__msg__type_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Rtp_raw_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Rtp_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Rtp_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Hello_version_raw_; +extern const XERdescriptor_t MNCC__PDU__Hello_version_xer_; +extern const TTCN_JSONdescriptor_t MNCC__PDU__Hello_version_json_; +extern const TTCN_OERdescriptor_t MNCC__PDU__Hello_version_oer_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Hello_version_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Hello_version_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Hello_mncc__size_raw_; +extern const XERdescriptor_t MNCC__PDU__Hello_mncc__size_xer_; +extern const TTCN_JSONdescriptor_t MNCC__PDU__Hello_mncc__size_json_; +extern const TTCN_OERdescriptor_t MNCC__PDU__Hello_mncc__size_oer_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Hello_mncc__size_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Hello_mncc__size_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Hello_data__frame__size_raw_; +extern const XERdescriptor_t MNCC__PDU__Hello_data__frame__size_xer_; +extern const TTCN_JSONdescriptor_t MNCC__PDU__Hello_data__frame__size_json_; +extern const TTCN_OERdescriptor_t MNCC__PDU__Hello_data__frame__size_oer_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Hello_data__frame__size_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Hello_data__frame__size_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Hello_called__offset_raw_; +extern const XERdescriptor_t MNCC__PDU__Hello_called__offset_xer_; +extern const TTCN_JSONdescriptor_t MNCC__PDU__Hello_called__offset_json_; +extern const TTCN_OERdescriptor_t MNCC__PDU__Hello_called__offset_oer_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Hello_called__offset_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Hello_called__offset_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Hello_signal__offset_raw_; +extern const XERdescriptor_t MNCC__PDU__Hello_signal__offset_xer_; +extern const TTCN_JSONdescriptor_t MNCC__PDU__Hello_signal__offset_json_; +extern const TTCN_OERdescriptor_t MNCC__PDU__Hello_signal__offset_oer_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Hello_signal__offset_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Hello_signal__offset_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Hello_emergency__offset_raw_; +extern const XERdescriptor_t MNCC__PDU__Hello_emergency__offset_xer_; +extern const TTCN_JSONdescriptor_t MNCC__PDU__Hello_emergency__offset_json_; +extern const TTCN_OERdescriptor_t MNCC__PDU__Hello_emergency__offset_oer_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Hello_emergency__offset_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Hello_emergency__offset_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Hello_lchan__type__offset_raw_; +extern const XERdescriptor_t MNCC__PDU__Hello_lchan__type__offset_xer_; +extern const TTCN_JSONdescriptor_t MNCC__PDU__Hello_lchan__type__offset_json_; +extern const TTCN_OERdescriptor_t MNCC__PDU__Hello_lchan__type__offset_oer_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Hello_lchan__type__offset_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Hello_lchan__type__offset_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU__Hello_raw_; +extern const TTCN_Typedescriptor_t MNCC__PDU__Hello_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU__Hello_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__MsgUnion_raw_; +extern const TTCN_Typedescriptor_t MNCC__MsgUnion_descr_; +extern const TTCN_RAWdescriptor_t MNCC__MsgUnion_signal_raw_; +extern const TTCN_Typedescriptor_t MNCC__MsgUnion_signal_descr_; +extern UNIVERSAL_CHARSTRING MNCC__MsgUnion_signal_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__MsgUnion_data_raw_; +extern const TTCN_Typedescriptor_t MNCC__MsgUnion_data_descr_; +extern UNIVERSAL_CHARSTRING MNCC__MsgUnion_data_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__MsgUnion_rtp_raw_; +extern const TTCN_Typedescriptor_t MNCC__MsgUnion_rtp_descr_; +extern UNIVERSAL_CHARSTRING MNCC__MsgUnion_rtp_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__MsgUnion_hello_raw_; +extern const TTCN_Typedescriptor_t MNCC__MsgUnion_hello_descr_; +extern UNIVERSAL_CHARSTRING MNCC__MsgUnion_hello_default_coding; +extern UNIVERSAL_CHARSTRING MNCC__MsgUnion_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU_msg__type_raw_; +extern const TTCN_Typedescriptor_t MNCC__PDU_msg__type_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU_msg__type_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU_u_raw_; +extern const TTCN_Typedescriptor_t MNCC__PDU_u_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU_u_default_coding; +extern const TTCN_RAWdescriptor_t MNCC__PDU_raw_; +extern const TTCN_Typedescriptor_t MNCC__PDU_descr_; +extern UNIVERSAL_CHARSTRING MNCC__PDU_default_coding; +extern const INTEGER& ts__MNCC__HELLO_version_defval; +extern const CHARSTRING& ts__MNCC__SETUP__req_imsi_defval; +extern const INTEGER_template& tr__MNCC__SETUP__req_call__id_defval; +extern const CHARSTRING_template& tr__MNCC__SETUP__req_called_defval; +extern const CHARSTRING_template& tr__MNCC__SETUP__req_calling_defval; +extern const CHARSTRING_template& tr__MNCC__SETUP__req_imsi_defval; +extern const CHARSTRING& ts__MNCC__SETUP__rsp_imsi_defval; +extern const MNCC__number_template& ts__MNCC__SETUP__rsp_connected_defval; +extern const CHARSTRING_template& tr__MNCC__SETUP__rsp_imsi_defval; +extern const MNCC__number_template& tr__MNCC__SETUP__rsp_connected_defval; +extern const INTEGER_template& tr__MNCC__SETUP__ind_call__id_defval; +extern const MNCC__number_template& tr__MNCC__SETUP__ind_called_defval; +extern const MNCC__number_template& tr__MNCC__SETUP__ind_calling_defval; +extern const CHARSTRING_template& tr__MNCC__SETUP__ind_imsi_defval; +extern const MNCC__number_template& ts__MNCC__SETUP__ind_calling_defval; +extern const CHARSTRING_template& ts__MNCC__SETUP__ind_imsi_defval; +extern const MNCC__bearer__cap_template& ts__MNCC__SETUP__ind_bcap_defval; +extern const MNCC__number_template& ts__MNCC__SETUP__CNF_connected_defval; +extern const MNCC__number_template& tr__MNCC__SETUP__cnf_connected_defval; +extern const INTEGER_template& tr__MNCC__SETUP__COMPL__ind_call__id_defval; +extern const MNCC__cause_template& tr__MNCC__REJ__req_cause_defval; +extern const MNCC__cause_template& ts__MNCC__REJ__ind_cause_defval; +extern const MNCC__bearer__cap_template& tr__MNCC__CALL__CONF__ind_bcap_defval; +extern const MNCC__cause_template& tr__MNCC__CALL__CONF__ind_cause_defval; +extern const MNCC__cccap_template& tr__MNCC__CALL__CONF__ind_cccap_defval; +extern const MNCC__bearer__cap_template& ts__MNCC__CALL__CONF__ind_bcap_defval; +extern const MNCC__cause_template& ts__MNCC__CALL__CONF__ind_cause_defval; +extern const MNCC__cccap_template& ts__MNCC__CALL__CONF__ind_cccap_defval; +extern const MNCC__bearer__cap_template& ts__MNCC__CALL__PROC__req_bcap_defval; +extern const MNCC__progress_template& ts__MNCC__CALL__PROC__req_prog_defval; +extern const CHARSTRING_template& ts__MNCC__CALL__PROC__req_fac_defval; +extern const MNCC__cccap_template& ts__MNCC__CALL__PROC__req_cccap_defval; +extern const MNCC__bearer__cap_template& tr__MNCC__CALL__PROC__req_bcap_defval; +extern const MNCC__progress_template& tr__MNCC__CALL__PROC__req_prog_defval; +extern const CHARSTRING_template& tr__MNCC__CALL__PROC__req_fac_defval; +extern const MNCC__cccap_template& tr__MNCC__CALL__PROC__req_cccap_defval; +extern const MNCC__useruser_template& ts__MNCC__PROGRESS__req_uu_defval; +extern const MNCC__progress_template& ts__MNCC__ALERT__req_prog_defval; +extern const CHARSTRING_template& ts__MNCC__ALERT__req_fac_defval; +extern const MNCC__useruser_template& ts__MNCC__ALERT__req_uu_defval; +extern const MNCC__progress_template& tr__MNCC__ALERT__req_prog_defval; +extern const CHARSTRING_template& tr__MNCC__ALERT__req_fac_defval; +extern const MNCC__useruser_template& tr__MNCC__ALERT__req_uu_defval; +extern const MNCC__progress_template& tr__MNCC__ALERT__ind_prog_defval; +extern const CHARSTRING_template& tr__MNCC__ALERT__ind_fac_defval; +extern const MNCC__useruser_template& tr__MNCC__ALERT__ind_uu_defval; +extern const MNCC__progress_template& ts__MNCC__ALERT__ind_prog_defval; +extern const CHARSTRING_template& ts__MNCC__ALERT__ind_fac_defval; +extern const MNCC__useruser_template& ts__MNCC__ALERT__ind_uu_defval; +extern const INTEGER_template& tr__MNCC__DISC__ind_call__id_defval; +extern const MNCC__cause_template& tr__MNCC__DISC__ind_cause_defval; +extern const MNCC__progress_template& tr__MNCC__DISC__ind_prog_defval; +extern const CHARSTRING_template& tr__MNCC__DISC__ind_fac_defval; +extern const MNCC__useruser_template& tr__MNCC__DISC__ind_uu_defval; +extern const MNCC__progress_template& ts__MNCC__DISC__ind_prog_defval; +extern const CHARSTRING_template& ts__MNCC__DISC__ind_fac_defval; +extern const MNCC__useruser_template& ts__MNCC__DISC__ind_uu_defval; +extern const MNCC__progress_template& ts__MNCC__DISC__req_prog_defval; +extern const CHARSTRING_template& ts__MNCC__DISC__req_fac_defval; +extern const MNCC__useruser_template& ts__MNCC__DISC__req_uu_defval; +extern const MNCC__cause_template& tr__MNCC__DISC__req_cause_defval; +extern const MNCC__progress_template& tr__MNCC__DISC__req_prog_defval; +extern const CHARSTRING_template& tr__MNCC__DISC__req_fac_defval; +extern const MNCC__useruser_template& tr__MNCC__DISC__req_uu_defval; +extern const INTEGER_template& tr__MNCC__REL__ind_call__id_defval; +extern const MNCC__cause_template& tr__MNCC__REL__ind_cause_defval; +extern const CHARSTRING_template& tr__MNCC__REL__ind_fac_defval; +extern const MNCC__useruser_template& tr__MNCC__REL__ind_uu_defval; +extern const CHARSTRING_template& ts__MNCC__REL__ind_fac_defval; +extern const MNCC__useruser_template& ts__MNCC__REL__ind_uu_defval; +extern const CHARSTRING_template& ts__MNCC__REL__req_fac_defval; +extern const MNCC__useruser_template& ts__MNCC__REL__req_uu_defval; +extern const MNCC__cause_template& tr__MNCC__REL__req_cause_defval; +extern const CHARSTRING_template& tr__MNCC__REL__req_fac_defval; +extern const MNCC__useruser_template& tr__MNCC__REL__req_uu_defval; +extern const INTEGER_template& tr__MNCC__REL__cnf_call__id_defval; +extern const MNCC__cause_template& tr__MNCC__REL__cnf_cause_defval; +extern const CHARSTRING_template& tr__MNCC__REL__cnf_fac_defval; +extern const MNCC__useruser_template& tr__MNCC__REL__cnf_uu_defval; +extern const CHARSTRING_template& ts__MNCC__REL__cnf_fac_defval; +extern const MNCC__useruser_template& ts__MNCC__REL__cnf_uu_defval; +extern const INTEGER_template& tr__MNCC__FACILITY__ind_call__id_defval; +extern const CHARSTRING_template& tr__MNCC__FACILITY__ind_fac_defval; +extern const INTEGER_template& tr__MNCC__START__DTMF__ind_call__id_defval; +extern const CHARSTRING_template& tr__MNCC__START__DTMF__ind_keypad_defval; +extern const INTEGER_template& tr__MNCC__STOP__DTMF__ind_call__id_defval; +extern const INTEGER_template& tr__MNCC__MODIFY__ind_call__id_defval; +extern const MNCC__bearer__cap_template& tr__MNCC__MODIFY__ind_bcap_defval; +extern const INTEGER_template& tr__MNCC__MODIFY__cnf_call__id_defval; +extern const MNCC__bearer__cap_template& tr__MNCC__MODIFY__cnf_bcap_defval; +extern const INTEGER_template& tr__MNCC__USERINFO__ind_call__id_defval; +extern const MNCC__useruser_template& tr__MNCC__USERINFO__ind_uu_defval; +extern const INTEGER_template& tr__MNCC__HOLD__ind_call__id_defval; +extern const INTEGER_template& tr__MNCC__RETRIEVE__ind_call__id_defval; +extern const INTEGER_template& tr__MNCC__RTP__CREATE_call__id_defval; +extern const INTEGER_template& tr__MNCC__RTP__CONNECT_ip_defval; +extern const INTEGER_template& tr__MNCC__RTP__CONNECT_rtp__port_defval; +extern const INTEGER_template& tr__MNCC__RTP__CONNECT_pt_defval; +extern TTCN_Module module_object; + +} /* end of namespace */ + +#endif diff --git a/titan/Makefile b/titan/Makefile new file mode 100644 index 0000000..e11dd1b --- /dev/null +++ b/titan/Makefile @@ -0,0 +1,19 @@ + +OBJS=General_Types.o Osmocom_Types.o hello.o +OBJS+=MNCC_Types.o MNCC_EncDec.o +OBJS+=PCUIF_Types.o + +CXXFLAGS=-DLINUX -DMAKEDEPEND_RUN -I/usr/include/titan -fPIC +LDFLAGS=-L/usr/lib/titan -fPIC -lttcn3-dynamic +LDFLAGS_STATIC=-L/usr/lib/titan -lttcn3 -lxml2 -lssl -lcrypto + +all: titan.a + +titan.a: $(OBJS) + $(AR) r $@ $^ + +%.o: %.cc + $(CXX) $(CXXFLAGS) -c -o $@ $^ + +clean: + @rm titan.a $(OBJS) diff --git a/titan/Osmocom_Types.cc b/titan/Osmocom_Types.cc new file mode 100644 index 0000000..812fc22 --- /dev/null +++ b/titan/Osmocom_Types.cc @@ -0,0 +1,2348 @@ +// This C++ source file was generated by the TTCN-3 compiler +// of the TTCN-3 Test Executor version CRL 113 200/6 R3B +// for Harald Welte (laforge@nataraja) on Mon Mar 26 16:56:01 2018 + +// Copyright (c) 2000-2017 Ericsson Telecom AB + +// Do not edit this file unless you know what you are doing. + +/* Including header files */ + +#include "Osmocom_Types.hh" + +namespace Osmocom__Types { + +/* Prototypes of static functions */ + +static void pre_init_module(); +static void post_init_module(); + +/* Literal string constants */ + +static const unsigned char bs_1_bits[] = { 0 }, +bs_0_bits[] = { 1 }; +static const BITSTRING bs_1(1, bs_1_bits), +bs_0(1, bs_0_bits); +static const HEXSTRING hs_0(0, NULL); +static const OCTETSTRING os_0(0, NULL); +static const CHARSTRING cs_1('*'), +cs_2('?'), +cs_0(4, "omit"); +static const unsigned char module_checksum[] = { 0x81, 0xb1, 0xc4, 0xb4, 0x84, 0x10, 0xc0, 0x89, 0xaa, 0x56, 0x81, 0xc9, 0x25, 0xa1, 0x6f, 0xf7 }; + +/* Global variable definitions */ + +const TTCN_RAWdescriptor_t uint8__t_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}; +const XERdescriptor_t uint8__t_xer_ = { {"uint8_t>\n", "uint8_t>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t uint8__t_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t uint8__t_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t uint8__t_descr_ = { "@Osmocom_Types.uint8_t", &INTEGER_ber_, &uint8__t_raw_, &INTEGER_text_, &uint8__t_xer_, &uint8__t_json_, &uint8__t_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING uint8__t_default_coding("RAW"); +const TTCN_RAWdescriptor_t uint16__t_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t uint16__t_xer_ = { {"uint16_t>\n", "uint16_t>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t uint16__t_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t uint16__t_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t uint16__t_descr_ = { "@Osmocom_Types.uint16_t", &INTEGER_ber_, &uint16__t_raw_, &INTEGER_text_, &uint16__t_xer_, &uint16__t_json_, &uint16__t_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING uint16__t_default_coding("RAW"); +const TTCN_RAWdescriptor_t uint24__t_raw_ = {24,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t uint24__t_xer_ = { {"uint24_t>\n", "uint24_t>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t uint24__t_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t uint24__t_descr_ = { "@Osmocom_Types.uint24_t", &INTEGER_ber_, &uint24__t_raw_, &INTEGER_text_, &uint24__t_xer_, &uint24__t_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING uint24__t_default_coding("RAW"); +const TTCN_RAWdescriptor_t uint32__t_raw_ = {32,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t uint32__t_xer_ = { {"uint32_t>\n", "uint32_t>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t uint32__t_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t uint32__t_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t uint32__t_descr_ = { "@Osmocom_Types.uint32_t", &INTEGER_ber_, &uint32__t_raw_, &INTEGER_text_, &uint32__t_xer_, &uint32__t_json_, &uint32__t_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING uint32__t_default_coding("RAW"); +const TTCN_RAWdescriptor_t int8__t_raw_ = {8,SG_SG_BIT,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t int8__t_xer_ = { {"int8_t>\n", "int8_t>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t int8__t_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t int8__t_descr_ = { "@Osmocom_Types.int8_t", &INTEGER_ber_, &int8__t_raw_, &INTEGER_text_, &int8__t_xer_, &int8__t_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING int8__t_default_coding("RAW"); +const TTCN_RAWdescriptor_t int16__t_raw_ = {16,SG_SG_BIT,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t int16__t_xer_ = { {"int16_t>\n", "int16_t>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t int16__t_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t int16__t_descr_ = { "@Osmocom_Types.int16_t", &INTEGER_ber_, &int16__t_raw_, &INTEGER_text_, &int16__t_xer_, &int16__t_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING int16__t_default_coding("RAW"); +const TTCN_RAWdescriptor_t uint1__t_raw_ = {1,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t uint1__t_xer_ = { {"uint1_t>\n", "uint1_t>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t uint1__t_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t uint1__t_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t uint1__t_descr_ = { "@Osmocom_Types.uint1_t", &INTEGER_ber_, &uint1__t_raw_, &INTEGER_text_, &uint1__t_xer_, &uint1__t_json_, &uint1__t_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING uint1__t_default_coding("RAW"); +const TTCN_RAWdescriptor_t uint2__t_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t uint2__t_xer_ = { {"uint2_t>\n", "uint2_t>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t uint2__t_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t uint2__t_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t uint2__t_descr_ = { "@Osmocom_Types.uint2_t", &INTEGER_ber_, &uint2__t_raw_, &INTEGER_text_, &uint2__t_xer_, &uint2__t_json_, &uint2__t_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING uint2__t_default_coding("RAW"); +const TTCN_RAWdescriptor_t uint3__t_raw_ = {3,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t uint3__t_xer_ = { {"uint3_t>\n", "uint3_t>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t uint3__t_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t uint3__t_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t uint3__t_descr_ = { "@Osmocom_Types.uint3_t", &INTEGER_ber_, &uint3__t_raw_, &INTEGER_text_, &uint3__t_xer_, &uint3__t_json_, &uint3__t_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING uint3__t_default_coding("RAW"); +const TTCN_RAWdescriptor_t uint4__t_raw_ = {4,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t uint4__t_xer_ = { {"uint4_t>\n", "uint4_t>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t uint4__t_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t uint4__t_descr_ = { "@Osmocom_Types.uint4_t", &INTEGER_ber_, &uint4__t_raw_, &INTEGER_text_, &uint4__t_xer_, &uint4__t_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING uint4__t_default_coding("RAW"); +const TTCN_RAWdescriptor_t uint5__t_raw_ = {5,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t uint5__t_xer_ = { {"uint5_t>\n", "uint5_t>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t uint5__t_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t uint5__t_descr_ = { "@Osmocom_Types.uint5_t", &INTEGER_ber_, &uint5__t_raw_, &INTEGER_text_, &uint5__t_xer_, &uint5__t_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING uint5__t_default_coding("RAW"); +const TTCN_RAWdescriptor_t uint6__t_raw_ = {6,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t uint6__t_xer_ = { {"uint6_t>\n", "uint6_t>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t uint6__t_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t uint6__t_descr_ = { "@Osmocom_Types.uint6_t", &INTEGER_ber_, &uint6__t_raw_, &INTEGER_text_, &uint6__t_xer_, &uint6__t_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING uint6__t_default_coding("RAW"); +const TTCN_RAWdescriptor_t uint7__t_raw_ = {7,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t uint7__t_xer_ = { {"uint7_t>\n", "uint7_t>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t uint7__t_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t uint7__t_descr_ = { "@Osmocom_Types.uint7_t", &INTEGER_ber_, &uint7__t_raw_, &INTEGER_text_, &uint7__t_xer_, &uint7__t_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING uint7__t_default_coding("RAW"); +const TTCN_RAWdescriptor_t uint9__t_raw_ = {9,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t uint9__t_xer_ = { {"uint9_t>\n", "uint9_t>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t uint9__t_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t uint9__t_descr_ = { "@Osmocom_Types.uint9_t", &INTEGER_ber_, &uint9__t_raw_, &INTEGER_text_, &uint9__t_xer_, &uint9__t_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING uint9__t_default_coding("RAW"); +const TTCN_RAWdescriptor_t uint10__t_raw_ = {10,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t uint10__t_xer_ = { {"uint10_t>\n", "uint10_t>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t uint10__t_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t uint10__t_descr_ = { "@Osmocom_Types.uint10_t", &INTEGER_ber_, &uint10__t_raw_, &INTEGER_text_, &uint10__t_xer_, &uint10__t_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING uint10__t_default_coding("RAW"); +const TTCN_RAWdescriptor_t uint11__t_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}; +const XERdescriptor_t uint11__t_xer_ = { {"uint11_t>\n", "uint11_t>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t uint11__t_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t uint11__t_descr_ = { "@Osmocom_Types.uint11_t", &INTEGER_ber_, &uint11__t_raw_, &INTEGER_text_, &uint11__t_xer_, &uint11__t_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING uint11__t_default_coding("RAW"); +const TTCN_RAWdescriptor_t uint12__t_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}; +const XERdescriptor_t uint12__t_xer_ = { {"uint12_t>\n", "uint12_t>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t uint12__t_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t uint12__t_descr_ = { "@Osmocom_Types.uint12_t", &INTEGER_ber_, &uint12__t_raw_, &INTEGER_text_, &uint12__t_xer_, &uint12__t_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING uint12__t_default_coding("RAW"); +const TTCN_RAWdescriptor_t uint13__t_raw_ = {13,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t uint13__t_xer_ = { {"uint13_t>\n", "uint13_t>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t uint13__t_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t uint13__t_descr_ = { "@Osmocom_Types.uint13_t", &INTEGER_ber_, &uint13__t_raw_, &INTEGER_text_, &uint13__t_xer_, &uint13__t_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING uint13__t_default_coding("RAW"); +const TTCN_RAWdescriptor_t uint14__t_raw_ = {14,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t uint14__t_xer_ = { {"uint14_t>\n", "uint14_t>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t uint14__t_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t uint14__t_descr_ = { "@Osmocom_Types.uint14_t", &INTEGER_ber_, &uint14__t_raw_, &INTEGER_text_, &uint14__t_xer_, &uint14__t_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING uint14__t_default_coding("RAW"); +const TTCN_RAWdescriptor_t uint15__t_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}; +const XERdescriptor_t uint15__t_xer_ = { {"uint15_t>\n", "uint15_t>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t uint15__t_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t uint15__t_descr_ = { "@Osmocom_Types.uint15_t", &INTEGER_ber_, &uint15__t_raw_, &INTEGER_text_, &uint15__t_xer_, &uint15__t_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING uint15__t_default_coding("RAW"); +static INTEGER const_c__UINT16__MAX; +const INTEGER& c__UINT16__MAX = const_c__UINT16__MAX; +static INTEGER const_c__UINT32__MAX; +const INTEGER& c__UINT32__MAX = const_c__UINT32__MAX; +const TTCN_RAWdescriptor_t Arfcn_pcs_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}; +const XERdescriptor_t Arfcn_pcs_xer_ = { {"pcs>\n", "pcs>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t Arfcn_pcs_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int Arfcn_pcs_oer_ext_arr_[0] = {}; +const int Arfcn_pcs_oer_p_[0] = {}; +const TTCN_OERdescriptor_t Arfcn_pcs_oer_ = { -1, FALSE, -1, FALSE, 0, 0, Arfcn_pcs_oer_ext_arr_, 0, Arfcn_pcs_oer_p_}; +const TTCN_Typedescriptor_t Arfcn_pcs_descr_ = { "@Osmocom_Types.Arfcn.pcs", &BOOLEAN_ber_, &Arfcn_pcs_raw_, &BOOLEAN_text_, &Arfcn_pcs_xer_, &Arfcn_pcs_json_, &Arfcn_pcs_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING Arfcn_pcs_default_coding("RAW"); +const TTCN_RAWdescriptor_t Arfcn_arfcn_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}; +const XERdescriptor_t Arfcn_arfcn_xer_ = { {"arfcn>\n", "arfcn>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t Arfcn_arfcn_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t Arfcn_arfcn_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t Arfcn_arfcn_descr_ = { "@Osmocom_Types.Arfcn.arfcn", &INTEGER_ber_, &Arfcn_arfcn_raw_, &INTEGER_text_, &Arfcn_arfcn_xer_, &Arfcn_arfcn_json_, &Arfcn_arfcn_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING Arfcn_arfcn_default_coding("RAW"); +const TTCN_RAWdescriptor_t Arfcn_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}; +// No XER for Arfcn +const TTCN_Typedescriptor_t Arfcn_descr_ = { "@Osmocom_Types.Arfcn", NULL, &Arfcn_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING Arfcn_default_coding("RAW"); +static INTEGER const_f__rnd__hexstring_max_defval; +const INTEGER& f__rnd__hexstring_max_defval = const_f__rnd__hexstring_max_defval; +static INTEGER const_f__rnd__msisdn_len_defval; +const INTEGER& f__rnd__msisdn_len_defval = const_f__rnd__msisdn_len_defval; +const TTCN_RAWdescriptor_t IntegerRecord_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}; +// No XER for IntegerRecord +const TTCN_Typedescriptor_t IntegerRecord_descr_ = { "@Osmocom_Types.IntegerRecord", NULL, &IntegerRecord_raw_, NULL, NULL, NULL, NULL, &IntegerRecord_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; +const TTCN_RAWdescriptor_t IntegerRecord_0_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t IntegerRecord_0_xer_ = { {"INTEGER>\n", "INTEGER>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t IntegerRecord_0_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t IntegerRecord_0_descr_ = { "@Osmocom_Types.IntegerRecord.INTEGER", &INTEGER_ber_, &IntegerRecord_0_raw_, &INTEGER_text_, &IntegerRecord_0_xer_, &IntegerRecord_0_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING IntegerRecord_0_default_coding("RAW"); +UNIVERSAL_CHARSTRING IntegerRecord_default_coding("RAW"); +TTCN_Module module_object("Osmocom_Types", __DATE__, __TIME__, module_checksum, pre_init_module, NULL, 0U, 4294967295U, 4294967295U, 4294967295U, NULL, 0LU, 0, post_init_module, NULL, NULL, NULL, NULL, NULL, NULL); + +static const RuntimeVersionChecker ver_checker( current_runtime_version.requires_major_version_6, + current_runtime_version.requires_minor_version_3, + current_runtime_version.requires_patch_level_1, current_runtime_version.requires_runtime_1); + +/* Member functions of C++ classes */ + +Arfcn::Arfcn() +{ +} + +Arfcn::Arfcn(const BOOLEAN& par_pcs, + const INTEGER& par_arfcn) + : field_pcs(par_pcs), + field_arfcn(par_arfcn) +{ +} + +Arfcn::Arfcn(const Arfcn& other_value) +{ +if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @Osmocom_Types.Arfcn."); +if (other_value.pcs().is_bound()) field_pcs = other_value.pcs(); +else field_pcs.clean_up(); +if (other_value.arfcn().is_bound()) field_arfcn = other_value.arfcn(); +else field_arfcn.clean_up(); +} + +void Arfcn::clean_up() +{ +field_pcs.clean_up(); +field_arfcn.clean_up(); +} + +Arfcn& Arfcn::operator=(const Arfcn& other_value) +{ +if (this != &other_value) { + if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @Osmocom_Types.Arfcn."); + if (other_value.pcs().is_bound()) field_pcs = other_value.pcs(); + else field_pcs.clean_up(); + if (other_value.arfcn().is_bound()) field_arfcn = other_value.arfcn(); + else field_arfcn.clean_up(); +} +return *this; +} + +boolean Arfcn::operator==(const Arfcn& other_value) const +{ +return field_pcs==other_value.field_pcs + && field_arfcn==other_value.field_arfcn; +} + +boolean Arfcn::is_bound() const +{ +if(field_pcs.is_bound()) return TRUE; +if(field_arfcn.is_bound()) return TRUE; +return FALSE; +} +boolean Arfcn::is_value() const +{ +if(!field_pcs.is_value()) return FALSE; +if(!field_arfcn.is_value()) return FALSE; +return TRUE; +} +void Arfcn::log() const +{ +if (!is_bound()) { +TTCN_Logger::log_event_unbound(); +return; +} +TTCN_Logger::log_event_str("{ pcs := "); +field_pcs.log(); +TTCN_Logger::log_event_str(", arfcn := "); +field_arfcn.log(); +TTCN_Logger::log_event_str(" }"); +} + +void Arfcn::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) pcs().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) arfcn().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(), "pcs")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + pcs().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "arfcn")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + arfcn().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @Osmocom_Types.Arfcn: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record value", "@Osmocom_Types.Arfcn"); + } +} + +void Arfcn::set_implicit_omit() +{ +if (pcs().is_bound()) pcs().set_implicit_omit(); +if (arfcn().is_bound()) arfcn().set_implicit_omit(); +} + +void Arfcn::encode_text(Text_Buf& text_buf) const +{ +field_pcs.encode_text(text_buf); +field_arfcn.encode_text(text_buf); +} + +void Arfcn::decode_text(Text_Buf& text_buf) +{ +field_pcs.decode_text(text_buf); +field_arfcn.decode_text(text_buf); +} + +void Arfcn::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void Arfcn::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int Arfcn::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) +{ (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; + decoded_field_length = field_pcs.RAW_decode(Arfcn_pcs_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_arfcn.RAW_decode(Arfcn_arfcn_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return 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 Arfcn::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, Arfcn_pcs_descr_.raw); + myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, Arfcn_arfcn_descr_.raw); + encoded_length += field_pcs.RAW_encode(Arfcn_pcs_descr_, *myleaf.body.node.nodes[0]); + encoded_length += field_arfcn.RAW_encode(Arfcn_arfcn_descr_, *myleaf.body.node.nodes[1]); + return myleaf.length = encoded_length; +} + +struct Arfcn_template::single_value_struct { +BOOLEAN_template field_pcs; +INTEGER_template field_arfcn; +}; + +void Arfcn_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_pcs = ANY_VALUE; +single_value->field_arfcn = ANY_VALUE; +} +} +} + +void Arfcn_template::copy_value(const Arfcn& other_value) +{ +single_value = new single_value_struct; +if (other_value.pcs().is_bound()) { + single_value->field_pcs = other_value.pcs(); +} else { + single_value->field_pcs.clean_up(); +} +if (other_value.arfcn().is_bound()) { + single_value->field_arfcn = other_value.arfcn(); +} else { + single_value->field_arfcn.clean_up(); +} +set_selection(SPECIFIC_VALUE); +} + +void Arfcn_template::copy_template(const Arfcn_template& other_value) +{ +switch (other_value.template_selection) { +case SPECIFIC_VALUE: +single_value = new single_value_struct; +if (UNINITIALIZED_TEMPLATE != other_value.pcs().get_selection()) { +single_value->field_pcs = other_value.pcs(); +} else { +single_value->field_pcs.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.arfcn().get_selection()) { +single_value->field_arfcn = other_value.arfcn(); +} else { +single_value->field_arfcn.clean_up(); +} +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new Arfcn_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of type @Osmocom_Types.Arfcn."); +break; +} +set_selection(other_value); +} + +Arfcn_template::Arfcn_template() +{ +} + +Arfcn_template::Arfcn_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +Arfcn_template::Arfcn_template(const Arfcn& other_value) +{ +copy_value(other_value); +} + +Arfcn_template::Arfcn_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const Arfcn&)other_value); +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of type @Osmocom_Types.Arfcn from an unbound optional field."); +} +} + +Arfcn_template::Arfcn_template(const Arfcn_template& other_value) +: Base_Template() +{ +copy_template(other_value); +} + +Arfcn_template::~Arfcn_template() +{ +clean_up(); +} + +Arfcn_template& Arfcn_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +Arfcn_template& Arfcn_template::operator=(const Arfcn& other_value) +{ +clean_up(); +copy_value(other_value); +return *this; +} + +Arfcn_template& Arfcn_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const Arfcn&)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 @Osmocom_Types.Arfcn."); +} +return *this; +} + +Arfcn_template& Arfcn_template::operator=(const Arfcn_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean Arfcn_template::match(const Arfcn& 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.pcs().is_bound()) return FALSE; +if(!single_value->field_pcs.match(other_value.pcs(), legacy))return FALSE; +if(!other_value.arfcn().is_bound()) return FALSE; +if(!single_value->field_arfcn.match(other_value.arfcn(), legacy))return FALSE; +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of type @Osmocom_Types.Arfcn."); +} +return FALSE; +} + +boolean Arfcn_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +if (template_selection != SPECIFIC_VALUE) return TRUE; +if (single_value->field_pcs.is_bound()) return TRUE; +if (single_value->field_arfcn.is_bound()) return TRUE; +return FALSE; +} + +boolean Arfcn_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +if (!single_value->field_pcs.is_value()) return FALSE; +if (!single_value->field_arfcn.is_value()) return FALSE; +return TRUE; +} + +void Arfcn_template::clean_up() +{ +switch (template_selection) { +case SPECIFIC_VALUE: +delete single_value; +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +delete [] value_list.list_value; +default: +break; +} +template_selection = UNINITIALIZED_TEMPLATE; +} + +Arfcn Arfcn_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 @Osmocom_Types.Arfcn."); +Arfcn ret_val; +if (single_value->field_pcs.is_bound()) { +ret_val.pcs() = single_value->field_pcs.valueof(); +} +if (single_value->field_arfcn.is_bound()) { +ret_val.arfcn() = single_value->field_arfcn.valueof(); +} +return ret_val; +} + +void Arfcn_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) +TTCN_error("Setting an invalid list for a template of type @Osmocom_Types.Arfcn."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new Arfcn_template[list_length]; +} + +Arfcn_template& Arfcn_template::list_item(unsigned int list_index) const +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) +TTCN_error("Accessing a list element of a non-list template of type @Osmocom_Types.Arfcn."); +if (list_index >= value_list.n_values) +TTCN_error("Index overflow in a value list template of type @Osmocom_Types.Arfcn."); +return value_list.list_value[list_index]; +} + +BOOLEAN_template& Arfcn_template::pcs() +{ +set_specific(); +return single_value->field_pcs; +} + +const BOOLEAN_template& Arfcn_template::pcs() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field pcs of a non-specific template of type @Osmocom_Types.Arfcn."); +return single_value->field_pcs; +} + +INTEGER_template& Arfcn_template::arfcn() +{ +set_specific(); +return single_value->field_arfcn; +} + +const INTEGER_template& Arfcn_template::arfcn() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field arfcn of a non-specific template of type @Osmocom_Types.Arfcn."); +return single_value->field_arfcn; +} + +int Arfcn_template::size_of() const +{ + if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @Osmocom_Types.Arfcn 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 @Osmocom_Types.Arfcn 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 @Osmocom_Types.Arfcn containing a value list with different sizes."); + } + return item_size; + } + case OMIT_VALUE: + TTCN_error("Performing sizeof() operation on a template of type @Osmocom_Types.Arfcn containing omit value."); + case ANY_VALUE: + case ANY_OR_OMIT: + TTCN_error("Performing sizeof() operation on a template of type @Osmocom_Types.Arfcn containing */? value."); + case COMPLEMENTED_LIST: + TTCN_error("Performing sizeof() operation on a template of type @Osmocom_Types.Arfcn containing complemented list."); + default: + TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @Osmocom_Types.Arfcn."); + } + return 0; +} + +void Arfcn_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_str("{ pcs := "); +single_value->field_pcs.log(); +TTCN_Logger::log_event_str(", arfcn := "); +single_value->field_arfcn.log(); +TTCN_Logger::log_event_str(" }"); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { +if (list_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[list_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void Arfcn_template::log_match(const Arfcn& 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_pcs.match(match_value.pcs(), legacy)){ +TTCN_Logger::log_logmatch_info(".pcs"); +single_value->field_pcs.log_match(match_value.pcs(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_arfcn.match(match_value.arfcn(), legacy)){ +TTCN_Logger::log_logmatch_info(".arfcn"); +single_value->field_arfcn.log_match(match_value.arfcn(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +}else { +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("{ pcs := "); +single_value->field_pcs.log_match(match_value.pcs(), legacy); +TTCN_Logger::log_event_str(", arfcn := "); +single_value->field_arfcn.log_match(match_value.arfcn(), 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 Arfcn_template::encode_text(Text_Buf& text_buf) const +{ +encode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value->field_pcs.encode_text(text_buf); +single_value->field_arfcn.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 @Osmocom_Types.Arfcn."); +} +} + +void Arfcn_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_pcs.decode_text(text_buf); +single_value->field_arfcn.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 Arfcn_template[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 @Osmocom_Types.Arfcn."); +} +} + +void Arfcn_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: { + Arfcn_template new_temp; + new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); + for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) pcs().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) arfcn().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(), "pcs")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + pcs().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "arfcn")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + arfcn().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @Osmocom_Types.Arfcn: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record template", "@Osmocom_Types.Arfcn"); + } + is_ifpresent = param.get_ifpresent(); +} + +void Arfcn_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_pcs.check_restriction(t_res, t_name ? t_name : "@Osmocom_Types.Arfcn"); +single_value->field_arfcn.check_restriction(t_res, t_name ? t_name : "@Osmocom_Types.Arfcn"); +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 : "@Osmocom_Types.Arfcn"); +} + +boolean Arfcn_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean Arfcn_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int l_idx=0; l_idx(arr)[i] == key)) { +current_location.update_lineno(115); +/* Osmocom_Types.ttcn, line 115 */ +return TRUE; +} +current_location.update_lineno(113); +/* Osmocom_Types.ttcn, line 113 */ +{ +INTEGER tmp_7; +++i; +} +} +} +current_location.update_lineno(118); +/* Osmocom_Types.ttcn, line 118 */ +return FALSE; +} + +void f__timer__safe__restart(TIMER& T) +{ +TTCN_Location current_location("Osmocom_Types.ttcn", 122, TTCN_Location::LOCATION_FUNCTION, "f_timer_safe_restart"); +current_location.update_lineno(123); +/* Osmocom_Types.ttcn, line 123 */ +if (T.running(NULL)) { +current_location.update_lineno(124); +/* Osmocom_Types.ttcn, line 124 */ +T.stop(); +} +current_location.update_lineno(126); +/* Osmocom_Types.ttcn, line 126 */ +T.start(); +} + +INTEGER f__div__round__up(const INTEGER& dividend, const INTEGER& divisor) +{ +TTCN_Location current_location("Osmocom_Types.ttcn", 130, TTCN_Location::LOCATION_FUNCTION, "f_div_round_up"); +current_location.update_lineno(131); +/* Osmocom_Types.ttcn, line 131 */ +INTEGER x((dividend / divisor)); +current_location.update_lineno(132); +/* Osmocom_Types.ttcn, line 132 */ +if ((rem(dividend, divisor) != 0)) { +current_location.update_lineno(133); +/* Osmocom_Types.ttcn, line 133 */ +{ +INTEGER tmp_8; +++x; +} +} +current_location.update_lineno(135); +/* Osmocom_Types.ttcn, line 135 */ +return x; +} + + +/* Bodies of static functions */ + +static void pre_init_module() +{ +TTCN_Location current_location("Osmocom_Types.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "Osmocom_Types"); +General__Types::module_object.pre_init_module(); +current_location.update_lineno(29); +/* Osmocom_Types.ttcn, line 29 */ +const_c__UINT16__MAX = 65535; +current_location.update_lineno(30); +/* Osmocom_Types.ttcn, line 30 */ +{ INTEGER INTEGER_tmp("4294967295"); +const_c__UINT32__MAX = INTEGER_tmp; } +module_object.add_function("f_rnd_int", (genericfunc_t)&f__rnd__int, NULL); +module_object.add_function("f_rnd_hexstring", (genericfunc_t)&f__rnd__hexstring, NULL); +module_object.add_function("f_rnd_octstring", (genericfunc_t)&f__rnd__octstring, NULL); +module_object.add_function("f_rnd_imsi", (genericfunc_t)&f__rnd__imsi, NULL); +module_object.add_function("f_rnd_msisdn", (genericfunc_t)&f__rnd__msisdn, NULL); +module_object.add_function("f_sleep", (genericfunc_t)&f__sleep, NULL); +module_object.add_function("bool2bit", (genericfunc_t)&bool2bit, NULL); +module_object.add_function("bool2bit_tmpl", (genericfunc_t)&bool2bit__tmpl, NULL); +module_object.add_function("int2bool", (genericfunc_t)&int2bool, NULL); +module_object.add_function("f_array_contains", (genericfunc_t)&f__array__contains, NULL); +module_object.add_function("f_timer_safe_restart", (genericfunc_t)&f__timer__safe__restart, NULL); +module_object.add_function("f_div_round_up", (genericfunc_t)&f__div__round__up, NULL); +} + +static void post_init_module() +{ +TTCN_Location current_location("Osmocom_Types.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "Osmocom_Types"); +General__Types::module_object.post_init_module(); +const_f__rnd__hexstring_max_defval = 15; +const_f__rnd__msisdn_len_defval = 6; +} + + +} /* end of namespace */ diff --git a/titan/Osmocom_Types.hh b/titan/Osmocom_Types.hh new file mode 100644 index 0000000..2c6aea3 --- /dev/null +++ b/titan/Osmocom_Types.hh @@ -0,0 +1,389 @@ +// This C++ header file was generated by the TTCN-3 compiler +// of the TTCN-3 Test Executor version CRL 113 200/6 R3B +// for Harald Welte (laforge@nataraja) on Mon Mar 26 16:56:01 2018 + +// Copyright (c) 2000-2017 Ericsson Telecom AB + +// Do not edit this file unless you know what you are doing. + +#ifndef Osmocom__Types_HH +#define Osmocom__Types_HH + +#ifdef TITAN_RUNTIME_2 +#error Generated code does not match with used runtime.\ + Code was generated without -R option but -DTITAN_RUNTIME_2 was used. +#endif + +/* Header file includes */ + +#include +#include "General_Types.hh" + +#if TTCN3_VERSION != 60301 +#error Version mismatch detected.\ + Please check the version of the TTCN-3 compiler and the base library.\ + Run make clean and rebuild the project if the version of the compiler changed recently. +#endif + +#ifndef LINUX +#error This file should be compiled on LINUX +#endif + +#undef Osmocom__Types_HH +#endif + +namespace Osmocom__Types { + +/* Forward declarations of classes */ + +class Arfcn; +class Arfcn_template; +typedef PreGenRecordOf::PREGEN__RECORD__OF__INTEGER IntegerRecord; +typedef PreGenRecordOf::PREGEN__RECORD__OF__INTEGER_template IntegerRecord_template; + +} /* end of namespace */ + +#ifndef Osmocom__Types_HH +#define Osmocom__Types_HH + +namespace Osmocom__Types { + +/* Type definitions */ + +typedef INTEGER uint8__t; +typedef INTEGER_template uint8__t_template; +typedef INTEGER uint16__t; +typedef INTEGER_template uint16__t_template; +typedef INTEGER uint24__t; +typedef INTEGER_template uint24__t_template; +typedef INTEGER uint32__t; +typedef INTEGER_template uint32__t_template; +typedef INTEGER int8__t; +typedef INTEGER_template int8__t_template; +typedef INTEGER int16__t; +typedef INTEGER_template int16__t_template; +typedef INTEGER uint1__t; +typedef INTEGER_template uint1__t_template; +typedef INTEGER uint2__t; +typedef INTEGER_template uint2__t_template; +typedef INTEGER uint3__t; +typedef INTEGER_template uint3__t_template; +typedef INTEGER uint4__t; +typedef INTEGER_template uint4__t_template; +typedef INTEGER uint5__t; +typedef INTEGER_template uint5__t_template; +typedef INTEGER uint6__t; +typedef INTEGER_template uint6__t_template; +typedef INTEGER uint7__t; +typedef INTEGER_template uint7__t_template; +typedef INTEGER uint9__t; +typedef INTEGER_template uint9__t_template; +typedef INTEGER uint10__t; +typedef INTEGER_template uint10__t_template; +typedef INTEGER uint11__t; +typedef INTEGER_template uint11__t_template; +typedef INTEGER uint12__t; +typedef INTEGER_template uint12__t_template; +typedef INTEGER uint13__t; +typedef INTEGER_template uint13__t_template; +typedef INTEGER uint14__t; +typedef INTEGER_template uint14__t_template; +typedef INTEGER uint15__t; +typedef INTEGER_template uint15__t_template; + +/* Class definitions */ + +class Arfcn : public Base_Type { + BOOLEAN field_pcs; + INTEGER field_arfcn; +public: + Arfcn(); + Arfcn(const BOOLEAN& par_pcs, + const INTEGER& par_arfcn); + Arfcn(const Arfcn& other_value); + inline boolean is_component() { return FALSE; } + void clean_up(); + Arfcn& operator=(const Arfcn& other_value); + boolean operator==(const Arfcn& other_value) const; + inline boolean operator!=(const Arfcn& other_value) const + { return !(*this == other_value); } + + boolean is_bound() const; + +inline boolean is_present() const { return is_bound(); } + boolean is_value() const; + + inline BOOLEAN& pcs() + {return field_pcs;} + inline const BOOLEAN& pcs() const + {return field_pcs;} + inline INTEGER& arfcn() + {return field_arfcn;} + inline const INTEGER& arfcn() const + {return field_arfcn;} + inline int size_of() const + {return 2;} + void log() const; + void set_param(Module_Param& param); + void set_implicit_omit(); + void encode_text(Text_Buf& text_buf) const; + void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class Arfcn_template : public Base_Template { +struct single_value_struct; +union { +single_value_struct *single_value; +struct { +unsigned int n_values; +Arfcn_template *list_value; +} value_list; +}; + +void set_specific(); +void copy_value(const Arfcn& other_value); +void copy_template(const Arfcn_template& other_value); + +public: +Arfcn_template(); +Arfcn_template(template_sel other_value); +Arfcn_template(const Arfcn& other_value); +Arfcn_template(const OPTIONAL& other_value); +Arfcn_template(const Arfcn_template& other_value); +~Arfcn_template(); +Arfcn_template& operator=(template_sel other_value); +Arfcn_template& operator=(const Arfcn& other_value); +Arfcn_template& operator=(const OPTIONAL& other_value); +Arfcn_template& operator=(const Arfcn_template& other_value); +boolean match(const Arfcn& other_value, boolean legacy = FALSE) const; +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +Arfcn valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +Arfcn_template& list_item(unsigned int list_index) const; +BOOLEAN_template& pcs(); +const BOOLEAN_template& pcs() const; +INTEGER_template& arfcn(); +const INTEGER_template& arfcn() const; +int size_of() const; +void log() const; +void log_match(const Arfcn& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +}; + + +/* Function prototypes */ + +extern void uint8__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER uint8__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void uint16__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER uint16__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void uint24__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER uint24__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void uint32__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER uint32__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void int8__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER int8__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void int16__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER int16__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void uint1__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER uint1__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void uint2__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER uint2__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void uint3__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER uint3__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void uint4__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER uint4__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void uint5__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER uint5__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void uint6__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER uint6__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void uint7__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER uint7__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void uint9__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER uint9__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void uint10__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER uint10__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void uint11__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER uint11__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void uint12__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER uint12__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void uint13__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER uint13__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void uint14__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER uint14__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void uint15__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER uint15__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void Arfcn_pcs_encoder(const BOOLEAN& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER Arfcn_pcs_decoder(OCTETSTRING& input_stream, BOOLEAN& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void Arfcn_arfcn_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER Arfcn_arfcn_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void Arfcn_encoder(const Arfcn& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER Arfcn_decoder(OCTETSTRING& input_stream, Arfcn& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER f__rnd__int(const INTEGER& max); +extern HEXSTRING f__rnd__hexstring(const INTEGER& len, const INTEGER& max); +extern OCTETSTRING f__rnd__octstring(const INTEGER& len); +extern HEXSTRING f__rnd__imsi(const HEXSTRING& prefix); +extern OCTETSTRING f__rnd__msisdn(const OCTETSTRING& prefix, const INTEGER& len); +extern void f__sleep(const FLOAT& seconds); +extern BITSTRING bool2bit(const BOOLEAN& inp); +extern BITSTRING_template bool2bit__tmpl(const BOOLEAN_template& inp); +extern void IntegerRecord_0_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER IntegerRecord_0_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void IntegerRecord_encoder(const IntegerRecord& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER IntegerRecord_decoder(OCTETSTRING& input_stream, IntegerRecord& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern BOOLEAN int2bool(const INTEGER& int_); +extern BOOLEAN f__array__contains(const IntegerRecord& arr, const INTEGER& key); +extern void f__timer__safe__restart(TIMER& T); +extern INTEGER f__div__round__up(const INTEGER& dividend, const INTEGER& divisor); + +/* Global variable declarations */ + +extern const TTCN_RAWdescriptor_t uint8__t_raw_; +extern const XERdescriptor_t uint8__t_xer_; +extern const TTCN_JSONdescriptor_t uint8__t_json_; +extern const TTCN_OERdescriptor_t uint8__t_oer_; +extern const TTCN_Typedescriptor_t uint8__t_descr_; +extern UNIVERSAL_CHARSTRING uint8__t_default_coding; +extern const TTCN_RAWdescriptor_t uint16__t_raw_; +extern const XERdescriptor_t uint16__t_xer_; +extern const TTCN_JSONdescriptor_t uint16__t_json_; +extern const TTCN_OERdescriptor_t uint16__t_oer_; +extern const TTCN_Typedescriptor_t uint16__t_descr_; +extern UNIVERSAL_CHARSTRING uint16__t_default_coding; +extern const TTCN_RAWdescriptor_t uint24__t_raw_; +extern const XERdescriptor_t uint24__t_xer_; +extern const TTCN_JSONdescriptor_t uint24__t_json_; +extern const TTCN_Typedescriptor_t uint24__t_descr_; +extern UNIVERSAL_CHARSTRING uint24__t_default_coding; +extern const TTCN_RAWdescriptor_t uint32__t_raw_; +extern const XERdescriptor_t uint32__t_xer_; +extern const TTCN_JSONdescriptor_t uint32__t_json_; +extern const TTCN_OERdescriptor_t uint32__t_oer_; +extern const TTCN_Typedescriptor_t uint32__t_descr_; +extern UNIVERSAL_CHARSTRING uint32__t_default_coding; +extern const TTCN_RAWdescriptor_t int8__t_raw_; +extern const XERdescriptor_t int8__t_xer_; +extern const TTCN_JSONdescriptor_t int8__t_json_; +extern const TTCN_Typedescriptor_t int8__t_descr_; +extern UNIVERSAL_CHARSTRING int8__t_default_coding; +extern const TTCN_RAWdescriptor_t int16__t_raw_; +extern const XERdescriptor_t int16__t_xer_; +extern const TTCN_JSONdescriptor_t int16__t_json_; +extern const TTCN_Typedescriptor_t int16__t_descr_; +extern UNIVERSAL_CHARSTRING int16__t_default_coding; +extern const TTCN_RAWdescriptor_t uint1__t_raw_; +extern const XERdescriptor_t uint1__t_xer_; +extern const TTCN_JSONdescriptor_t uint1__t_json_; +extern const TTCN_OERdescriptor_t uint1__t_oer_; +extern const TTCN_Typedescriptor_t uint1__t_descr_; +extern UNIVERSAL_CHARSTRING uint1__t_default_coding; +extern const TTCN_RAWdescriptor_t uint2__t_raw_; +extern const XERdescriptor_t uint2__t_xer_; +extern const TTCN_JSONdescriptor_t uint2__t_json_; +extern const TTCN_OERdescriptor_t uint2__t_oer_; +extern const TTCN_Typedescriptor_t uint2__t_descr_; +extern UNIVERSAL_CHARSTRING uint2__t_default_coding; +extern const TTCN_RAWdescriptor_t uint3__t_raw_; +extern const XERdescriptor_t uint3__t_xer_; +extern const TTCN_JSONdescriptor_t uint3__t_json_; +extern const TTCN_OERdescriptor_t uint3__t_oer_; +extern const TTCN_Typedescriptor_t uint3__t_descr_; +extern UNIVERSAL_CHARSTRING uint3__t_default_coding; +extern const TTCN_RAWdescriptor_t uint4__t_raw_; +extern const XERdescriptor_t uint4__t_xer_; +extern const TTCN_JSONdescriptor_t uint4__t_json_; +extern const TTCN_Typedescriptor_t uint4__t_descr_; +extern UNIVERSAL_CHARSTRING uint4__t_default_coding; +extern const TTCN_RAWdescriptor_t uint5__t_raw_; +extern const XERdescriptor_t uint5__t_xer_; +extern const TTCN_JSONdescriptor_t uint5__t_json_; +extern const TTCN_Typedescriptor_t uint5__t_descr_; +extern UNIVERSAL_CHARSTRING uint5__t_default_coding; +extern const TTCN_RAWdescriptor_t uint6__t_raw_; +extern const XERdescriptor_t uint6__t_xer_; +extern const TTCN_JSONdescriptor_t uint6__t_json_; +extern const TTCN_Typedescriptor_t uint6__t_descr_; +extern UNIVERSAL_CHARSTRING uint6__t_default_coding; +extern const TTCN_RAWdescriptor_t uint7__t_raw_; +extern const XERdescriptor_t uint7__t_xer_; +extern const TTCN_JSONdescriptor_t uint7__t_json_; +extern const TTCN_Typedescriptor_t uint7__t_descr_; +extern UNIVERSAL_CHARSTRING uint7__t_default_coding; +extern const TTCN_RAWdescriptor_t uint9__t_raw_; +extern const XERdescriptor_t uint9__t_xer_; +extern const TTCN_JSONdescriptor_t uint9__t_json_; +extern const TTCN_Typedescriptor_t uint9__t_descr_; +extern UNIVERSAL_CHARSTRING uint9__t_default_coding; +extern const TTCN_RAWdescriptor_t uint10__t_raw_; +extern const XERdescriptor_t uint10__t_xer_; +extern const TTCN_JSONdescriptor_t uint10__t_json_; +extern const TTCN_Typedescriptor_t uint10__t_descr_; +extern UNIVERSAL_CHARSTRING uint10__t_default_coding; +extern const TTCN_RAWdescriptor_t uint11__t_raw_; +extern const XERdescriptor_t uint11__t_xer_; +extern const TTCN_JSONdescriptor_t uint11__t_json_; +extern const TTCN_Typedescriptor_t uint11__t_descr_; +extern UNIVERSAL_CHARSTRING uint11__t_default_coding; +extern const TTCN_RAWdescriptor_t uint12__t_raw_; +extern const XERdescriptor_t uint12__t_xer_; +extern const TTCN_JSONdescriptor_t uint12__t_json_; +extern const TTCN_Typedescriptor_t uint12__t_descr_; +extern UNIVERSAL_CHARSTRING uint12__t_default_coding; +extern const TTCN_RAWdescriptor_t uint13__t_raw_; +extern const XERdescriptor_t uint13__t_xer_; +extern const TTCN_JSONdescriptor_t uint13__t_json_; +extern const TTCN_Typedescriptor_t uint13__t_descr_; +extern UNIVERSAL_CHARSTRING uint13__t_default_coding; +extern const TTCN_RAWdescriptor_t uint14__t_raw_; +extern const XERdescriptor_t uint14__t_xer_; +extern const TTCN_JSONdescriptor_t uint14__t_json_; +extern const TTCN_Typedescriptor_t uint14__t_descr_; +extern UNIVERSAL_CHARSTRING uint14__t_default_coding; +extern const TTCN_RAWdescriptor_t uint15__t_raw_; +extern const XERdescriptor_t uint15__t_xer_; +extern const TTCN_JSONdescriptor_t uint15__t_json_; +extern const TTCN_Typedescriptor_t uint15__t_descr_; +extern UNIVERSAL_CHARSTRING uint15__t_default_coding; +extern const INTEGER& c__UINT16__MAX; +extern const INTEGER& c__UINT32__MAX; +extern const TTCN_RAWdescriptor_t Arfcn_pcs_raw_; +extern const XERdescriptor_t Arfcn_pcs_xer_; +extern const TTCN_JSONdescriptor_t Arfcn_pcs_json_; +extern const TTCN_OERdescriptor_t Arfcn_pcs_oer_; +extern const TTCN_Typedescriptor_t Arfcn_pcs_descr_; +extern UNIVERSAL_CHARSTRING Arfcn_pcs_default_coding; +extern const TTCN_RAWdescriptor_t Arfcn_arfcn_raw_; +extern const XERdescriptor_t Arfcn_arfcn_xer_; +extern const TTCN_JSONdescriptor_t Arfcn_arfcn_json_; +extern const TTCN_OERdescriptor_t Arfcn_arfcn_oer_; +extern const TTCN_Typedescriptor_t Arfcn_arfcn_descr_; +extern UNIVERSAL_CHARSTRING Arfcn_arfcn_default_coding; +extern const TTCN_RAWdescriptor_t Arfcn_raw_; +extern const TTCN_Typedescriptor_t Arfcn_descr_; +extern UNIVERSAL_CHARSTRING Arfcn_default_coding; +extern const INTEGER& f__rnd__hexstring_max_defval; +extern const INTEGER& f__rnd__msisdn_len_defval; +extern const TTCN_RAWdescriptor_t IntegerRecord_raw_; +extern const TTCN_Typedescriptor_t IntegerRecord_descr_; +extern const TTCN_RAWdescriptor_t IntegerRecord_0_raw_; +extern const XERdescriptor_t IntegerRecord_0_xer_; +extern const TTCN_JSONdescriptor_t IntegerRecord_0_json_; +extern const TTCN_Typedescriptor_t IntegerRecord_0_descr_; +extern UNIVERSAL_CHARSTRING IntegerRecord_0_default_coding; +extern UNIVERSAL_CHARSTRING IntegerRecord_default_coding; +extern TTCN_Module module_object; + +} /* end of namespace */ + +#endif diff --git a/titan/PCUIF_Types.cc b/titan/PCUIF_Types.cc new file mode 100644 index 0000000..ab3609c --- /dev/null +++ b/titan/PCUIF_Types.cc @@ -0,0 +1,31065 @@ +// This C++ source file was generated by the TTCN-3 compiler +// of the TTCN-3 Test Executor version CRL 113 200/6 R3B +// for Harald Welte (laforge@nataraja) on Thu Mar 22 22:09:15 2018 + +// Copyright (c) 2000-2017 Ericsson Telecom AB + +// Do not edit this file unless you know what you are doing. + +/* Including header files */ + +#include "PCUIF_Types.hh" + +namespace PCUIF__Types { + +/* Prototypes of static functions */ + +static void pre_init_module(); +static void post_init_module(); + +/* Literal string constants */ + +static const unsigned char os_1_octets[] = { 0 }, +os_0_octets[] = { 0, 0 }; +static const OCTETSTRING os_1(1, os_1_octets), +os_0(2, os_0_octets); +static const CHARSTRING cs_0(12, "/tmp/pcu_bts"); +static const unsigned char module_checksum[] = { 0xe9, 0x69, 0x0e, 0xeb, 0x82, 0x96, 0x8e, 0xec, 0x18, 0x37, 0x9a, 0x28, 0xe4, 0x6d, 0xcf, 0x52 }; + +/* Global variable definitions */ + +static CHARSTRING const_PCU__SOCK__DEFAULT; +const CHARSTRING& PCU__SOCK__DEFAULT = const_PCU__SOCK__DEFAULT; +static INTEGER const_PCU__IF__VERSION; +const INTEGER& PCU__IF__VERSION = const_PCU__IF__VERSION; +const TTCN_RAWdescriptor_t PCUIF__MsgType_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}; +// No XER for PCUIF__MsgType +const TTCN_Typedescriptor_t PCUIF__MsgType_descr_ = { "@PCUIF_Types.PCUIF_MsgType", NULL, &PCUIF__MsgType_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__MsgType_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__Sapi_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}; +// No XER for PCUIF__Sapi +const TTCN_Typedescriptor_t PCUIF__Sapi_descr_ = { "@PCUIF_Types.PCUIF_Sapi", NULL, &PCUIF__Sapi_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__Sapi_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__Flags_bts__active_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__Flags_bts__active_xer_ = { {"bts_active>\n", "bts_active>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__Flags_bts__active_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int PCUIF__Flags_bts__active_oer_ext_arr_[0] = {}; +const int PCUIF__Flags_bts__active_oer_p_[0] = {}; +const TTCN_OERdescriptor_t PCUIF__Flags_bts__active_oer_ = { -1, FALSE, -1, FALSE, 0, 0, PCUIF__Flags_bts__active_oer_ext_arr_, 0, PCUIF__Flags_bts__active_oer_p_}; +const TTCN_Typedescriptor_t PCUIF__Flags_bts__active_descr_ = { "@PCUIF_Types.PCUIF_Flags.bts_active", &BOOLEAN_ber_, &PCUIF__Flags_bts__active_raw_, &BOOLEAN_text_, &PCUIF__Flags_bts__active_xer_, &PCUIF__Flags_bts__active_json_, &PCUIF__Flags_bts__active_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__Flags_bts__active_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__Flags_sysmo__direct__dsp_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__Flags_sysmo__direct__dsp_xer_ = { {"sysmo_direct_dsp>\n", "sysmo_direct_dsp>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__Flags_sysmo__direct__dsp_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int PCUIF__Flags_sysmo__direct__dsp_oer_ext_arr_[0] = {}; +const int PCUIF__Flags_sysmo__direct__dsp_oer_p_[0] = {}; +const TTCN_OERdescriptor_t PCUIF__Flags_sysmo__direct__dsp_oer_ = { -1, FALSE, -1, FALSE, 0, 0, PCUIF__Flags_sysmo__direct__dsp_oer_ext_arr_, 0, PCUIF__Flags_sysmo__direct__dsp_oer_p_}; +const TTCN_Typedescriptor_t PCUIF__Flags_sysmo__direct__dsp_descr_ = { "@PCUIF_Types.PCUIF_Flags.sysmo_direct_dsp", &BOOLEAN_ber_, &PCUIF__Flags_sysmo__direct__dsp_raw_, &BOOLEAN_text_, &PCUIF__Flags_sysmo__direct__dsp_xer_, &PCUIF__Flags_sysmo__direct__dsp_json_, &PCUIF__Flags_sysmo__direct__dsp_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__Flags_sysmo__direct__dsp_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__Flags_spare_raw_ = {14,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,14,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__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_JSONdescriptor_t PCUIF__Flags_spare_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__Flags_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__Flags_spare_descr_ = { "@PCUIF_Types.PCUIF_Flags.spare", &BITSTRING_ber_, &PCUIF__Flags_spare_raw_, NULL, &PCUIF__Flags_spare_xer_, &PCUIF__Flags_spare_json_, &PCUIF__Flags_spare_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__Flags_spare_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__Flags_cs1_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__Flags_cs1_xer_ = { {"cs1>\n", "cs1>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__Flags_cs1_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int PCUIF__Flags_cs1_oer_ext_arr_[0] = {}; +const int PCUIF__Flags_cs1_oer_p_[0] = {}; +const TTCN_OERdescriptor_t PCUIF__Flags_cs1_oer_ = { -1, FALSE, -1, FALSE, 0, 0, PCUIF__Flags_cs1_oer_ext_arr_, 0, PCUIF__Flags_cs1_oer_p_}; +const TTCN_Typedescriptor_t PCUIF__Flags_cs1_descr_ = { "@PCUIF_Types.PCUIF_Flags.cs1", &BOOLEAN_ber_, &PCUIF__Flags_cs1_raw_, &BOOLEAN_text_, &PCUIF__Flags_cs1_xer_, &PCUIF__Flags_cs1_json_, &PCUIF__Flags_cs1_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__Flags_cs1_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__Flags_cs2_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__Flags_cs2_xer_ = { {"cs2>\n", "cs2>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__Flags_cs2_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int PCUIF__Flags_cs2_oer_ext_arr_[0] = {}; +const int PCUIF__Flags_cs2_oer_p_[0] = {}; +const TTCN_OERdescriptor_t PCUIF__Flags_cs2_oer_ = { -1, FALSE, -1, FALSE, 0, 0, PCUIF__Flags_cs2_oer_ext_arr_, 0, PCUIF__Flags_cs2_oer_p_}; +const TTCN_Typedescriptor_t PCUIF__Flags_cs2_descr_ = { "@PCUIF_Types.PCUIF_Flags.cs2", &BOOLEAN_ber_, &PCUIF__Flags_cs2_raw_, &BOOLEAN_text_, &PCUIF__Flags_cs2_xer_, &PCUIF__Flags_cs2_json_, &PCUIF__Flags_cs2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__Flags_cs2_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__Flags_cs3_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__Flags_cs3_xer_ = { {"cs3>\n", "cs3>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__Flags_cs3_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int PCUIF__Flags_cs3_oer_ext_arr_[0] = {}; +const int PCUIF__Flags_cs3_oer_p_[0] = {}; +const TTCN_OERdescriptor_t PCUIF__Flags_cs3_oer_ = { -1, FALSE, -1, FALSE, 0, 0, PCUIF__Flags_cs3_oer_ext_arr_, 0, PCUIF__Flags_cs3_oer_p_}; +const TTCN_Typedescriptor_t PCUIF__Flags_cs3_descr_ = { "@PCUIF_Types.PCUIF_Flags.cs3", &BOOLEAN_ber_, &PCUIF__Flags_cs3_raw_, &BOOLEAN_text_, &PCUIF__Flags_cs3_xer_, &PCUIF__Flags_cs3_json_, &PCUIF__Flags_cs3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__Flags_cs3_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__Flags_cs4_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__Flags_cs4_xer_ = { {"cs4>\n", "cs4>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__Flags_cs4_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int PCUIF__Flags_cs4_oer_ext_arr_[0] = {}; +const int PCUIF__Flags_cs4_oer_p_[0] = {}; +const TTCN_OERdescriptor_t PCUIF__Flags_cs4_oer_ = { -1, FALSE, -1, FALSE, 0, 0, PCUIF__Flags_cs4_oer_ext_arr_, 0, PCUIF__Flags_cs4_oer_p_}; +const TTCN_Typedescriptor_t PCUIF__Flags_cs4_descr_ = { "@PCUIF_Types.PCUIF_Flags.cs4", &BOOLEAN_ber_, &PCUIF__Flags_cs4_raw_, &BOOLEAN_text_, &PCUIF__Flags_cs4_xer_, &PCUIF__Flags_cs4_json_, &PCUIF__Flags_cs4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__Flags_cs4_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__Flags_mcs1_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__Flags_mcs1_xer_ = { {"mcs1>\n", "mcs1>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__Flags_mcs1_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int PCUIF__Flags_mcs1_oer_ext_arr_[0] = {}; +const int PCUIF__Flags_mcs1_oer_p_[0] = {}; +const TTCN_OERdescriptor_t PCUIF__Flags_mcs1_oer_ = { -1, FALSE, -1, FALSE, 0, 0, PCUIF__Flags_mcs1_oer_ext_arr_, 0, PCUIF__Flags_mcs1_oer_p_}; +const TTCN_Typedescriptor_t PCUIF__Flags_mcs1_descr_ = { "@PCUIF_Types.PCUIF_Flags.mcs1", &BOOLEAN_ber_, &PCUIF__Flags_mcs1_raw_, &BOOLEAN_text_, &PCUIF__Flags_mcs1_xer_, &PCUIF__Flags_mcs1_json_, &PCUIF__Flags_mcs1_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__Flags_mcs1_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__Flags_mcs2_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__Flags_mcs2_xer_ = { {"mcs2>\n", "mcs2>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__Flags_mcs2_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int PCUIF__Flags_mcs2_oer_ext_arr_[0] = {}; +const int PCUIF__Flags_mcs2_oer_p_[0] = {}; +const TTCN_OERdescriptor_t PCUIF__Flags_mcs2_oer_ = { -1, FALSE, -1, FALSE, 0, 0, PCUIF__Flags_mcs2_oer_ext_arr_, 0, PCUIF__Flags_mcs2_oer_p_}; +const TTCN_Typedescriptor_t PCUIF__Flags_mcs2_descr_ = { "@PCUIF_Types.PCUIF_Flags.mcs2", &BOOLEAN_ber_, &PCUIF__Flags_mcs2_raw_, &BOOLEAN_text_, &PCUIF__Flags_mcs2_xer_, &PCUIF__Flags_mcs2_json_, &PCUIF__Flags_mcs2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__Flags_mcs2_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__Flags_mcs3_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__Flags_mcs3_xer_ = { {"mcs3>\n", "mcs3>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__Flags_mcs3_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int PCUIF__Flags_mcs3_oer_ext_arr_[0] = {}; +const int PCUIF__Flags_mcs3_oer_p_[0] = {}; +const TTCN_OERdescriptor_t PCUIF__Flags_mcs3_oer_ = { -1, FALSE, -1, FALSE, 0, 0, PCUIF__Flags_mcs3_oer_ext_arr_, 0, PCUIF__Flags_mcs3_oer_p_}; +const TTCN_Typedescriptor_t PCUIF__Flags_mcs3_descr_ = { "@PCUIF_Types.PCUIF_Flags.mcs3", &BOOLEAN_ber_, &PCUIF__Flags_mcs3_raw_, &BOOLEAN_text_, &PCUIF__Flags_mcs3_xer_, &PCUIF__Flags_mcs3_json_, &PCUIF__Flags_mcs3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__Flags_mcs3_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__Flags_mcs4_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__Flags_mcs4_xer_ = { {"mcs4>\n", "mcs4>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__Flags_mcs4_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int PCUIF__Flags_mcs4_oer_ext_arr_[0] = {}; +const int PCUIF__Flags_mcs4_oer_p_[0] = {}; +const TTCN_OERdescriptor_t PCUIF__Flags_mcs4_oer_ = { -1, FALSE, -1, FALSE, 0, 0, PCUIF__Flags_mcs4_oer_ext_arr_, 0, PCUIF__Flags_mcs4_oer_p_}; +const TTCN_Typedescriptor_t PCUIF__Flags_mcs4_descr_ = { "@PCUIF_Types.PCUIF_Flags.mcs4", &BOOLEAN_ber_, &PCUIF__Flags_mcs4_raw_, &BOOLEAN_text_, &PCUIF__Flags_mcs4_xer_, &PCUIF__Flags_mcs4_json_, &PCUIF__Flags_mcs4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__Flags_mcs4_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__Flags_mcs5_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__Flags_mcs5_xer_ = { {"mcs5>\n", "mcs5>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__Flags_mcs5_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int PCUIF__Flags_mcs5_oer_ext_arr_[0] = {}; +const int PCUIF__Flags_mcs5_oer_p_[0] = {}; +const TTCN_OERdescriptor_t PCUIF__Flags_mcs5_oer_ = { -1, FALSE, -1, FALSE, 0, 0, PCUIF__Flags_mcs5_oer_ext_arr_, 0, PCUIF__Flags_mcs5_oer_p_}; +const TTCN_Typedescriptor_t PCUIF__Flags_mcs5_descr_ = { "@PCUIF_Types.PCUIF_Flags.mcs5", &BOOLEAN_ber_, &PCUIF__Flags_mcs5_raw_, &BOOLEAN_text_, &PCUIF__Flags_mcs5_xer_, &PCUIF__Flags_mcs5_json_, &PCUIF__Flags_mcs5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__Flags_mcs5_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__Flags_mcs6_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__Flags_mcs6_xer_ = { {"mcs6>\n", "mcs6>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__Flags_mcs6_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int PCUIF__Flags_mcs6_oer_ext_arr_[0] = {}; +const int PCUIF__Flags_mcs6_oer_p_[0] = {}; +const TTCN_OERdescriptor_t PCUIF__Flags_mcs6_oer_ = { -1, FALSE, -1, FALSE, 0, 0, PCUIF__Flags_mcs6_oer_ext_arr_, 0, PCUIF__Flags_mcs6_oer_p_}; +const TTCN_Typedescriptor_t PCUIF__Flags_mcs6_descr_ = { "@PCUIF_Types.PCUIF_Flags.mcs6", &BOOLEAN_ber_, &PCUIF__Flags_mcs6_raw_, &BOOLEAN_text_, &PCUIF__Flags_mcs6_xer_, &PCUIF__Flags_mcs6_json_, &PCUIF__Flags_mcs6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__Flags_mcs6_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__Flags_mcs7_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__Flags_mcs7_xer_ = { {"mcs7>\n", "mcs7>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__Flags_mcs7_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int PCUIF__Flags_mcs7_oer_ext_arr_[0] = {}; +const int PCUIF__Flags_mcs7_oer_p_[0] = {}; +const TTCN_OERdescriptor_t PCUIF__Flags_mcs7_oer_ = { -1, FALSE, -1, FALSE, 0, 0, PCUIF__Flags_mcs7_oer_ext_arr_, 0, PCUIF__Flags_mcs7_oer_p_}; +const TTCN_Typedescriptor_t PCUIF__Flags_mcs7_descr_ = { "@PCUIF_Types.PCUIF_Flags.mcs7", &BOOLEAN_ber_, &PCUIF__Flags_mcs7_raw_, &BOOLEAN_text_, &PCUIF__Flags_mcs7_xer_, &PCUIF__Flags_mcs7_json_, &PCUIF__Flags_mcs7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__Flags_mcs7_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__Flags_mcs8_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__Flags_mcs8_xer_ = { {"mcs8>\n", "mcs8>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__Flags_mcs8_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int PCUIF__Flags_mcs8_oer_ext_arr_[0] = {}; +const int PCUIF__Flags_mcs8_oer_p_[0] = {}; +const TTCN_OERdescriptor_t PCUIF__Flags_mcs8_oer_ = { -1, FALSE, -1, FALSE, 0, 0, PCUIF__Flags_mcs8_oer_ext_arr_, 0, PCUIF__Flags_mcs8_oer_p_}; +const TTCN_Typedescriptor_t PCUIF__Flags_mcs8_descr_ = { "@PCUIF_Types.PCUIF_Flags.mcs8", &BOOLEAN_ber_, &PCUIF__Flags_mcs8_raw_, &BOOLEAN_text_, &PCUIF__Flags_mcs8_xer_, &PCUIF__Flags_mcs8_json_, &PCUIF__Flags_mcs8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__Flags_mcs8_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__Flags_mcs9_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__Flags_mcs9_xer_ = { {"mcs9>\n", "mcs9>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__Flags_mcs9_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int PCUIF__Flags_mcs9_oer_ext_arr_[0] = {}; +const int PCUIF__Flags_mcs9_oer_p_[0] = {}; +const TTCN_OERdescriptor_t PCUIF__Flags_mcs9_oer_ = { -1, FALSE, -1, FALSE, 0, 0, PCUIF__Flags_mcs9_oer_ext_arr_, 0, PCUIF__Flags_mcs9_oer_p_}; +const TTCN_Typedescriptor_t PCUIF__Flags_mcs9_descr_ = { "@PCUIF_Types.PCUIF_Flags.mcs9", &BOOLEAN_ber_, &PCUIF__Flags_mcs9_raw_, &BOOLEAN_text_, &PCUIF__Flags_mcs9_xer_, &PCUIF__Flags_mcs9_json_, &PCUIF__Flags_mcs9_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__Flags_mcs9_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__Flags_spare2_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,3,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__Flags_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_JSONdescriptor_t PCUIF__Flags_spare2_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__Flags_spare2_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__Flags_spare2_descr_ = { "@PCUIF_Types.PCUIF_Flags.spare2", &BITSTRING_ber_, &PCUIF__Flags_spare2_raw_, NULL, &PCUIF__Flags_spare2_xer_, &PCUIF__Flags_spare2_json_, &PCUIF__Flags_spare2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__Flags_spare2_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__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}; +// No XER for PCUIF__Flags +const TTCN_Typedescriptor_t PCUIF__Flags_descr_ = { "@PCUIF_Types.PCUIF_Flags", NULL, &PCUIF__Flags_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__Flags_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__TextType_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}; +// No XER for PCUIF__TextType +const TTCN_Typedescriptor_t PCUIF__TextType_descr_ = { "@PCUIF_Types.PCUIF_TextType", NULL, &PCUIF__TextType_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__TextType_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__Text_raw_ = {1024,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,128,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__Text_xer_ = { {"PCUIF_Text>\n", "PCUIF_Text>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__Text_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t PCUIF__Text_descr_ = { "@PCUIF_Types.PCUIF_Text", NULL, &PCUIF__Text_raw_, &CHARSTRING_text_, &PCUIF__Text_xer_, &PCUIF__Text_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__Text_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__txt__ind_txt__type_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}; +// No XER for PCUIF__txt__ind_txt__type +const TTCN_Typedescriptor_t PCUIF__txt__ind_txt__type_descr_ = { "@PCUIF_Types.PCUIF_txt_ind.txt_type", NULL, &PCUIF__txt__ind_txt__type_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__txt__ind_txt__type_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__txt__ind_text_raw_ = {1024,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,128,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__txt__ind_text_xer_ = { {"text>\n", "text>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__txt__ind_text_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_Typedescriptor_t PCUIF__txt__ind_text_descr_ = { "@PCUIF_Types.PCUIF_txt_ind.text", NULL, &PCUIF__txt__ind_text_raw_, &CHARSTRING_text_, &PCUIF__txt__ind_text_xer_, &PCUIF__txt__ind_text_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__txt__ind_text_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__txt__ind_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for PCUIF__txt__ind +const TTCN_Typedescriptor_t PCUIF__txt__ind_descr_ = { "@PCUIF_Types.PCUIF_txt_ind", NULL, &PCUIF__txt__ind_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__txt__ind_default_coding("RAW"); +const TTCN_RAWdescriptor_t OCT162_raw_ = {1296,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,162,CharCoding::UNKNOWN}; +const XERdescriptor_t OCT162_xer_ = { {"OCT162>\n", "OCT162>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t OCT162_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int OCT162_oer_ext_arr_[0] = {}; +const int OCT162_oer_p_[0] = {}; +const TTCN_OERdescriptor_t OCT162_oer_ = { -1, FALSE, -1, FALSE, 0, 0, OCT162_oer_ext_arr_, 0, OCT162_oer_p_}; +const TTCN_Typedescriptor_t OCT162_descr_ = { "@PCUIF_Types.OCT162", &OCTETSTRING_ber_, &OCT162_raw_, &OCTETSTRING_text_, &OCT162_xer_, &OCT162_json_, &OCT162_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING OCT162_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__data_sapi_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}; +// No XER for PCUIF__data_sapi +const TTCN_Typedescriptor_t PCUIF__data_sapi_descr_ = { "@PCUIF_Types.PCUIF_data.sapi", NULL, &PCUIF__data_sapi_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__data_sapi_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__data_len_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__data_len_xer_ = { {"len>\n", "len>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__data_len_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__data_len_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__data_len_descr_ = { "@PCUIF_Types.PCUIF_data.len", &INTEGER_ber_, &PCUIF__data_len_raw_, &INTEGER_text_, &PCUIF__data_len_xer_, &PCUIF__data_len_json_, &PCUIF__data_len_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__data_len_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__data_data_raw_ = {1296,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,162,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__data_data_xer_ = { {"data>\n", "data>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__data_data_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int PCUIF__data_data_oer_ext_arr_[0] = {}; +const int PCUIF__data_data_oer_p_[0] = {}; +const TTCN_OERdescriptor_t PCUIF__data_data_oer_ = { -1, FALSE, -1, FALSE, 0, 0, PCUIF__data_data_oer_ext_arr_, 0, PCUIF__data_data_oer_p_}; +const TTCN_Typedescriptor_t PCUIF__data_data_descr_ = { "@PCUIF_Types.PCUIF_data.data", &OCTETSTRING_ber_, &PCUIF__data_data_raw_, &OCTETSTRING_text_, &PCUIF__data_data_xer_, &PCUIF__data_data_json_, &PCUIF__data_data_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__data_data_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__data_fn_raw_ = {32,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}; +const XERdescriptor_t PCUIF__data_fn_xer_ = { {"fn>\n", "fn>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__data_fn_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__data_fn_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__data_fn_descr_ = { "@PCUIF_Types.PCUIF_data.fn", &INTEGER_ber_, &PCUIF__data_fn_raw_, &INTEGER_text_, &PCUIF__data_fn_xer_, &PCUIF__data_fn_json_, &PCUIF__data_fn_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__data_fn_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__data_arfcn_raw_ = {16,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}; +const XERdescriptor_t PCUIF__data_arfcn_xer_ = { {"arfcn>\n", "arfcn>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__data_arfcn_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__data_arfcn_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__data_arfcn_descr_ = { "@PCUIF_Types.PCUIF_data.arfcn", &INTEGER_ber_, &PCUIF__data_arfcn_raw_, &INTEGER_text_, &PCUIF__data_arfcn_xer_, &PCUIF__data_arfcn_json_, &PCUIF__data_arfcn_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__data_arfcn_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__data_trx__nr_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__data_trx__nr_xer_ = { {"trx_nr>\n", "trx_nr>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__data_trx__nr_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__data_trx__nr_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__data_trx__nr_descr_ = { "@PCUIF_Types.PCUIF_data.trx_nr", &INTEGER_ber_, &PCUIF__data_trx__nr_raw_, &INTEGER_text_, &PCUIF__data_trx__nr_xer_, &PCUIF__data_trx__nr_json_, &PCUIF__data_trx__nr_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__data_trx__nr_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__data_ts__nr_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__data_ts__nr_xer_ = { {"ts_nr>\n", "ts_nr>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__data_ts__nr_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__data_ts__nr_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__data_ts__nr_descr_ = { "@PCUIF_Types.PCUIF_data.ts_nr", &INTEGER_ber_, &PCUIF__data_ts__nr_raw_, &INTEGER_text_, &PCUIF__data_ts__nr_xer_, &PCUIF__data_ts__nr_json_, &PCUIF__data_ts__nr_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__data_ts__nr_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__data_block__nr_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__data_block__nr_xer_ = { {"block_nr>\n", "block_nr>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__data_block__nr_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__data_block__nr_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__data_block__nr_descr_ = { "@PCUIF_Types.PCUIF_data.block_nr", &INTEGER_ber_, &PCUIF__data_block__nr_raw_, &INTEGER_text_, &PCUIF__data_block__nr_xer_, &PCUIF__data_block__nr_json_, &PCUIF__data_block__nr_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__data_block__nr_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__data_rssi_raw_ = {8,SG_SG_BIT,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}; +const XERdescriptor_t PCUIF__data_rssi_xer_ = { {"rssi>\n", "rssi>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__data_rssi_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__data_rssi_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__data_rssi_descr_ = { "@PCUIF_Types.PCUIF_data.rssi", &INTEGER_ber_, &PCUIF__data_rssi_raw_, &INTEGER_text_, &PCUIF__data_rssi_xer_, &PCUIF__data_rssi_json_, &PCUIF__data_rssi_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__data_rssi_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__data_ber10k_raw_ = {16,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}; +const XERdescriptor_t PCUIF__data_ber10k_xer_ = { {"ber10k>\n", "ber10k>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__data_ber10k_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__data_ber10k_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__data_ber10k_descr_ = { "@PCUIF_Types.PCUIF_data.ber10k", &INTEGER_ber_, &PCUIF__data_ber10k_raw_, &INTEGER_text_, &PCUIF__data_ber10k_xer_, &PCUIF__data_ber10k_json_, &PCUIF__data_ber10k_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__data_ber10k_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__data_ta__offs__qbits_raw_ = {16,SG_SG_BIT,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}; +const XERdescriptor_t PCUIF__data_ta__offs__qbits_xer_ = { {"ta_offs_qbits>\n", "ta_offs_qbits>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__data_ta__offs__qbits_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__data_ta__offs__qbits_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__data_ta__offs__qbits_descr_ = { "@PCUIF_Types.PCUIF_data.ta_offs_qbits", &INTEGER_ber_, &PCUIF__data_ta__offs__qbits_raw_, &INTEGER_text_, &PCUIF__data_ta__offs__qbits_xer_, &PCUIF__data_ta__offs__qbits_json_, &PCUIF__data_ta__offs__qbits_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__data_ta__offs__qbits_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__data_lqual__cb_raw_ = {16,SG_SG_BIT,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}; +const XERdescriptor_t PCUIF__data_lqual__cb_xer_ = { {"lqual_cb>\n", "lqual_cb>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__data_lqual__cb_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__data_lqual__cb_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__data_lqual__cb_descr_ = { "@PCUIF_Types.PCUIF_data.lqual_cb", &INTEGER_ber_, &PCUIF__data_lqual__cb_raw_, &INTEGER_text_, &PCUIF__data_lqual__cb_xer_, &PCUIF__data_lqual__cb_json_, &PCUIF__data_lqual__cb_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__data_lqual__cb_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__data_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for PCUIF__data +const TTCN_Typedescriptor_t PCUIF__data_descr_ = { "@PCUIF_Types.PCUIF_data", NULL, &PCUIF__data_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__data_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__data__cnf__dt_sapi_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}; +// No XER for PCUIF__data__cnf__dt_sapi +const TTCN_Typedescriptor_t PCUIF__data__cnf__dt_sapi_descr_ = { "@PCUIF_Types.PCUIF_data_cnf_dt.sapi", NULL, &PCUIF__data__cnf__dt_sapi_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__data__cnf__dt_sapi_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__data__cnf__dt_tlli_raw_ = {32,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,4,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__data__cnf__dt_tlli_xer_ = { {"tlli>\n", "tlli>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__data__cnf__dt_tlli_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int PCUIF__data__cnf__dt_tlli_oer_ext_arr_[0] = {}; +const int PCUIF__data__cnf__dt_tlli_oer_p_[0] = {}; +const TTCN_OERdescriptor_t PCUIF__data__cnf__dt_tlli_oer_ = { -1, FALSE, -1, FALSE, 0, 0, PCUIF__data__cnf__dt_tlli_oer_ext_arr_, 0, PCUIF__data__cnf__dt_tlli_oer_p_}; +const TTCN_Typedescriptor_t PCUIF__data__cnf__dt_tlli_descr_ = { "@PCUIF_Types.PCUIF_data_cnf_dt.tlli", &OCTETSTRING_ber_, &PCUIF__data__cnf__dt_tlli_raw_, &OCTETSTRING_text_, &PCUIF__data__cnf__dt_tlli_xer_, &PCUIF__data__cnf__dt_tlli_json_, &PCUIF__data__cnf__dt_tlli_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__data__cnf__dt_tlli_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__data__cnf__dt_fn_raw_ = {32,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}; +const XERdescriptor_t PCUIF__data__cnf__dt_fn_xer_ = { {"fn>\n", "fn>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__data__cnf__dt_fn_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__data__cnf__dt_fn_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__data__cnf__dt_fn_descr_ = { "@PCUIF_Types.PCUIF_data_cnf_dt.fn", &INTEGER_ber_, &PCUIF__data__cnf__dt_fn_raw_, &INTEGER_text_, &PCUIF__data__cnf__dt_fn_xer_, &PCUIF__data__cnf__dt_fn_json_, &PCUIF__data__cnf__dt_fn_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__data__cnf__dt_fn_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__data__cnf__dt_arfcn_raw_ = {16,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}; +const XERdescriptor_t PCUIF__data__cnf__dt_arfcn_xer_ = { {"arfcn>\n", "arfcn>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__data__cnf__dt_arfcn_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__data__cnf__dt_arfcn_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__data__cnf__dt_arfcn_descr_ = { "@PCUIF_Types.PCUIF_data_cnf_dt.arfcn", &INTEGER_ber_, &PCUIF__data__cnf__dt_arfcn_raw_, &INTEGER_text_, &PCUIF__data__cnf__dt_arfcn_xer_, &PCUIF__data__cnf__dt_arfcn_json_, &PCUIF__data__cnf__dt_arfcn_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__data__cnf__dt_arfcn_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__data__cnf__dt_trx__nr_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__data__cnf__dt_trx__nr_xer_ = { {"trx_nr>\n", "trx_nr>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__data__cnf__dt_trx__nr_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__data__cnf__dt_trx__nr_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__data__cnf__dt_trx__nr_descr_ = { "@PCUIF_Types.PCUIF_data_cnf_dt.trx_nr", &INTEGER_ber_, &PCUIF__data__cnf__dt_trx__nr_raw_, &INTEGER_text_, &PCUIF__data__cnf__dt_trx__nr_xer_, &PCUIF__data__cnf__dt_trx__nr_json_, &PCUIF__data__cnf__dt_trx__nr_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__data__cnf__dt_trx__nr_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__data__cnf__dt_ts__nr_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__data__cnf__dt_ts__nr_xer_ = { {"ts_nr>\n", "ts_nr>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__data__cnf__dt_ts__nr_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__data__cnf__dt_ts__nr_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__data__cnf__dt_ts__nr_descr_ = { "@PCUIF_Types.PCUIF_data_cnf_dt.ts_nr", &INTEGER_ber_, &PCUIF__data__cnf__dt_ts__nr_raw_, &INTEGER_text_, &PCUIF__data__cnf__dt_ts__nr_xer_, &PCUIF__data__cnf__dt_ts__nr_json_, &PCUIF__data__cnf__dt_ts__nr_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__data__cnf__dt_ts__nr_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__data__cnf__dt_block__nr_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__data__cnf__dt_block__nr_xer_ = { {"block_nr>\n", "block_nr>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__data__cnf__dt_block__nr_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__data__cnf__dt_block__nr_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__data__cnf__dt_block__nr_descr_ = { "@PCUIF_Types.PCUIF_data_cnf_dt.block_nr", &INTEGER_ber_, &PCUIF__data__cnf__dt_block__nr_raw_, &INTEGER_text_, &PCUIF__data__cnf__dt_block__nr_xer_, &PCUIF__data__cnf__dt_block__nr_json_, &PCUIF__data__cnf__dt_block__nr_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__data__cnf__dt_block__nr_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__data__cnf__dt_rssi_raw_ = {8,SG_SG_BIT,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}; +const XERdescriptor_t PCUIF__data__cnf__dt_rssi_xer_ = { {"rssi>\n", "rssi>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__data__cnf__dt_rssi_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__data__cnf__dt_rssi_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__data__cnf__dt_rssi_descr_ = { "@PCUIF_Types.PCUIF_data_cnf_dt.rssi", &INTEGER_ber_, &PCUIF__data__cnf__dt_rssi_raw_, &INTEGER_text_, &PCUIF__data__cnf__dt_rssi_xer_, &PCUIF__data__cnf__dt_rssi_json_, &PCUIF__data__cnf__dt_rssi_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__data__cnf__dt_rssi_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__data__cnf__dt_ber10k_raw_ = {16,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}; +const XERdescriptor_t PCUIF__data__cnf__dt_ber10k_xer_ = { {"ber10k>\n", "ber10k>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__data__cnf__dt_ber10k_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__data__cnf__dt_ber10k_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__data__cnf__dt_ber10k_descr_ = { "@PCUIF_Types.PCUIF_data_cnf_dt.ber10k", &INTEGER_ber_, &PCUIF__data__cnf__dt_ber10k_raw_, &INTEGER_text_, &PCUIF__data__cnf__dt_ber10k_xer_, &PCUIF__data__cnf__dt_ber10k_json_, &PCUIF__data__cnf__dt_ber10k_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__data__cnf__dt_ber10k_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__data__cnf__dt_ta__offs__qbits_raw_ = {16,SG_SG_BIT,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}; +const XERdescriptor_t PCUIF__data__cnf__dt_ta__offs__qbits_xer_ = { {"ta_offs_qbits>\n", "ta_offs_qbits>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__data__cnf__dt_ta__offs__qbits_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__data__cnf__dt_ta__offs__qbits_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__data__cnf__dt_ta__offs__qbits_descr_ = { "@PCUIF_Types.PCUIF_data_cnf_dt.ta_offs_qbits", &INTEGER_ber_, &PCUIF__data__cnf__dt_ta__offs__qbits_raw_, &INTEGER_text_, &PCUIF__data__cnf__dt_ta__offs__qbits_xer_, &PCUIF__data__cnf__dt_ta__offs__qbits_json_, &PCUIF__data__cnf__dt_ta__offs__qbits_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__data__cnf__dt_ta__offs__qbits_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__data__cnf__dt_lqual__cb_raw_ = {16,SG_SG_BIT,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}; +const XERdescriptor_t PCUIF__data__cnf__dt_lqual__cb_xer_ = { {"lqual_cb>\n", "lqual_cb>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__data__cnf__dt_lqual__cb_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__data__cnf__dt_lqual__cb_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__data__cnf__dt_lqual__cb_descr_ = { "@PCUIF_Types.PCUIF_data_cnf_dt.lqual_cb", &INTEGER_ber_, &PCUIF__data__cnf__dt_lqual__cb_raw_, &INTEGER_text_, &PCUIF__data__cnf__dt_lqual__cb_xer_, &PCUIF__data__cnf__dt_lqual__cb_json_, &PCUIF__data__cnf__dt_lqual__cb_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__data__cnf__dt_lqual__cb_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__data__cnf__dt_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for PCUIF__data__cnf__dt +const TTCN_Typedescriptor_t PCUIF__data__cnf__dt_descr_ = { "@PCUIF_Types.PCUIF_data_cnf_dt", NULL, &PCUIF__data__cnf__dt_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__data__cnf__dt_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__rts__req_sapi_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}; +// No XER for PCUIF__rts__req_sapi +const TTCN_Typedescriptor_t PCUIF__rts__req_sapi_descr_ = { "@PCUIF_Types.PCUIF_rts_req.sapi", NULL, &PCUIF__rts__req_sapi_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__rts__req_sapi_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__rts__req_spare_raw_ = {24,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,3,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__rts__req_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_JSONdescriptor_t PCUIF__rts__req_spare_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int PCUIF__rts__req_spare_oer_ext_arr_[0] = {}; +const int PCUIF__rts__req_spare_oer_p_[0] = {}; +const TTCN_OERdescriptor_t PCUIF__rts__req_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, PCUIF__rts__req_spare_oer_ext_arr_, 0, PCUIF__rts__req_spare_oer_p_}; +const TTCN_Typedescriptor_t PCUIF__rts__req_spare_descr_ = { "@PCUIF_Types.PCUIF_rts_req.spare", &OCTETSTRING_ber_, &PCUIF__rts__req_spare_raw_, &OCTETSTRING_text_, &PCUIF__rts__req_spare_xer_, &PCUIF__rts__req_spare_json_, &PCUIF__rts__req_spare_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__rts__req_spare_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__rts__req_fn_raw_ = {32,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}; +const XERdescriptor_t PCUIF__rts__req_fn_xer_ = { {"fn>\n", "fn>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__rts__req_fn_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__rts__req_fn_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__rts__req_fn_descr_ = { "@PCUIF_Types.PCUIF_rts_req.fn", &INTEGER_ber_, &PCUIF__rts__req_fn_raw_, &INTEGER_text_, &PCUIF__rts__req_fn_xer_, &PCUIF__rts__req_fn_json_, &PCUIF__rts__req_fn_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__rts__req_fn_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__rts__req_arfcn_raw_ = {16,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}; +const XERdescriptor_t PCUIF__rts__req_arfcn_xer_ = { {"arfcn>\n", "arfcn>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__rts__req_arfcn_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__rts__req_arfcn_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__rts__req_arfcn_descr_ = { "@PCUIF_Types.PCUIF_rts_req.arfcn", &INTEGER_ber_, &PCUIF__rts__req_arfcn_raw_, &INTEGER_text_, &PCUIF__rts__req_arfcn_xer_, &PCUIF__rts__req_arfcn_json_, &PCUIF__rts__req_arfcn_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__rts__req_arfcn_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__rts__req_trx__nr_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__rts__req_trx__nr_xer_ = { {"trx_nr>\n", "trx_nr>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__rts__req_trx__nr_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__rts__req_trx__nr_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__rts__req_trx__nr_descr_ = { "@PCUIF_Types.PCUIF_rts_req.trx_nr", &INTEGER_ber_, &PCUIF__rts__req_trx__nr_raw_, &INTEGER_text_, &PCUIF__rts__req_trx__nr_xer_, &PCUIF__rts__req_trx__nr_json_, &PCUIF__rts__req_trx__nr_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__rts__req_trx__nr_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__rts__req_ts__nr_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__rts__req_ts__nr_xer_ = { {"ts_nr>\n", "ts_nr>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__rts__req_ts__nr_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__rts__req_ts__nr_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__rts__req_ts__nr_descr_ = { "@PCUIF_Types.PCUIF_rts_req.ts_nr", &INTEGER_ber_, &PCUIF__rts__req_ts__nr_raw_, &INTEGER_text_, &PCUIF__rts__req_ts__nr_xer_, &PCUIF__rts__req_ts__nr_json_, &PCUIF__rts__req_ts__nr_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__rts__req_ts__nr_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__rts__req_block__nr_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__rts__req_block__nr_xer_ = { {"block_nr>\n", "block_nr>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__rts__req_block__nr_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__rts__req_block__nr_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__rts__req_block__nr_descr_ = { "@PCUIF_Types.PCUIF_rts_req.block_nr", &INTEGER_ber_, &PCUIF__rts__req_block__nr_raw_, &INTEGER_text_, &PCUIF__rts__req_block__nr_xer_, &PCUIF__rts__req_block__nr_json_, &PCUIF__rts__req_block__nr_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__rts__req_block__nr_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__rts__req_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for PCUIF__rts__req +const TTCN_Typedescriptor_t PCUIF__rts__req_descr_ = { "@PCUIF_Types.PCUIF_rts_req", NULL, &PCUIF__rts__req_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__rts__req_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__rach__ind_sapi_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}; +// No XER for PCUIF__rach__ind_sapi +const TTCN_Typedescriptor_t PCUIF__rach__ind_sapi_descr_ = { "@PCUIF_Types.PCUIF_rach_ind.sapi", NULL, &PCUIF__rach__ind_sapi_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__rach__ind_sapi_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__rach__ind_ra_raw_ = {16,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}; +const XERdescriptor_t PCUIF__rach__ind_ra_xer_ = { {"ra>\n", "ra>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__rach__ind_ra_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__rach__ind_ra_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__rach__ind_ra_descr_ = { "@PCUIF_Types.PCUIF_rach_ind.ra", &INTEGER_ber_, &PCUIF__rach__ind_ra_raw_, &INTEGER_text_, &PCUIF__rach__ind_ra_xer_, &PCUIF__rach__ind_ra_json_, &PCUIF__rach__ind_ra_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__rach__ind_ra_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__rach__ind_qta_raw_ = {16,SG_SG_BIT,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}; +const XERdescriptor_t PCUIF__rach__ind_qta_xer_ = { {"qta>\n", "qta>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__rach__ind_qta_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__rach__ind_qta_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__rach__ind_qta_descr_ = { "@PCUIF_Types.PCUIF_rach_ind.qta", &INTEGER_ber_, &PCUIF__rach__ind_qta_raw_, &INTEGER_text_, &PCUIF__rach__ind_qta_xer_, &PCUIF__rach__ind_qta_json_, &PCUIF__rach__ind_qta_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__rach__ind_qta_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__rach__ind_fn_raw_ = {32,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}; +const XERdescriptor_t PCUIF__rach__ind_fn_xer_ = { {"fn>\n", "fn>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__rach__ind_fn_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__rach__ind_fn_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__rach__ind_fn_descr_ = { "@PCUIF_Types.PCUIF_rach_ind.fn", &INTEGER_ber_, &PCUIF__rach__ind_fn_raw_, &INTEGER_text_, &PCUIF__rach__ind_fn_xer_, &PCUIF__rach__ind_fn_json_, &PCUIF__rach__ind_fn_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__rach__ind_fn_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__rach__ind_arfcn_raw_ = {16,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}; +const XERdescriptor_t PCUIF__rach__ind_arfcn_xer_ = { {"arfcn>\n", "arfcn>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__rach__ind_arfcn_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__rach__ind_arfcn_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__rach__ind_arfcn_descr_ = { "@PCUIF_Types.PCUIF_rach_ind.arfcn", &INTEGER_ber_, &PCUIF__rach__ind_arfcn_raw_, &INTEGER_text_, &PCUIF__rach__ind_arfcn_xer_, &PCUIF__rach__ind_arfcn_json_, &PCUIF__rach__ind_arfcn_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__rach__ind_arfcn_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__rach__ind_is__11bit_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__rach__ind_is__11bit_xer_ = { {"is_11bit>\n", "is_11bit>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__rach__ind_is__11bit_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__rach__ind_is__11bit_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__rach__ind_is__11bit_descr_ = { "@PCUIF_Types.PCUIF_rach_ind.is_11bit", &INTEGER_ber_, &PCUIF__rach__ind_is__11bit_raw_, &INTEGER_text_, &PCUIF__rach__ind_is__11bit_xer_, &PCUIF__rach__ind_is__11bit_json_, &PCUIF__rach__ind_is__11bit_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__rach__ind_is__11bit_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__rach__ind_burst__type_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__rach__ind_burst__type_xer_ = { {"burst_type>\n", "burst_type>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__rach__ind_burst__type_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__rach__ind_burst__type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__rach__ind_burst__type_descr_ = { "@PCUIF_Types.PCUIF_rach_ind.burst_type", &INTEGER_ber_, &PCUIF__rach__ind_burst__type_raw_, &INTEGER_text_, &PCUIF__rach__ind_burst__type_xer_, &PCUIF__rach__ind_burst__type_json_, &PCUIF__rach__ind_burst__type_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__rach__ind_burst__type_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__rach__ind_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for PCUIF__rach__ind +const TTCN_Typedescriptor_t PCUIF__rach__ind_descr_ = { "@PCUIF_Types.PCUIF_rach_ind", NULL, &PCUIF__rach__ind_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__rach__ind_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__InfoTrx_arfcn_raw_ = {16,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}; +const XERdescriptor_t PCUIF__InfoTrx_arfcn_xer_ = { {"arfcn>\n", "arfcn>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__InfoTrx_arfcn_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__InfoTrx_arfcn_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__InfoTrx_arfcn_descr_ = { "@PCUIF_Types.PCUIF_InfoTrx.arfcn", &INTEGER_ber_, &PCUIF__InfoTrx_arfcn_raw_, &INTEGER_text_, &PCUIF__InfoTrx_arfcn_xer_, &PCUIF__InfoTrx_arfcn_json_, &PCUIF__InfoTrx_arfcn_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__InfoTrx_arfcn_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__InfoTrx_pdch__mask_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,8,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__InfoTrx_pdch__mask_xer_ = { {"pdch_mask>\n", "pdch_mask>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__InfoTrx_pdch__mask_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__InfoTrx_pdch__mask_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__InfoTrx_pdch__mask_descr_ = { "@PCUIF_Types.PCUIF_InfoTrx.pdch_mask", &BITSTRING_ber_, &PCUIF__InfoTrx_pdch__mask_raw_, NULL, &PCUIF__InfoTrx_pdch__mask_xer_, &PCUIF__InfoTrx_pdch__mask_json_, &PCUIF__InfoTrx_pdch__mask_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__InfoTrx_pdch__mask_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__InfoTrx_spare_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}; +const XERdescriptor_t PCUIF__InfoTrx_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_JSONdescriptor_t PCUIF__InfoTrx_spare_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int PCUIF__InfoTrx_spare_oer_ext_arr_[0] = {}; +const int PCUIF__InfoTrx_spare_oer_p_[0] = {}; +const TTCN_OERdescriptor_t PCUIF__InfoTrx_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, PCUIF__InfoTrx_spare_oer_ext_arr_, 0, PCUIF__InfoTrx_spare_oer_p_}; +const TTCN_Typedescriptor_t PCUIF__InfoTrx_spare_descr_ = { "@PCUIF_Types.PCUIF_InfoTrx.spare", &OCTETSTRING_ber_, &PCUIF__InfoTrx_spare_raw_, &OCTETSTRING_text_, &PCUIF__InfoTrx_spare_xer_, &PCUIF__InfoTrx_spare_json_, &PCUIF__InfoTrx_spare_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__InfoTrx_spare_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__InfoTrx_tsc_raw_ = {64,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,8,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__InfoTrx_tsc_xer_ = { {"tsc>\n", "tsc>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__InfoTrx_tsc_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int PCUIF__InfoTrx_tsc_oer_ext_arr_[0] = {}; +const int PCUIF__InfoTrx_tsc_oer_p_[0] = {}; +const TTCN_OERdescriptor_t PCUIF__InfoTrx_tsc_oer_ = { -1, FALSE, -1, FALSE, 0, 0, PCUIF__InfoTrx_tsc_oer_ext_arr_, 0, PCUIF__InfoTrx_tsc_oer_p_}; +const TTCN_Typedescriptor_t PCUIF__InfoTrx_tsc_descr_ = { "@PCUIF_Types.PCUIF_InfoTrx.tsc", &OCTETSTRING_ber_, &PCUIF__InfoTrx_tsc_raw_, &OCTETSTRING_text_, &PCUIF__InfoTrx_tsc_xer_, &PCUIF__InfoTrx_tsc_json_, &PCUIF__InfoTrx_tsc_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__InfoTrx_tsc_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__InfoTrx_hLayer1_raw_ = {32,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}; +const XERdescriptor_t PCUIF__InfoTrx_hLayer1_xer_ = { {"hLayer1>\n", "hLayer1>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__InfoTrx_hLayer1_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__InfoTrx_hLayer1_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__InfoTrx_hLayer1_descr_ = { "@PCUIF_Types.PCUIF_InfoTrx.hLayer1", &INTEGER_ber_, &PCUIF__InfoTrx_hLayer1_raw_, &INTEGER_text_, &PCUIF__InfoTrx_hLayer1_xer_, &PCUIF__InfoTrx_hLayer1_json_, &PCUIF__InfoTrx_hLayer1_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__InfoTrx_hLayer1_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__InfoTrx_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for PCUIF__InfoTrx +const TTCN_Typedescriptor_t PCUIF__InfoTrx_descr_ = { "@PCUIF_Types.PCUIF_InfoTrx", NULL, &PCUIF__InfoTrx_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__InfoTrx_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__info__ind_version_raw_ = {32,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}; +const XERdescriptor_t PCUIF__info__ind_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_JSONdescriptor_t PCUIF__info__ind_version_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__info__ind_version_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__info__ind_version_descr_ = { "@PCUIF_Types.PCUIF_info_ind.version", &INTEGER_ber_, &PCUIF__info__ind_version_raw_, &INTEGER_text_, &PCUIF__info__ind_version_xer_, &PCUIF__info__ind_version_json_, &PCUIF__info__ind_version_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__info__ind_version_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__info__ind_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}; +// No XER for PCUIF__info__ind_flags +const TTCN_Typedescriptor_t PCUIF__info__ind_flags_descr_ = { "@PCUIF_Types.PCUIF_info_ind.flags", NULL, &PCUIF__info__ind_flags_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__info__ind_flags_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__info__ind_trx_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}; +// No XER for PCUIF__info__ind_trx +const TTCN_Typedescriptor_t PCUIF__info__ind_trx_descr_ = { "@PCUIF_Types.PCUIF_info_ind.trx", NULL, &PCUIF__info__ind_trx_raw_, NULL, NULL, NULL, NULL, &PCUIF__info__ind_trx_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; +const TTCN_RAWdescriptor_t PCUIF__info__ind_trx_0_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for PCUIF__info__ind_trx_0 +const TTCN_Typedescriptor_t PCUIF__info__ind_trx_0_descr_ = { "@PCUIF_Types.PCUIF_info_ind.trx.", NULL, &PCUIF__info__ind_trx_0_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__info__ind_trx_0_default_coding("RAW"); +UNIVERSAL_CHARSTRING PCUIF__info__ind_trx_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__info__ind_bsic_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__info__ind_bsic_xer_ = { {"bsic>\n", "bsic>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__info__ind_bsic_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__info__ind_bsic_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__info__ind_bsic_descr_ = { "@PCUIF_Types.PCUIF_info_ind.bsic", &INTEGER_ber_, &PCUIF__info__ind_bsic_raw_, &INTEGER_text_, &PCUIF__info__ind_bsic_xer_, &PCUIF__info__ind_bsic_json_, &PCUIF__info__ind_bsic_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__info__ind_bsic_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__info__ind_mcc_raw_ = {16,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}; +const XERdescriptor_t PCUIF__info__ind_mcc_xer_ = { {"mcc>\n", "mcc>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__info__ind_mcc_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__info__ind_mcc_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__info__ind_mcc_descr_ = { "@PCUIF_Types.PCUIF_info_ind.mcc", &INTEGER_ber_, &PCUIF__info__ind_mcc_raw_, &INTEGER_text_, &PCUIF__info__ind_mcc_xer_, &PCUIF__info__ind_mcc_json_, &PCUIF__info__ind_mcc_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__info__ind_mcc_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__info__ind_mnc_raw_ = {16,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}; +const XERdescriptor_t PCUIF__info__ind_mnc_xer_ = { {"mnc>\n", "mnc>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__info__ind_mnc_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__info__ind_mnc_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__info__ind_mnc_descr_ = { "@PCUIF_Types.PCUIF_info_ind.mnc", &INTEGER_ber_, &PCUIF__info__ind_mnc_raw_, &INTEGER_text_, &PCUIF__info__ind_mnc_xer_, &PCUIF__info__ind_mnc_json_, &PCUIF__info__ind_mnc_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__info__ind_mnc_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__info__ind_mnc__3__digits_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__info__ind_mnc__3__digits_xer_ = { {"mnc_3_digits>\n", "mnc_3_digits>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__info__ind_mnc__3__digits_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__info__ind_mnc__3__digits_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__info__ind_mnc__3__digits_descr_ = { "@PCUIF_Types.PCUIF_info_ind.mnc_3_digits", &INTEGER_ber_, &PCUIF__info__ind_mnc__3__digits_raw_, &INTEGER_text_, &PCUIF__info__ind_mnc__3__digits_xer_, &PCUIF__info__ind_mnc__3__digits_json_, &PCUIF__info__ind_mnc__3__digits_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__info__ind_mnc__3__digits_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__info__ind_lac_raw_ = {16,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}; +const XERdescriptor_t PCUIF__info__ind_lac_xer_ = { {"lac>\n", "lac>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__info__ind_lac_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__info__ind_lac_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__info__ind_lac_descr_ = { "@PCUIF_Types.PCUIF_info_ind.lac", &INTEGER_ber_, &PCUIF__info__ind_lac_raw_, &INTEGER_text_, &PCUIF__info__ind_lac_xer_, &PCUIF__info__ind_lac_json_, &PCUIF__info__ind_lac_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__info__ind_lac_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__info__ind_rac_raw_ = {16,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}; +const XERdescriptor_t PCUIF__info__ind_rac_xer_ = { {"rac>\n", "rac>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__info__ind_rac_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__info__ind_rac_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__info__ind_rac_descr_ = { "@PCUIF_Types.PCUIF_info_ind.rac", &INTEGER_ber_, &PCUIF__info__ind_rac_raw_, &INTEGER_text_, &PCUIF__info__ind_rac_xer_, &PCUIF__info__ind_rac_json_, &PCUIF__info__ind_rac_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__info__ind_rac_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__info__ind_nsei_raw_ = {16,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}; +const XERdescriptor_t PCUIF__info__ind_nsei_xer_ = { {"nsei>\n", "nsei>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__info__ind_nsei_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__info__ind_nsei_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__info__ind_nsei_descr_ = { "@PCUIF_Types.PCUIF_info_ind.nsei", &INTEGER_ber_, &PCUIF__info__ind_nsei_raw_, &INTEGER_text_, &PCUIF__info__ind_nsei_xer_, &PCUIF__info__ind_nsei_json_, &PCUIF__info__ind_nsei_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__info__ind_nsei_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__info__ind_nse__timer_raw_ = {7,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for PCUIF__info__ind_nse__timer +const TTCN_Typedescriptor_t PCUIF__info__ind_nse__timer_descr_ = { "@PCUIF_Types.PCUIF_info_ind.nse_timer", NULL, &PCUIF__info__ind_nse__timer_raw_, NULL, NULL, NULL, NULL, &PCUIF__info__ind_nse__timer_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; +const TTCN_RAWdescriptor_t PCUIF__info__ind_nse__timer_0_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__info__ind_nse__timer_0_xer_ = { {"uint8_t>\n", "uint8_t>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__info__ind_nse__timer_0_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__info__ind_nse__timer_0_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__info__ind_nse__timer_0_descr_ = { "@PCUIF_Types.PCUIF_info_ind.nse_timer.", &INTEGER_ber_, &PCUIF__info__ind_nse__timer_0_raw_, &INTEGER_text_, &PCUIF__info__ind_nse__timer_0_xer_, &PCUIF__info__ind_nse__timer_0_json_, &PCUIF__info__ind_nse__timer_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__info__ind_nse__timer_0_default_coding("RAW"); +UNIVERSAL_CHARSTRING PCUIF__info__ind_nse__timer_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__info__ind_cell__timer_raw_ = {11,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for PCUIF__info__ind_cell__timer +const TTCN_Typedescriptor_t PCUIF__info__ind_cell__timer_descr_ = { "@PCUIF_Types.PCUIF_info_ind.cell_timer", NULL, &PCUIF__info__ind_cell__timer_raw_, NULL, NULL, NULL, NULL, &PCUIF__info__ind_cell__timer_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; +const TTCN_RAWdescriptor_t PCUIF__info__ind_cell__timer_0_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__info__ind_cell__timer_0_xer_ = { {"uint8_t>\n", "uint8_t>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__info__ind_cell__timer_0_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__info__ind_cell__timer_0_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__info__ind_cell__timer_0_descr_ = { "@PCUIF_Types.PCUIF_info_ind.cell_timer.", &INTEGER_ber_, &PCUIF__info__ind_cell__timer_0_raw_, &INTEGER_text_, &PCUIF__info__ind_cell__timer_0_xer_, &PCUIF__info__ind_cell__timer_0_json_, &PCUIF__info__ind_cell__timer_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__info__ind_cell__timer_0_default_coding("RAW"); +UNIVERSAL_CHARSTRING PCUIF__info__ind_cell__timer_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__info__ind_cell__id_raw_ = {16,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}; +const XERdescriptor_t PCUIF__info__ind_cell__id_xer_ = { {"cell_id>\n", "cell_id>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__info__ind_cell__id_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__info__ind_cell__id_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__info__ind_cell__id_descr_ = { "@PCUIF_Types.PCUIF_info_ind.cell_id", &INTEGER_ber_, &PCUIF__info__ind_cell__id_raw_, &INTEGER_text_, &PCUIF__info__ind_cell__id_xer_, &PCUIF__info__ind_cell__id_json_, &PCUIF__info__ind_cell__id_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__info__ind_cell__id_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__info__ind_repeat__time_raw_ = {16,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}; +const XERdescriptor_t PCUIF__info__ind_repeat__time_xer_ = { {"repeat_time>\n", "repeat_time>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__info__ind_repeat__time_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__info__ind_repeat__time_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__info__ind_repeat__time_descr_ = { "@PCUIF_Types.PCUIF_info_ind.repeat_time", &INTEGER_ber_, &PCUIF__info__ind_repeat__time_raw_, &INTEGER_text_, &PCUIF__info__ind_repeat__time_xer_, &PCUIF__info__ind_repeat__time_json_, &PCUIF__info__ind_repeat__time_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__info__ind_repeat__time_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__info__ind_repeat__count_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__info__ind_repeat__count_xer_ = { {"repeat_count>\n", "repeat_count>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__info__ind_repeat__count_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__info__ind_repeat__count_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__info__ind_repeat__count_descr_ = { "@PCUIF_Types.PCUIF_info_ind.repeat_count", &INTEGER_ber_, &PCUIF__info__ind_repeat__count_raw_, &INTEGER_text_, &PCUIF__info__ind_repeat__count_xer_, &PCUIF__info__ind_repeat__count_json_, &PCUIF__info__ind_repeat__count_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__info__ind_repeat__count_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__info__ind_bvci_raw_ = {16,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}; +const XERdescriptor_t PCUIF__info__ind_bvci_xer_ = { {"bvci>\n", "bvci>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__info__ind_bvci_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__info__ind_bvci_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__info__ind_bvci_descr_ = { "@PCUIF_Types.PCUIF_info_ind.bvci", &INTEGER_ber_, &PCUIF__info__ind_bvci_raw_, &INTEGER_text_, &PCUIF__info__ind_bvci_xer_, &PCUIF__info__ind_bvci_json_, &PCUIF__info__ind_bvci_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__info__ind_bvci_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__info__ind_t3142_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__info__ind_t3142_xer_ = { {"t3142>\n", "t3142>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__info__ind_t3142_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__info__ind_t3142_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__info__ind_t3142_descr_ = { "@PCUIF_Types.PCUIF_info_ind.t3142", &INTEGER_ber_, &PCUIF__info__ind_t3142_raw_, &INTEGER_text_, &PCUIF__info__ind_t3142_xer_, &PCUIF__info__ind_t3142_json_, &PCUIF__info__ind_t3142_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__info__ind_t3142_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__info__ind_t3169_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__info__ind_t3169_xer_ = { {"t3169>\n", "t3169>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__info__ind_t3169_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__info__ind_t3169_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__info__ind_t3169_descr_ = { "@PCUIF_Types.PCUIF_info_ind.t3169", &INTEGER_ber_, &PCUIF__info__ind_t3169_raw_, &INTEGER_text_, &PCUIF__info__ind_t3169_xer_, &PCUIF__info__ind_t3169_json_, &PCUIF__info__ind_t3169_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__info__ind_t3169_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__info__ind_t3191_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__info__ind_t3191_xer_ = { {"t3191>\n", "t3191>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__info__ind_t3191_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__info__ind_t3191_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__info__ind_t3191_descr_ = { "@PCUIF_Types.PCUIF_info_ind.t3191", &INTEGER_ber_, &PCUIF__info__ind_t3191_raw_, &INTEGER_text_, &PCUIF__info__ind_t3191_xer_, &PCUIF__info__ind_t3191_json_, &PCUIF__info__ind_t3191_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__info__ind_t3191_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__info__ind_t3193__10ms_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__info__ind_t3193__10ms_xer_ = { {"t3193_10ms>\n", "t3193_10ms>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__info__ind_t3193__10ms_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__info__ind_t3193__10ms_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__info__ind_t3193__10ms_descr_ = { "@PCUIF_Types.PCUIF_info_ind.t3193_10ms", &INTEGER_ber_, &PCUIF__info__ind_t3193__10ms_raw_, &INTEGER_text_, &PCUIF__info__ind_t3193__10ms_xer_, &PCUIF__info__ind_t3193__10ms_json_, &PCUIF__info__ind_t3193__10ms_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__info__ind_t3193__10ms_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__info__ind_t3195_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__info__ind_t3195_xer_ = { {"t3195>\n", "t3195>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__info__ind_t3195_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__info__ind_t3195_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__info__ind_t3195_descr_ = { "@PCUIF_Types.PCUIF_info_ind.t3195", &INTEGER_ber_, &PCUIF__info__ind_t3195_raw_, &INTEGER_text_, &PCUIF__info__ind_t3195_xer_, &PCUIF__info__ind_t3195_json_, &PCUIF__info__ind_t3195_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__info__ind_t3195_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__info__ind_t3101_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__info__ind_t3101_xer_ = { {"t3101>\n", "t3101>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__info__ind_t3101_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__info__ind_t3101_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__info__ind_t3101_descr_ = { "@PCUIF_Types.PCUIF_info_ind.t3101", &INTEGER_ber_, &PCUIF__info__ind_t3101_raw_, &INTEGER_text_, &PCUIF__info__ind_t3101_xer_, &PCUIF__info__ind_t3101_json_, &PCUIF__info__ind_t3101_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__info__ind_t3101_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__info__ind_t3103_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__info__ind_t3103_xer_ = { {"t3103>\n", "t3103>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__info__ind_t3103_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__info__ind_t3103_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__info__ind_t3103_descr_ = { "@PCUIF_Types.PCUIF_info_ind.t3103", &INTEGER_ber_, &PCUIF__info__ind_t3103_raw_, &INTEGER_text_, &PCUIF__info__ind_t3103_xer_, &PCUIF__info__ind_t3103_json_, &PCUIF__info__ind_t3103_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__info__ind_t3103_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__info__ind_t3105_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__info__ind_t3105_xer_ = { {"t3105>\n", "t3105>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__info__ind_t3105_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__info__ind_t3105_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__info__ind_t3105_descr_ = { "@PCUIF_Types.PCUIF_info_ind.t3105", &INTEGER_ber_, &PCUIF__info__ind_t3105_raw_, &INTEGER_text_, &PCUIF__info__ind_t3105_xer_, &PCUIF__info__ind_t3105_json_, &PCUIF__info__ind_t3105_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__info__ind_t3105_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__info__ind_cv__countdown_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__info__ind_cv__countdown_xer_ = { {"cv_countdown>\n", "cv_countdown>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__info__ind_cv__countdown_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__info__ind_cv__countdown_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__info__ind_cv__countdown_descr_ = { "@PCUIF_Types.PCUIF_info_ind.cv_countdown", &INTEGER_ber_, &PCUIF__info__ind_cv__countdown_raw_, &INTEGER_text_, &PCUIF__info__ind_cv__countdown_xer_, &PCUIF__info__ind_cv__countdown_json_, &PCUIF__info__ind_cv__countdown_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__info__ind_cv__countdown_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__info__ind_dl__tbf__ext_raw_ = {16,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}; +const XERdescriptor_t PCUIF__info__ind_dl__tbf__ext_xer_ = { {"dl_tbf_ext>\n", "dl_tbf_ext>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__info__ind_dl__tbf__ext_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__info__ind_dl__tbf__ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__info__ind_dl__tbf__ext_descr_ = { "@PCUIF_Types.PCUIF_info_ind.dl_tbf_ext", &INTEGER_ber_, &PCUIF__info__ind_dl__tbf__ext_raw_, &INTEGER_text_, &PCUIF__info__ind_dl__tbf__ext_xer_, &PCUIF__info__ind_dl__tbf__ext_json_, &PCUIF__info__ind_dl__tbf__ext_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__info__ind_dl__tbf__ext_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__info__ind_ul__tbf__ext_raw_ = {16,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}; +const XERdescriptor_t PCUIF__info__ind_ul__tbf__ext_xer_ = { {"ul_tbf_ext>\n", "ul_tbf_ext>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__info__ind_ul__tbf__ext_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__info__ind_ul__tbf__ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__info__ind_ul__tbf__ext_descr_ = { "@PCUIF_Types.PCUIF_info_ind.ul_tbf_ext", &INTEGER_ber_, &PCUIF__info__ind_ul__tbf__ext_raw_, &INTEGER_text_, &PCUIF__info__ind_ul__tbf__ext_xer_, &PCUIF__info__ind_ul__tbf__ext_json_, &PCUIF__info__ind_ul__tbf__ext_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__info__ind_ul__tbf__ext_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__info__ind_initial__cs_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__info__ind_initial__cs_xer_ = { {"initial_cs>\n", "initial_cs>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__info__ind_initial__cs_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__info__ind_initial__cs_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__info__ind_initial__cs_descr_ = { "@PCUIF_Types.PCUIF_info_ind.initial_cs", &INTEGER_ber_, &PCUIF__info__ind_initial__cs_raw_, &INTEGER_text_, &PCUIF__info__ind_initial__cs_xer_, &PCUIF__info__ind_initial__cs_json_, &PCUIF__info__ind_initial__cs_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__info__ind_initial__cs_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__info__ind_initial__mcs_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__info__ind_initial__mcs_xer_ = { {"initial_mcs>\n", "initial_mcs>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__info__ind_initial__mcs_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__info__ind_initial__mcs_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__info__ind_initial__mcs_descr_ = { "@PCUIF_Types.PCUIF_info_ind.initial_mcs", &INTEGER_ber_, &PCUIF__info__ind_initial__mcs_raw_, &INTEGER_text_, &PCUIF__info__ind_initial__mcs_xer_, &PCUIF__info__ind_initial__mcs_json_, &PCUIF__info__ind_initial__mcs_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__info__ind_initial__mcs_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__info__ind_nsvci_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}; +// No XER for PCUIF__info__ind_nsvci +const TTCN_Typedescriptor_t PCUIF__info__ind_nsvci_descr_ = { "@PCUIF_Types.PCUIF_info_ind.nsvci", NULL, &PCUIF__info__ind_nsvci_raw_, NULL, NULL, NULL, NULL, &PCUIF__info__ind_nsvci_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; +const TTCN_RAWdescriptor_t PCUIF__info__ind_nsvci_0_raw_ = {16,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}; +const XERdescriptor_t PCUIF__info__ind_nsvci_0_xer_ = { {"uint16_t>\n", "uint16_t>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__info__ind_nsvci_0_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__info__ind_nsvci_0_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__info__ind_nsvci_0_descr_ = { "@PCUIF_Types.PCUIF_info_ind.nsvci.", &INTEGER_ber_, &PCUIF__info__ind_nsvci_0_raw_, &INTEGER_text_, &PCUIF__info__ind_nsvci_0_xer_, &PCUIF__info__ind_nsvci_0_json_, &PCUIF__info__ind_nsvci_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__info__ind_nsvci_0_default_coding("RAW"); +UNIVERSAL_CHARSTRING PCUIF__info__ind_nsvci_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__info__ind_local__pprt_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}; +// No XER for PCUIF__info__ind_local__pprt +const TTCN_Typedescriptor_t PCUIF__info__ind_local__pprt_descr_ = { "@PCUIF_Types.PCUIF_info_ind.local_pprt", NULL, &PCUIF__info__ind_local__pprt_raw_, NULL, NULL, NULL, NULL, &PCUIF__info__ind_local__pprt_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; +const TTCN_RAWdescriptor_t PCUIF__info__ind_local__pprt_0_raw_ = {16,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}; +const XERdescriptor_t PCUIF__info__ind_local__pprt_0_xer_ = { {"uint16_t>\n", "uint16_t>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__info__ind_local__pprt_0_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__info__ind_local__pprt_0_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__info__ind_local__pprt_0_descr_ = { "@PCUIF_Types.PCUIF_info_ind.local_pprt.", &INTEGER_ber_, &PCUIF__info__ind_local__pprt_0_raw_, &INTEGER_text_, &PCUIF__info__ind_local__pprt_0_xer_, &PCUIF__info__ind_local__pprt_0_json_, &PCUIF__info__ind_local__pprt_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__info__ind_local__pprt_0_default_coding("RAW"); +UNIVERSAL_CHARSTRING PCUIF__info__ind_local__pprt_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__info__ind_remote__port_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}; +// No XER for PCUIF__info__ind_remote__port +const TTCN_Typedescriptor_t PCUIF__info__ind_remote__port_descr_ = { "@PCUIF_Types.PCUIF_info_ind.remote_port", NULL, &PCUIF__info__ind_remote__port_raw_, NULL, NULL, NULL, NULL, &PCUIF__info__ind_remote__port_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; +const TTCN_RAWdescriptor_t PCUIF__info__ind_remote__port_0_raw_ = {16,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}; +const XERdescriptor_t PCUIF__info__ind_remote__port_0_xer_ = { {"uint16_t>\n", "uint16_t>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__info__ind_remote__port_0_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__info__ind_remote__port_0_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__info__ind_remote__port_0_descr_ = { "@PCUIF_Types.PCUIF_info_ind.remote_port.", &INTEGER_ber_, &PCUIF__info__ind_remote__port_0_raw_, &INTEGER_text_, &PCUIF__info__ind_remote__port_0_xer_, &PCUIF__info__ind_remote__port_0_json_, &PCUIF__info__ind_remote__port_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__info__ind_remote__port_0_default_coding("RAW"); +UNIVERSAL_CHARSTRING PCUIF__info__ind_remote__port_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__info__ind_remote__ip_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}; +// No XER for PCUIF__info__ind_remote__ip +const TTCN_Typedescriptor_t PCUIF__info__ind_remote__ip_descr_ = { "@PCUIF_Types.PCUIF_info_ind.remote_ip", NULL, &PCUIF__info__ind_remote__ip_raw_, NULL, NULL, NULL, NULL, &PCUIF__info__ind_remote__ip_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; +const TTCN_RAWdescriptor_t PCUIF__info__ind_remote__ip_0_raw_ = {32,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}; +const XERdescriptor_t PCUIF__info__ind_remote__ip_0_xer_ = { {"uint32_t>\n", "uint32_t>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__info__ind_remote__ip_0_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__info__ind_remote__ip_0_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__info__ind_remote__ip_0_descr_ = { "@PCUIF_Types.PCUIF_info_ind.remote_ip.", &INTEGER_ber_, &PCUIF__info__ind_remote__ip_0_raw_, &INTEGER_text_, &PCUIF__info__ind_remote__ip_0_xer_, &PCUIF__info__ind_remote__ip_0_json_, &PCUIF__info__ind_remote__ip_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__info__ind_remote__ip_0_default_coding("RAW"); +UNIVERSAL_CHARSTRING PCUIF__info__ind_remote__ip_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__info__ind_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for PCUIF__info__ind +const TTCN_Typedescriptor_t PCUIF__info__ind_descr_ = { "@PCUIF_Types.PCUIF_info_ind", NULL, &PCUIF__info__ind_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__info__ind_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__act__req_is__activate_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__act__req_is__activate_xer_ = { {"is_activate>\n", "is_activate>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__act__req_is__activate_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__act__req_is__activate_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__act__req_is__activate_descr_ = { "@PCUIF_Types.PCUIF_act_req.is_activate", &INTEGER_ber_, &PCUIF__act__req_is__activate_raw_, &INTEGER_text_, &PCUIF__act__req_is__activate_xer_, &PCUIF__act__req_is__activate_json_, &PCUIF__act__req_is__activate_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__act__req_is__activate_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__act__req_trx__nr_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__act__req_trx__nr_xer_ = { {"trx_nr>\n", "trx_nr>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__act__req_trx__nr_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__act__req_trx__nr_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__act__req_trx__nr_descr_ = { "@PCUIF_Types.PCUIF_act_req.trx_nr", &INTEGER_ber_, &PCUIF__act__req_trx__nr_raw_, &INTEGER_text_, &PCUIF__act__req_trx__nr_xer_, &PCUIF__act__req_trx__nr_json_, &PCUIF__act__req_trx__nr_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__act__req_trx__nr_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__act__req_ts__nr_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__act__req_ts__nr_xer_ = { {"ts_nr>\n", "ts_nr>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__act__req_ts__nr_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__act__req_ts__nr_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__act__req_ts__nr_descr_ = { "@PCUIF_Types.PCUIF_act_req.ts_nr", &INTEGER_ber_, &PCUIF__act__req_ts__nr_raw_, &INTEGER_text_, &PCUIF__act__req_ts__nr_xer_, &PCUIF__act__req_ts__nr_json_, &PCUIF__act__req_ts__nr_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__act__req_ts__nr_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__act__req_spare_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}; +const XERdescriptor_t PCUIF__act__req_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_JSONdescriptor_t PCUIF__act__req_spare_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int PCUIF__act__req_spare_oer_ext_arr_[0] = {}; +const int PCUIF__act__req_spare_oer_p_[0] = {}; +const TTCN_OERdescriptor_t PCUIF__act__req_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, PCUIF__act__req_spare_oer_ext_arr_, 0, PCUIF__act__req_spare_oer_p_}; +const TTCN_Typedescriptor_t PCUIF__act__req_spare_descr_ = { "@PCUIF_Types.PCUIF_act_req.spare", &OCTETSTRING_ber_, &PCUIF__act__req_spare_raw_, &OCTETSTRING_text_, &PCUIF__act__req_spare_xer_, &PCUIF__act__req_spare_json_, &PCUIF__act__req_spare_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__act__req_spare_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__act__req_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for PCUIF__act__req +const TTCN_Typedescriptor_t PCUIF__act__req_descr_ = { "@PCUIF_Types.PCUIF_act_req", NULL, &PCUIF__act__req_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__act__req_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__time__ind_fn_raw_ = {32,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}; +const XERdescriptor_t PCUIF__time__ind_fn_xer_ = { {"fn>\n", "fn>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__time__ind_fn_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__time__ind_fn_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__time__ind_fn_descr_ = { "@PCUIF_Types.PCUIF_time_ind.fn", &INTEGER_ber_, &PCUIF__time__ind_fn_raw_, &INTEGER_text_, &PCUIF__time__ind_fn_xer_, &PCUIF__time__ind_fn_json_, &PCUIF__time__ind_fn_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__time__ind_fn_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__time__ind_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for PCUIF__time__ind +const TTCN_Typedescriptor_t PCUIF__time__ind_descr_ = { "@PCUIF_Types.PCUIF_time_ind", NULL, &PCUIF__time__ind_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__time__ind_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__pag__req_sapi_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}; +// No XER for PCUIF__pag__req_sapi +const TTCN_Typedescriptor_t PCUIF__pag__req_sapi_descr_ = { "@PCUIF_Types.PCUIF_pag_req.sapi", NULL, &PCUIF__pag__req_sapi_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__pag__req_sapi_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__pag__req_chan__needed_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__pag__req_chan__needed_xer_ = { {"chan_needed>\n", "chan_needed>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__pag__req_chan__needed_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__pag__req_chan__needed_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__pag__req_chan__needed_descr_ = { "@PCUIF_Types.PCUIF_pag_req.chan_needed", &INTEGER_ber_, &PCUIF__pag__req_chan__needed_raw_, &INTEGER_text_, &PCUIF__pag__req_chan__needed_xer_, &PCUIF__pag__req_chan__needed_json_, &PCUIF__pag__req_chan__needed_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__pag__req_chan__needed_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__pag__req_identity__lv_raw_ = {72,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,9,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__pag__req_identity__lv_xer_ = { {"identity_lv>\n", "identity_lv>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__pag__req_identity__lv_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int PCUIF__pag__req_identity__lv_oer_ext_arr_[0] = {}; +const int PCUIF__pag__req_identity__lv_oer_p_[0] = {}; +const TTCN_OERdescriptor_t PCUIF__pag__req_identity__lv_oer_ = { -1, FALSE, -1, FALSE, 0, 0, PCUIF__pag__req_identity__lv_oer_ext_arr_, 0, PCUIF__pag__req_identity__lv_oer_p_}; +const TTCN_Typedescriptor_t PCUIF__pag__req_identity__lv_descr_ = { "@PCUIF_Types.PCUIF_pag_req.identity_lv", &OCTETSTRING_ber_, &PCUIF__pag__req_identity__lv_raw_, &OCTETSTRING_text_, &PCUIF__pag__req_identity__lv_xer_, &PCUIF__pag__req_identity__lv_json_, &PCUIF__pag__req_identity__lv_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__pag__req_identity__lv_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__pag__req_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for PCUIF__pag__req +const TTCN_Typedescriptor_t PCUIF__pag__req_descr_ = { "@PCUIF_Types.PCUIF_pag_req", NULL, &PCUIF__pag__req_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__pag__req_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__susp__req_tlli_raw_ = {32,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,4,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__susp__req_tlli_xer_ = { {"tlli>\n", "tlli>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__susp__req_tlli_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int PCUIF__susp__req_tlli_oer_ext_arr_[0] = {}; +const int PCUIF__susp__req_tlli_oer_p_[0] = {}; +const TTCN_OERdescriptor_t PCUIF__susp__req_tlli_oer_ = { -1, FALSE, -1, FALSE, 0, 0, PCUIF__susp__req_tlli_oer_ext_arr_, 0, PCUIF__susp__req_tlli_oer_p_}; +const TTCN_Typedescriptor_t PCUIF__susp__req_tlli_descr_ = { "@PCUIF_Types.PCUIF_susp_req.tlli", &OCTETSTRING_ber_, &PCUIF__susp__req_tlli_raw_, &OCTETSTRING_text_, &PCUIF__susp__req_tlli_xer_, &PCUIF__susp__req_tlli_json_, &PCUIF__susp__req_tlli_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__susp__req_tlli_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__susp__req_ra__id_raw_ = {48,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,6,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__susp__req_ra__id_xer_ = { {"ra_id>\n", "ra_id>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__susp__req_ra__id_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int PCUIF__susp__req_ra__id_oer_ext_arr_[0] = {}; +const int PCUIF__susp__req_ra__id_oer_p_[0] = {}; +const TTCN_OERdescriptor_t PCUIF__susp__req_ra__id_oer_ = { -1, FALSE, -1, FALSE, 0, 0, PCUIF__susp__req_ra__id_oer_ext_arr_, 0, PCUIF__susp__req_ra__id_oer_p_}; +const TTCN_Typedescriptor_t PCUIF__susp__req_ra__id_descr_ = { "@PCUIF_Types.PCUIF_susp_req.ra_id", &OCTETSTRING_ber_, &PCUIF__susp__req_ra__id_raw_, &OCTETSTRING_text_, &PCUIF__susp__req_ra__id_xer_, &PCUIF__susp__req_ra__id_json_, &PCUIF__susp__req_ra__id_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__susp__req_ra__id_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__susp__req_cause_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__susp__req_cause_xer_ = { {"cause>\n", "cause>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__susp__req_cause_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__susp__req_cause_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__susp__req_cause_descr_ = { "@PCUIF_Types.PCUIF_susp_req.cause", &INTEGER_ber_, &PCUIF__susp__req_cause_raw_, &INTEGER_text_, &PCUIF__susp__req_cause_xer_, &PCUIF__susp__req_cause_json_, &PCUIF__susp__req_cause_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__susp__req_cause_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__susp__req_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for PCUIF__susp__req +const TTCN_Typedescriptor_t PCUIF__susp__req_descr_ = { "@PCUIF_Types.PCUIF_susp_req", NULL, &PCUIF__susp__req_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__susp__req_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__MsgUnion_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for PCUIF__MsgUnion +const TTCN_Typedescriptor_t PCUIF__MsgUnion_descr_ = { "@PCUIF_Types.PCUIF_MsgUnion", NULL, &PCUIF__MsgUnion_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +const TTCN_RAWdescriptor_t PCUIF__MsgUnion_data__req_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for PCUIF__MsgUnion_data__req +const TTCN_Typedescriptor_t PCUIF__MsgUnion_data__req_descr_ = { "@PCUIF_Types.PCUIF_MsgUnion.data_req", NULL, &PCUIF__MsgUnion_data__req_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__MsgUnion_data__req_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__MsgUnion_data__cnf_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for PCUIF__MsgUnion_data__cnf +const TTCN_Typedescriptor_t PCUIF__MsgUnion_data__cnf_descr_ = { "@PCUIF_Types.PCUIF_MsgUnion.data_cnf", NULL, &PCUIF__MsgUnion_data__cnf_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__MsgUnion_data__cnf_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__MsgUnion_data__cnf__dt_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for PCUIF__MsgUnion_data__cnf__dt +const TTCN_Typedescriptor_t PCUIF__MsgUnion_data__cnf__dt_descr_ = { "@PCUIF_Types.PCUIF_MsgUnion.data_cnf_dt", NULL, &PCUIF__MsgUnion_data__cnf__dt_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__MsgUnion_data__cnf__dt_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__MsgUnion_data__ind_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for PCUIF__MsgUnion_data__ind +const TTCN_Typedescriptor_t PCUIF__MsgUnion_data__ind_descr_ = { "@PCUIF_Types.PCUIF_MsgUnion.data_ind", NULL, &PCUIF__MsgUnion_data__ind_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__MsgUnion_data__ind_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__MsgUnion_susp__req_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for PCUIF__MsgUnion_susp__req +const TTCN_Typedescriptor_t PCUIF__MsgUnion_susp__req_descr_ = { "@PCUIF_Types.PCUIF_MsgUnion.susp_req", NULL, &PCUIF__MsgUnion_susp__req_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__MsgUnion_susp__req_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__MsgUnion_rts__req_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for PCUIF__MsgUnion_rts__req +const TTCN_Typedescriptor_t PCUIF__MsgUnion_rts__req_descr_ = { "@PCUIF_Types.PCUIF_MsgUnion.rts_req", NULL, &PCUIF__MsgUnion_rts__req_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__MsgUnion_rts__req_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__MsgUnion_rach__ind_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for PCUIF__MsgUnion_rach__ind +const TTCN_Typedescriptor_t PCUIF__MsgUnion_rach__ind_descr_ = { "@PCUIF_Types.PCUIF_MsgUnion.rach_ind", NULL, &PCUIF__MsgUnion_rach__ind_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__MsgUnion_rach__ind_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__MsgUnion_txt__ind_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for PCUIF__MsgUnion_txt__ind +const TTCN_Typedescriptor_t PCUIF__MsgUnion_txt__ind_descr_ = { "@PCUIF_Types.PCUIF_MsgUnion.txt_ind", NULL, &PCUIF__MsgUnion_txt__ind_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__MsgUnion_txt__ind_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__MsgUnion_info__ind_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for PCUIF__MsgUnion_info__ind +const TTCN_Typedescriptor_t PCUIF__MsgUnion_info__ind_descr_ = { "@PCUIF_Types.PCUIF_MsgUnion.info_ind", NULL, &PCUIF__MsgUnion_info__ind_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__MsgUnion_info__ind_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__MsgUnion_act__req_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for PCUIF__MsgUnion_act__req +const TTCN_Typedescriptor_t PCUIF__MsgUnion_act__req_descr_ = { "@PCUIF_Types.PCUIF_MsgUnion.act_req", NULL, &PCUIF__MsgUnion_act__req_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__MsgUnion_act__req_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__MsgUnion_time__ind_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for PCUIF__MsgUnion_time__ind +const TTCN_Typedescriptor_t PCUIF__MsgUnion_time__ind_descr_ = { "@PCUIF_Types.PCUIF_MsgUnion.time_ind", NULL, &PCUIF__MsgUnion_time__ind_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__MsgUnion_time__ind_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__MsgUnion_pag__req_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for PCUIF__MsgUnion_pag__req +const TTCN_Typedescriptor_t PCUIF__MsgUnion_pag__req_descr_ = { "@PCUIF_Types.PCUIF_MsgUnion.pag_req", NULL, &PCUIF__MsgUnion_pag__req_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__MsgUnion_pag__req_default_coding("RAW"); +UNIVERSAL_CHARSTRING PCUIF__MsgUnion_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__Message_msg__type_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}; +// No XER for PCUIF__Message_msg__type +const TTCN_Typedescriptor_t PCUIF__Message_msg__type_descr_ = { "@PCUIF_Types.PCUIF_Message.msg_type", NULL, &PCUIF__Message_msg__type_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__Message_msg__type_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__Message_bts__nr_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__Message_bts__nr_xer_ = { {"bts_nr>\n", "bts_nr>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; +const TTCN_JSONdescriptor_t PCUIF__Message_bts__nr_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const TTCN_OERdescriptor_t PCUIF__Message_bts__nr_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; +const TTCN_Typedescriptor_t PCUIF__Message_bts__nr_descr_ = { "@PCUIF_Types.PCUIF_Message.bts_nr", &INTEGER_ber_, &PCUIF__Message_bts__nr_raw_, &INTEGER_text_, &PCUIF__Message_bts__nr_xer_, &PCUIF__Message_bts__nr_json_, &PCUIF__Message_bts__nr_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__Message_bts__nr_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__Message_spare_raw_ = {16,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN}; +const XERdescriptor_t PCUIF__Message_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_JSONdescriptor_t PCUIF__Message_spare_json_ = { FALSE, NULL, FALSE, NULL, FALSE, FALSE }; +const int PCUIF__Message_spare_oer_ext_arr_[0] = {}; +const int PCUIF__Message_spare_oer_p_[0] = {}; +const TTCN_OERdescriptor_t PCUIF__Message_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, PCUIF__Message_spare_oer_ext_arr_, 0, PCUIF__Message_spare_oer_p_}; +const TTCN_Typedescriptor_t PCUIF__Message_spare_descr_ = { "@PCUIF_Types.PCUIF_Message.spare", &OCTETSTRING_ber_, &PCUIF__Message_spare_raw_, &OCTETSTRING_text_, &PCUIF__Message_spare_xer_, &PCUIF__Message_spare_json_, &PCUIF__Message_spare_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__Message_spare_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__Message_u_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for PCUIF__Message_u +const TTCN_Typedescriptor_t PCUIF__Message_u_descr_ = { "@PCUIF_Types.PCUIF_Message.u", NULL, &PCUIF__Message_u_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__Message_u_default_coding("RAW"); +const TTCN_RAWdescriptor_t PCUIF__Message_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,1696,0,0,8,0,NULL,-1,CharCoding::UNKNOWN}; +// No XER for PCUIF__Message +const TTCN_Typedescriptor_t PCUIF__Message_descr_ = { "@PCUIF_Types.PCUIF_Message", NULL, &PCUIF__Message_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; +UNIVERSAL_CHARSTRING PCUIF__Message_default_coding("RAW"); +static INTEGER_template template_tr__PCUIF__RTS__REQ_bts__nr_defval; +const INTEGER_template& tr__PCUIF__RTS__REQ_bts__nr_defval = template_tr__PCUIF__RTS__REQ_bts__nr_defval; +static INTEGER_template template_tr__PCUIF__RTS__REQ_trx__nr_defval; +const INTEGER_template& tr__PCUIF__RTS__REQ_trx__nr_defval = template_tr__PCUIF__RTS__REQ_trx__nr_defval; +static INTEGER_template template_tr__PCUIF__RTS__REQ_ts__nr_defval; +const INTEGER_template& tr__PCUIF__RTS__REQ_ts__nr_defval = template_tr__PCUIF__RTS__REQ_ts__nr_defval; +static PCUIF__Sapi_template template_tr__PCUIF__RTS__REQ_sapi_defval; +const PCUIF__Sapi_template& tr__PCUIF__RTS__REQ_sapi_defval = template_tr__PCUIF__RTS__REQ_sapi_defval; +static INTEGER_template template_tr__PCUIF__RTS__REQ_fn_defval; +const INTEGER_template& tr__PCUIF__RTS__REQ_fn_defval = template_tr__PCUIF__RTS__REQ_fn_defval; +static INTEGER_template template_tr__PCUIF__RTS__REQ_block__nr_defval; +const INTEGER_template& tr__PCUIF__RTS__REQ_block__nr_defval = template_tr__PCUIF__RTS__REQ_block__nr_defval; +static INTEGER_template template_tr__PCUIF__DATA__IND_bts__nr_defval; +const INTEGER_template& tr__PCUIF__DATA__IND_bts__nr_defval = template_tr__PCUIF__DATA__IND_bts__nr_defval; +static INTEGER_template template_tr__PCUIF__DATA__IND_trx__nr_defval; +const INTEGER_template& tr__PCUIF__DATA__IND_trx__nr_defval = template_tr__PCUIF__DATA__IND_trx__nr_defval; +static INTEGER_template template_tr__PCUIF__DATA__IND_ts__nr_defval; +const INTEGER_template& tr__PCUIF__DATA__IND_ts__nr_defval = template_tr__PCUIF__DATA__IND_ts__nr_defval; +static INTEGER_template template_tr__PCUIF__DATA__IND_block__nr_defval; +const INTEGER_template& tr__PCUIF__DATA__IND_block__nr_defval = template_tr__PCUIF__DATA__IND_block__nr_defval; +static PCUIF__Sapi_template template_tr__PCUIF__DATA__IND_sapi_defval; +const PCUIF__Sapi_template& tr__PCUIF__DATA__IND_sapi_defval = template_tr__PCUIF__DATA__IND_sapi_defval; +static OCTETSTRING_template template_tr__PCUIF__DATA__IND_data_defval; +const OCTETSTRING_template& tr__PCUIF__DATA__IND_data_defval = template_tr__PCUIF__DATA__IND_data_defval; +static INTEGER_template template_tr__PCUIF__DATA__CNF_bts__nr_defval; +const INTEGER_template& tr__PCUIF__DATA__CNF_bts__nr_defval = template_tr__PCUIF__DATA__CNF_bts__nr_defval; +static INTEGER_template template_tr__PCUIF__DATA__CNF_trx__nr_defval; +const INTEGER_template& tr__PCUIF__DATA__CNF_trx__nr_defval = template_tr__PCUIF__DATA__CNF_trx__nr_defval; +static INTEGER_template template_tr__PCUIF__DATA__CNF_ts__nr_defval; +const INTEGER_template& tr__PCUIF__DATA__CNF_ts__nr_defval = template_tr__PCUIF__DATA__CNF_ts__nr_defval; +static PCUIF__Sapi_template template_tr__PCUIF__DATA__CNF_sapi_defval; +const PCUIF__Sapi_template& tr__PCUIF__DATA__CNF_sapi_defval = template_tr__PCUIF__DATA__CNF_sapi_defval; +static OCTETSTRING_template template_tr__PCUIF__DATA__CNF_data_defval; +const OCTETSTRING_template& tr__PCUIF__DATA__CNF_data_defval = template_tr__PCUIF__DATA__CNF_data_defval; +static INTEGER_template template_tr__PCUIF__RACH__IND_bts__nr_defval; +const INTEGER_template& tr__PCUIF__RACH__IND_bts__nr_defval = template_tr__PCUIF__RACH__IND_bts__nr_defval; +static INTEGER_template template_tr__PCUIF__RACH__IND_ra_defval; +const INTEGER_template& tr__PCUIF__RACH__IND_ra_defval = template_tr__PCUIF__RACH__IND_ra_defval; +static INTEGER_template template_tr__PCUIF__RACH__IND_is__11bit_defval; +const INTEGER_template& tr__PCUIF__RACH__IND_is__11bit_defval = template_tr__PCUIF__RACH__IND_is__11bit_defval; +static INTEGER_template template_tr__PCUIF__RACH__IND_burst__type_defval; +const INTEGER_template& tr__PCUIF__RACH__IND_burst__type_defval = template_tr__PCUIF__RACH__IND_burst__type_defval; +static INTEGER_template template_tr__PCUIF__RACH__IND_fn_defval; +const INTEGER_template& tr__PCUIF__RACH__IND_fn_defval = template_tr__PCUIF__RACH__IND_fn_defval; +static INTEGER_template template_tr__PCUIF__PAG__REQ_bts__nr_defval; +const INTEGER_template& tr__PCUIF__PAG__REQ_bts__nr_defval = template_tr__PCUIF__PAG__REQ_bts__nr_defval; +static OCTETSTRING_template template_tr__PCUIF__PAG__REQ_id__lv_defval; +const OCTETSTRING_template& tr__PCUIF__PAG__REQ_id__lv_defval = template_tr__PCUIF__PAG__REQ_id__lv_defval; +static INTEGER_template template_tr__PCUIF__PAG__REQ_chan__needed_defval; +const INTEGER_template& tr__PCUIF__PAG__REQ_chan__needed_defval = template_tr__PCUIF__PAG__REQ_chan__needed_defval; +static PCUIF__Sapi_template template_tr__PCUIF__PAG__REQ_sapi_defval; +const PCUIF__Sapi_template& tr__PCUIF__PAG__REQ_sapi_defval = template_tr__PCUIF__PAG__REQ_sapi_defval; +static INTEGER_template template_tr__PCUIF__INFO__IND_bts__nr_defval; +const INTEGER_template& tr__PCUIF__INFO__IND_bts__nr_defval = template_tr__PCUIF__INFO__IND_bts__nr_defval; +static PCUIF__Flags_template template_tr__PCUIF__INFO__IND_flags_defval; +const PCUIF__Flags_template& tr__PCUIF__INFO__IND_flags_defval = template_tr__PCUIF__INFO__IND_flags_defval; +static INTEGER_template template_tr__PCUIF__INFO__IND_version_defval; +const INTEGER_template& tr__PCUIF__INFO__IND_version_defval = template_tr__PCUIF__INFO__IND_version_defval; +TTCN_Module module_object("PCUIF_Types", __DATE__, __TIME__, module_checksum, pre_init_module, NULL, 0U, 4294967295U, 4294967295U, 4294967295U, NULL, 0LU, 0, post_init_module, NULL, NULL, NULL, NULL, NULL, NULL); + +static const RuntimeVersionChecker ver_checker( current_runtime_version.requires_major_version_6, + current_runtime_version.requires_minor_version_3, + current_runtime_version.requires_patch_level_1, current_runtime_version.requires_runtime_1); + +/* Member functions of C++ classes */ + +PCUIF__MsgType::PCUIF__MsgType() +{ +enum_value = UNBOUND_VALUE; +} + +PCUIF__MsgType::PCUIF__MsgType(int other_value) +{ +if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @PCUIF_Types.PCUIF_MsgType with invalid numeric value %d.", other_value); +enum_value = (enum_type)other_value; +} + +PCUIF__MsgType::PCUIF__MsgType(enum_type other_value) +{ +enum_value = other_value; +} + +PCUIF__MsgType::PCUIF__MsgType(const PCUIF__MsgType& other_value) +: Base_Type() +{ +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @PCUIF_Types.PCUIF_MsgType."); +enum_value = other_value.enum_value; +} + +PCUIF__MsgType& PCUIF__MsgType::operator=(int other_value) +{ +if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @PCUIF_Types.PCUIF_MsgType.", other_value); +enum_value = (enum_type)other_value; +return *this; +} + +PCUIF__MsgType& PCUIF__MsgType::operator=(enum_type other_value) +{ +enum_value = other_value; +return *this; +} + +PCUIF__MsgType& PCUIF__MsgType::operator=(const PCUIF__MsgType& other_value) +{ +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @PCUIF_Types.PCUIF_MsgType."); +enum_value = other_value.enum_value; +return *this; +} + +boolean PCUIF__MsgType::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 @PCUIF_Types.PCUIF_MsgType."); +return enum_value == other_value; +} + +boolean PCUIF__MsgType::operator==(const PCUIF__MsgType& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PCUIF_Types.PCUIF_MsgType."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @PCUIF_Types.PCUIF_MsgType."); +return enum_value == other_value.enum_value; +} + +boolean PCUIF__MsgType::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 @PCUIF_Types.PCUIF_MsgType."); +return enum_value < other_value; +} + +boolean PCUIF__MsgType::operator<(const PCUIF__MsgType& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PCUIF_Types.PCUIF_MsgType."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @PCUIF_Types.PCUIF_MsgType."); +return enum_value < other_value.enum_value; +} + +boolean PCUIF__MsgType::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 @PCUIF_Types.PCUIF_MsgType."); +return enum_value > other_value; +} + +boolean PCUIF__MsgType::operator>(const PCUIF__MsgType& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PCUIF_Types.PCUIF_MsgType."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @PCUIF_Types.PCUIF_MsgType."); +return enum_value > other_value.enum_value; +} + +const char *PCUIF__MsgType::enum_to_str(enum_type enum_par) +{ +switch (enum_par) { +case PCU__IF__MSG__DATA__REQ: return "PCU_IF_MSG_DATA_REQ"; +case PCU__IF__MSG__DATA__CNF: return "PCU_IF_MSG_DATA_CNF"; +case PCU__IF__MSG__DATA__IND: return "PCU_IF_MSG_DATA_IND"; +case PCU__IF__MSG__SUSP__REQ: return "PCU_IF_MSG_SUSP_REQ"; +case PCU__IF__MSG__RTS__REQ: return "PCU_IF_MSG_RTS_REQ"; +case PCU__IF__MSG__DATA__CNF__DT: return "PCU_IF_MSG_DATA_CNF_DT"; +case PCU__IF__MSG__RACH__IND: return "PCU_IF_MSG_RACH_IND"; +case PCU__IF__MSG__INFO__IND: return "PCU_IF_MSG_INFO_IND"; +case PCU__IF__MSG__ACT__REQ: return "PCU_IF_MSG_ACT_REQ"; +case PCU__IF__MSG__TIME__IND: return "PCU_IF_MSG_TIME_IND"; +case PCU__IF__MSG__PAG__REQ: return "PCU_IF_MSG_PAG_REQ"; +case PCU__IF__MSG__TXT__IND: return "PCU_IF_MSG_TXT_IND"; +default: return ""; +} +} + +PCUIF__MsgType::enum_type PCUIF__MsgType::str_to_enum(const char *str_par) +{ +if (!strcmp(str_par, "PCU_IF_MSG_DATA_REQ")) return PCU__IF__MSG__DATA__REQ; +else if (!strcmp(str_par, "PCU_IF_MSG_DATA_CNF")) return PCU__IF__MSG__DATA__CNF; +else if (!strcmp(str_par, "PCU_IF_MSG_DATA_IND")) return PCU__IF__MSG__DATA__IND; +else if (!strcmp(str_par, "PCU_IF_MSG_SUSP_REQ")) return PCU__IF__MSG__SUSP__REQ; +else if (!strcmp(str_par, "PCU_IF_MSG_RTS_REQ")) return PCU__IF__MSG__RTS__REQ; +else if (!strcmp(str_par, "PCU_IF_MSG_DATA_CNF_DT")) return PCU__IF__MSG__DATA__CNF__DT; +else if (!strcmp(str_par, "PCU_IF_MSG_RACH_IND")) return PCU__IF__MSG__RACH__IND; +else if (!strcmp(str_par, "PCU_IF_MSG_INFO_IND")) return PCU__IF__MSG__INFO__IND; +else if (!strcmp(str_par, "PCU_IF_MSG_ACT_REQ")) return PCU__IF__MSG__ACT__REQ; +else if (!strcmp(str_par, "PCU_IF_MSG_TIME_IND")) return PCU__IF__MSG__TIME__IND; +else if (!strcmp(str_par, "PCU_IF_MSG_PAG_REQ")) return PCU__IF__MSG__PAG__REQ; +else if (!strcmp(str_par, "PCU_IF_MSG_TXT_IND")) return PCU__IF__MSG__TXT__IND; +else return UNKNOWN_VALUE; +} + +boolean PCUIF__MsgType::is_valid_enum(int int_par) +{ +switch (int_par) { +case 0: +case 1: +case 2: +case 3: +case 16: +case 17: +case 34: +case 50: +case 64: +case 82: +case 96: +case 112: +return TRUE; +default: +return FALSE; +} +} + +int PCUIF__MsgType::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 @PCUIF_Types.PCUIF_MsgType.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); +return enum_par; +} + +int PCUIF__MsgType::enum2int(const PCUIF__MsgType& 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 @PCUIF_Types.PCUIF_MsgType.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); +return enum_par.enum_value; +} + +void PCUIF__MsgType::int2enum(int int_val) +{ +if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @PCUIF_Types.PCUIF_MsgType.", int_val); +enum_value = (enum_type)int_val; +} + +PCUIF__MsgType::operator PCUIF__MsgType::enum_type() const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @PCUIF_Types.PCUIF_MsgType."); +return enum_value; +} + +void PCUIF__MsgType::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 PCUIF__MsgType::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", "@PCUIF_Types.PCUIF_MsgType"); + enum_value = str_to_enum(param.get_enumerated()); + if (!is_valid_enum(enum_value)) { + param.error("Invalid enumerated value for type @PCUIF_Types.PCUIF_MsgType."); + } +} + +void PCUIF__MsgType::encode_text(Text_Buf& text_buf) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @PCUIF_Types.PCUIF_MsgType."); +text_buf.push_int(enum_value); +} + +void PCUIF__MsgType::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 @PCUIF_Types.PCUIF_MsgType.", enum_value); +} + +void PCUIF__MsgType::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void PCUIF__MsgType::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int PCUIF__MsgType::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) +{ + int decoded_value = 0; + int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 7, 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 PCUIF__MsgType::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const +{ + return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 7); +} + +void PCUIF__MsgType_template::copy_template(const PCUIF__MsgType_template& other_value) +{ +set_selection(other_value); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = other_value.single_value; +break; +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new PCUIF__MsgType_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of enumerated type @PCUIF_Types.PCUIF_MsgType."); +} +} + +PCUIF__MsgType_template::PCUIF__MsgType_template() +{ +} + +PCUIF__MsgType_template::PCUIF__MsgType_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +PCUIF__MsgType_template::PCUIF__MsgType_template(int other_value) + : Base_Template(SPECIFIC_VALUE) +{ +if (!PCUIF__MsgType::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @PCUIF_Types.PCUIF_MsgType with unknown numeric value %d.", other_value); +single_value = (PCUIF__MsgType::enum_type)other_value; +} + +PCUIF__MsgType_template::PCUIF__MsgType_template(PCUIF__MsgType::enum_type other_value) + : Base_Template(SPECIFIC_VALUE) +{ +single_value = other_value; +} + +PCUIF__MsgType_template::PCUIF__MsgType_template(const PCUIF__MsgType& other_value) + : Base_Template(SPECIFIC_VALUE) +{ +if (other_value.enum_value == PCUIF__MsgType::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @PCUIF_Types.PCUIF_MsgType."); +single_value = other_value.enum_value; +} + +PCUIF__MsgType_template::PCUIF__MsgType_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +set_selection(SPECIFIC_VALUE); +single_value = (PCUIF__MsgType::enum_type)(const PCUIF__MsgType&)other_value; +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of enumerated type @PCUIF_Types.PCUIF_MsgType from an unbound optional field."); +} +} + +PCUIF__MsgType_template::PCUIF__MsgType_template(const PCUIF__MsgType_template& other_value) + : Base_Template() +{ +copy_template(other_value); +} + +PCUIF__MsgType_template::~PCUIF__MsgType_template() +{ +clean_up(); +} + +boolean PCUIF__MsgType_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +return TRUE; +} + +boolean PCUIF__MsgType_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +return single_value != PCUIF__MsgType::UNBOUND_VALUE; +} + +void PCUIF__MsgType_template::clean_up() +{ +if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value; +template_selection = UNINITIALIZED_TEMPLATE; +} + +PCUIF__MsgType_template& PCUIF__MsgType_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +PCUIF__MsgType_template& PCUIF__MsgType_template::operator=(int other_value) +{ +if (!PCUIF__MsgType::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @PCUIF_Types.PCUIF_MsgType.", other_value); +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = (PCUIF__MsgType::enum_type)other_value; +return *this; +} + +PCUIF__MsgType_template& PCUIF__MsgType_template::operator=(PCUIF__MsgType::enum_type other_value) +{ +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = other_value; +return *this; +} + +PCUIF__MsgType_template& PCUIF__MsgType_template::operator=(const PCUIF__MsgType& other_value) +{ +if (other_value.enum_value == PCUIF__MsgType::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @PCUIF_Types.PCUIF_MsgType to a template."); +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = other_value.enum_value; +return *this; +} + +PCUIF__MsgType_template& PCUIF__MsgType_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +set_selection(SPECIFIC_VALUE); +single_value = (PCUIF__MsgType::enum_type)(const PCUIF__MsgType&)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 @PCUIF_Types.PCUIF_MsgType."); +} +return *this; +} + +PCUIF__MsgType_template& PCUIF__MsgType_template::operator=(const PCUIF__MsgType_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean PCUIF__MsgType_template::match(PCUIF__MsgType::enum_type other_value, boolean) const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +return single_value == other_value; +case OMIT_VALUE: +return FALSE; +case ANY_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of enumerated type @PCUIF_Types.PCUIF_MsgType."); +} +return FALSE; +} + +boolean PCUIF__MsgType_template::match(const PCUIF__MsgType& other_value, boolean) const +{ +if (other_value.enum_value == PCUIF__MsgType::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @PCUIF_Types.PCUIF_MsgType with an unbound value."); +return match(other_value.enum_value); +} + +PCUIF__MsgType::enum_type PCUIF__MsgType_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 @PCUIF_Types.PCUIF_MsgType."); +return single_value; +} + +void PCUIF__MsgType_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @PCUIF_Types.PCUIF_MsgType."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new PCUIF__MsgType_template[list_length]; +} + +PCUIF__MsgType_template& PCUIF__MsgType_template::list_item(unsigned int list_index) +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @PCUIF_Types.PCUIF_MsgType."); +if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @PCUIF_Types.PCUIF_MsgType."); +return value_list.list_value[list_index]; +} + +void PCUIF__MsgType_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_enum(PCUIF__MsgType::enum_to_str(single_value), single_value); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { +if (elem_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[elem_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void PCUIF__MsgType_template::log_match(const PCUIF__MsgType& 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 PCUIF__MsgType_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 @PCUIF_Types.PCUIF_MsgType."); +} +} + +void PCUIF__MsgType_template::decode_text(Text_Buf& text_buf) +{ +clean_up(); +decode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = (PCUIF__MsgType::enum_type)text_buf.pull_int().get_val(); +if (!PCUIF__MsgType::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @PCUIF_Types.PCUIF_MsgType.", 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 PCUIF__MsgType_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 @PCUIF_Types.PCUIF_MsgType."); +} +} + +boolean PCUIF__MsgType_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean PCUIF__MsgType_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int i=0; 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: { + PCUIF__MsgType_template new_temp; + new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, m_p->get_size()); + for (size_t p_i=0; p_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: { + PCUIF__MsgType::enum_type enum_val = PCUIF__MsgType::str_to_enum(m_p->get_enumerated()); + if (!PCUIF__MsgType::is_valid_enum(enum_val)) { + param.error("Invalid enumerated value for type @PCUIF_Types.PCUIF_MsgType."); + } + *this = enum_val; + } break; + default: + param.type_error("enumerated template", "@PCUIF_Types.PCUIF_MsgType"); + } + is_ifpresent = param.get_ifpresent(); +} + +void PCUIF__MsgType_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 : "@PCUIF_Types.PCUIF_MsgType"); +} + +PCUIF__Sapi::PCUIF__Sapi() +{ +enum_value = UNBOUND_VALUE; +} + +PCUIF__Sapi::PCUIF__Sapi(int other_value) +{ +if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @PCUIF_Types.PCUIF_Sapi with invalid numeric value %d.", other_value); +enum_value = (enum_type)other_value; +} + +PCUIF__Sapi::PCUIF__Sapi(enum_type other_value) +{ +enum_value = other_value; +} + +PCUIF__Sapi::PCUIF__Sapi(const PCUIF__Sapi& other_value) +: Base_Type() +{ +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @PCUIF_Types.PCUIF_Sapi."); +enum_value = other_value.enum_value; +} + +PCUIF__Sapi& PCUIF__Sapi::operator=(int other_value) +{ +if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @PCUIF_Types.PCUIF_Sapi.", other_value); +enum_value = (enum_type)other_value; +return *this; +} + +PCUIF__Sapi& PCUIF__Sapi::operator=(enum_type other_value) +{ +enum_value = other_value; +return *this; +} + +PCUIF__Sapi& PCUIF__Sapi::operator=(const PCUIF__Sapi& other_value) +{ +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @PCUIF_Types.PCUIF_Sapi."); +enum_value = other_value.enum_value; +return *this; +} + +boolean PCUIF__Sapi::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 @PCUIF_Types.PCUIF_Sapi."); +return enum_value == other_value; +} + +boolean PCUIF__Sapi::operator==(const PCUIF__Sapi& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PCUIF_Types.PCUIF_Sapi."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @PCUIF_Types.PCUIF_Sapi."); +return enum_value == other_value.enum_value; +} + +boolean PCUIF__Sapi::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 @PCUIF_Types.PCUIF_Sapi."); +return enum_value < other_value; +} + +boolean PCUIF__Sapi::operator<(const PCUIF__Sapi& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PCUIF_Types.PCUIF_Sapi."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @PCUIF_Types.PCUIF_Sapi."); +return enum_value < other_value.enum_value; +} + +boolean PCUIF__Sapi::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 @PCUIF_Types.PCUIF_Sapi."); +return enum_value > other_value; +} + +boolean PCUIF__Sapi::operator>(const PCUIF__Sapi& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PCUIF_Types.PCUIF_Sapi."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @PCUIF_Types.PCUIF_Sapi."); +return enum_value > other_value.enum_value; +} + +const char *PCUIF__Sapi::enum_to_str(enum_type enum_par) +{ +switch (enum_par) { +case PCU__IF__SAPI__UNKNOWN: return "PCU_IF_SAPI_UNKNOWN"; +case PCU__IF__SAPI__RACH: return "PCU_IF_SAPI_RACH"; +case PCU__IF__SAPI__AGCH: return "PCU_IF_SAPI_AGCH"; +case PCU__IF__SAPI__PCH: return "PCU_IF_SAPI_PCH"; +case PCU__IF__SAPI__BCCH: return "PCU_IF_SAPI_BCCH"; +case PCU__IF__SAPI__PDTCH: return "PCU_IF_SAPI_PDTCH"; +case PCU__IF__SAPI__PRACH: return "PCU_IF_SAPI_PRACH"; +case PCU__IF__SAPI__PTCCH: return "PCU_IF_SAPI_PTCCH"; +case PCU__IF__SAPI__AGCH__DT: return "PCU_IF_SAPI_AGCH_DT"; +default: return ""; +} +} + +PCUIF__Sapi::enum_type PCUIF__Sapi::str_to_enum(const char *str_par) +{ +if (!strcmp(str_par, "PCU_IF_SAPI_UNKNOWN")) return PCU__IF__SAPI__UNKNOWN; +else if (!strcmp(str_par, "PCU_IF_SAPI_RACH")) return PCU__IF__SAPI__RACH; +else if (!strcmp(str_par, "PCU_IF_SAPI_AGCH")) return PCU__IF__SAPI__AGCH; +else if (!strcmp(str_par, "PCU_IF_SAPI_PCH")) return PCU__IF__SAPI__PCH; +else if (!strcmp(str_par, "PCU_IF_SAPI_BCCH")) return PCU__IF__SAPI__BCCH; +else if (!strcmp(str_par, "PCU_IF_SAPI_PDTCH")) return PCU__IF__SAPI__PDTCH; +else if (!strcmp(str_par, "PCU_IF_SAPI_PRACH")) return PCU__IF__SAPI__PRACH; +else if (!strcmp(str_par, "PCU_IF_SAPI_PTCCH")) return PCU__IF__SAPI__PTCCH; +else if (!strcmp(str_par, "PCU_IF_SAPI_AGCH_DT")) return PCU__IF__SAPI__AGCH__DT; +else return UNKNOWN_VALUE; +} + +boolean PCUIF__Sapi::is_valid_enum(int int_par) +{ +switch (int_par) { +case 0: +case 1: +case 2: +case 3: +case 4: +case 5: +case 6: +case 7: +case 8: +return TRUE; +default: +return FALSE; +} +} + +int PCUIF__Sapi::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 @PCUIF_Types.PCUIF_Sapi.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); +return enum_par; +} + +int PCUIF__Sapi::enum2int(const PCUIF__Sapi& 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 @PCUIF_Types.PCUIF_Sapi.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); +return enum_par.enum_value; +} + +void PCUIF__Sapi::int2enum(int int_val) +{ +if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @PCUIF_Types.PCUIF_Sapi.", int_val); +enum_value = (enum_type)int_val; +} + +PCUIF__Sapi::operator PCUIF__Sapi::enum_type() const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @PCUIF_Types.PCUIF_Sapi."); +return enum_value; +} + +void PCUIF__Sapi::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 PCUIF__Sapi::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", "@PCUIF_Types.PCUIF_Sapi"); + enum_value = str_to_enum(param.get_enumerated()); + if (!is_valid_enum(enum_value)) { + param.error("Invalid enumerated value for type @PCUIF_Types.PCUIF_Sapi."); + } +} + +void PCUIF__Sapi::encode_text(Text_Buf& text_buf) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @PCUIF_Types.PCUIF_Sapi."); +text_buf.push_int(enum_value); +} + +void PCUIF__Sapi::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 @PCUIF_Types.PCUIF_Sapi.", enum_value); +} + +void PCUIF__Sapi::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void PCUIF__Sapi::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int PCUIF__Sapi::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) +{ + int decoded_value = 0; + int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 4, no_err); + if (decoded_length < 0) return decoded_length; + if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value; + else { + if(no_err){ + return -1; + } else { + TTCN_EncDec_ErrorContext::error + (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name); + enum_value = UNKNOWN_VALUE; + } + } + return decoded_length; +} + +int PCUIF__Sapi::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const +{ + return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 4); +} + +void PCUIF__Sapi_template::copy_template(const PCUIF__Sapi_template& other_value) +{ +set_selection(other_value); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = other_value.single_value; +break; +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new PCUIF__Sapi_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of enumerated type @PCUIF_Types.PCUIF_Sapi."); +} +} + +PCUIF__Sapi_template::PCUIF__Sapi_template() +{ +} + +PCUIF__Sapi_template::PCUIF__Sapi_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +PCUIF__Sapi_template::PCUIF__Sapi_template(int other_value) + : Base_Template(SPECIFIC_VALUE) +{ +if (!PCUIF__Sapi::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @PCUIF_Types.PCUIF_Sapi with unknown numeric value %d.", other_value); +single_value = (PCUIF__Sapi::enum_type)other_value; +} + +PCUIF__Sapi_template::PCUIF__Sapi_template(PCUIF__Sapi::enum_type other_value) + : Base_Template(SPECIFIC_VALUE) +{ +single_value = other_value; +} + +PCUIF__Sapi_template::PCUIF__Sapi_template(const PCUIF__Sapi& other_value) + : Base_Template(SPECIFIC_VALUE) +{ +if (other_value.enum_value == PCUIF__Sapi::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @PCUIF_Types.PCUIF_Sapi."); +single_value = other_value.enum_value; +} + +PCUIF__Sapi_template::PCUIF__Sapi_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +set_selection(SPECIFIC_VALUE); +single_value = (PCUIF__Sapi::enum_type)(const PCUIF__Sapi&)other_value; +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of enumerated type @PCUIF_Types.PCUIF_Sapi from an unbound optional field."); +} +} + +PCUIF__Sapi_template::PCUIF__Sapi_template(const PCUIF__Sapi_template& other_value) + : Base_Template() +{ +copy_template(other_value); +} + +PCUIF__Sapi_template::~PCUIF__Sapi_template() +{ +clean_up(); +} + +boolean PCUIF__Sapi_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +return TRUE; +} + +boolean PCUIF__Sapi_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +return single_value != PCUIF__Sapi::UNBOUND_VALUE; +} + +void PCUIF__Sapi_template::clean_up() +{ +if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value; +template_selection = UNINITIALIZED_TEMPLATE; +} + +PCUIF__Sapi_template& PCUIF__Sapi_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +PCUIF__Sapi_template& PCUIF__Sapi_template::operator=(int other_value) +{ +if (!PCUIF__Sapi::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @PCUIF_Types.PCUIF_Sapi.", other_value); +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = (PCUIF__Sapi::enum_type)other_value; +return *this; +} + +PCUIF__Sapi_template& PCUIF__Sapi_template::operator=(PCUIF__Sapi::enum_type other_value) +{ +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = other_value; +return *this; +} + +PCUIF__Sapi_template& PCUIF__Sapi_template::operator=(const PCUIF__Sapi& other_value) +{ +if (other_value.enum_value == PCUIF__Sapi::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @PCUIF_Types.PCUIF_Sapi to a template."); +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = other_value.enum_value; +return *this; +} + +PCUIF__Sapi_template& PCUIF__Sapi_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +set_selection(SPECIFIC_VALUE); +single_value = (PCUIF__Sapi::enum_type)(const PCUIF__Sapi&)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 @PCUIF_Types.PCUIF_Sapi."); +} +return *this; +} + +PCUIF__Sapi_template& PCUIF__Sapi_template::operator=(const PCUIF__Sapi_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean PCUIF__Sapi_template::match(PCUIF__Sapi::enum_type other_value, boolean) const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +return single_value == other_value; +case OMIT_VALUE: +return FALSE; +case ANY_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of enumerated type @PCUIF_Types.PCUIF_Sapi."); +} +return FALSE; +} + +boolean PCUIF__Sapi_template::match(const PCUIF__Sapi& other_value, boolean) const +{ +if (other_value.enum_value == PCUIF__Sapi::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @PCUIF_Types.PCUIF_Sapi with an unbound value."); +return match(other_value.enum_value); +} + +PCUIF__Sapi::enum_type PCUIF__Sapi_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 @PCUIF_Types.PCUIF_Sapi."); +return single_value; +} + +void PCUIF__Sapi_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @PCUIF_Types.PCUIF_Sapi."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new PCUIF__Sapi_template[list_length]; +} + +PCUIF__Sapi_template& PCUIF__Sapi_template::list_item(unsigned int list_index) +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @PCUIF_Types.PCUIF_Sapi."); +if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @PCUIF_Types.PCUIF_Sapi."); +return value_list.list_value[list_index]; +} + +void PCUIF__Sapi_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_enum(PCUIF__Sapi::enum_to_str(single_value), single_value); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { +if (elem_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[elem_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void PCUIF__Sapi_template::log_match(const PCUIF__Sapi& 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 PCUIF__Sapi_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 @PCUIF_Types.PCUIF_Sapi."); +} +} + +void PCUIF__Sapi_template::decode_text(Text_Buf& text_buf) +{ +clean_up(); +decode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = (PCUIF__Sapi::enum_type)text_buf.pull_int().get_val(); +if (!PCUIF__Sapi::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @PCUIF_Types.PCUIF_Sapi.", 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 PCUIF__Sapi_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 @PCUIF_Types.PCUIF_Sapi."); +} +} + +boolean PCUIF__Sapi_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean PCUIF__Sapi_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int i=0; 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: { + PCUIF__Sapi_template new_temp; + new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, m_p->get_size()); + for (size_t p_i=0; p_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: { + PCUIF__Sapi::enum_type enum_val = PCUIF__Sapi::str_to_enum(m_p->get_enumerated()); + if (!PCUIF__Sapi::is_valid_enum(enum_val)) { + param.error("Invalid enumerated value for type @PCUIF_Types.PCUIF_Sapi."); + } + *this = enum_val; + } break; + default: + param.type_error("enumerated template", "@PCUIF_Types.PCUIF_Sapi"); + } + is_ifpresent = param.get_ifpresent(); +} + +void PCUIF__Sapi_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 : "@PCUIF_Types.PCUIF_Sapi"); +} + +PCUIF__Flags::PCUIF__Flags() +{ +} + +PCUIF__Flags::PCUIF__Flags(const BOOLEAN& par_bts__active, + const BOOLEAN& par_sysmo__direct__dsp, + const BITSTRING& par_spare, + const BOOLEAN& par_cs1, + const BOOLEAN& par_cs2, + const BOOLEAN& par_cs3, + const BOOLEAN& par_cs4, + const BOOLEAN& par_mcs1, + const BOOLEAN& par_mcs2, + const BOOLEAN& par_mcs3, + const BOOLEAN& par_mcs4, + const BOOLEAN& par_mcs5, + const BOOLEAN& par_mcs6, + const BOOLEAN& par_mcs7, + const BOOLEAN& par_mcs8, + const BOOLEAN& par_mcs9, + const BITSTRING& par_spare2) + : field_bts__active(par_bts__active), + field_sysmo__direct__dsp(par_sysmo__direct__dsp), + field_spare(par_spare), + field_cs1(par_cs1), + field_cs2(par_cs2), + field_cs3(par_cs3), + field_cs4(par_cs4), + field_mcs1(par_mcs1), + field_mcs2(par_mcs2), + field_mcs3(par_mcs3), + field_mcs4(par_mcs4), + field_mcs5(par_mcs5), + field_mcs6(par_mcs6), + field_mcs7(par_mcs7), + field_mcs8(par_mcs8), + field_mcs9(par_mcs9), + field_spare2(par_spare2) +{ +} + +PCUIF__Flags::PCUIF__Flags(const PCUIF__Flags& other_value) +{ +if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @PCUIF_Types.PCUIF_Flags."); +if (other_value.bts__active().is_bound()) field_bts__active = other_value.bts__active(); +else field_bts__active.clean_up(); +if (other_value.sysmo__direct__dsp().is_bound()) field_sysmo__direct__dsp = other_value.sysmo__direct__dsp(); +else field_sysmo__direct__dsp.clean_up(); +if (other_value.spare().is_bound()) field_spare = other_value.spare(); +else field_spare.clean_up(); +if (other_value.cs1().is_bound()) field_cs1 = other_value.cs1(); +else field_cs1.clean_up(); +if (other_value.cs2().is_bound()) field_cs2 = other_value.cs2(); +else field_cs2.clean_up(); +if (other_value.cs3().is_bound()) field_cs3 = other_value.cs3(); +else field_cs3.clean_up(); +if (other_value.cs4().is_bound()) field_cs4 = other_value.cs4(); +else field_cs4.clean_up(); +if (other_value.mcs1().is_bound()) field_mcs1 = other_value.mcs1(); +else field_mcs1.clean_up(); +if (other_value.mcs2().is_bound()) field_mcs2 = other_value.mcs2(); +else field_mcs2.clean_up(); +if (other_value.mcs3().is_bound()) field_mcs3 = other_value.mcs3(); +else field_mcs3.clean_up(); +if (other_value.mcs4().is_bound()) field_mcs4 = other_value.mcs4(); +else field_mcs4.clean_up(); +if (other_value.mcs5().is_bound()) field_mcs5 = other_value.mcs5(); +else field_mcs5.clean_up(); +if (other_value.mcs6().is_bound()) field_mcs6 = other_value.mcs6(); +else field_mcs6.clean_up(); +if (other_value.mcs7().is_bound()) field_mcs7 = other_value.mcs7(); +else field_mcs7.clean_up(); +if (other_value.mcs8().is_bound()) field_mcs8 = other_value.mcs8(); +else field_mcs8.clean_up(); +if (other_value.mcs9().is_bound()) field_mcs9 = other_value.mcs9(); +else field_mcs9.clean_up(); +if (other_value.spare2().is_bound()) field_spare2 = other_value.spare2(); +else field_spare2.clean_up(); +} + +void PCUIF__Flags::clean_up() +{ +field_bts__active.clean_up(); +field_sysmo__direct__dsp.clean_up(); +field_spare.clean_up(); +field_cs1.clean_up(); +field_cs2.clean_up(); +field_cs3.clean_up(); +field_cs4.clean_up(); +field_mcs1.clean_up(); +field_mcs2.clean_up(); +field_mcs3.clean_up(); +field_mcs4.clean_up(); +field_mcs5.clean_up(); +field_mcs6.clean_up(); +field_mcs7.clean_up(); +field_mcs8.clean_up(); +field_mcs9.clean_up(); +field_spare2.clean_up(); +} + +PCUIF__Flags& PCUIF__Flags::operator=(const PCUIF__Flags& other_value) +{ +if (this != &other_value) { + if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @PCUIF_Types.PCUIF_Flags."); + if (other_value.bts__active().is_bound()) field_bts__active = other_value.bts__active(); + else field_bts__active.clean_up(); + if (other_value.sysmo__direct__dsp().is_bound()) field_sysmo__direct__dsp = other_value.sysmo__direct__dsp(); + else field_sysmo__direct__dsp.clean_up(); + if (other_value.spare().is_bound()) field_spare = other_value.spare(); + else field_spare.clean_up(); + if (other_value.cs1().is_bound()) field_cs1 = other_value.cs1(); + else field_cs1.clean_up(); + if (other_value.cs2().is_bound()) field_cs2 = other_value.cs2(); + else field_cs2.clean_up(); + if (other_value.cs3().is_bound()) field_cs3 = other_value.cs3(); + else field_cs3.clean_up(); + if (other_value.cs4().is_bound()) field_cs4 = other_value.cs4(); + else field_cs4.clean_up(); + if (other_value.mcs1().is_bound()) field_mcs1 = other_value.mcs1(); + else field_mcs1.clean_up(); + if (other_value.mcs2().is_bound()) field_mcs2 = other_value.mcs2(); + else field_mcs2.clean_up(); + if (other_value.mcs3().is_bound()) field_mcs3 = other_value.mcs3(); + else field_mcs3.clean_up(); + if (other_value.mcs4().is_bound()) field_mcs4 = other_value.mcs4(); + else field_mcs4.clean_up(); + if (other_value.mcs5().is_bound()) field_mcs5 = other_value.mcs5(); + else field_mcs5.clean_up(); + if (other_value.mcs6().is_bound()) field_mcs6 = other_value.mcs6(); + else field_mcs6.clean_up(); + if (other_value.mcs7().is_bound()) field_mcs7 = other_value.mcs7(); + else field_mcs7.clean_up(); + if (other_value.mcs8().is_bound()) field_mcs8 = other_value.mcs8(); + else field_mcs8.clean_up(); + if (other_value.mcs9().is_bound()) field_mcs9 = other_value.mcs9(); + else field_mcs9.clean_up(); + if (other_value.spare2().is_bound()) field_spare2 = other_value.spare2(); + else field_spare2.clean_up(); +} +return *this; +} + +boolean PCUIF__Flags::operator==(const PCUIF__Flags& other_value) const +{ +return field_bts__active==other_value.field_bts__active + && field_sysmo__direct__dsp==other_value.field_sysmo__direct__dsp + && field_spare==other_value.field_spare + && field_cs1==other_value.field_cs1 + && field_cs2==other_value.field_cs2 + && field_cs3==other_value.field_cs3 + && field_cs4==other_value.field_cs4 + && field_mcs1==other_value.field_mcs1 + && field_mcs2==other_value.field_mcs2 + && field_mcs3==other_value.field_mcs3 + && field_mcs4==other_value.field_mcs4 + && field_mcs5==other_value.field_mcs5 + && field_mcs6==other_value.field_mcs6 + && field_mcs7==other_value.field_mcs7 + && field_mcs8==other_value.field_mcs8 + && field_mcs9==other_value.field_mcs9 + && field_spare2==other_value.field_spare2; +} + +boolean PCUIF__Flags::is_bound() const +{ +if(field_bts__active.is_bound()) return TRUE; +if(field_sysmo__direct__dsp.is_bound()) return TRUE; +if(field_spare.is_bound()) return TRUE; +if(field_cs1.is_bound()) return TRUE; +if(field_cs2.is_bound()) return TRUE; +if(field_cs3.is_bound()) return TRUE; +if(field_cs4.is_bound()) return TRUE; +if(field_mcs1.is_bound()) return TRUE; +if(field_mcs2.is_bound()) return TRUE; +if(field_mcs3.is_bound()) return TRUE; +if(field_mcs4.is_bound()) return TRUE; +if(field_mcs5.is_bound()) return TRUE; +if(field_mcs6.is_bound()) return TRUE; +if(field_mcs7.is_bound()) return TRUE; +if(field_mcs8.is_bound()) return TRUE; +if(field_mcs9.is_bound()) return TRUE; +if(field_spare2.is_bound()) return TRUE; +return FALSE; +} +boolean PCUIF__Flags::is_value() const +{ +if(!field_bts__active.is_value()) return FALSE; +if(!field_sysmo__direct__dsp.is_value()) return FALSE; +if(!field_spare.is_value()) return FALSE; +if(!field_cs1.is_value()) return FALSE; +if(!field_cs2.is_value()) return FALSE; +if(!field_cs3.is_value()) return FALSE; +if(!field_cs4.is_value()) return FALSE; +if(!field_mcs1.is_value()) return FALSE; +if(!field_mcs2.is_value()) return FALSE; +if(!field_mcs3.is_value()) return FALSE; +if(!field_mcs4.is_value()) return FALSE; +if(!field_mcs5.is_value()) return FALSE; +if(!field_mcs6.is_value()) return FALSE; +if(!field_mcs7.is_value()) return FALSE; +if(!field_mcs8.is_value()) return FALSE; +if(!field_mcs9.is_value()) return FALSE; +if(!field_spare2.is_value()) return FALSE; +return TRUE; +} +void PCUIF__Flags::log() const +{ +if (!is_bound()) { +TTCN_Logger::log_event_unbound(); +return; +} +TTCN_Logger::log_event_str("{ bts_active := "); +field_bts__active.log(); +TTCN_Logger::log_event_str(", sysmo_direct_dsp := "); +field_sysmo__direct__dsp.log(); +TTCN_Logger::log_event_str(", spare := "); +field_spare.log(); +TTCN_Logger::log_event_str(", cs1 := "); +field_cs1.log(); +TTCN_Logger::log_event_str(", cs2 := "); +field_cs2.log(); +TTCN_Logger::log_event_str(", cs3 := "); +field_cs3.log(); +TTCN_Logger::log_event_str(", cs4 := "); +field_cs4.log(); +TTCN_Logger::log_event_str(", mcs1 := "); +field_mcs1.log(); +TTCN_Logger::log_event_str(", mcs2 := "); +field_mcs2.log(); +TTCN_Logger::log_event_str(", mcs3 := "); +field_mcs3.log(); +TTCN_Logger::log_event_str(", mcs4 := "); +field_mcs4.log(); +TTCN_Logger::log_event_str(", mcs5 := "); +field_mcs5.log(); +TTCN_Logger::log_event_str(", mcs6 := "); +field_mcs6.log(); +TTCN_Logger::log_event_str(", mcs7 := "); +field_mcs7.log(); +TTCN_Logger::log_event_str(", mcs8 := "); +field_mcs8.log(); +TTCN_Logger::log_event_str(", mcs9 := "); +field_mcs9.log(); +TTCN_Logger::log_event_str(", spare2 := "); +field_spare2.log(); +TTCN_Logger::log_event_str(" }"); +} + +void PCUIF__Flags::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 (170 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) bts__active().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) sysmo__direct__dsp().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) cs1().set_param(*param.get_elem(3)); + if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) cs2().set_param(*param.get_elem(4)); + if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) cs3().set_param(*param.get_elem(5)); + if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) cs4().set_param(*param.get_elem(6)); + if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) mcs1().set_param(*param.get_elem(7)); + if (param.get_size()>8 && param.get_elem(8)->get_type()!=Module_Param::MP_NotUsed) mcs2().set_param(*param.get_elem(8)); + if (param.get_size()>9 && param.get_elem(9)->get_type()!=Module_Param::MP_NotUsed) mcs3().set_param(*param.get_elem(9)); + if (param.get_size()>10 && param.get_elem(10)->get_type()!=Module_Param::MP_NotUsed) mcs4().set_param(*param.get_elem(10)); + if (param.get_size()>11 && param.get_elem(11)->get_type()!=Module_Param::MP_NotUsed) mcs5().set_param(*param.get_elem(11)); + if (param.get_size()>12 && param.get_elem(12)->get_type()!=Module_Param::MP_NotUsed) mcs6().set_param(*param.get_elem(12)); + if (param.get_size()>13 && param.get_elem(13)->get_type()!=Module_Param::MP_NotUsed) mcs7().set_param(*param.get_elem(13)); + if (param.get_size()>14 && param.get_elem(14)->get_type()!=Module_Param::MP_NotUsed) mcs8().set_param(*param.get_elem(14)); + if (param.get_size()>15 && param.get_elem(15)->get_type()!=Module_Param::MP_NotUsed) mcs9().set_param(*param.get_elem(15)); + if (param.get_size()>16 && param.get_elem(16)->get_type()!=Module_Param::MP_NotUsed) spare2().set_param(*param.get_elem(16)); + 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(), "bts_active")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + bts__active().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "sysmo_direct_dsp")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + sysmo__direct__dsp().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(), "cs1")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + cs1().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "cs2")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + cs2().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "cs3")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + cs3().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "cs4")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + cs4().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "mcs1")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + mcs1().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "mcs2")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + mcs2().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "mcs3")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + mcs3().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "mcs4")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + mcs4().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "mcs5")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + mcs5().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "mcs6")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + mcs6().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "mcs7")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + mcs7().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "mcs8")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + mcs8().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "mcs9")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + mcs9().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "spare2")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + spare2().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @PCUIF_Types.PCUIF_Flags: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record value", "@PCUIF_Types.PCUIF_Flags"); + } +} + +void PCUIF__Flags::set_implicit_omit() +{ +if (bts__active().is_bound()) bts__active().set_implicit_omit(); +if (sysmo__direct__dsp().is_bound()) sysmo__direct__dsp().set_implicit_omit(); +if (spare().is_bound()) spare().set_implicit_omit(); +if (cs1().is_bound()) cs1().set_implicit_omit(); +if (cs2().is_bound()) cs2().set_implicit_omit(); +if (cs3().is_bound()) cs3().set_implicit_omit(); +if (cs4().is_bound()) cs4().set_implicit_omit(); +if (mcs1().is_bound()) mcs1().set_implicit_omit(); +if (mcs2().is_bound()) mcs2().set_implicit_omit(); +if (mcs3().is_bound()) mcs3().set_implicit_omit(); +if (mcs4().is_bound()) mcs4().set_implicit_omit(); +if (mcs5().is_bound()) mcs5().set_implicit_omit(); +if (mcs6().is_bound()) mcs6().set_implicit_omit(); +if (mcs7().is_bound()) mcs7().set_implicit_omit(); +if (mcs8().is_bound()) mcs8().set_implicit_omit(); +if (mcs9().is_bound()) mcs9().set_implicit_omit(); +if (spare2().is_bound()) spare2().set_implicit_omit(); +} + +void PCUIF__Flags::encode_text(Text_Buf& text_buf) const +{ +field_bts__active.encode_text(text_buf); +field_sysmo__direct__dsp.encode_text(text_buf); +field_spare.encode_text(text_buf); +field_cs1.encode_text(text_buf); +field_cs2.encode_text(text_buf); +field_cs3.encode_text(text_buf); +field_cs4.encode_text(text_buf); +field_mcs1.encode_text(text_buf); +field_mcs2.encode_text(text_buf); +field_mcs3.encode_text(text_buf); +field_mcs4.encode_text(text_buf); +field_mcs5.encode_text(text_buf); +field_mcs6.encode_text(text_buf); +field_mcs7.encode_text(text_buf); +field_mcs8.encode_text(text_buf); +field_mcs9.encode_text(text_buf); +field_spare2.encode_text(text_buf); +} + +void PCUIF__Flags::decode_text(Text_Buf& text_buf) +{ +field_bts__active.decode_text(text_buf); +field_sysmo__direct__dsp.decode_text(text_buf); +field_spare.decode_text(text_buf); +field_cs1.decode_text(text_buf); +field_cs2.decode_text(text_buf); +field_cs3.decode_text(text_buf); +field_cs4.decode_text(text_buf); +field_mcs1.decode_text(text_buf); +field_mcs2.decode_text(text_buf); +field_mcs3.decode_text(text_buf); +field_mcs4.decode_text(text_buf); +field_mcs5.decode_text(text_buf); +field_mcs6.decode_text(text_buf); +field_mcs7.decode_text(text_buf); +field_mcs8.decode_text(text_buf); +field_mcs9.decode_text(text_buf); +field_spare2.decode_text(text_buf); +} + +void PCUIF__Flags::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void PCUIF__Flags::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int PCUIF__Flags::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) +{ (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; + decoded_field_length = field_bts__active.RAW_decode(PCUIF__Flags_bts__active_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_sysmo__direct__dsp.RAW_decode(PCUIF__Flags_sysmo__direct__dsp_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_spare.RAW_decode(PCUIF__Flags_spare_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_cs1.RAW_decode(PCUIF__Flags_cs1_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_cs2.RAW_decode(PCUIF__Flags_cs2_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_cs3.RAW_decode(PCUIF__Flags_cs3_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_cs4.RAW_decode(PCUIF__Flags_cs4_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_mcs1.RAW_decode(PCUIF__Flags_mcs1_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_mcs2.RAW_decode(PCUIF__Flags_mcs2_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_mcs3.RAW_decode(PCUIF__Flags_mcs3_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_mcs4.RAW_decode(PCUIF__Flags_mcs4_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_mcs5.RAW_decode(PCUIF__Flags_mcs5_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_mcs6.RAW_decode(PCUIF__Flags_mcs6_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_mcs7.RAW_decode(PCUIF__Flags_mcs7_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_mcs8.RAW_decode(PCUIF__Flags_mcs8_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_mcs9.RAW_decode(PCUIF__Flags_mcs9_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_spare2.RAW_decode(PCUIF__Flags_spare2_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return 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 PCUIF__Flags::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 = 17; + myleaf.body.node.nodes = init_nodes_of_enc_tree(17); + myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, PCUIF__Flags_bts__active_descr_.raw); + myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PCUIF__Flags_sysmo__direct__dsp_descr_.raw); + myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, PCUIF__Flags_spare_descr_.raw); + myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, PCUIF__Flags_cs1_descr_.raw); + myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, PCUIF__Flags_cs2_descr_.raw); + myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, PCUIF__Flags_cs3_descr_.raw); + myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, PCUIF__Flags_cs4_descr_.raw); + myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, PCUIF__Flags_mcs1_descr_.raw); + myleaf.body.node.nodes[8] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 8, PCUIF__Flags_mcs2_descr_.raw); + myleaf.body.node.nodes[9] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 9, PCUIF__Flags_mcs3_descr_.raw); + myleaf.body.node.nodes[10] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 10, PCUIF__Flags_mcs4_descr_.raw); + myleaf.body.node.nodes[11] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 11, PCUIF__Flags_mcs5_descr_.raw); + myleaf.body.node.nodes[12] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 12, PCUIF__Flags_mcs6_descr_.raw); + myleaf.body.node.nodes[13] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 13, PCUIF__Flags_mcs7_descr_.raw); + myleaf.body.node.nodes[14] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 14, PCUIF__Flags_mcs8_descr_.raw); + myleaf.body.node.nodes[15] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 15, PCUIF__Flags_mcs9_descr_.raw); + myleaf.body.node.nodes[16] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 16, PCUIF__Flags_spare2_descr_.raw); + encoded_length += field_bts__active.RAW_encode(PCUIF__Flags_bts__active_descr_, *myleaf.body.node.nodes[0]); + encoded_length += field_sysmo__direct__dsp.RAW_encode(PCUIF__Flags_sysmo__direct__dsp_descr_, *myleaf.body.node.nodes[1]); + encoded_length += field_spare.RAW_encode(PCUIF__Flags_spare_descr_, *myleaf.body.node.nodes[2]); + encoded_length += field_cs1.RAW_encode(PCUIF__Flags_cs1_descr_, *myleaf.body.node.nodes[3]); + encoded_length += field_cs2.RAW_encode(PCUIF__Flags_cs2_descr_, *myleaf.body.node.nodes[4]); + encoded_length += field_cs3.RAW_encode(PCUIF__Flags_cs3_descr_, *myleaf.body.node.nodes[5]); + encoded_length += field_cs4.RAW_encode(PCUIF__Flags_cs4_descr_, *myleaf.body.node.nodes[6]); + encoded_length += field_mcs1.RAW_encode(PCUIF__Flags_mcs1_descr_, *myleaf.body.node.nodes[7]); + encoded_length += field_mcs2.RAW_encode(PCUIF__Flags_mcs2_descr_, *myleaf.body.node.nodes[8]); + encoded_length += field_mcs3.RAW_encode(PCUIF__Flags_mcs3_descr_, *myleaf.body.node.nodes[9]); + encoded_length += field_mcs4.RAW_encode(PCUIF__Flags_mcs4_descr_, *myleaf.body.node.nodes[10]); + encoded_length += field_mcs5.RAW_encode(PCUIF__Flags_mcs5_descr_, *myleaf.body.node.nodes[11]); + encoded_length += field_mcs6.RAW_encode(PCUIF__Flags_mcs6_descr_, *myleaf.body.node.nodes[12]); + encoded_length += field_mcs7.RAW_encode(PCUIF__Flags_mcs7_descr_, *myleaf.body.node.nodes[13]); + encoded_length += field_mcs8.RAW_encode(PCUIF__Flags_mcs8_descr_, *myleaf.body.node.nodes[14]); + encoded_length += field_mcs9.RAW_encode(PCUIF__Flags_mcs9_descr_, *myleaf.body.node.nodes[15]); + encoded_length += field_spare2.RAW_encode(PCUIF__Flags_spare2_descr_, *myleaf.body.node.nodes[16]); + return myleaf.length = encoded_length; +} + +struct PCUIF__Flags_template::single_value_struct { +BOOLEAN_template field_bts__active; +BOOLEAN_template field_sysmo__direct__dsp; +BITSTRING_template field_spare; +BOOLEAN_template field_cs1; +BOOLEAN_template field_cs2; +BOOLEAN_template field_cs3; +BOOLEAN_template field_cs4; +BOOLEAN_template field_mcs1; +BOOLEAN_template field_mcs2; +BOOLEAN_template field_mcs3; +BOOLEAN_template field_mcs4; +BOOLEAN_template field_mcs5; +BOOLEAN_template field_mcs6; +BOOLEAN_template field_mcs7; +BOOLEAN_template field_mcs8; +BOOLEAN_template field_mcs9; +BITSTRING_template field_spare2; +}; + +void PCUIF__Flags_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_bts__active = ANY_VALUE; +single_value->field_sysmo__direct__dsp = ANY_VALUE; +single_value->field_spare = ANY_VALUE; +single_value->field_cs1 = ANY_VALUE; +single_value->field_cs2 = ANY_VALUE; +single_value->field_cs3 = ANY_VALUE; +single_value->field_cs4 = ANY_VALUE; +single_value->field_mcs1 = ANY_VALUE; +single_value->field_mcs2 = ANY_VALUE; +single_value->field_mcs3 = ANY_VALUE; +single_value->field_mcs4 = ANY_VALUE; +single_value->field_mcs5 = ANY_VALUE; +single_value->field_mcs6 = ANY_VALUE; +single_value->field_mcs7 = ANY_VALUE; +single_value->field_mcs8 = ANY_VALUE; +single_value->field_mcs9 = ANY_VALUE; +single_value->field_spare2 = ANY_VALUE; +} +} +} + +void PCUIF__Flags_template::copy_value(const PCUIF__Flags& other_value) +{ +single_value = new single_value_struct; +if (other_value.bts__active().is_bound()) { + single_value->field_bts__active = other_value.bts__active(); +} else { + single_value->field_bts__active.clean_up(); +} +if (other_value.sysmo__direct__dsp().is_bound()) { + single_value->field_sysmo__direct__dsp = other_value.sysmo__direct__dsp(); +} else { + single_value->field_sysmo__direct__dsp.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.cs1().is_bound()) { + single_value->field_cs1 = other_value.cs1(); +} else { + single_value->field_cs1.clean_up(); +} +if (other_value.cs2().is_bound()) { + single_value->field_cs2 = other_value.cs2(); +} else { + single_value->field_cs2.clean_up(); +} +if (other_value.cs3().is_bound()) { + single_value->field_cs3 = other_value.cs3(); +} else { + single_value->field_cs3.clean_up(); +} +if (other_value.cs4().is_bound()) { + single_value->field_cs4 = other_value.cs4(); +} else { + single_value->field_cs4.clean_up(); +} +if (other_value.mcs1().is_bound()) { + single_value->field_mcs1 = other_value.mcs1(); +} else { + single_value->field_mcs1.clean_up(); +} +if (other_value.mcs2().is_bound()) { + single_value->field_mcs2 = other_value.mcs2(); +} else { + single_value->field_mcs2.clean_up(); +} +if (other_value.mcs3().is_bound()) { + single_value->field_mcs3 = other_value.mcs3(); +} else { + single_value->field_mcs3.clean_up(); +} +if (other_value.mcs4().is_bound()) { + single_value->field_mcs4 = other_value.mcs4(); +} else { + single_value->field_mcs4.clean_up(); +} +if (other_value.mcs5().is_bound()) { + single_value->field_mcs5 = other_value.mcs5(); +} else { + single_value->field_mcs5.clean_up(); +} +if (other_value.mcs6().is_bound()) { + single_value->field_mcs6 = other_value.mcs6(); +} else { + single_value->field_mcs6.clean_up(); +} +if (other_value.mcs7().is_bound()) { + single_value->field_mcs7 = other_value.mcs7(); +} else { + single_value->field_mcs7.clean_up(); +} +if (other_value.mcs8().is_bound()) { + single_value->field_mcs8 = other_value.mcs8(); +} else { + single_value->field_mcs8.clean_up(); +} +if (other_value.mcs9().is_bound()) { + single_value->field_mcs9 = other_value.mcs9(); +} else { + single_value->field_mcs9.clean_up(); +} +if (other_value.spare2().is_bound()) { + single_value->field_spare2 = other_value.spare2(); +} else { + single_value->field_spare2.clean_up(); +} +set_selection(SPECIFIC_VALUE); +} + +void PCUIF__Flags_template::copy_template(const PCUIF__Flags_template& other_value) +{ +switch (other_value.template_selection) { +case SPECIFIC_VALUE: +single_value = new single_value_struct; +if (UNINITIALIZED_TEMPLATE != other_value.bts__active().get_selection()) { +single_value->field_bts__active = other_value.bts__active(); +} else { +single_value->field_bts__active.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.sysmo__direct__dsp().get_selection()) { +single_value->field_sysmo__direct__dsp = other_value.sysmo__direct__dsp(); +} else { +single_value->field_sysmo__direct__dsp.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.cs1().get_selection()) { +single_value->field_cs1 = other_value.cs1(); +} else { +single_value->field_cs1.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.cs2().get_selection()) { +single_value->field_cs2 = other_value.cs2(); +} else { +single_value->field_cs2.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.cs3().get_selection()) { +single_value->field_cs3 = other_value.cs3(); +} else { +single_value->field_cs3.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.cs4().get_selection()) { +single_value->field_cs4 = other_value.cs4(); +} else { +single_value->field_cs4.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.mcs1().get_selection()) { +single_value->field_mcs1 = other_value.mcs1(); +} else { +single_value->field_mcs1.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.mcs2().get_selection()) { +single_value->field_mcs2 = other_value.mcs2(); +} else { +single_value->field_mcs2.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.mcs3().get_selection()) { +single_value->field_mcs3 = other_value.mcs3(); +} else { +single_value->field_mcs3.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.mcs4().get_selection()) { +single_value->field_mcs4 = other_value.mcs4(); +} else { +single_value->field_mcs4.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.mcs5().get_selection()) { +single_value->field_mcs5 = other_value.mcs5(); +} else { +single_value->field_mcs5.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.mcs6().get_selection()) { +single_value->field_mcs6 = other_value.mcs6(); +} else { +single_value->field_mcs6.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.mcs7().get_selection()) { +single_value->field_mcs7 = other_value.mcs7(); +} else { +single_value->field_mcs7.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.mcs8().get_selection()) { +single_value->field_mcs8 = other_value.mcs8(); +} else { +single_value->field_mcs8.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.mcs9().get_selection()) { +single_value->field_mcs9 = other_value.mcs9(); +} else { +single_value->field_mcs9.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.spare2().get_selection()) { +single_value->field_spare2 = other_value.spare2(); +} else { +single_value->field_spare2.clean_up(); +} +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new PCUIF__Flags_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_Flags."); +break; +} +set_selection(other_value); +} + +PCUIF__Flags_template::PCUIF__Flags_template() +{ +} + +PCUIF__Flags_template::PCUIF__Flags_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +PCUIF__Flags_template::PCUIF__Flags_template(const PCUIF__Flags& other_value) +{ +copy_value(other_value); +} + +PCUIF__Flags_template::PCUIF__Flags_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const PCUIF__Flags&)other_value); +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of type @PCUIF_Types.PCUIF_Flags from an unbound optional field."); +} +} + +PCUIF__Flags_template::PCUIF__Flags_template(const PCUIF__Flags_template& other_value) +: Base_Template() +{ +copy_template(other_value); +} + +PCUIF__Flags_template::~PCUIF__Flags_template() +{ +clean_up(); +} + +PCUIF__Flags_template& PCUIF__Flags_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +PCUIF__Flags_template& PCUIF__Flags_template::operator=(const PCUIF__Flags& other_value) +{ +clean_up(); +copy_value(other_value); +return *this; +} + +PCUIF__Flags_template& PCUIF__Flags_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const PCUIF__Flags&)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 @PCUIF_Types.PCUIF_Flags."); +} +return *this; +} + +PCUIF__Flags_template& PCUIF__Flags_template::operator=(const PCUIF__Flags_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean PCUIF__Flags_template::match(const PCUIF__Flags& 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.bts__active().is_bound()) return FALSE; +if(!single_value->field_bts__active.match(other_value.bts__active(), legacy))return FALSE; +if(!other_value.sysmo__direct__dsp().is_bound()) return FALSE; +if(!single_value->field_sysmo__direct__dsp.match(other_value.sysmo__direct__dsp(), 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.cs1().is_bound()) return FALSE; +if(!single_value->field_cs1.match(other_value.cs1(), legacy))return FALSE; +if(!other_value.cs2().is_bound()) return FALSE; +if(!single_value->field_cs2.match(other_value.cs2(), legacy))return FALSE; +if(!other_value.cs3().is_bound()) return FALSE; +if(!single_value->field_cs3.match(other_value.cs3(), legacy))return FALSE; +if(!other_value.cs4().is_bound()) return FALSE; +if(!single_value->field_cs4.match(other_value.cs4(), legacy))return FALSE; +if(!other_value.mcs1().is_bound()) return FALSE; +if(!single_value->field_mcs1.match(other_value.mcs1(), legacy))return FALSE; +if(!other_value.mcs2().is_bound()) return FALSE; +if(!single_value->field_mcs2.match(other_value.mcs2(), legacy))return FALSE; +if(!other_value.mcs3().is_bound()) return FALSE; +if(!single_value->field_mcs3.match(other_value.mcs3(), legacy))return FALSE; +if(!other_value.mcs4().is_bound()) return FALSE; +if(!single_value->field_mcs4.match(other_value.mcs4(), legacy))return FALSE; +if(!other_value.mcs5().is_bound()) return FALSE; +if(!single_value->field_mcs5.match(other_value.mcs5(), legacy))return FALSE; +if(!other_value.mcs6().is_bound()) return FALSE; +if(!single_value->field_mcs6.match(other_value.mcs6(), legacy))return FALSE; +if(!other_value.mcs7().is_bound()) return FALSE; +if(!single_value->field_mcs7.match(other_value.mcs7(), legacy))return FALSE; +if(!other_value.mcs8().is_bound()) return FALSE; +if(!single_value->field_mcs8.match(other_value.mcs8(), legacy))return FALSE; +if(!other_value.mcs9().is_bound()) return FALSE; +if(!single_value->field_mcs9.match(other_value.mcs9(), legacy))return FALSE; +if(!other_value.spare2().is_bound()) return FALSE; +if(!single_value->field_spare2.match(other_value.spare2(), legacy))return FALSE; +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_Flags."); +} +return FALSE; +} + +boolean PCUIF__Flags_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +if (template_selection != SPECIFIC_VALUE) return TRUE; +if (single_value->field_bts__active.is_bound()) return TRUE; +if (single_value->field_sysmo__direct__dsp.is_bound()) return TRUE; +if (single_value->field_spare.is_bound()) return TRUE; +if (single_value->field_cs1.is_bound()) return TRUE; +if (single_value->field_cs2.is_bound()) return TRUE; +if (single_value->field_cs3.is_bound()) return TRUE; +if (single_value->field_cs4.is_bound()) return TRUE; +if (single_value->field_mcs1.is_bound()) return TRUE; +if (single_value->field_mcs2.is_bound()) return TRUE; +if (single_value->field_mcs3.is_bound()) return TRUE; +if (single_value->field_mcs4.is_bound()) return TRUE; +if (single_value->field_mcs5.is_bound()) return TRUE; +if (single_value->field_mcs6.is_bound()) return TRUE; +if (single_value->field_mcs7.is_bound()) return TRUE; +if (single_value->field_mcs8.is_bound()) return TRUE; +if (single_value->field_mcs9.is_bound()) return TRUE; +if (single_value->field_spare2.is_bound()) return TRUE; +return FALSE; +} + +boolean PCUIF__Flags_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +if (!single_value->field_bts__active.is_value()) return FALSE; +if (!single_value->field_sysmo__direct__dsp.is_value()) return FALSE; +if (!single_value->field_spare.is_value()) return FALSE; +if (!single_value->field_cs1.is_value()) return FALSE; +if (!single_value->field_cs2.is_value()) return FALSE; +if (!single_value->field_cs3.is_value()) return FALSE; +if (!single_value->field_cs4.is_value()) return FALSE; +if (!single_value->field_mcs1.is_value()) return FALSE; +if (!single_value->field_mcs2.is_value()) return FALSE; +if (!single_value->field_mcs3.is_value()) return FALSE; +if (!single_value->field_mcs4.is_value()) return FALSE; +if (!single_value->field_mcs5.is_value()) return FALSE; +if (!single_value->field_mcs6.is_value()) return FALSE; +if (!single_value->field_mcs7.is_value()) return FALSE; +if (!single_value->field_mcs8.is_value()) return FALSE; +if (!single_value->field_mcs9.is_value()) return FALSE; +if (!single_value->field_spare2.is_value()) return FALSE; +return TRUE; +} + +void PCUIF__Flags_template::clean_up() +{ +switch (template_selection) { +case SPECIFIC_VALUE: +delete single_value; +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +delete [] value_list.list_value; +default: +break; +} +template_selection = UNINITIALIZED_TEMPLATE; +} + +PCUIF__Flags PCUIF__Flags_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 @PCUIF_Types.PCUIF_Flags."); +PCUIF__Flags ret_val; +if (single_value->field_bts__active.is_bound()) { +ret_val.bts__active() = single_value->field_bts__active.valueof(); +} +if (single_value->field_sysmo__direct__dsp.is_bound()) { +ret_val.sysmo__direct__dsp() = single_value->field_sysmo__direct__dsp.valueof(); +} +if (single_value->field_spare.is_bound()) { +ret_val.spare() = single_value->field_spare.valueof(); +} +if (single_value->field_cs1.is_bound()) { +ret_val.cs1() = single_value->field_cs1.valueof(); +} +if (single_value->field_cs2.is_bound()) { +ret_val.cs2() = single_value->field_cs2.valueof(); +} +if (single_value->field_cs3.is_bound()) { +ret_val.cs3() = single_value->field_cs3.valueof(); +} +if (single_value->field_cs4.is_bound()) { +ret_val.cs4() = single_value->field_cs4.valueof(); +} +if (single_value->field_mcs1.is_bound()) { +ret_val.mcs1() = single_value->field_mcs1.valueof(); +} +if (single_value->field_mcs2.is_bound()) { +ret_val.mcs2() = single_value->field_mcs2.valueof(); +} +if (single_value->field_mcs3.is_bound()) { +ret_val.mcs3() = single_value->field_mcs3.valueof(); +} +if (single_value->field_mcs4.is_bound()) { +ret_val.mcs4() = single_value->field_mcs4.valueof(); +} +if (single_value->field_mcs5.is_bound()) { +ret_val.mcs5() = single_value->field_mcs5.valueof(); +} +if (single_value->field_mcs6.is_bound()) { +ret_val.mcs6() = single_value->field_mcs6.valueof(); +} +if (single_value->field_mcs7.is_bound()) { +ret_val.mcs7() = single_value->field_mcs7.valueof(); +} +if (single_value->field_mcs8.is_bound()) { +ret_val.mcs8() = single_value->field_mcs8.valueof(); +} +if (single_value->field_mcs9.is_bound()) { +ret_val.mcs9() = single_value->field_mcs9.valueof(); +} +if (single_value->field_spare2.is_bound()) { +ret_val.spare2() = single_value->field_spare2.valueof(); +} +return ret_val; +} + +void PCUIF__Flags_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) +TTCN_error("Setting an invalid list for a template of type @PCUIF_Types.PCUIF_Flags."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new PCUIF__Flags_template[list_length]; +} + +PCUIF__Flags_template& PCUIF__Flags_template::list_item(unsigned int list_index) const +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) +TTCN_error("Accessing a list element of a non-list template of type @PCUIF_Types.PCUIF_Flags."); +if (list_index >= value_list.n_values) +TTCN_error("Index overflow in a value list template of type @PCUIF_Types.PCUIF_Flags."); +return value_list.list_value[list_index]; +} + +BOOLEAN_template& PCUIF__Flags_template::bts__active() +{ +set_specific(); +return single_value->field_bts__active; +} + +const BOOLEAN_template& PCUIF__Flags_template::bts__active() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field bts_active of a non-specific template of type @PCUIF_Types.PCUIF_Flags."); +return single_value->field_bts__active; +} + +BOOLEAN_template& PCUIF__Flags_template::sysmo__direct__dsp() +{ +set_specific(); +return single_value->field_sysmo__direct__dsp; +} + +const BOOLEAN_template& PCUIF__Flags_template::sysmo__direct__dsp() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field sysmo_direct_dsp of a non-specific template of type @PCUIF_Types.PCUIF_Flags."); +return single_value->field_sysmo__direct__dsp; +} + +BITSTRING_template& PCUIF__Flags_template::spare() +{ +set_specific(); +return single_value->field_spare; +} + +const BITSTRING_template& PCUIF__Flags_template::spare() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field spare of a non-specific template of type @PCUIF_Types.PCUIF_Flags."); +return single_value->field_spare; +} + +BOOLEAN_template& PCUIF__Flags_template::cs1() +{ +set_specific(); +return single_value->field_cs1; +} + +const BOOLEAN_template& PCUIF__Flags_template::cs1() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field cs1 of a non-specific template of type @PCUIF_Types.PCUIF_Flags."); +return single_value->field_cs1; +} + +BOOLEAN_template& PCUIF__Flags_template::cs2() +{ +set_specific(); +return single_value->field_cs2; +} + +const BOOLEAN_template& PCUIF__Flags_template::cs2() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field cs2 of a non-specific template of type @PCUIF_Types.PCUIF_Flags."); +return single_value->field_cs2; +} + +BOOLEAN_template& PCUIF__Flags_template::cs3() +{ +set_specific(); +return single_value->field_cs3; +} + +const BOOLEAN_template& PCUIF__Flags_template::cs3() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field cs3 of a non-specific template of type @PCUIF_Types.PCUIF_Flags."); +return single_value->field_cs3; +} + +BOOLEAN_template& PCUIF__Flags_template::cs4() +{ +set_specific(); +return single_value->field_cs4; +} + +const BOOLEAN_template& PCUIF__Flags_template::cs4() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field cs4 of a non-specific template of type @PCUIF_Types.PCUIF_Flags."); +return single_value->field_cs4; +} + +BOOLEAN_template& PCUIF__Flags_template::mcs1() +{ +set_specific(); +return single_value->field_mcs1; +} + +const BOOLEAN_template& PCUIF__Flags_template::mcs1() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field mcs1 of a non-specific template of type @PCUIF_Types.PCUIF_Flags."); +return single_value->field_mcs1; +} + +BOOLEAN_template& PCUIF__Flags_template::mcs2() +{ +set_specific(); +return single_value->field_mcs2; +} + +const BOOLEAN_template& PCUIF__Flags_template::mcs2() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field mcs2 of a non-specific template of type @PCUIF_Types.PCUIF_Flags."); +return single_value->field_mcs2; +} + +BOOLEAN_template& PCUIF__Flags_template::mcs3() +{ +set_specific(); +return single_value->field_mcs3; +} + +const BOOLEAN_template& PCUIF__Flags_template::mcs3() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field mcs3 of a non-specific template of type @PCUIF_Types.PCUIF_Flags."); +return single_value->field_mcs3; +} + +BOOLEAN_template& PCUIF__Flags_template::mcs4() +{ +set_specific(); +return single_value->field_mcs4; +} + +const BOOLEAN_template& PCUIF__Flags_template::mcs4() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field mcs4 of a non-specific template of type @PCUIF_Types.PCUIF_Flags."); +return single_value->field_mcs4; +} + +BOOLEAN_template& PCUIF__Flags_template::mcs5() +{ +set_specific(); +return single_value->field_mcs5; +} + +const BOOLEAN_template& PCUIF__Flags_template::mcs5() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field mcs5 of a non-specific template of type @PCUIF_Types.PCUIF_Flags."); +return single_value->field_mcs5; +} + +BOOLEAN_template& PCUIF__Flags_template::mcs6() +{ +set_specific(); +return single_value->field_mcs6; +} + +const BOOLEAN_template& PCUIF__Flags_template::mcs6() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field mcs6 of a non-specific template of type @PCUIF_Types.PCUIF_Flags."); +return single_value->field_mcs6; +} + +BOOLEAN_template& PCUIF__Flags_template::mcs7() +{ +set_specific(); +return single_value->field_mcs7; +} + +const BOOLEAN_template& PCUIF__Flags_template::mcs7() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field mcs7 of a non-specific template of type @PCUIF_Types.PCUIF_Flags."); +return single_value->field_mcs7; +} + +BOOLEAN_template& PCUIF__Flags_template::mcs8() +{ +set_specific(); +return single_value->field_mcs8; +} + +const BOOLEAN_template& PCUIF__Flags_template::mcs8() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field mcs8 of a non-specific template of type @PCUIF_Types.PCUIF_Flags."); +return single_value->field_mcs8; +} + +BOOLEAN_template& PCUIF__Flags_template::mcs9() +{ +set_specific(); +return single_value->field_mcs9; +} + +const BOOLEAN_template& PCUIF__Flags_template::mcs9() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field mcs9 of a non-specific template of type @PCUIF_Types.PCUIF_Flags."); +return single_value->field_mcs9; +} + +BITSTRING_template& PCUIF__Flags_template::spare2() +{ +set_specific(); +return single_value->field_spare2; +} + +const BITSTRING_template& PCUIF__Flags_template::spare2() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field spare2 of a non-specific template of type @PCUIF_Types.PCUIF_Flags."); +return single_value->field_spare2; +} + +int PCUIF__Flags_template::size_of() const +{ + if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_Flags which has an ifpresent attribute."); + switch (template_selection) + { + case SPECIFIC_VALUE: + return 17; + case VALUE_LIST: + { + if (value_list.n_values<1) + TTCN_error("Internal error: Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_Flags 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 @PCUIF_Types.PCUIF_Flags containing a value list with different sizes."); + } + return item_size; + } + case OMIT_VALUE: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_Flags containing omit value."); + case ANY_VALUE: + case ANY_OR_OMIT: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_Flags containing */? value."); + case COMPLEMENTED_LIST: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_Flags containing complemented list."); + default: + TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_Flags."); + } + return 0; +} + +void PCUIF__Flags_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_str("{ bts_active := "); +single_value->field_bts__active.log(); +TTCN_Logger::log_event_str(", sysmo_direct_dsp := "); +single_value->field_sysmo__direct__dsp.log(); +TTCN_Logger::log_event_str(", spare := "); +single_value->field_spare.log(); +TTCN_Logger::log_event_str(", cs1 := "); +single_value->field_cs1.log(); +TTCN_Logger::log_event_str(", cs2 := "); +single_value->field_cs2.log(); +TTCN_Logger::log_event_str(", cs3 := "); +single_value->field_cs3.log(); +TTCN_Logger::log_event_str(", cs4 := "); +single_value->field_cs4.log(); +TTCN_Logger::log_event_str(", mcs1 := "); +single_value->field_mcs1.log(); +TTCN_Logger::log_event_str(", mcs2 := "); +single_value->field_mcs2.log(); +TTCN_Logger::log_event_str(", mcs3 := "); +single_value->field_mcs3.log(); +TTCN_Logger::log_event_str(", mcs4 := "); +single_value->field_mcs4.log(); +TTCN_Logger::log_event_str(", mcs5 := "); +single_value->field_mcs5.log(); +TTCN_Logger::log_event_str(", mcs6 := "); +single_value->field_mcs6.log(); +TTCN_Logger::log_event_str(", mcs7 := "); +single_value->field_mcs7.log(); +TTCN_Logger::log_event_str(", mcs8 := "); +single_value->field_mcs8.log(); +TTCN_Logger::log_event_str(", mcs9 := "); +single_value->field_mcs9.log(); +TTCN_Logger::log_event_str(", spare2 := "); +single_value->field_spare2.log(); +TTCN_Logger::log_event_str(" }"); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { +if (list_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[list_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void PCUIF__Flags_template::log_match(const PCUIF__Flags& 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_bts__active.match(match_value.bts__active(), legacy)){ +TTCN_Logger::log_logmatch_info(".bts_active"); +single_value->field_bts__active.log_match(match_value.bts__active(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_sysmo__direct__dsp.match(match_value.sysmo__direct__dsp(), legacy)){ +TTCN_Logger::log_logmatch_info(".sysmo_direct_dsp"); +single_value->field_sysmo__direct__dsp.log_match(match_value.sysmo__direct__dsp(), 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_cs1.match(match_value.cs1(), legacy)){ +TTCN_Logger::log_logmatch_info(".cs1"); +single_value->field_cs1.log_match(match_value.cs1(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_cs2.match(match_value.cs2(), legacy)){ +TTCN_Logger::log_logmatch_info(".cs2"); +single_value->field_cs2.log_match(match_value.cs2(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_cs3.match(match_value.cs3(), legacy)){ +TTCN_Logger::log_logmatch_info(".cs3"); +single_value->field_cs3.log_match(match_value.cs3(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_cs4.match(match_value.cs4(), legacy)){ +TTCN_Logger::log_logmatch_info(".cs4"); +single_value->field_cs4.log_match(match_value.cs4(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_mcs1.match(match_value.mcs1(), legacy)){ +TTCN_Logger::log_logmatch_info(".mcs1"); +single_value->field_mcs1.log_match(match_value.mcs1(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_mcs2.match(match_value.mcs2(), legacy)){ +TTCN_Logger::log_logmatch_info(".mcs2"); +single_value->field_mcs2.log_match(match_value.mcs2(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_mcs3.match(match_value.mcs3(), legacy)){ +TTCN_Logger::log_logmatch_info(".mcs3"); +single_value->field_mcs3.log_match(match_value.mcs3(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_mcs4.match(match_value.mcs4(), legacy)){ +TTCN_Logger::log_logmatch_info(".mcs4"); +single_value->field_mcs4.log_match(match_value.mcs4(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_mcs5.match(match_value.mcs5(), legacy)){ +TTCN_Logger::log_logmatch_info(".mcs5"); +single_value->field_mcs5.log_match(match_value.mcs5(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_mcs6.match(match_value.mcs6(), legacy)){ +TTCN_Logger::log_logmatch_info(".mcs6"); +single_value->field_mcs6.log_match(match_value.mcs6(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_mcs7.match(match_value.mcs7(), legacy)){ +TTCN_Logger::log_logmatch_info(".mcs7"); +single_value->field_mcs7.log_match(match_value.mcs7(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_mcs8.match(match_value.mcs8(), legacy)){ +TTCN_Logger::log_logmatch_info(".mcs8"); +single_value->field_mcs8.log_match(match_value.mcs8(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_mcs9.match(match_value.mcs9(), legacy)){ +TTCN_Logger::log_logmatch_info(".mcs9"); +single_value->field_mcs9.log_match(match_value.mcs9(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_spare2.match(match_value.spare2(), legacy)){ +TTCN_Logger::log_logmatch_info(".spare2"); +single_value->field_spare2.log_match(match_value.spare2(), 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("{ bts_active := "); +single_value->field_bts__active.log_match(match_value.bts__active(), legacy); +TTCN_Logger::log_event_str(", sysmo_direct_dsp := "); +single_value->field_sysmo__direct__dsp.log_match(match_value.sysmo__direct__dsp(), legacy); +TTCN_Logger::log_event_str(", spare := "); +single_value->field_spare.log_match(match_value.spare(), legacy); +TTCN_Logger::log_event_str(", cs1 := "); +single_value->field_cs1.log_match(match_value.cs1(), legacy); +TTCN_Logger::log_event_str(", cs2 := "); +single_value->field_cs2.log_match(match_value.cs2(), legacy); +TTCN_Logger::log_event_str(", cs3 := "); +single_value->field_cs3.log_match(match_value.cs3(), legacy); +TTCN_Logger::log_event_str(", cs4 := "); +single_value->field_cs4.log_match(match_value.cs4(), legacy); +TTCN_Logger::log_event_str(", mcs1 := "); +single_value->field_mcs1.log_match(match_value.mcs1(), legacy); +TTCN_Logger::log_event_str(", mcs2 := "); +single_value->field_mcs2.log_match(match_value.mcs2(), legacy); +TTCN_Logger::log_event_str(", mcs3 := "); +single_value->field_mcs3.log_match(match_value.mcs3(), legacy); +TTCN_Logger::log_event_str(", mcs4 := "); +single_value->field_mcs4.log_match(match_value.mcs4(), legacy); +TTCN_Logger::log_event_str(", mcs5 := "); +single_value->field_mcs5.log_match(match_value.mcs5(), legacy); +TTCN_Logger::log_event_str(", mcs6 := "); +single_value->field_mcs6.log_match(match_value.mcs6(), legacy); +TTCN_Logger::log_event_str(", mcs7 := "); +single_value->field_mcs7.log_match(match_value.mcs7(), legacy); +TTCN_Logger::log_event_str(", mcs8 := "); +single_value->field_mcs8.log_match(match_value.mcs8(), legacy); +TTCN_Logger::log_event_str(", mcs9 := "); +single_value->field_mcs9.log_match(match_value.mcs9(), legacy); +TTCN_Logger::log_event_str(", spare2 := "); +single_value->field_spare2.log_match(match_value.spare2(), 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 PCUIF__Flags_template::encode_text(Text_Buf& text_buf) const +{ +encode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value->field_bts__active.encode_text(text_buf); +single_value->field_sysmo__direct__dsp.encode_text(text_buf); +single_value->field_spare.encode_text(text_buf); +single_value->field_cs1.encode_text(text_buf); +single_value->field_cs2.encode_text(text_buf); +single_value->field_cs3.encode_text(text_buf); +single_value->field_cs4.encode_text(text_buf); +single_value->field_mcs1.encode_text(text_buf); +single_value->field_mcs2.encode_text(text_buf); +single_value->field_mcs3.encode_text(text_buf); +single_value->field_mcs4.encode_text(text_buf); +single_value->field_mcs5.encode_text(text_buf); +single_value->field_mcs6.encode_text(text_buf); +single_value->field_mcs7.encode_text(text_buf); +single_value->field_mcs8.encode_text(text_buf); +single_value->field_mcs9.encode_text(text_buf); +single_value->field_spare2.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 @PCUIF_Types.PCUIF_Flags."); +} +} + +void PCUIF__Flags_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_bts__active.decode_text(text_buf); +single_value->field_sysmo__direct__dsp.decode_text(text_buf); +single_value->field_spare.decode_text(text_buf); +single_value->field_cs1.decode_text(text_buf); +single_value->field_cs2.decode_text(text_buf); +single_value->field_cs3.decode_text(text_buf); +single_value->field_cs4.decode_text(text_buf); +single_value->field_mcs1.decode_text(text_buf); +single_value->field_mcs2.decode_text(text_buf); +single_value->field_mcs3.decode_text(text_buf); +single_value->field_mcs4.decode_text(text_buf); +single_value->field_mcs5.decode_text(text_buf); +single_value->field_mcs6.decode_text(text_buf); +single_value->field_mcs7.decode_text(text_buf); +single_value->field_mcs8.decode_text(text_buf); +single_value->field_mcs9.decode_text(text_buf); +single_value->field_spare2.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 PCUIF__Flags_template[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 @PCUIF_Types.PCUIF_Flags."); +} +} + +void PCUIF__Flags_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: { + PCUIF__Flags_template new_temp; + new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); + for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) bts__active().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) sysmo__direct__dsp().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) cs1().set_param(*param.get_elem(3)); + if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) cs2().set_param(*param.get_elem(4)); + if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) cs3().set_param(*param.get_elem(5)); + if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) cs4().set_param(*param.get_elem(6)); + if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) mcs1().set_param(*param.get_elem(7)); + if (param.get_size()>8 && param.get_elem(8)->get_type()!=Module_Param::MP_NotUsed) mcs2().set_param(*param.get_elem(8)); + if (param.get_size()>9 && param.get_elem(9)->get_type()!=Module_Param::MP_NotUsed) mcs3().set_param(*param.get_elem(9)); + if (param.get_size()>10 && param.get_elem(10)->get_type()!=Module_Param::MP_NotUsed) mcs4().set_param(*param.get_elem(10)); + if (param.get_size()>11 && param.get_elem(11)->get_type()!=Module_Param::MP_NotUsed) mcs5().set_param(*param.get_elem(11)); + if (param.get_size()>12 && param.get_elem(12)->get_type()!=Module_Param::MP_NotUsed) mcs6().set_param(*param.get_elem(12)); + if (param.get_size()>13 && param.get_elem(13)->get_type()!=Module_Param::MP_NotUsed) mcs7().set_param(*param.get_elem(13)); + if (param.get_size()>14 && param.get_elem(14)->get_type()!=Module_Param::MP_NotUsed) mcs8().set_param(*param.get_elem(14)); + if (param.get_size()>15 && param.get_elem(15)->get_type()!=Module_Param::MP_NotUsed) mcs9().set_param(*param.get_elem(15)); + if (param.get_size()>16 && param.get_elem(16)->get_type()!=Module_Param::MP_NotUsed) spare2().set_param(*param.get_elem(16)); + 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(), "bts_active")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + bts__active().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "sysmo_direct_dsp")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + sysmo__direct__dsp().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(), "cs1")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + cs1().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "cs2")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + cs2().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "cs3")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + cs3().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "cs4")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + cs4().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "mcs1")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + mcs1().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "mcs2")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + mcs2().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "mcs3")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + mcs3().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "mcs4")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + mcs4().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "mcs5")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + mcs5().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "mcs6")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + mcs6().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "mcs7")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + mcs7().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "mcs8")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + mcs8().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "mcs9")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + mcs9().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "spare2")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + spare2().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @PCUIF_Types.PCUIF_Flags: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record template", "@PCUIF_Types.PCUIF_Flags"); + } + is_ifpresent = param.get_ifpresent(); +} + +void PCUIF__Flags_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_bts__active.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_Flags"); +single_value->field_sysmo__direct__dsp.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_Flags"); +single_value->field_spare.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_Flags"); +single_value->field_cs1.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_Flags"); +single_value->field_cs2.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_Flags"); +single_value->field_cs3.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_Flags"); +single_value->field_cs4.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_Flags"); +single_value->field_mcs1.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_Flags"); +single_value->field_mcs2.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_Flags"); +single_value->field_mcs3.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_Flags"); +single_value->field_mcs4.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_Flags"); +single_value->field_mcs5.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_Flags"); +single_value->field_mcs6.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_Flags"); +single_value->field_mcs7.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_Flags"); +single_value->field_mcs8.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_Flags"); +single_value->field_mcs9.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_Flags"); +single_value->field_spare2.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_Flags"); +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 : "@PCUIF_Types.PCUIF_Flags"); +} + +boolean PCUIF__Flags_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean PCUIF__Flags_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int l_idx=0; l_idx(enum_type other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PCUIF_Types.PCUIF_TextType."); +return enum_value > other_value; +} + +boolean PCUIF__TextType::operator>(const PCUIF__TextType& other_value) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PCUIF_Types.PCUIF_TextType."); +if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @PCUIF_Types.PCUIF_TextType."); +return enum_value > other_value.enum_value; +} + +const char *PCUIF__TextType::enum_to_str(enum_type enum_par) +{ +switch (enum_par) { +case PCU__VERSION: return "PCU_VERSION"; +case PCU__OML__ALERT: return "PCU_OML_ALERT"; +default: return ""; +} +} + +PCUIF__TextType::enum_type PCUIF__TextType::str_to_enum(const char *str_par) +{ +if (!strcmp(str_par, "PCU_VERSION")) return PCU__VERSION; +else if (!strcmp(str_par, "PCU_OML_ALERT")) return PCU__OML__ALERT; +else return UNKNOWN_VALUE; +} + +boolean PCUIF__TextType::is_valid_enum(int int_par) +{ +switch (int_par) { +case 0: +case 1: +return TRUE; +default: +return FALSE; +} +} + +int PCUIF__TextType::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 @PCUIF_Types.PCUIF_TextType.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); +return enum_par; +} + +int PCUIF__TextType::enum2int(const PCUIF__TextType& 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 @PCUIF_Types.PCUIF_TextType.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); +return enum_par.enum_value; +} + +void PCUIF__TextType::int2enum(int int_val) +{ +if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @PCUIF_Types.PCUIF_TextType.", int_val); +enum_value = (enum_type)int_val; +} + +PCUIF__TextType::operator PCUIF__TextType::enum_type() const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @PCUIF_Types.PCUIF_TextType."); +return enum_value; +} + +void PCUIF__TextType::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 PCUIF__TextType::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", "@PCUIF_Types.PCUIF_TextType"); + enum_value = str_to_enum(param.get_enumerated()); + if (!is_valid_enum(enum_value)) { + param.error("Invalid enumerated value for type @PCUIF_Types.PCUIF_TextType."); + } +} + +void PCUIF__TextType::encode_text(Text_Buf& text_buf) const +{ +if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @PCUIF_Types.PCUIF_TextType."); +text_buf.push_int(enum_value); +} + +void PCUIF__TextType::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 @PCUIF_Types.PCUIF_TextType.", enum_value); +} + +void PCUIF__TextType::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void PCUIF__TextType::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int PCUIF__TextType::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) +{ + int decoded_value = 0; + int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 2, no_err); + if (decoded_length < 0) return decoded_length; + if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value; + else { + if(no_err){ + return -1; + } else { + TTCN_EncDec_ErrorContext::error + (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name); + enum_value = UNKNOWN_VALUE; + } + } + return decoded_length; +} + +int PCUIF__TextType::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const +{ + return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 2); +} + +void PCUIF__TextType_template::copy_template(const PCUIF__TextType_template& other_value) +{ +set_selection(other_value); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = other_value.single_value; +break; +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new PCUIF__TextType_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of enumerated type @PCUIF_Types.PCUIF_TextType."); +} +} + +PCUIF__TextType_template::PCUIF__TextType_template() +{ +} + +PCUIF__TextType_template::PCUIF__TextType_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +PCUIF__TextType_template::PCUIF__TextType_template(int other_value) + : Base_Template(SPECIFIC_VALUE) +{ +if (!PCUIF__TextType::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @PCUIF_Types.PCUIF_TextType with unknown numeric value %d.", other_value); +single_value = (PCUIF__TextType::enum_type)other_value; +} + +PCUIF__TextType_template::PCUIF__TextType_template(PCUIF__TextType::enum_type other_value) + : Base_Template(SPECIFIC_VALUE) +{ +single_value = other_value; +} + +PCUIF__TextType_template::PCUIF__TextType_template(const PCUIF__TextType& other_value) + : Base_Template(SPECIFIC_VALUE) +{ +if (other_value.enum_value == PCUIF__TextType::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @PCUIF_Types.PCUIF_TextType."); +single_value = other_value.enum_value; +} + +PCUIF__TextType_template::PCUIF__TextType_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +set_selection(SPECIFIC_VALUE); +single_value = (PCUIF__TextType::enum_type)(const PCUIF__TextType&)other_value; +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of enumerated type @PCUIF_Types.PCUIF_TextType from an unbound optional field."); +} +} + +PCUIF__TextType_template::PCUIF__TextType_template(const PCUIF__TextType_template& other_value) + : Base_Template() +{ +copy_template(other_value); +} + +PCUIF__TextType_template::~PCUIF__TextType_template() +{ +clean_up(); +} + +boolean PCUIF__TextType_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +return TRUE; +} + +boolean PCUIF__TextType_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +return single_value != PCUIF__TextType::UNBOUND_VALUE; +} + +void PCUIF__TextType_template::clean_up() +{ +if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value; +template_selection = UNINITIALIZED_TEMPLATE; +} + +PCUIF__TextType_template& PCUIF__TextType_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +PCUIF__TextType_template& PCUIF__TextType_template::operator=(int other_value) +{ +if (!PCUIF__TextType::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @PCUIF_Types.PCUIF_TextType.", other_value); +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = (PCUIF__TextType::enum_type)other_value; +return *this; +} + +PCUIF__TextType_template& PCUIF__TextType_template::operator=(PCUIF__TextType::enum_type other_value) +{ +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = other_value; +return *this; +} + +PCUIF__TextType_template& PCUIF__TextType_template::operator=(const PCUIF__TextType& other_value) +{ +if (other_value.enum_value == PCUIF__TextType::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @PCUIF_Types.PCUIF_TextType to a template."); +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value = other_value.enum_value; +return *this; +} + +PCUIF__TextType_template& PCUIF__TextType_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +set_selection(SPECIFIC_VALUE); +single_value = (PCUIF__TextType::enum_type)(const PCUIF__TextType&)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 @PCUIF_Types.PCUIF_TextType."); +} +return *this; +} + +PCUIF__TextType_template& PCUIF__TextType_template::operator=(const PCUIF__TextType_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean PCUIF__TextType_template::match(PCUIF__TextType::enum_type other_value, boolean) const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +return single_value == other_value; +case OMIT_VALUE: +return FALSE; +case ANY_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of enumerated type @PCUIF_Types.PCUIF_TextType."); +} +return FALSE; +} + +boolean PCUIF__TextType_template::match(const PCUIF__TextType& other_value, boolean) const +{ +if (other_value.enum_value == PCUIF__TextType::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @PCUIF_Types.PCUIF_TextType with an unbound value."); +return match(other_value.enum_value); +} + +PCUIF__TextType::enum_type PCUIF__TextType_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 @PCUIF_Types.PCUIF_TextType."); +return single_value; +} + +void PCUIF__TextType_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @PCUIF_Types.PCUIF_TextType."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new PCUIF__TextType_template[list_length]; +} + +PCUIF__TextType_template& PCUIF__TextType_template::list_item(unsigned int list_index) +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @PCUIF_Types.PCUIF_TextType."); +if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @PCUIF_Types.PCUIF_TextType."); +return value_list.list_value[list_index]; +} + +void PCUIF__TextType_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_enum(PCUIF__TextType::enum_to_str(single_value), single_value); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { +if (elem_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[elem_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void PCUIF__TextType_template::log_match(const PCUIF__TextType& 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 PCUIF__TextType_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 @PCUIF_Types.PCUIF_TextType."); +} +} + +void PCUIF__TextType_template::decode_text(Text_Buf& text_buf) +{ +clean_up(); +decode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = (PCUIF__TextType::enum_type)text_buf.pull_int().get_val(); +if (!PCUIF__TextType::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @PCUIF_Types.PCUIF_TextType.", 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 PCUIF__TextType_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 @PCUIF_Types.PCUIF_TextType."); +} +} + +boolean PCUIF__TextType_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean PCUIF__TextType_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int i=0; 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: { + PCUIF__TextType_template new_temp; + new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, m_p->get_size()); + for (size_t p_i=0; p_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: { + PCUIF__TextType::enum_type enum_val = PCUIF__TextType::str_to_enum(m_p->get_enumerated()); + if (!PCUIF__TextType::is_valid_enum(enum_val)) { + param.error("Invalid enumerated value for type @PCUIF_Types.PCUIF_TextType."); + } + *this = enum_val; + } break; + default: + param.type_error("enumerated template", "@PCUIF_Types.PCUIF_TextType"); + } + is_ifpresent = param.get_ifpresent(); +} + +void PCUIF__TextType_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 : "@PCUIF_Types.PCUIF_TextType"); +} + +PCUIF__txt__ind::PCUIF__txt__ind() +{ +} + +PCUIF__txt__ind::PCUIF__txt__ind(const PCUIF__TextType& par_txt__type, + const CHARSTRING& par_text) + : field_txt__type(par_txt__type), + field_text(par_text) +{ +} + +PCUIF__txt__ind::PCUIF__txt__ind(const PCUIF__txt__ind& other_value) +{ +if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @PCUIF_Types.PCUIF_txt_ind."); +if (other_value.txt__type().is_bound()) field_txt__type = other_value.txt__type(); +else field_txt__type.clean_up(); +if (other_value.text().is_bound()) field_text = other_value.text(); +else field_text.clean_up(); +} + +void PCUIF__txt__ind::clean_up() +{ +field_txt__type.clean_up(); +field_text.clean_up(); +} + +PCUIF__txt__ind& PCUIF__txt__ind::operator=(const PCUIF__txt__ind& other_value) +{ +if (this != &other_value) { + if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @PCUIF_Types.PCUIF_txt_ind."); + if (other_value.txt__type().is_bound()) field_txt__type = other_value.txt__type(); + else field_txt__type.clean_up(); + if (other_value.text().is_bound()) field_text = other_value.text(); + else field_text.clean_up(); +} +return *this; +} + +boolean PCUIF__txt__ind::operator==(const PCUIF__txt__ind& other_value) const +{ +return field_txt__type==other_value.field_txt__type + && field_text==other_value.field_text; +} + +boolean PCUIF__txt__ind::is_bound() const +{ +if(field_txt__type.is_bound()) return TRUE; +if(field_text.is_bound()) return TRUE; +return FALSE; +} +boolean PCUIF__txt__ind::is_value() const +{ +if(!field_txt__type.is_value()) return FALSE; +if(!field_text.is_value()) return FALSE; +return TRUE; +} +void PCUIF__txt__ind::log() const +{ +if (!is_bound()) { +TTCN_Logger::log_event_unbound(); +return; +} +TTCN_Logger::log_event_str("{ txt_type := "); +field_txt__type.log(); +TTCN_Logger::log_event_str(", text := "); +field_text.log(); +TTCN_Logger::log_event_str(" }"); +} + +void PCUIF__txt__ind::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) txt__type().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) text().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(), "txt_type")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + txt__type().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "text")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + text().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @PCUIF_Types.PCUIF_txt_ind: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record value", "@PCUIF_Types.PCUIF_txt_ind"); + } +} + +void PCUIF__txt__ind::set_implicit_omit() +{ +if (txt__type().is_bound()) txt__type().set_implicit_omit(); +if (text().is_bound()) text().set_implicit_omit(); +} + +void PCUIF__txt__ind::encode_text(Text_Buf& text_buf) const +{ +field_txt__type.encode_text(text_buf); +field_text.encode_text(text_buf); +} + +void PCUIF__txt__ind::decode_text(Text_Buf& text_buf) +{ +field_txt__type.decode_text(text_buf); +field_text.decode_text(text_buf); +} + +void PCUIF__txt__ind::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void PCUIF__txt__ind::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int PCUIF__txt__ind::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) +{ (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; + decoded_field_length = field_txt__type.RAW_decode(PCUIF__txt__ind_txt__type_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_text.RAW_decode(PCUIF__txt__ind_text_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return 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 PCUIF__txt__ind::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, PCUIF__txt__ind_txt__type_descr_.raw); + myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PCUIF__txt__ind_text_descr_.raw); + encoded_length += field_txt__type.RAW_encode(PCUIF__txt__ind_txt__type_descr_, *myleaf.body.node.nodes[0]); + encoded_length += field_text.RAW_encode(PCUIF__txt__ind_text_descr_, *myleaf.body.node.nodes[1]); + return myleaf.length = encoded_length; +} + +struct PCUIF__txt__ind_template::single_value_struct { +PCUIF__TextType_template field_txt__type; +CHARSTRING_template field_text; +}; + +void PCUIF__txt__ind_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_txt__type = ANY_VALUE; +single_value->field_text = ANY_VALUE; +} +} +} + +void PCUIF__txt__ind_template::copy_value(const PCUIF__txt__ind& other_value) +{ +single_value = new single_value_struct; +if (other_value.txt__type().is_bound()) { + single_value->field_txt__type = other_value.txt__type(); +} else { + single_value->field_txt__type.clean_up(); +} +if (other_value.text().is_bound()) { + single_value->field_text = other_value.text(); +} else { + single_value->field_text.clean_up(); +} +set_selection(SPECIFIC_VALUE); +} + +void PCUIF__txt__ind_template::copy_template(const PCUIF__txt__ind_template& other_value) +{ +switch (other_value.template_selection) { +case SPECIFIC_VALUE: +single_value = new single_value_struct; +if (UNINITIALIZED_TEMPLATE != other_value.txt__type().get_selection()) { +single_value->field_txt__type = other_value.txt__type(); +} else { +single_value->field_txt__type.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.text().get_selection()) { +single_value->field_text = other_value.text(); +} else { +single_value->field_text.clean_up(); +} +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new PCUIF__txt__ind_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_txt_ind."); +break; +} +set_selection(other_value); +} + +PCUIF__txt__ind_template::PCUIF__txt__ind_template() +{ +} + +PCUIF__txt__ind_template::PCUIF__txt__ind_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +PCUIF__txt__ind_template::PCUIF__txt__ind_template(const PCUIF__txt__ind& other_value) +{ +copy_value(other_value); +} + +PCUIF__txt__ind_template::PCUIF__txt__ind_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const PCUIF__txt__ind&)other_value); +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of type @PCUIF_Types.PCUIF_txt_ind from an unbound optional field."); +} +} + +PCUIF__txt__ind_template::PCUIF__txt__ind_template(const PCUIF__txt__ind_template& other_value) +: Base_Template() +{ +copy_template(other_value); +} + +PCUIF__txt__ind_template::~PCUIF__txt__ind_template() +{ +clean_up(); +} + +PCUIF__txt__ind_template& PCUIF__txt__ind_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +PCUIF__txt__ind_template& PCUIF__txt__ind_template::operator=(const PCUIF__txt__ind& other_value) +{ +clean_up(); +copy_value(other_value); +return *this; +} + +PCUIF__txt__ind_template& PCUIF__txt__ind_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const PCUIF__txt__ind&)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 @PCUIF_Types.PCUIF_txt_ind."); +} +return *this; +} + +PCUIF__txt__ind_template& PCUIF__txt__ind_template::operator=(const PCUIF__txt__ind_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean PCUIF__txt__ind_template::match(const PCUIF__txt__ind& 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.txt__type().is_bound()) return FALSE; +if(!single_value->field_txt__type.match(other_value.txt__type(), legacy))return FALSE; +if(!other_value.text().is_bound()) return FALSE; +if(!single_value->field_text.match(other_value.text(), legacy))return FALSE; +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_txt_ind."); +} +return FALSE; +} + +boolean PCUIF__txt__ind_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +if (template_selection != SPECIFIC_VALUE) return TRUE; +if (single_value->field_txt__type.is_bound()) return TRUE; +if (single_value->field_text.is_bound()) return TRUE; +return FALSE; +} + +boolean PCUIF__txt__ind_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +if (!single_value->field_txt__type.is_value()) return FALSE; +if (!single_value->field_text.is_value()) return FALSE; +return TRUE; +} + +void PCUIF__txt__ind_template::clean_up() +{ +switch (template_selection) { +case SPECIFIC_VALUE: +delete single_value; +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +delete [] value_list.list_value; +default: +break; +} +template_selection = UNINITIALIZED_TEMPLATE; +} + +PCUIF__txt__ind PCUIF__txt__ind_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 @PCUIF_Types.PCUIF_txt_ind."); +PCUIF__txt__ind ret_val; +if (single_value->field_txt__type.is_bound()) { +ret_val.txt__type() = single_value->field_txt__type.valueof(); +} +if (single_value->field_text.is_bound()) { +ret_val.text() = single_value->field_text.valueof(); +} +return ret_val; +} + +void PCUIF__txt__ind_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) +TTCN_error("Setting an invalid list for a template of type @PCUIF_Types.PCUIF_txt_ind."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new PCUIF__txt__ind_template[list_length]; +} + +PCUIF__txt__ind_template& PCUIF__txt__ind_template::list_item(unsigned int list_index) const +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) +TTCN_error("Accessing a list element of a non-list template of type @PCUIF_Types.PCUIF_txt_ind."); +if (list_index >= value_list.n_values) +TTCN_error("Index overflow in a value list template of type @PCUIF_Types.PCUIF_txt_ind."); +return value_list.list_value[list_index]; +} + +PCUIF__TextType_template& PCUIF__txt__ind_template::txt__type() +{ +set_specific(); +return single_value->field_txt__type; +} + +const PCUIF__TextType_template& PCUIF__txt__ind_template::txt__type() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field txt_type of a non-specific template of type @PCUIF_Types.PCUIF_txt_ind."); +return single_value->field_txt__type; +} + +CHARSTRING_template& PCUIF__txt__ind_template::text() +{ +set_specific(); +return single_value->field_text; +} + +const CHARSTRING_template& PCUIF__txt__ind_template::text() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field text of a non-specific template of type @PCUIF_Types.PCUIF_txt_ind."); +return single_value->field_text; +} + +int PCUIF__txt__ind_template::size_of() const +{ + if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_txt_ind 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 @PCUIF_Types.PCUIF_txt_ind 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 @PCUIF_Types.PCUIF_txt_ind containing a value list with different sizes."); + } + return item_size; + } + case OMIT_VALUE: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_txt_ind containing omit value."); + case ANY_VALUE: + case ANY_OR_OMIT: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_txt_ind containing */? value."); + case COMPLEMENTED_LIST: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_txt_ind containing complemented list."); + default: + TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_txt_ind."); + } + return 0; +} + +void PCUIF__txt__ind_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_str("{ txt_type := "); +single_value->field_txt__type.log(); +TTCN_Logger::log_event_str(", text := "); +single_value->field_text.log(); +TTCN_Logger::log_event_str(" }"); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { +if (list_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[list_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void PCUIF__txt__ind_template::log_match(const PCUIF__txt__ind& 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_txt__type.match(match_value.txt__type(), legacy)){ +TTCN_Logger::log_logmatch_info(".txt_type"); +single_value->field_txt__type.log_match(match_value.txt__type(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_text.match(match_value.text(), legacy)){ +TTCN_Logger::log_logmatch_info(".text"); +single_value->field_text.log_match(match_value.text(), 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("{ txt_type := "); +single_value->field_txt__type.log_match(match_value.txt__type(), legacy); +TTCN_Logger::log_event_str(", text := "); +single_value->field_text.log_match(match_value.text(), 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 PCUIF__txt__ind_template::encode_text(Text_Buf& text_buf) const +{ +encode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value->field_txt__type.encode_text(text_buf); +single_value->field_text.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 @PCUIF_Types.PCUIF_txt_ind."); +} +} + +void PCUIF__txt__ind_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_txt__type.decode_text(text_buf); +single_value->field_text.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 PCUIF__txt__ind_template[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 @PCUIF_Types.PCUIF_txt_ind."); +} +} + +void PCUIF__txt__ind_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: { + PCUIF__txt__ind_template new_temp; + new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); + for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) txt__type().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) text().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(), "txt_type")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + txt__type().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "text")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + text().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @PCUIF_Types.PCUIF_txt_ind: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record template", "@PCUIF_Types.PCUIF_txt_ind"); + } + is_ifpresent = param.get_ifpresent(); +} + +void PCUIF__txt__ind_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_txt__type.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_txt_ind"); +single_value->field_text.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_txt_ind"); +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 : "@PCUIF_Types.PCUIF_txt_ind"); +} + +boolean PCUIF__txt__ind_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean PCUIF__txt__ind_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) sapi().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) len().set_param(*param.get_elem(1)); + if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) data().set_param(*param.get_elem(2)); + if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) fn().set_param(*param.get_elem(3)); + if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) arfcn().set_param(*param.get_elem(4)); + if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) trx__nr().set_param(*param.get_elem(5)); + if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) ts__nr().set_param(*param.get_elem(6)); + if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) block__nr().set_param(*param.get_elem(7)); + if (param.get_size()>8 && param.get_elem(8)->get_type()!=Module_Param::MP_NotUsed) rssi().set_param(*param.get_elem(8)); + if (param.get_size()>9 && param.get_elem(9)->get_type()!=Module_Param::MP_NotUsed) ber10k().set_param(*param.get_elem(9)); + if (param.get_size()>10 && param.get_elem(10)->get_type()!=Module_Param::MP_NotUsed) ta__offs__qbits().set_param(*param.get_elem(10)); + if (param.get_size()>11 && param.get_elem(11)->get_type()!=Module_Param::MP_NotUsed) lqual__cb().set_param(*param.get_elem(11)); + 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(), "sapi")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + sapi().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "len")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + len().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "data")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + data().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "fn")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + fn().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "arfcn")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + arfcn().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "trx_nr")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + trx__nr().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "ts_nr")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + ts__nr().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "block_nr")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + block__nr().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "rssi")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + rssi().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "ber10k")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + ber10k().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "ta_offs_qbits")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + ta__offs__qbits().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "lqual_cb")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + lqual__cb().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @PCUIF_Types.PCUIF_data: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record value", "@PCUIF_Types.PCUIF_data"); + } +} + +void PCUIF__data::set_implicit_omit() +{ +if (sapi().is_bound()) sapi().set_implicit_omit(); +if (len().is_bound()) len().set_implicit_omit(); +if (data().is_bound()) data().set_implicit_omit(); +if (fn().is_bound()) fn().set_implicit_omit(); +if (arfcn().is_bound()) arfcn().set_implicit_omit(); +if (trx__nr().is_bound()) trx__nr().set_implicit_omit(); +if (ts__nr().is_bound()) ts__nr().set_implicit_omit(); +if (block__nr().is_bound()) block__nr().set_implicit_omit(); +if (rssi().is_bound()) rssi().set_implicit_omit(); +if (ber10k().is_bound()) ber10k().set_implicit_omit(); +if (ta__offs__qbits().is_bound()) ta__offs__qbits().set_implicit_omit(); +if (lqual__cb().is_bound()) lqual__cb().set_implicit_omit(); +} + +void PCUIF__data::encode_text(Text_Buf& text_buf) const +{ +field_sapi.encode_text(text_buf); +field_len.encode_text(text_buf); +field_data.encode_text(text_buf); +field_fn.encode_text(text_buf); +field_arfcn.encode_text(text_buf); +field_trx__nr.encode_text(text_buf); +field_ts__nr.encode_text(text_buf); +field_block__nr.encode_text(text_buf); +field_rssi.encode_text(text_buf); +field_ber10k.encode_text(text_buf); +field_ta__offs__qbits.encode_text(text_buf); +field_lqual__cb.encode_text(text_buf); +} + +void PCUIF__data::decode_text(Text_Buf& text_buf) +{ +field_sapi.decode_text(text_buf); +field_len.decode_text(text_buf); +field_data.decode_text(text_buf); +field_fn.decode_text(text_buf); +field_arfcn.decode_text(text_buf); +field_trx__nr.decode_text(text_buf); +field_ts__nr.decode_text(text_buf); +field_block__nr.decode_text(text_buf); +field_rssi.decode_text(text_buf); +field_ber10k.decode_text(text_buf); +field_ta__offs__qbits.decode_text(text_buf); +field_lqual__cb.decode_text(text_buf); +} + +void PCUIF__data::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void PCUIF__data::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int PCUIF__data::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) +{ (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; + decoded_field_length = field_sapi.RAW_decode(PCUIF__data_sapi_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_len.RAW_decode(PCUIF__data_len_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_data.RAW_decode(PCUIF__data_data_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_fn.RAW_decode(PCUIF__data_fn_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_arfcn.RAW_decode(PCUIF__data_arfcn_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_trx__nr.RAW_decode(PCUIF__data_trx__nr_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_ts__nr.RAW_decode(PCUIF__data_ts__nr_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_block__nr.RAW_decode(PCUIF__data_block__nr_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_rssi.RAW_decode(PCUIF__data_rssi_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_ber10k.RAW_decode(PCUIF__data_ber10k_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_ta__offs__qbits.RAW_decode(PCUIF__data_ta__offs__qbits_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_lqual__cb.RAW_decode(PCUIF__data_lqual__cb_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return 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 PCUIF__data::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 = 12; + myleaf.body.node.nodes = init_nodes_of_enc_tree(12); + myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, PCUIF__data_sapi_descr_.raw); + myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PCUIF__data_len_descr_.raw); + myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, PCUIF__data_data_descr_.raw); + myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, PCUIF__data_fn_descr_.raw); + myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, PCUIF__data_arfcn_descr_.raw); + myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, PCUIF__data_trx__nr_descr_.raw); + myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, PCUIF__data_ts__nr_descr_.raw); + myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, PCUIF__data_block__nr_descr_.raw); + myleaf.body.node.nodes[8] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 8, PCUIF__data_rssi_descr_.raw); + myleaf.body.node.nodes[9] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 9, PCUIF__data_ber10k_descr_.raw); + myleaf.body.node.nodes[10] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 10, PCUIF__data_ta__offs__qbits_descr_.raw); + myleaf.body.node.nodes[11] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 11, PCUIF__data_lqual__cb_descr_.raw); + encoded_length += field_sapi.RAW_encode(PCUIF__data_sapi_descr_, *myleaf.body.node.nodes[0]); + encoded_length += field_len.RAW_encode(PCUIF__data_len_descr_, *myleaf.body.node.nodes[1]); + encoded_length += field_data.RAW_encode(PCUIF__data_data_descr_, *myleaf.body.node.nodes[2]); + encoded_length += field_fn.RAW_encode(PCUIF__data_fn_descr_, *myleaf.body.node.nodes[3]); + encoded_length += field_arfcn.RAW_encode(PCUIF__data_arfcn_descr_, *myleaf.body.node.nodes[4]); + encoded_length += field_trx__nr.RAW_encode(PCUIF__data_trx__nr_descr_, *myleaf.body.node.nodes[5]); + encoded_length += field_ts__nr.RAW_encode(PCUIF__data_ts__nr_descr_, *myleaf.body.node.nodes[6]); + encoded_length += field_block__nr.RAW_encode(PCUIF__data_block__nr_descr_, *myleaf.body.node.nodes[7]); + encoded_length += field_rssi.RAW_encode(PCUIF__data_rssi_descr_, *myleaf.body.node.nodes[8]); + encoded_length += field_ber10k.RAW_encode(PCUIF__data_ber10k_descr_, *myleaf.body.node.nodes[9]); + encoded_length += field_ta__offs__qbits.RAW_encode(PCUIF__data_ta__offs__qbits_descr_, *myleaf.body.node.nodes[10]); + encoded_length += field_lqual__cb.RAW_encode(PCUIF__data_lqual__cb_descr_, *myleaf.body.node.nodes[11]); + return myleaf.length = encoded_length; +} + +struct PCUIF__data_template::single_value_struct { +PCUIF__Sapi_template field_sapi; +INTEGER_template field_len; +OCTETSTRING_template field_data; +INTEGER_template field_fn; +INTEGER_template field_arfcn; +INTEGER_template field_trx__nr; +INTEGER_template field_ts__nr; +INTEGER_template field_block__nr; +INTEGER_template field_rssi; +INTEGER_template field_ber10k; +INTEGER_template field_ta__offs__qbits; +INTEGER_template field_lqual__cb; +}; + +void PCUIF__data_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_sapi = ANY_VALUE; +single_value->field_len = ANY_VALUE; +single_value->field_data = ANY_VALUE; +single_value->field_fn = ANY_VALUE; +single_value->field_arfcn = ANY_VALUE; +single_value->field_trx__nr = ANY_VALUE; +single_value->field_ts__nr = ANY_VALUE; +single_value->field_block__nr = ANY_VALUE; +single_value->field_rssi = ANY_VALUE; +single_value->field_ber10k = ANY_VALUE; +single_value->field_ta__offs__qbits = ANY_VALUE; +single_value->field_lqual__cb = ANY_VALUE; +} +} +} + +void PCUIF__data_template::copy_value(const PCUIF__data& other_value) +{ +single_value = new single_value_struct; +if (other_value.sapi().is_bound()) { + single_value->field_sapi = other_value.sapi(); +} else { + single_value->field_sapi.clean_up(); +} +if (other_value.len().is_bound()) { + single_value->field_len = other_value.len(); +} else { + single_value->field_len.clean_up(); +} +if (other_value.data().is_bound()) { + single_value->field_data = other_value.data(); +} else { + single_value->field_data.clean_up(); +} +if (other_value.fn().is_bound()) { + single_value->field_fn = other_value.fn(); +} else { + single_value->field_fn.clean_up(); +} +if (other_value.arfcn().is_bound()) { + single_value->field_arfcn = other_value.arfcn(); +} else { + single_value->field_arfcn.clean_up(); +} +if (other_value.trx__nr().is_bound()) { + single_value->field_trx__nr = other_value.trx__nr(); +} else { + single_value->field_trx__nr.clean_up(); +} +if (other_value.ts__nr().is_bound()) { + single_value->field_ts__nr = other_value.ts__nr(); +} else { + single_value->field_ts__nr.clean_up(); +} +if (other_value.block__nr().is_bound()) { + single_value->field_block__nr = other_value.block__nr(); +} else { + single_value->field_block__nr.clean_up(); +} +if (other_value.rssi().is_bound()) { + single_value->field_rssi = other_value.rssi(); +} else { + single_value->field_rssi.clean_up(); +} +if (other_value.ber10k().is_bound()) { + single_value->field_ber10k = other_value.ber10k(); +} else { + single_value->field_ber10k.clean_up(); +} +if (other_value.ta__offs__qbits().is_bound()) { + single_value->field_ta__offs__qbits = other_value.ta__offs__qbits(); +} else { + single_value->field_ta__offs__qbits.clean_up(); +} +if (other_value.lqual__cb().is_bound()) { + single_value->field_lqual__cb = other_value.lqual__cb(); +} else { + single_value->field_lqual__cb.clean_up(); +} +set_selection(SPECIFIC_VALUE); +} + +void PCUIF__data_template::copy_template(const PCUIF__data_template& other_value) +{ +switch (other_value.template_selection) { +case SPECIFIC_VALUE: +single_value = new single_value_struct; +if (UNINITIALIZED_TEMPLATE != other_value.sapi().get_selection()) { +single_value->field_sapi = other_value.sapi(); +} else { +single_value->field_sapi.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.len().get_selection()) { +single_value->field_len = other_value.len(); +} else { +single_value->field_len.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.data().get_selection()) { +single_value->field_data = other_value.data(); +} else { +single_value->field_data.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.fn().get_selection()) { +single_value->field_fn = other_value.fn(); +} else { +single_value->field_fn.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.arfcn().get_selection()) { +single_value->field_arfcn = other_value.arfcn(); +} else { +single_value->field_arfcn.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.trx__nr().get_selection()) { +single_value->field_trx__nr = other_value.trx__nr(); +} else { +single_value->field_trx__nr.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.ts__nr().get_selection()) { +single_value->field_ts__nr = other_value.ts__nr(); +} else { +single_value->field_ts__nr.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.block__nr().get_selection()) { +single_value->field_block__nr = other_value.block__nr(); +} else { +single_value->field_block__nr.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.rssi().get_selection()) { +single_value->field_rssi = other_value.rssi(); +} else { +single_value->field_rssi.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.ber10k().get_selection()) { +single_value->field_ber10k = other_value.ber10k(); +} else { +single_value->field_ber10k.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.ta__offs__qbits().get_selection()) { +single_value->field_ta__offs__qbits = other_value.ta__offs__qbits(); +} else { +single_value->field_ta__offs__qbits.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.lqual__cb().get_selection()) { +single_value->field_lqual__cb = other_value.lqual__cb(); +} else { +single_value->field_lqual__cb.clean_up(); +} +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new PCUIF__data_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_data."); +break; +} +set_selection(other_value); +} + +PCUIF__data_template::PCUIF__data_template() +{ +} + +PCUIF__data_template::PCUIF__data_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +PCUIF__data_template::PCUIF__data_template(const PCUIF__data& other_value) +{ +copy_value(other_value); +} + +PCUIF__data_template::PCUIF__data_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const PCUIF__data&)other_value); +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of type @PCUIF_Types.PCUIF_data from an unbound optional field."); +} +} + +PCUIF__data_template::PCUIF__data_template(const PCUIF__data_template& other_value) +: Base_Template() +{ +copy_template(other_value); +} + +PCUIF__data_template::~PCUIF__data_template() +{ +clean_up(); +} + +PCUIF__data_template& PCUIF__data_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +PCUIF__data_template& PCUIF__data_template::operator=(const PCUIF__data& other_value) +{ +clean_up(); +copy_value(other_value); +return *this; +} + +PCUIF__data_template& PCUIF__data_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const PCUIF__data&)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 @PCUIF_Types.PCUIF_data."); +} +return *this; +} + +PCUIF__data_template& PCUIF__data_template::operator=(const PCUIF__data_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean PCUIF__data_template::match(const PCUIF__data& 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.sapi().is_bound()) return FALSE; +if(!single_value->field_sapi.match(other_value.sapi(), legacy))return FALSE; +if(!other_value.len().is_bound()) return FALSE; +if(!single_value->field_len.match(other_value.len(), legacy))return FALSE; +if(!other_value.data().is_bound()) return FALSE; +if(!single_value->field_data.match(other_value.data(), legacy))return FALSE; +if(!other_value.fn().is_bound()) return FALSE; +if(!single_value->field_fn.match(other_value.fn(), legacy))return FALSE; +if(!other_value.arfcn().is_bound()) return FALSE; +if(!single_value->field_arfcn.match(other_value.arfcn(), legacy))return FALSE; +if(!other_value.trx__nr().is_bound()) return FALSE; +if(!single_value->field_trx__nr.match(other_value.trx__nr(), legacy))return FALSE; +if(!other_value.ts__nr().is_bound()) return FALSE; +if(!single_value->field_ts__nr.match(other_value.ts__nr(), legacy))return FALSE; +if(!other_value.block__nr().is_bound()) return FALSE; +if(!single_value->field_block__nr.match(other_value.block__nr(), legacy))return FALSE; +if(!other_value.rssi().is_bound()) return FALSE; +if(!single_value->field_rssi.match(other_value.rssi(), legacy))return FALSE; +if(!other_value.ber10k().is_bound()) return FALSE; +if(!single_value->field_ber10k.match(other_value.ber10k(), legacy))return FALSE; +if(!other_value.ta__offs__qbits().is_bound()) return FALSE; +if(!single_value->field_ta__offs__qbits.match(other_value.ta__offs__qbits(), legacy))return FALSE; +if(!other_value.lqual__cb().is_bound()) return FALSE; +if(!single_value->field_lqual__cb.match(other_value.lqual__cb(), legacy))return FALSE; +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_data."); +} +return FALSE; +} + +boolean PCUIF__data_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +if (template_selection != SPECIFIC_VALUE) return TRUE; +if (single_value->field_sapi.is_bound()) return TRUE; +if (single_value->field_len.is_bound()) return TRUE; +if (single_value->field_data.is_bound()) return TRUE; +if (single_value->field_fn.is_bound()) return TRUE; +if (single_value->field_arfcn.is_bound()) return TRUE; +if (single_value->field_trx__nr.is_bound()) return TRUE; +if (single_value->field_ts__nr.is_bound()) return TRUE; +if (single_value->field_block__nr.is_bound()) return TRUE; +if (single_value->field_rssi.is_bound()) return TRUE; +if (single_value->field_ber10k.is_bound()) return TRUE; +if (single_value->field_ta__offs__qbits.is_bound()) return TRUE; +if (single_value->field_lqual__cb.is_bound()) return TRUE; +return FALSE; +} + +boolean PCUIF__data_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +if (!single_value->field_sapi.is_value()) return FALSE; +if (!single_value->field_len.is_value()) return FALSE; +if (!single_value->field_data.is_value()) return FALSE; +if (!single_value->field_fn.is_value()) return FALSE; +if (!single_value->field_arfcn.is_value()) return FALSE; +if (!single_value->field_trx__nr.is_value()) return FALSE; +if (!single_value->field_ts__nr.is_value()) return FALSE; +if (!single_value->field_block__nr.is_value()) return FALSE; +if (!single_value->field_rssi.is_value()) return FALSE; +if (!single_value->field_ber10k.is_value()) return FALSE; +if (!single_value->field_ta__offs__qbits.is_value()) return FALSE; +if (!single_value->field_lqual__cb.is_value()) return FALSE; +return TRUE; +} + +void PCUIF__data_template::clean_up() +{ +switch (template_selection) { +case SPECIFIC_VALUE: +delete single_value; +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +delete [] value_list.list_value; +default: +break; +} +template_selection = UNINITIALIZED_TEMPLATE; +} + +PCUIF__data PCUIF__data_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 @PCUIF_Types.PCUIF_data."); +PCUIF__data ret_val; +if (single_value->field_sapi.is_bound()) { +ret_val.sapi() = single_value->field_sapi.valueof(); +} +if (single_value->field_len.is_bound()) { +ret_val.len() = single_value->field_len.valueof(); +} +if (single_value->field_data.is_bound()) { +ret_val.data() = single_value->field_data.valueof(); +} +if (single_value->field_fn.is_bound()) { +ret_val.fn() = single_value->field_fn.valueof(); +} +if (single_value->field_arfcn.is_bound()) { +ret_val.arfcn() = single_value->field_arfcn.valueof(); +} +if (single_value->field_trx__nr.is_bound()) { +ret_val.trx__nr() = single_value->field_trx__nr.valueof(); +} +if (single_value->field_ts__nr.is_bound()) { +ret_val.ts__nr() = single_value->field_ts__nr.valueof(); +} +if (single_value->field_block__nr.is_bound()) { +ret_val.block__nr() = single_value->field_block__nr.valueof(); +} +if (single_value->field_rssi.is_bound()) { +ret_val.rssi() = single_value->field_rssi.valueof(); +} +if (single_value->field_ber10k.is_bound()) { +ret_val.ber10k() = single_value->field_ber10k.valueof(); +} +if (single_value->field_ta__offs__qbits.is_bound()) { +ret_val.ta__offs__qbits() = single_value->field_ta__offs__qbits.valueof(); +} +if (single_value->field_lqual__cb.is_bound()) { +ret_val.lqual__cb() = single_value->field_lqual__cb.valueof(); +} +return ret_val; +} + +void PCUIF__data_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) +TTCN_error("Setting an invalid list for a template of type @PCUIF_Types.PCUIF_data."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new PCUIF__data_template[list_length]; +} + +PCUIF__data_template& PCUIF__data_template::list_item(unsigned int list_index) const +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) +TTCN_error("Accessing a list element of a non-list template of type @PCUIF_Types.PCUIF_data."); +if (list_index >= value_list.n_values) +TTCN_error("Index overflow in a value list template of type @PCUIF_Types.PCUIF_data."); +return value_list.list_value[list_index]; +} + +PCUIF__Sapi_template& PCUIF__data_template::sapi() +{ +set_specific(); +return single_value->field_sapi; +} + +const PCUIF__Sapi_template& PCUIF__data_template::sapi() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field sapi of a non-specific template of type @PCUIF_Types.PCUIF_data."); +return single_value->field_sapi; +} + +INTEGER_template& PCUIF__data_template::len() +{ +set_specific(); +return single_value->field_len; +} + +const INTEGER_template& PCUIF__data_template::len() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field len of a non-specific template of type @PCUIF_Types.PCUIF_data."); +return single_value->field_len; +} + +OCTETSTRING_template& PCUIF__data_template::data() +{ +set_specific(); +return single_value->field_data; +} + +const OCTETSTRING_template& PCUIF__data_template::data() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field data of a non-specific template of type @PCUIF_Types.PCUIF_data."); +return single_value->field_data; +} + +INTEGER_template& PCUIF__data_template::fn() +{ +set_specific(); +return single_value->field_fn; +} + +const INTEGER_template& PCUIF__data_template::fn() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field fn of a non-specific template of type @PCUIF_Types.PCUIF_data."); +return single_value->field_fn; +} + +INTEGER_template& PCUIF__data_template::arfcn() +{ +set_specific(); +return single_value->field_arfcn; +} + +const INTEGER_template& PCUIF__data_template::arfcn() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field arfcn of a non-specific template of type @PCUIF_Types.PCUIF_data."); +return single_value->field_arfcn; +} + +INTEGER_template& PCUIF__data_template::trx__nr() +{ +set_specific(); +return single_value->field_trx__nr; +} + +const INTEGER_template& PCUIF__data_template::trx__nr() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field trx_nr of a non-specific template of type @PCUIF_Types.PCUIF_data."); +return single_value->field_trx__nr; +} + +INTEGER_template& PCUIF__data_template::ts__nr() +{ +set_specific(); +return single_value->field_ts__nr; +} + +const INTEGER_template& PCUIF__data_template::ts__nr() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field ts_nr of a non-specific template of type @PCUIF_Types.PCUIF_data."); +return single_value->field_ts__nr; +} + +INTEGER_template& PCUIF__data_template::block__nr() +{ +set_specific(); +return single_value->field_block__nr; +} + +const INTEGER_template& PCUIF__data_template::block__nr() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field block_nr of a non-specific template of type @PCUIF_Types.PCUIF_data."); +return single_value->field_block__nr; +} + +INTEGER_template& PCUIF__data_template::rssi() +{ +set_specific(); +return single_value->field_rssi; +} + +const INTEGER_template& PCUIF__data_template::rssi() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field rssi of a non-specific template of type @PCUIF_Types.PCUIF_data."); +return single_value->field_rssi; +} + +INTEGER_template& PCUIF__data_template::ber10k() +{ +set_specific(); +return single_value->field_ber10k; +} + +const INTEGER_template& PCUIF__data_template::ber10k() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field ber10k of a non-specific template of type @PCUIF_Types.PCUIF_data."); +return single_value->field_ber10k; +} + +INTEGER_template& PCUIF__data_template::ta__offs__qbits() +{ +set_specific(); +return single_value->field_ta__offs__qbits; +} + +const INTEGER_template& PCUIF__data_template::ta__offs__qbits() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field ta_offs_qbits of a non-specific template of type @PCUIF_Types.PCUIF_data."); +return single_value->field_ta__offs__qbits; +} + +INTEGER_template& PCUIF__data_template::lqual__cb() +{ +set_specific(); +return single_value->field_lqual__cb; +} + +const INTEGER_template& PCUIF__data_template::lqual__cb() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field lqual_cb of a non-specific template of type @PCUIF_Types.PCUIF_data."); +return single_value->field_lqual__cb; +} + +int PCUIF__data_template::size_of() const +{ + if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_data which has an ifpresent attribute."); + switch (template_selection) + { + case SPECIFIC_VALUE: + return 12; + case VALUE_LIST: + { + if (value_list.n_values<1) + TTCN_error("Internal error: Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_data 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 @PCUIF_Types.PCUIF_data containing a value list with different sizes."); + } + return item_size; + } + case OMIT_VALUE: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_data containing omit value."); + case ANY_VALUE: + case ANY_OR_OMIT: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_data containing */? value."); + case COMPLEMENTED_LIST: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_data containing complemented list."); + default: + TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_data."); + } + return 0; +} + +void PCUIF__data_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_str("{ sapi := "); +single_value->field_sapi.log(); +TTCN_Logger::log_event_str(", len := "); +single_value->field_len.log(); +TTCN_Logger::log_event_str(", data := "); +single_value->field_data.log(); +TTCN_Logger::log_event_str(", fn := "); +single_value->field_fn.log(); +TTCN_Logger::log_event_str(", arfcn := "); +single_value->field_arfcn.log(); +TTCN_Logger::log_event_str(", trx_nr := "); +single_value->field_trx__nr.log(); +TTCN_Logger::log_event_str(", ts_nr := "); +single_value->field_ts__nr.log(); +TTCN_Logger::log_event_str(", block_nr := "); +single_value->field_block__nr.log(); +TTCN_Logger::log_event_str(", rssi := "); +single_value->field_rssi.log(); +TTCN_Logger::log_event_str(", ber10k := "); +single_value->field_ber10k.log(); +TTCN_Logger::log_event_str(", ta_offs_qbits := "); +single_value->field_ta__offs__qbits.log(); +TTCN_Logger::log_event_str(", lqual_cb := "); +single_value->field_lqual__cb.log(); +TTCN_Logger::log_event_str(" }"); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { +if (list_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[list_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void PCUIF__data_template::log_match(const PCUIF__data& 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_sapi.match(match_value.sapi(), legacy)){ +TTCN_Logger::log_logmatch_info(".sapi"); +single_value->field_sapi.log_match(match_value.sapi(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_len.match(match_value.len(), legacy)){ +TTCN_Logger::log_logmatch_info(".len"); +single_value->field_len.log_match(match_value.len(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_data.match(match_value.data(), legacy)){ +TTCN_Logger::log_logmatch_info(".data"); +single_value->field_data.log_match(match_value.data(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_fn.match(match_value.fn(), legacy)){ +TTCN_Logger::log_logmatch_info(".fn"); +single_value->field_fn.log_match(match_value.fn(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_arfcn.match(match_value.arfcn(), legacy)){ +TTCN_Logger::log_logmatch_info(".arfcn"); +single_value->field_arfcn.log_match(match_value.arfcn(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_trx__nr.match(match_value.trx__nr(), legacy)){ +TTCN_Logger::log_logmatch_info(".trx_nr"); +single_value->field_trx__nr.log_match(match_value.trx__nr(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_ts__nr.match(match_value.ts__nr(), legacy)){ +TTCN_Logger::log_logmatch_info(".ts_nr"); +single_value->field_ts__nr.log_match(match_value.ts__nr(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_block__nr.match(match_value.block__nr(), legacy)){ +TTCN_Logger::log_logmatch_info(".block_nr"); +single_value->field_block__nr.log_match(match_value.block__nr(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_rssi.match(match_value.rssi(), legacy)){ +TTCN_Logger::log_logmatch_info(".rssi"); +single_value->field_rssi.log_match(match_value.rssi(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_ber10k.match(match_value.ber10k(), legacy)){ +TTCN_Logger::log_logmatch_info(".ber10k"); +single_value->field_ber10k.log_match(match_value.ber10k(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_ta__offs__qbits.match(match_value.ta__offs__qbits(), legacy)){ +TTCN_Logger::log_logmatch_info(".ta_offs_qbits"); +single_value->field_ta__offs__qbits.log_match(match_value.ta__offs__qbits(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_lqual__cb.match(match_value.lqual__cb(), legacy)){ +TTCN_Logger::log_logmatch_info(".lqual_cb"); +single_value->field_lqual__cb.log_match(match_value.lqual__cb(), 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("{ sapi := "); +single_value->field_sapi.log_match(match_value.sapi(), legacy); +TTCN_Logger::log_event_str(", len := "); +single_value->field_len.log_match(match_value.len(), legacy); +TTCN_Logger::log_event_str(", data := "); +single_value->field_data.log_match(match_value.data(), legacy); +TTCN_Logger::log_event_str(", fn := "); +single_value->field_fn.log_match(match_value.fn(), legacy); +TTCN_Logger::log_event_str(", arfcn := "); +single_value->field_arfcn.log_match(match_value.arfcn(), legacy); +TTCN_Logger::log_event_str(", trx_nr := "); +single_value->field_trx__nr.log_match(match_value.trx__nr(), legacy); +TTCN_Logger::log_event_str(", ts_nr := "); +single_value->field_ts__nr.log_match(match_value.ts__nr(), legacy); +TTCN_Logger::log_event_str(", block_nr := "); +single_value->field_block__nr.log_match(match_value.block__nr(), legacy); +TTCN_Logger::log_event_str(", rssi := "); +single_value->field_rssi.log_match(match_value.rssi(), legacy); +TTCN_Logger::log_event_str(", ber10k := "); +single_value->field_ber10k.log_match(match_value.ber10k(), legacy); +TTCN_Logger::log_event_str(", ta_offs_qbits := "); +single_value->field_ta__offs__qbits.log_match(match_value.ta__offs__qbits(), legacy); +TTCN_Logger::log_event_str(", lqual_cb := "); +single_value->field_lqual__cb.log_match(match_value.lqual__cb(), 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 PCUIF__data_template::encode_text(Text_Buf& text_buf) const +{ +encode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value->field_sapi.encode_text(text_buf); +single_value->field_len.encode_text(text_buf); +single_value->field_data.encode_text(text_buf); +single_value->field_fn.encode_text(text_buf); +single_value->field_arfcn.encode_text(text_buf); +single_value->field_trx__nr.encode_text(text_buf); +single_value->field_ts__nr.encode_text(text_buf); +single_value->field_block__nr.encode_text(text_buf); +single_value->field_rssi.encode_text(text_buf); +single_value->field_ber10k.encode_text(text_buf); +single_value->field_ta__offs__qbits.encode_text(text_buf); +single_value->field_lqual__cb.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 @PCUIF_Types.PCUIF_data."); +} +} + +void PCUIF__data_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_sapi.decode_text(text_buf); +single_value->field_len.decode_text(text_buf); +single_value->field_data.decode_text(text_buf); +single_value->field_fn.decode_text(text_buf); +single_value->field_arfcn.decode_text(text_buf); +single_value->field_trx__nr.decode_text(text_buf); +single_value->field_ts__nr.decode_text(text_buf); +single_value->field_block__nr.decode_text(text_buf); +single_value->field_rssi.decode_text(text_buf); +single_value->field_ber10k.decode_text(text_buf); +single_value->field_ta__offs__qbits.decode_text(text_buf); +single_value->field_lqual__cb.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 PCUIF__data_template[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 @PCUIF_Types.PCUIF_data."); +} +} + +void PCUIF__data_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: { + PCUIF__data_template new_temp; + new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); + for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) sapi().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) len().set_param(*param.get_elem(1)); + if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) data().set_param(*param.get_elem(2)); + if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) fn().set_param(*param.get_elem(3)); + if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) arfcn().set_param(*param.get_elem(4)); + if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) trx__nr().set_param(*param.get_elem(5)); + if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) ts__nr().set_param(*param.get_elem(6)); + if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) block__nr().set_param(*param.get_elem(7)); + if (param.get_size()>8 && param.get_elem(8)->get_type()!=Module_Param::MP_NotUsed) rssi().set_param(*param.get_elem(8)); + if (param.get_size()>9 && param.get_elem(9)->get_type()!=Module_Param::MP_NotUsed) ber10k().set_param(*param.get_elem(9)); + if (param.get_size()>10 && param.get_elem(10)->get_type()!=Module_Param::MP_NotUsed) ta__offs__qbits().set_param(*param.get_elem(10)); + if (param.get_size()>11 && param.get_elem(11)->get_type()!=Module_Param::MP_NotUsed) lqual__cb().set_param(*param.get_elem(11)); + 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(), "sapi")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + sapi().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "len")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + len().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "data")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + data().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "fn")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + fn().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "arfcn")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + arfcn().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "trx_nr")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + trx__nr().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "ts_nr")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + ts__nr().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "block_nr")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + block__nr().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "rssi")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + rssi().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "ber10k")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + ber10k().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "ta_offs_qbits")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + ta__offs__qbits().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "lqual_cb")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + lqual__cb().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @PCUIF_Types.PCUIF_data: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record template", "@PCUIF_Types.PCUIF_data"); + } + is_ifpresent = param.get_ifpresent(); +} + +void PCUIF__data_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_sapi.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_data"); +single_value->field_len.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_data"); +single_value->field_data.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_data"); +single_value->field_fn.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_data"); +single_value->field_arfcn.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_data"); +single_value->field_trx__nr.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_data"); +single_value->field_ts__nr.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_data"); +single_value->field_block__nr.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_data"); +single_value->field_rssi.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_data"); +single_value->field_ber10k.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_data"); +single_value->field_ta__offs__qbits.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_data"); +single_value->field_lqual__cb.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_data"); +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 : "@PCUIF_Types.PCUIF_data"); +} + +boolean PCUIF__data_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean PCUIF__data_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) sapi().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) tlli().set_param(*param.get_elem(1)); + if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) fn().set_param(*param.get_elem(2)); + if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) arfcn().set_param(*param.get_elem(3)); + if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) trx__nr().set_param(*param.get_elem(4)); + if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) ts__nr().set_param(*param.get_elem(5)); + if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) block__nr().set_param(*param.get_elem(6)); + if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) rssi().set_param(*param.get_elem(7)); + if (param.get_size()>8 && param.get_elem(8)->get_type()!=Module_Param::MP_NotUsed) ber10k().set_param(*param.get_elem(8)); + if (param.get_size()>9 && param.get_elem(9)->get_type()!=Module_Param::MP_NotUsed) ta__offs__qbits().set_param(*param.get_elem(9)); + if (param.get_size()>10 && param.get_elem(10)->get_type()!=Module_Param::MP_NotUsed) lqual__cb().set_param(*param.get_elem(10)); + 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(), "sapi")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + sapi().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "tlli")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + tlli().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "fn")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + fn().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "arfcn")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + arfcn().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "trx_nr")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + trx__nr().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "ts_nr")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + ts__nr().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "block_nr")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + block__nr().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "rssi")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + rssi().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "ber10k")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + ber10k().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "ta_offs_qbits")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + ta__offs__qbits().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "lqual_cb")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + lqual__cb().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @PCUIF_Types.PCUIF_data_cnf_dt: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record value", "@PCUIF_Types.PCUIF_data_cnf_dt"); + } +} + +void PCUIF__data__cnf__dt::set_implicit_omit() +{ +if (sapi().is_bound()) sapi().set_implicit_omit(); +if (tlli().is_bound()) tlli().set_implicit_omit(); +if (fn().is_bound()) fn().set_implicit_omit(); +if (arfcn().is_bound()) arfcn().set_implicit_omit(); +if (trx__nr().is_bound()) trx__nr().set_implicit_omit(); +if (ts__nr().is_bound()) ts__nr().set_implicit_omit(); +if (block__nr().is_bound()) block__nr().set_implicit_omit(); +if (rssi().is_bound()) rssi().set_implicit_omit(); +if (ber10k().is_bound()) ber10k().set_implicit_omit(); +if (ta__offs__qbits().is_bound()) ta__offs__qbits().set_implicit_omit(); +if (lqual__cb().is_bound()) lqual__cb().set_implicit_omit(); +} + +void PCUIF__data__cnf__dt::encode_text(Text_Buf& text_buf) const +{ +field_sapi.encode_text(text_buf); +field_tlli.encode_text(text_buf); +field_fn.encode_text(text_buf); +field_arfcn.encode_text(text_buf); +field_trx__nr.encode_text(text_buf); +field_ts__nr.encode_text(text_buf); +field_block__nr.encode_text(text_buf); +field_rssi.encode_text(text_buf); +field_ber10k.encode_text(text_buf); +field_ta__offs__qbits.encode_text(text_buf); +field_lqual__cb.encode_text(text_buf); +} + +void PCUIF__data__cnf__dt::decode_text(Text_Buf& text_buf) +{ +field_sapi.decode_text(text_buf); +field_tlli.decode_text(text_buf); +field_fn.decode_text(text_buf); +field_arfcn.decode_text(text_buf); +field_trx__nr.decode_text(text_buf); +field_ts__nr.decode_text(text_buf); +field_block__nr.decode_text(text_buf); +field_rssi.decode_text(text_buf); +field_ber10k.decode_text(text_buf); +field_ta__offs__qbits.decode_text(text_buf); +field_lqual__cb.decode_text(text_buf); +} + +void PCUIF__data__cnf__dt::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void PCUIF__data__cnf__dt::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int PCUIF__data__cnf__dt::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) +{ (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; + decoded_field_length = field_sapi.RAW_decode(PCUIF__data__cnf__dt_sapi_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_tlli.RAW_decode(PCUIF__data__cnf__dt_tlli_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_fn.RAW_decode(PCUIF__data__cnf__dt_fn_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_arfcn.RAW_decode(PCUIF__data__cnf__dt_arfcn_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_trx__nr.RAW_decode(PCUIF__data__cnf__dt_trx__nr_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_ts__nr.RAW_decode(PCUIF__data__cnf__dt_ts__nr_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_block__nr.RAW_decode(PCUIF__data__cnf__dt_block__nr_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_rssi.RAW_decode(PCUIF__data__cnf__dt_rssi_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_ber10k.RAW_decode(PCUIF__data__cnf__dt_ber10k_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_ta__offs__qbits.RAW_decode(PCUIF__data__cnf__dt_ta__offs__qbits_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_lqual__cb.RAW_decode(PCUIF__data__cnf__dt_lqual__cb_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return 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 PCUIF__data__cnf__dt::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 = 11; + myleaf.body.node.nodes = init_nodes_of_enc_tree(11); + myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, PCUIF__data__cnf__dt_sapi_descr_.raw); + myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PCUIF__data__cnf__dt_tlli_descr_.raw); + myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, PCUIF__data__cnf__dt_fn_descr_.raw); + myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, PCUIF__data__cnf__dt_arfcn_descr_.raw); + myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, PCUIF__data__cnf__dt_trx__nr_descr_.raw); + myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, PCUIF__data__cnf__dt_ts__nr_descr_.raw); + myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, PCUIF__data__cnf__dt_block__nr_descr_.raw); + myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, PCUIF__data__cnf__dt_rssi_descr_.raw); + myleaf.body.node.nodes[8] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 8, PCUIF__data__cnf__dt_ber10k_descr_.raw); + myleaf.body.node.nodes[9] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 9, PCUIF__data__cnf__dt_ta__offs__qbits_descr_.raw); + myleaf.body.node.nodes[10] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 10, PCUIF__data__cnf__dt_lqual__cb_descr_.raw); + encoded_length += field_sapi.RAW_encode(PCUIF__data__cnf__dt_sapi_descr_, *myleaf.body.node.nodes[0]); + encoded_length += field_tlli.RAW_encode(PCUIF__data__cnf__dt_tlli_descr_, *myleaf.body.node.nodes[1]); + encoded_length += field_fn.RAW_encode(PCUIF__data__cnf__dt_fn_descr_, *myleaf.body.node.nodes[2]); + encoded_length += field_arfcn.RAW_encode(PCUIF__data__cnf__dt_arfcn_descr_, *myleaf.body.node.nodes[3]); + encoded_length += field_trx__nr.RAW_encode(PCUIF__data__cnf__dt_trx__nr_descr_, *myleaf.body.node.nodes[4]); + encoded_length += field_ts__nr.RAW_encode(PCUIF__data__cnf__dt_ts__nr_descr_, *myleaf.body.node.nodes[5]); + encoded_length += field_block__nr.RAW_encode(PCUIF__data__cnf__dt_block__nr_descr_, *myleaf.body.node.nodes[6]); + encoded_length += field_rssi.RAW_encode(PCUIF__data__cnf__dt_rssi_descr_, *myleaf.body.node.nodes[7]); + encoded_length += field_ber10k.RAW_encode(PCUIF__data__cnf__dt_ber10k_descr_, *myleaf.body.node.nodes[8]); + encoded_length += field_ta__offs__qbits.RAW_encode(PCUIF__data__cnf__dt_ta__offs__qbits_descr_, *myleaf.body.node.nodes[9]); + encoded_length += field_lqual__cb.RAW_encode(PCUIF__data__cnf__dt_lqual__cb_descr_, *myleaf.body.node.nodes[10]); + return myleaf.length = encoded_length; +} + +struct PCUIF__data__cnf__dt_template::single_value_struct { +PCUIF__Sapi_template field_sapi; +OCTETSTRING_template field_tlli; +INTEGER_template field_fn; +INTEGER_template field_arfcn; +INTEGER_template field_trx__nr; +INTEGER_template field_ts__nr; +INTEGER_template field_block__nr; +INTEGER_template field_rssi; +INTEGER_template field_ber10k; +INTEGER_template field_ta__offs__qbits; +INTEGER_template field_lqual__cb; +}; + +void PCUIF__data__cnf__dt_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_sapi = ANY_VALUE; +single_value->field_tlli = ANY_VALUE; +single_value->field_fn = ANY_VALUE; +single_value->field_arfcn = ANY_VALUE; +single_value->field_trx__nr = ANY_VALUE; +single_value->field_ts__nr = ANY_VALUE; +single_value->field_block__nr = ANY_VALUE; +single_value->field_rssi = ANY_VALUE; +single_value->field_ber10k = ANY_VALUE; +single_value->field_ta__offs__qbits = ANY_VALUE; +single_value->field_lqual__cb = ANY_VALUE; +} +} +} + +void PCUIF__data__cnf__dt_template::copy_value(const PCUIF__data__cnf__dt& other_value) +{ +single_value = new single_value_struct; +if (other_value.sapi().is_bound()) { + single_value->field_sapi = other_value.sapi(); +} else { + single_value->field_sapi.clean_up(); +} +if (other_value.tlli().is_bound()) { + single_value->field_tlli = other_value.tlli(); +} else { + single_value->field_tlli.clean_up(); +} +if (other_value.fn().is_bound()) { + single_value->field_fn = other_value.fn(); +} else { + single_value->field_fn.clean_up(); +} +if (other_value.arfcn().is_bound()) { + single_value->field_arfcn = other_value.arfcn(); +} else { + single_value->field_arfcn.clean_up(); +} +if (other_value.trx__nr().is_bound()) { + single_value->field_trx__nr = other_value.trx__nr(); +} else { + single_value->field_trx__nr.clean_up(); +} +if (other_value.ts__nr().is_bound()) { + single_value->field_ts__nr = other_value.ts__nr(); +} else { + single_value->field_ts__nr.clean_up(); +} +if (other_value.block__nr().is_bound()) { + single_value->field_block__nr = other_value.block__nr(); +} else { + single_value->field_block__nr.clean_up(); +} +if (other_value.rssi().is_bound()) { + single_value->field_rssi = other_value.rssi(); +} else { + single_value->field_rssi.clean_up(); +} +if (other_value.ber10k().is_bound()) { + single_value->field_ber10k = other_value.ber10k(); +} else { + single_value->field_ber10k.clean_up(); +} +if (other_value.ta__offs__qbits().is_bound()) { + single_value->field_ta__offs__qbits = other_value.ta__offs__qbits(); +} else { + single_value->field_ta__offs__qbits.clean_up(); +} +if (other_value.lqual__cb().is_bound()) { + single_value->field_lqual__cb = other_value.lqual__cb(); +} else { + single_value->field_lqual__cb.clean_up(); +} +set_selection(SPECIFIC_VALUE); +} + +void PCUIF__data__cnf__dt_template::copy_template(const PCUIF__data__cnf__dt_template& other_value) +{ +switch (other_value.template_selection) { +case SPECIFIC_VALUE: +single_value = new single_value_struct; +if (UNINITIALIZED_TEMPLATE != other_value.sapi().get_selection()) { +single_value->field_sapi = other_value.sapi(); +} else { +single_value->field_sapi.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.tlli().get_selection()) { +single_value->field_tlli = other_value.tlli(); +} else { +single_value->field_tlli.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.fn().get_selection()) { +single_value->field_fn = other_value.fn(); +} else { +single_value->field_fn.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.arfcn().get_selection()) { +single_value->field_arfcn = other_value.arfcn(); +} else { +single_value->field_arfcn.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.trx__nr().get_selection()) { +single_value->field_trx__nr = other_value.trx__nr(); +} else { +single_value->field_trx__nr.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.ts__nr().get_selection()) { +single_value->field_ts__nr = other_value.ts__nr(); +} else { +single_value->field_ts__nr.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.block__nr().get_selection()) { +single_value->field_block__nr = other_value.block__nr(); +} else { +single_value->field_block__nr.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.rssi().get_selection()) { +single_value->field_rssi = other_value.rssi(); +} else { +single_value->field_rssi.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.ber10k().get_selection()) { +single_value->field_ber10k = other_value.ber10k(); +} else { +single_value->field_ber10k.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.ta__offs__qbits().get_selection()) { +single_value->field_ta__offs__qbits = other_value.ta__offs__qbits(); +} else { +single_value->field_ta__offs__qbits.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.lqual__cb().get_selection()) { +single_value->field_lqual__cb = other_value.lqual__cb(); +} else { +single_value->field_lqual__cb.clean_up(); +} +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new PCUIF__data__cnf__dt_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_data_cnf_dt."); +break; +} +set_selection(other_value); +} + +PCUIF__data__cnf__dt_template::PCUIF__data__cnf__dt_template() +{ +} + +PCUIF__data__cnf__dt_template::PCUIF__data__cnf__dt_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +PCUIF__data__cnf__dt_template::PCUIF__data__cnf__dt_template(const PCUIF__data__cnf__dt& other_value) +{ +copy_value(other_value); +} + +PCUIF__data__cnf__dt_template::PCUIF__data__cnf__dt_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const PCUIF__data__cnf__dt&)other_value); +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of type @PCUIF_Types.PCUIF_data_cnf_dt from an unbound optional field."); +} +} + +PCUIF__data__cnf__dt_template::PCUIF__data__cnf__dt_template(const PCUIF__data__cnf__dt_template& other_value) +: Base_Template() +{ +copy_template(other_value); +} + +PCUIF__data__cnf__dt_template::~PCUIF__data__cnf__dt_template() +{ +clean_up(); +} + +PCUIF__data__cnf__dt_template& PCUIF__data__cnf__dt_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +PCUIF__data__cnf__dt_template& PCUIF__data__cnf__dt_template::operator=(const PCUIF__data__cnf__dt& other_value) +{ +clean_up(); +copy_value(other_value); +return *this; +} + +PCUIF__data__cnf__dt_template& PCUIF__data__cnf__dt_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const PCUIF__data__cnf__dt&)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 @PCUIF_Types.PCUIF_data_cnf_dt."); +} +return *this; +} + +PCUIF__data__cnf__dt_template& PCUIF__data__cnf__dt_template::operator=(const PCUIF__data__cnf__dt_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean PCUIF__data__cnf__dt_template::match(const PCUIF__data__cnf__dt& 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.sapi().is_bound()) return FALSE; +if(!single_value->field_sapi.match(other_value.sapi(), legacy))return FALSE; +if(!other_value.tlli().is_bound()) return FALSE; +if(!single_value->field_tlli.match(other_value.tlli(), legacy))return FALSE; +if(!other_value.fn().is_bound()) return FALSE; +if(!single_value->field_fn.match(other_value.fn(), legacy))return FALSE; +if(!other_value.arfcn().is_bound()) return FALSE; +if(!single_value->field_arfcn.match(other_value.arfcn(), legacy))return FALSE; +if(!other_value.trx__nr().is_bound()) return FALSE; +if(!single_value->field_trx__nr.match(other_value.trx__nr(), legacy))return FALSE; +if(!other_value.ts__nr().is_bound()) return FALSE; +if(!single_value->field_ts__nr.match(other_value.ts__nr(), legacy))return FALSE; +if(!other_value.block__nr().is_bound()) return FALSE; +if(!single_value->field_block__nr.match(other_value.block__nr(), legacy))return FALSE; +if(!other_value.rssi().is_bound()) return FALSE; +if(!single_value->field_rssi.match(other_value.rssi(), legacy))return FALSE; +if(!other_value.ber10k().is_bound()) return FALSE; +if(!single_value->field_ber10k.match(other_value.ber10k(), legacy))return FALSE; +if(!other_value.ta__offs__qbits().is_bound()) return FALSE; +if(!single_value->field_ta__offs__qbits.match(other_value.ta__offs__qbits(), legacy))return FALSE; +if(!other_value.lqual__cb().is_bound()) return FALSE; +if(!single_value->field_lqual__cb.match(other_value.lqual__cb(), legacy))return FALSE; +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_data_cnf_dt."); +} +return FALSE; +} + +boolean PCUIF__data__cnf__dt_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +if (template_selection != SPECIFIC_VALUE) return TRUE; +if (single_value->field_sapi.is_bound()) return TRUE; +if (single_value->field_tlli.is_bound()) return TRUE; +if (single_value->field_fn.is_bound()) return TRUE; +if (single_value->field_arfcn.is_bound()) return TRUE; +if (single_value->field_trx__nr.is_bound()) return TRUE; +if (single_value->field_ts__nr.is_bound()) return TRUE; +if (single_value->field_block__nr.is_bound()) return TRUE; +if (single_value->field_rssi.is_bound()) return TRUE; +if (single_value->field_ber10k.is_bound()) return TRUE; +if (single_value->field_ta__offs__qbits.is_bound()) return TRUE; +if (single_value->field_lqual__cb.is_bound()) return TRUE; +return FALSE; +} + +boolean PCUIF__data__cnf__dt_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +if (!single_value->field_sapi.is_value()) return FALSE; +if (!single_value->field_tlli.is_value()) return FALSE; +if (!single_value->field_fn.is_value()) return FALSE; +if (!single_value->field_arfcn.is_value()) return FALSE; +if (!single_value->field_trx__nr.is_value()) return FALSE; +if (!single_value->field_ts__nr.is_value()) return FALSE; +if (!single_value->field_block__nr.is_value()) return FALSE; +if (!single_value->field_rssi.is_value()) return FALSE; +if (!single_value->field_ber10k.is_value()) return FALSE; +if (!single_value->field_ta__offs__qbits.is_value()) return FALSE; +if (!single_value->field_lqual__cb.is_value()) return FALSE; +return TRUE; +} + +void PCUIF__data__cnf__dt_template::clean_up() +{ +switch (template_selection) { +case SPECIFIC_VALUE: +delete single_value; +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +delete [] value_list.list_value; +default: +break; +} +template_selection = UNINITIALIZED_TEMPLATE; +} + +PCUIF__data__cnf__dt PCUIF__data__cnf__dt_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 @PCUIF_Types.PCUIF_data_cnf_dt."); +PCUIF__data__cnf__dt ret_val; +if (single_value->field_sapi.is_bound()) { +ret_val.sapi() = single_value->field_sapi.valueof(); +} +if (single_value->field_tlli.is_bound()) { +ret_val.tlli() = single_value->field_tlli.valueof(); +} +if (single_value->field_fn.is_bound()) { +ret_val.fn() = single_value->field_fn.valueof(); +} +if (single_value->field_arfcn.is_bound()) { +ret_val.arfcn() = single_value->field_arfcn.valueof(); +} +if (single_value->field_trx__nr.is_bound()) { +ret_val.trx__nr() = single_value->field_trx__nr.valueof(); +} +if (single_value->field_ts__nr.is_bound()) { +ret_val.ts__nr() = single_value->field_ts__nr.valueof(); +} +if (single_value->field_block__nr.is_bound()) { +ret_val.block__nr() = single_value->field_block__nr.valueof(); +} +if (single_value->field_rssi.is_bound()) { +ret_val.rssi() = single_value->field_rssi.valueof(); +} +if (single_value->field_ber10k.is_bound()) { +ret_val.ber10k() = single_value->field_ber10k.valueof(); +} +if (single_value->field_ta__offs__qbits.is_bound()) { +ret_val.ta__offs__qbits() = single_value->field_ta__offs__qbits.valueof(); +} +if (single_value->field_lqual__cb.is_bound()) { +ret_val.lqual__cb() = single_value->field_lqual__cb.valueof(); +} +return ret_val; +} + +void PCUIF__data__cnf__dt_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) +TTCN_error("Setting an invalid list for a template of type @PCUIF_Types.PCUIF_data_cnf_dt."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new PCUIF__data__cnf__dt_template[list_length]; +} + +PCUIF__data__cnf__dt_template& PCUIF__data__cnf__dt_template::list_item(unsigned int list_index) const +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) +TTCN_error("Accessing a list element of a non-list template of type @PCUIF_Types.PCUIF_data_cnf_dt."); +if (list_index >= value_list.n_values) +TTCN_error("Index overflow in a value list template of type @PCUIF_Types.PCUIF_data_cnf_dt."); +return value_list.list_value[list_index]; +} + +PCUIF__Sapi_template& PCUIF__data__cnf__dt_template::sapi() +{ +set_specific(); +return single_value->field_sapi; +} + +const PCUIF__Sapi_template& PCUIF__data__cnf__dt_template::sapi() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field sapi of a non-specific template of type @PCUIF_Types.PCUIF_data_cnf_dt."); +return single_value->field_sapi; +} + +OCTETSTRING_template& PCUIF__data__cnf__dt_template::tlli() +{ +set_specific(); +return single_value->field_tlli; +} + +const OCTETSTRING_template& PCUIF__data__cnf__dt_template::tlli() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field tlli of a non-specific template of type @PCUIF_Types.PCUIF_data_cnf_dt."); +return single_value->field_tlli; +} + +INTEGER_template& PCUIF__data__cnf__dt_template::fn() +{ +set_specific(); +return single_value->field_fn; +} + +const INTEGER_template& PCUIF__data__cnf__dt_template::fn() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field fn of a non-specific template of type @PCUIF_Types.PCUIF_data_cnf_dt."); +return single_value->field_fn; +} + +INTEGER_template& PCUIF__data__cnf__dt_template::arfcn() +{ +set_specific(); +return single_value->field_arfcn; +} + +const INTEGER_template& PCUIF__data__cnf__dt_template::arfcn() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field arfcn of a non-specific template of type @PCUIF_Types.PCUIF_data_cnf_dt."); +return single_value->field_arfcn; +} + +INTEGER_template& PCUIF__data__cnf__dt_template::trx__nr() +{ +set_specific(); +return single_value->field_trx__nr; +} + +const INTEGER_template& PCUIF__data__cnf__dt_template::trx__nr() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field trx_nr of a non-specific template of type @PCUIF_Types.PCUIF_data_cnf_dt."); +return single_value->field_trx__nr; +} + +INTEGER_template& PCUIF__data__cnf__dt_template::ts__nr() +{ +set_specific(); +return single_value->field_ts__nr; +} + +const INTEGER_template& PCUIF__data__cnf__dt_template::ts__nr() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field ts_nr of a non-specific template of type @PCUIF_Types.PCUIF_data_cnf_dt."); +return single_value->field_ts__nr; +} + +INTEGER_template& PCUIF__data__cnf__dt_template::block__nr() +{ +set_specific(); +return single_value->field_block__nr; +} + +const INTEGER_template& PCUIF__data__cnf__dt_template::block__nr() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field block_nr of a non-specific template of type @PCUIF_Types.PCUIF_data_cnf_dt."); +return single_value->field_block__nr; +} + +INTEGER_template& PCUIF__data__cnf__dt_template::rssi() +{ +set_specific(); +return single_value->field_rssi; +} + +const INTEGER_template& PCUIF__data__cnf__dt_template::rssi() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field rssi of a non-specific template of type @PCUIF_Types.PCUIF_data_cnf_dt."); +return single_value->field_rssi; +} + +INTEGER_template& PCUIF__data__cnf__dt_template::ber10k() +{ +set_specific(); +return single_value->field_ber10k; +} + +const INTEGER_template& PCUIF__data__cnf__dt_template::ber10k() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field ber10k of a non-specific template of type @PCUIF_Types.PCUIF_data_cnf_dt."); +return single_value->field_ber10k; +} + +INTEGER_template& PCUIF__data__cnf__dt_template::ta__offs__qbits() +{ +set_specific(); +return single_value->field_ta__offs__qbits; +} + +const INTEGER_template& PCUIF__data__cnf__dt_template::ta__offs__qbits() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field ta_offs_qbits of a non-specific template of type @PCUIF_Types.PCUIF_data_cnf_dt."); +return single_value->field_ta__offs__qbits; +} + +INTEGER_template& PCUIF__data__cnf__dt_template::lqual__cb() +{ +set_specific(); +return single_value->field_lqual__cb; +} + +const INTEGER_template& PCUIF__data__cnf__dt_template::lqual__cb() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field lqual_cb of a non-specific template of type @PCUIF_Types.PCUIF_data_cnf_dt."); +return single_value->field_lqual__cb; +} + +int PCUIF__data__cnf__dt_template::size_of() const +{ + if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_data_cnf_dt which has an ifpresent attribute."); + switch (template_selection) + { + case SPECIFIC_VALUE: + return 11; + case VALUE_LIST: + { + if (value_list.n_values<1) + TTCN_error("Internal error: Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_data_cnf_dt 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 @PCUIF_Types.PCUIF_data_cnf_dt containing a value list with different sizes."); + } + return item_size; + } + case OMIT_VALUE: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_data_cnf_dt containing omit value."); + case ANY_VALUE: + case ANY_OR_OMIT: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_data_cnf_dt containing */? value."); + case COMPLEMENTED_LIST: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_data_cnf_dt containing complemented list."); + default: + TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_data_cnf_dt."); + } + return 0; +} + +void PCUIF__data__cnf__dt_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_str("{ sapi := "); +single_value->field_sapi.log(); +TTCN_Logger::log_event_str(", tlli := "); +single_value->field_tlli.log(); +TTCN_Logger::log_event_str(", fn := "); +single_value->field_fn.log(); +TTCN_Logger::log_event_str(", arfcn := "); +single_value->field_arfcn.log(); +TTCN_Logger::log_event_str(", trx_nr := "); +single_value->field_trx__nr.log(); +TTCN_Logger::log_event_str(", ts_nr := "); +single_value->field_ts__nr.log(); +TTCN_Logger::log_event_str(", block_nr := "); +single_value->field_block__nr.log(); +TTCN_Logger::log_event_str(", rssi := "); +single_value->field_rssi.log(); +TTCN_Logger::log_event_str(", ber10k := "); +single_value->field_ber10k.log(); +TTCN_Logger::log_event_str(", ta_offs_qbits := "); +single_value->field_ta__offs__qbits.log(); +TTCN_Logger::log_event_str(", lqual_cb := "); +single_value->field_lqual__cb.log(); +TTCN_Logger::log_event_str(" }"); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { +if (list_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[list_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void PCUIF__data__cnf__dt_template::log_match(const PCUIF__data__cnf__dt& 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_sapi.match(match_value.sapi(), legacy)){ +TTCN_Logger::log_logmatch_info(".sapi"); +single_value->field_sapi.log_match(match_value.sapi(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_tlli.match(match_value.tlli(), legacy)){ +TTCN_Logger::log_logmatch_info(".tlli"); +single_value->field_tlli.log_match(match_value.tlli(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_fn.match(match_value.fn(), legacy)){ +TTCN_Logger::log_logmatch_info(".fn"); +single_value->field_fn.log_match(match_value.fn(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_arfcn.match(match_value.arfcn(), legacy)){ +TTCN_Logger::log_logmatch_info(".arfcn"); +single_value->field_arfcn.log_match(match_value.arfcn(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_trx__nr.match(match_value.trx__nr(), legacy)){ +TTCN_Logger::log_logmatch_info(".trx_nr"); +single_value->field_trx__nr.log_match(match_value.trx__nr(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_ts__nr.match(match_value.ts__nr(), legacy)){ +TTCN_Logger::log_logmatch_info(".ts_nr"); +single_value->field_ts__nr.log_match(match_value.ts__nr(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_block__nr.match(match_value.block__nr(), legacy)){ +TTCN_Logger::log_logmatch_info(".block_nr"); +single_value->field_block__nr.log_match(match_value.block__nr(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_rssi.match(match_value.rssi(), legacy)){ +TTCN_Logger::log_logmatch_info(".rssi"); +single_value->field_rssi.log_match(match_value.rssi(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_ber10k.match(match_value.ber10k(), legacy)){ +TTCN_Logger::log_logmatch_info(".ber10k"); +single_value->field_ber10k.log_match(match_value.ber10k(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_ta__offs__qbits.match(match_value.ta__offs__qbits(), legacy)){ +TTCN_Logger::log_logmatch_info(".ta_offs_qbits"); +single_value->field_ta__offs__qbits.log_match(match_value.ta__offs__qbits(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_lqual__cb.match(match_value.lqual__cb(), legacy)){ +TTCN_Logger::log_logmatch_info(".lqual_cb"); +single_value->field_lqual__cb.log_match(match_value.lqual__cb(), 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("{ sapi := "); +single_value->field_sapi.log_match(match_value.sapi(), legacy); +TTCN_Logger::log_event_str(", tlli := "); +single_value->field_tlli.log_match(match_value.tlli(), legacy); +TTCN_Logger::log_event_str(", fn := "); +single_value->field_fn.log_match(match_value.fn(), legacy); +TTCN_Logger::log_event_str(", arfcn := "); +single_value->field_arfcn.log_match(match_value.arfcn(), legacy); +TTCN_Logger::log_event_str(", trx_nr := "); +single_value->field_trx__nr.log_match(match_value.trx__nr(), legacy); +TTCN_Logger::log_event_str(", ts_nr := "); +single_value->field_ts__nr.log_match(match_value.ts__nr(), legacy); +TTCN_Logger::log_event_str(", block_nr := "); +single_value->field_block__nr.log_match(match_value.block__nr(), legacy); +TTCN_Logger::log_event_str(", rssi := "); +single_value->field_rssi.log_match(match_value.rssi(), legacy); +TTCN_Logger::log_event_str(", ber10k := "); +single_value->field_ber10k.log_match(match_value.ber10k(), legacy); +TTCN_Logger::log_event_str(", ta_offs_qbits := "); +single_value->field_ta__offs__qbits.log_match(match_value.ta__offs__qbits(), legacy); +TTCN_Logger::log_event_str(", lqual_cb := "); +single_value->field_lqual__cb.log_match(match_value.lqual__cb(), 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 PCUIF__data__cnf__dt_template::encode_text(Text_Buf& text_buf) const +{ +encode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value->field_sapi.encode_text(text_buf); +single_value->field_tlli.encode_text(text_buf); +single_value->field_fn.encode_text(text_buf); +single_value->field_arfcn.encode_text(text_buf); +single_value->field_trx__nr.encode_text(text_buf); +single_value->field_ts__nr.encode_text(text_buf); +single_value->field_block__nr.encode_text(text_buf); +single_value->field_rssi.encode_text(text_buf); +single_value->field_ber10k.encode_text(text_buf); +single_value->field_ta__offs__qbits.encode_text(text_buf); +single_value->field_lqual__cb.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 @PCUIF_Types.PCUIF_data_cnf_dt."); +} +} + +void PCUIF__data__cnf__dt_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_sapi.decode_text(text_buf); +single_value->field_tlli.decode_text(text_buf); +single_value->field_fn.decode_text(text_buf); +single_value->field_arfcn.decode_text(text_buf); +single_value->field_trx__nr.decode_text(text_buf); +single_value->field_ts__nr.decode_text(text_buf); +single_value->field_block__nr.decode_text(text_buf); +single_value->field_rssi.decode_text(text_buf); +single_value->field_ber10k.decode_text(text_buf); +single_value->field_ta__offs__qbits.decode_text(text_buf); +single_value->field_lqual__cb.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 PCUIF__data__cnf__dt_template[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 @PCUIF_Types.PCUIF_data_cnf_dt."); +} +} + +void PCUIF__data__cnf__dt_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: { + PCUIF__data__cnf__dt_template new_temp; + new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); + for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) sapi().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) tlli().set_param(*param.get_elem(1)); + if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) fn().set_param(*param.get_elem(2)); + if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) arfcn().set_param(*param.get_elem(3)); + if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) trx__nr().set_param(*param.get_elem(4)); + if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) ts__nr().set_param(*param.get_elem(5)); + if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) block__nr().set_param(*param.get_elem(6)); + if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) rssi().set_param(*param.get_elem(7)); + if (param.get_size()>8 && param.get_elem(8)->get_type()!=Module_Param::MP_NotUsed) ber10k().set_param(*param.get_elem(8)); + if (param.get_size()>9 && param.get_elem(9)->get_type()!=Module_Param::MP_NotUsed) ta__offs__qbits().set_param(*param.get_elem(9)); + if (param.get_size()>10 && param.get_elem(10)->get_type()!=Module_Param::MP_NotUsed) lqual__cb().set_param(*param.get_elem(10)); + 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(), "sapi")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + sapi().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "tlli")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + tlli().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "fn")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + fn().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "arfcn")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + arfcn().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "trx_nr")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + trx__nr().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "ts_nr")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + ts__nr().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "block_nr")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + block__nr().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "rssi")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + rssi().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "ber10k")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + ber10k().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "ta_offs_qbits")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + ta__offs__qbits().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "lqual_cb")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + lqual__cb().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @PCUIF_Types.PCUIF_data_cnf_dt: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record template", "@PCUIF_Types.PCUIF_data_cnf_dt"); + } + is_ifpresent = param.get_ifpresent(); +} + +void PCUIF__data__cnf__dt_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_sapi.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_data_cnf_dt"); +single_value->field_tlli.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_data_cnf_dt"); +single_value->field_fn.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_data_cnf_dt"); +single_value->field_arfcn.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_data_cnf_dt"); +single_value->field_trx__nr.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_data_cnf_dt"); +single_value->field_ts__nr.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_data_cnf_dt"); +single_value->field_block__nr.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_data_cnf_dt"); +single_value->field_rssi.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_data_cnf_dt"); +single_value->field_ber10k.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_data_cnf_dt"); +single_value->field_ta__offs__qbits.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_data_cnf_dt"); +single_value->field_lqual__cb.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_data_cnf_dt"); +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 : "@PCUIF_Types.PCUIF_data_cnf_dt"); +} + +boolean PCUIF__data__cnf__dt_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean PCUIF__data__cnf__dt_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) sapi().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) spare().set_param(*param.get_elem(1)); + if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) fn().set_param(*param.get_elem(2)); + if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) arfcn().set_param(*param.get_elem(3)); + if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) trx__nr().set_param(*param.get_elem(4)); + if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) ts__nr().set_param(*param.get_elem(5)); + if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) block__nr().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(), "sapi")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + sapi().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(), "fn")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + fn().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "arfcn")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + arfcn().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "trx_nr")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + trx__nr().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "ts_nr")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + ts__nr().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "block_nr")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + block__nr().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @PCUIF_Types.PCUIF_rts_req: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record value", "@PCUIF_Types.PCUIF_rts_req"); + } +} + +void PCUIF__rts__req::set_implicit_omit() +{ +if (sapi().is_bound()) sapi().set_implicit_omit(); +if (spare().is_bound()) spare().set_implicit_omit(); +if (fn().is_bound()) fn().set_implicit_omit(); +if (arfcn().is_bound()) arfcn().set_implicit_omit(); +if (trx__nr().is_bound()) trx__nr().set_implicit_omit(); +if (ts__nr().is_bound()) ts__nr().set_implicit_omit(); +if (block__nr().is_bound()) block__nr().set_implicit_omit(); +} + +void PCUIF__rts__req::encode_text(Text_Buf& text_buf) const +{ +field_sapi.encode_text(text_buf); +field_spare.encode_text(text_buf); +field_fn.encode_text(text_buf); +field_arfcn.encode_text(text_buf); +field_trx__nr.encode_text(text_buf); +field_ts__nr.encode_text(text_buf); +field_block__nr.encode_text(text_buf); +} + +void PCUIF__rts__req::decode_text(Text_Buf& text_buf) +{ +field_sapi.decode_text(text_buf); +field_spare.decode_text(text_buf); +field_fn.decode_text(text_buf); +field_arfcn.decode_text(text_buf); +field_trx__nr.decode_text(text_buf); +field_ts__nr.decode_text(text_buf); +field_block__nr.decode_text(text_buf); +} + +void PCUIF__rts__req::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void PCUIF__rts__req::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int PCUIF__rts__req::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) +{ (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; + decoded_field_length = field_sapi.RAW_decode(PCUIF__rts__req_sapi_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_spare.RAW_decode(PCUIF__rts__req_spare_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_fn.RAW_decode(PCUIF__rts__req_fn_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_arfcn.RAW_decode(PCUIF__rts__req_arfcn_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_trx__nr.RAW_decode(PCUIF__rts__req_trx__nr_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_ts__nr.RAW_decode(PCUIF__rts__req_ts__nr_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_block__nr.RAW_decode(PCUIF__rts__req_block__nr_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return 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 PCUIF__rts__req::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, PCUIF__rts__req_sapi_descr_.raw); + myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PCUIF__rts__req_spare_descr_.raw); + myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, PCUIF__rts__req_fn_descr_.raw); + myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, PCUIF__rts__req_arfcn_descr_.raw); + myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, PCUIF__rts__req_trx__nr_descr_.raw); + myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, PCUIF__rts__req_ts__nr_descr_.raw); + myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, PCUIF__rts__req_block__nr_descr_.raw); + encoded_length += field_sapi.RAW_encode(PCUIF__rts__req_sapi_descr_, *myleaf.body.node.nodes[0]); + encoded_length += field_spare.RAW_encode(PCUIF__rts__req_spare_descr_, *myleaf.body.node.nodes[1]); + encoded_length += field_fn.RAW_encode(PCUIF__rts__req_fn_descr_, *myleaf.body.node.nodes[2]); + encoded_length += field_arfcn.RAW_encode(PCUIF__rts__req_arfcn_descr_, *myleaf.body.node.nodes[3]); + encoded_length += field_trx__nr.RAW_encode(PCUIF__rts__req_trx__nr_descr_, *myleaf.body.node.nodes[4]); + encoded_length += field_ts__nr.RAW_encode(PCUIF__rts__req_ts__nr_descr_, *myleaf.body.node.nodes[5]); + encoded_length += field_block__nr.RAW_encode(PCUIF__rts__req_block__nr_descr_, *myleaf.body.node.nodes[6]); + return myleaf.length = encoded_length; +} + +struct PCUIF__rts__req_template::single_value_struct { +PCUIF__Sapi_template field_sapi; +OCTETSTRING_template field_spare; +INTEGER_template field_fn; +INTEGER_template field_arfcn; +INTEGER_template field_trx__nr; +INTEGER_template field_ts__nr; +INTEGER_template field_block__nr; +}; + +void PCUIF__rts__req_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_sapi = ANY_VALUE; +single_value->field_spare = ANY_VALUE; +single_value->field_fn = ANY_VALUE; +single_value->field_arfcn = ANY_VALUE; +single_value->field_trx__nr = ANY_VALUE; +single_value->field_ts__nr = ANY_VALUE; +single_value->field_block__nr = ANY_VALUE; +} +} +} + +void PCUIF__rts__req_template::copy_value(const PCUIF__rts__req& other_value) +{ +single_value = new single_value_struct; +if (other_value.sapi().is_bound()) { + single_value->field_sapi = other_value.sapi(); +} else { + single_value->field_sapi.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.fn().is_bound()) { + single_value->field_fn = other_value.fn(); +} else { + single_value->field_fn.clean_up(); +} +if (other_value.arfcn().is_bound()) { + single_value->field_arfcn = other_value.arfcn(); +} else { + single_value->field_arfcn.clean_up(); +} +if (other_value.trx__nr().is_bound()) { + single_value->field_trx__nr = other_value.trx__nr(); +} else { + single_value->field_trx__nr.clean_up(); +} +if (other_value.ts__nr().is_bound()) { + single_value->field_ts__nr = other_value.ts__nr(); +} else { + single_value->field_ts__nr.clean_up(); +} +if (other_value.block__nr().is_bound()) { + single_value->field_block__nr = other_value.block__nr(); +} else { + single_value->field_block__nr.clean_up(); +} +set_selection(SPECIFIC_VALUE); +} + +void PCUIF__rts__req_template::copy_template(const PCUIF__rts__req_template& other_value) +{ +switch (other_value.template_selection) { +case SPECIFIC_VALUE: +single_value = new single_value_struct; +if (UNINITIALIZED_TEMPLATE != other_value.sapi().get_selection()) { +single_value->field_sapi = other_value.sapi(); +} else { +single_value->field_sapi.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.fn().get_selection()) { +single_value->field_fn = other_value.fn(); +} else { +single_value->field_fn.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.arfcn().get_selection()) { +single_value->field_arfcn = other_value.arfcn(); +} else { +single_value->field_arfcn.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.trx__nr().get_selection()) { +single_value->field_trx__nr = other_value.trx__nr(); +} else { +single_value->field_trx__nr.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.ts__nr().get_selection()) { +single_value->field_ts__nr = other_value.ts__nr(); +} else { +single_value->field_ts__nr.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.block__nr().get_selection()) { +single_value->field_block__nr = other_value.block__nr(); +} else { +single_value->field_block__nr.clean_up(); +} +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new PCUIF__rts__req_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_rts_req."); +break; +} +set_selection(other_value); +} + +PCUIF__rts__req_template::PCUIF__rts__req_template() +{ +} + +PCUIF__rts__req_template::PCUIF__rts__req_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +PCUIF__rts__req_template::PCUIF__rts__req_template(const PCUIF__rts__req& other_value) +{ +copy_value(other_value); +} + +PCUIF__rts__req_template::PCUIF__rts__req_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const PCUIF__rts__req&)other_value); +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of type @PCUIF_Types.PCUIF_rts_req from an unbound optional field."); +} +} + +PCUIF__rts__req_template::PCUIF__rts__req_template(const PCUIF__rts__req_template& other_value) +: Base_Template() +{ +copy_template(other_value); +} + +PCUIF__rts__req_template::~PCUIF__rts__req_template() +{ +clean_up(); +} + +PCUIF__rts__req_template& PCUIF__rts__req_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +PCUIF__rts__req_template& PCUIF__rts__req_template::operator=(const PCUIF__rts__req& other_value) +{ +clean_up(); +copy_value(other_value); +return *this; +} + +PCUIF__rts__req_template& PCUIF__rts__req_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const PCUIF__rts__req&)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 @PCUIF_Types.PCUIF_rts_req."); +} +return *this; +} + +PCUIF__rts__req_template& PCUIF__rts__req_template::operator=(const PCUIF__rts__req_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean PCUIF__rts__req_template::match(const PCUIF__rts__req& 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.sapi().is_bound()) return FALSE; +if(!single_value->field_sapi.match(other_value.sapi(), 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.fn().is_bound()) return FALSE; +if(!single_value->field_fn.match(other_value.fn(), legacy))return FALSE; +if(!other_value.arfcn().is_bound()) return FALSE; +if(!single_value->field_arfcn.match(other_value.arfcn(), legacy))return FALSE; +if(!other_value.trx__nr().is_bound()) return FALSE; +if(!single_value->field_trx__nr.match(other_value.trx__nr(), legacy))return FALSE; +if(!other_value.ts__nr().is_bound()) return FALSE; +if(!single_value->field_ts__nr.match(other_value.ts__nr(), legacy))return FALSE; +if(!other_value.block__nr().is_bound()) return FALSE; +if(!single_value->field_block__nr.match(other_value.block__nr(), legacy))return FALSE; +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_rts_req."); +} +return FALSE; +} + +boolean PCUIF__rts__req_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +if (template_selection != SPECIFIC_VALUE) return TRUE; +if (single_value->field_sapi.is_bound()) return TRUE; +if (single_value->field_spare.is_bound()) return TRUE; +if (single_value->field_fn.is_bound()) return TRUE; +if (single_value->field_arfcn.is_bound()) return TRUE; +if (single_value->field_trx__nr.is_bound()) return TRUE; +if (single_value->field_ts__nr.is_bound()) return TRUE; +if (single_value->field_block__nr.is_bound()) return TRUE; +return FALSE; +} + +boolean PCUIF__rts__req_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +if (!single_value->field_sapi.is_value()) return FALSE; +if (!single_value->field_spare.is_value()) return FALSE; +if (!single_value->field_fn.is_value()) return FALSE; +if (!single_value->field_arfcn.is_value()) return FALSE; +if (!single_value->field_trx__nr.is_value()) return FALSE; +if (!single_value->field_ts__nr.is_value()) return FALSE; +if (!single_value->field_block__nr.is_value()) return FALSE; +return TRUE; +} + +void PCUIF__rts__req_template::clean_up() +{ +switch (template_selection) { +case SPECIFIC_VALUE: +delete single_value; +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +delete [] value_list.list_value; +default: +break; +} +template_selection = UNINITIALIZED_TEMPLATE; +} + +PCUIF__rts__req PCUIF__rts__req_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 @PCUIF_Types.PCUIF_rts_req."); +PCUIF__rts__req ret_val; +if (single_value->field_sapi.is_bound()) { +ret_val.sapi() = single_value->field_sapi.valueof(); +} +if (single_value->field_spare.is_bound()) { +ret_val.spare() = single_value->field_spare.valueof(); +} +if (single_value->field_fn.is_bound()) { +ret_val.fn() = single_value->field_fn.valueof(); +} +if (single_value->field_arfcn.is_bound()) { +ret_val.arfcn() = single_value->field_arfcn.valueof(); +} +if (single_value->field_trx__nr.is_bound()) { +ret_val.trx__nr() = single_value->field_trx__nr.valueof(); +} +if (single_value->field_ts__nr.is_bound()) { +ret_val.ts__nr() = single_value->field_ts__nr.valueof(); +} +if (single_value->field_block__nr.is_bound()) { +ret_val.block__nr() = single_value->field_block__nr.valueof(); +} +return ret_val; +} + +void PCUIF__rts__req_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) +TTCN_error("Setting an invalid list for a template of type @PCUIF_Types.PCUIF_rts_req."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new PCUIF__rts__req_template[list_length]; +} + +PCUIF__rts__req_template& PCUIF__rts__req_template::list_item(unsigned int list_index) const +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) +TTCN_error("Accessing a list element of a non-list template of type @PCUIF_Types.PCUIF_rts_req."); +if (list_index >= value_list.n_values) +TTCN_error("Index overflow in a value list template of type @PCUIF_Types.PCUIF_rts_req."); +return value_list.list_value[list_index]; +} + +PCUIF__Sapi_template& PCUIF__rts__req_template::sapi() +{ +set_specific(); +return single_value->field_sapi; +} + +const PCUIF__Sapi_template& PCUIF__rts__req_template::sapi() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field sapi of a non-specific template of type @PCUIF_Types.PCUIF_rts_req."); +return single_value->field_sapi; +} + +OCTETSTRING_template& PCUIF__rts__req_template::spare() +{ +set_specific(); +return single_value->field_spare; +} + +const OCTETSTRING_template& PCUIF__rts__req_template::spare() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field spare of a non-specific template of type @PCUIF_Types.PCUIF_rts_req."); +return single_value->field_spare; +} + +INTEGER_template& PCUIF__rts__req_template::fn() +{ +set_specific(); +return single_value->field_fn; +} + +const INTEGER_template& PCUIF__rts__req_template::fn() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field fn of a non-specific template of type @PCUIF_Types.PCUIF_rts_req."); +return single_value->field_fn; +} + +INTEGER_template& PCUIF__rts__req_template::arfcn() +{ +set_specific(); +return single_value->field_arfcn; +} + +const INTEGER_template& PCUIF__rts__req_template::arfcn() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field arfcn of a non-specific template of type @PCUIF_Types.PCUIF_rts_req."); +return single_value->field_arfcn; +} + +INTEGER_template& PCUIF__rts__req_template::trx__nr() +{ +set_specific(); +return single_value->field_trx__nr; +} + +const INTEGER_template& PCUIF__rts__req_template::trx__nr() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field trx_nr of a non-specific template of type @PCUIF_Types.PCUIF_rts_req."); +return single_value->field_trx__nr; +} + +INTEGER_template& PCUIF__rts__req_template::ts__nr() +{ +set_specific(); +return single_value->field_ts__nr; +} + +const INTEGER_template& PCUIF__rts__req_template::ts__nr() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field ts_nr of a non-specific template of type @PCUIF_Types.PCUIF_rts_req."); +return single_value->field_ts__nr; +} + +INTEGER_template& PCUIF__rts__req_template::block__nr() +{ +set_specific(); +return single_value->field_block__nr; +} + +const INTEGER_template& PCUIF__rts__req_template::block__nr() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field block_nr of a non-specific template of type @PCUIF_Types.PCUIF_rts_req."); +return single_value->field_block__nr; +} + +int PCUIF__rts__req_template::size_of() const +{ + if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_rts_req 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 @PCUIF_Types.PCUIF_rts_req 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 @PCUIF_Types.PCUIF_rts_req containing a value list with different sizes."); + } + return item_size; + } + case OMIT_VALUE: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_rts_req containing omit value."); + case ANY_VALUE: + case ANY_OR_OMIT: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_rts_req containing */? value."); + case COMPLEMENTED_LIST: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_rts_req containing complemented list."); + default: + TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_rts_req."); + } + return 0; +} + +void PCUIF__rts__req_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_str("{ sapi := "); +single_value->field_sapi.log(); +TTCN_Logger::log_event_str(", spare := "); +single_value->field_spare.log(); +TTCN_Logger::log_event_str(", fn := "); +single_value->field_fn.log(); +TTCN_Logger::log_event_str(", arfcn := "); +single_value->field_arfcn.log(); +TTCN_Logger::log_event_str(", trx_nr := "); +single_value->field_trx__nr.log(); +TTCN_Logger::log_event_str(", ts_nr := "); +single_value->field_ts__nr.log(); +TTCN_Logger::log_event_str(", block_nr := "); +single_value->field_block__nr.log(); +TTCN_Logger::log_event_str(" }"); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { +if (list_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[list_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void PCUIF__rts__req_template::log_match(const PCUIF__rts__req& 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_sapi.match(match_value.sapi(), legacy)){ +TTCN_Logger::log_logmatch_info(".sapi"); +single_value->field_sapi.log_match(match_value.sapi(), 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_fn.match(match_value.fn(), legacy)){ +TTCN_Logger::log_logmatch_info(".fn"); +single_value->field_fn.log_match(match_value.fn(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_arfcn.match(match_value.arfcn(), legacy)){ +TTCN_Logger::log_logmatch_info(".arfcn"); +single_value->field_arfcn.log_match(match_value.arfcn(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_trx__nr.match(match_value.trx__nr(), legacy)){ +TTCN_Logger::log_logmatch_info(".trx_nr"); +single_value->field_trx__nr.log_match(match_value.trx__nr(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_ts__nr.match(match_value.ts__nr(), legacy)){ +TTCN_Logger::log_logmatch_info(".ts_nr"); +single_value->field_ts__nr.log_match(match_value.ts__nr(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_block__nr.match(match_value.block__nr(), legacy)){ +TTCN_Logger::log_logmatch_info(".block_nr"); +single_value->field_block__nr.log_match(match_value.block__nr(), 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("{ sapi := "); +single_value->field_sapi.log_match(match_value.sapi(), legacy); +TTCN_Logger::log_event_str(", spare := "); +single_value->field_spare.log_match(match_value.spare(), legacy); +TTCN_Logger::log_event_str(", fn := "); +single_value->field_fn.log_match(match_value.fn(), legacy); +TTCN_Logger::log_event_str(", arfcn := "); +single_value->field_arfcn.log_match(match_value.arfcn(), legacy); +TTCN_Logger::log_event_str(", trx_nr := "); +single_value->field_trx__nr.log_match(match_value.trx__nr(), legacy); +TTCN_Logger::log_event_str(", ts_nr := "); +single_value->field_ts__nr.log_match(match_value.ts__nr(), legacy); +TTCN_Logger::log_event_str(", block_nr := "); +single_value->field_block__nr.log_match(match_value.block__nr(), 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 PCUIF__rts__req_template::encode_text(Text_Buf& text_buf) const +{ +encode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value->field_sapi.encode_text(text_buf); +single_value->field_spare.encode_text(text_buf); +single_value->field_fn.encode_text(text_buf); +single_value->field_arfcn.encode_text(text_buf); +single_value->field_trx__nr.encode_text(text_buf); +single_value->field_ts__nr.encode_text(text_buf); +single_value->field_block__nr.encode_text(text_buf); +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +text_buf.push_int(value_list.n_values); +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].encode_text(text_buf); +break; +default: +TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_rts_req."); +} +} + +void PCUIF__rts__req_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_sapi.decode_text(text_buf); +single_value->field_spare.decode_text(text_buf); +single_value->field_fn.decode_text(text_buf); +single_value->field_arfcn.decode_text(text_buf); +single_value->field_trx__nr.decode_text(text_buf); +single_value->field_ts__nr.decode_text(text_buf); +single_value->field_block__nr.decode_text(text_buf); +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = text_buf.pull_int().get_val(); +value_list.list_value = new PCUIF__rts__req_template[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 @PCUIF_Types.PCUIF_rts_req."); +} +} + +void PCUIF__rts__req_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: { + PCUIF__rts__req_template new_temp; + new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); + for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) sapi().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) spare().set_param(*param.get_elem(1)); + if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) fn().set_param(*param.get_elem(2)); + if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) arfcn().set_param(*param.get_elem(3)); + if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) trx__nr().set_param(*param.get_elem(4)); + if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) ts__nr().set_param(*param.get_elem(5)); + if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) block__nr().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(), "sapi")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + sapi().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(), "fn")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + fn().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "arfcn")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + arfcn().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "trx_nr")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + trx__nr().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "ts_nr")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + ts__nr().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "block_nr")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + block__nr().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @PCUIF_Types.PCUIF_rts_req: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record template", "@PCUIF_Types.PCUIF_rts_req"); + } + is_ifpresent = param.get_ifpresent(); +} + +void PCUIF__rts__req_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_sapi.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_rts_req"); +single_value->field_spare.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_rts_req"); +single_value->field_fn.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_rts_req"); +single_value->field_arfcn.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_rts_req"); +single_value->field_trx__nr.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_rts_req"); +single_value->field_ts__nr.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_rts_req"); +single_value->field_block__nr.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_rts_req"); +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 : "@PCUIF_Types.PCUIF_rts_req"); +} + +boolean PCUIF__rts__req_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean PCUIF__rts__req_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) sapi().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ra().set_param(*param.get_elem(1)); + if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) qta().set_param(*param.get_elem(2)); + if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) fn().set_param(*param.get_elem(3)); + if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) arfcn().set_param(*param.get_elem(4)); + if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) is__11bit().set_param(*param.get_elem(5)); + if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) burst__type().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(), "sapi")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + sapi().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "ra")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + ra().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "qta")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + qta().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "fn")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + fn().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "arfcn")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + arfcn().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "is_11bit")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + is__11bit().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "burst_type")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + burst__type().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @PCUIF_Types.PCUIF_rach_ind: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record value", "@PCUIF_Types.PCUIF_rach_ind"); + } +} + +void PCUIF__rach__ind::set_implicit_omit() +{ +if (sapi().is_bound()) sapi().set_implicit_omit(); +if (ra().is_bound()) ra().set_implicit_omit(); +if (qta().is_bound()) qta().set_implicit_omit(); +if (fn().is_bound()) fn().set_implicit_omit(); +if (arfcn().is_bound()) arfcn().set_implicit_omit(); +if (is__11bit().is_bound()) is__11bit().set_implicit_omit(); +if (burst__type().is_bound()) burst__type().set_implicit_omit(); +} + +void PCUIF__rach__ind::encode_text(Text_Buf& text_buf) const +{ +field_sapi.encode_text(text_buf); +field_ra.encode_text(text_buf); +field_qta.encode_text(text_buf); +field_fn.encode_text(text_buf); +field_arfcn.encode_text(text_buf); +field_is__11bit.encode_text(text_buf); +field_burst__type.encode_text(text_buf); +} + +void PCUIF__rach__ind::decode_text(Text_Buf& text_buf) +{ +field_sapi.decode_text(text_buf); +field_ra.decode_text(text_buf); +field_qta.decode_text(text_buf); +field_fn.decode_text(text_buf); +field_arfcn.decode_text(text_buf); +field_is__11bit.decode_text(text_buf); +field_burst__type.decode_text(text_buf); +} + +void PCUIF__rach__ind::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void PCUIF__rach__ind::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int PCUIF__rach__ind::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) +{ (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; + decoded_field_length = field_sapi.RAW_decode(PCUIF__rach__ind_sapi_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_ra.RAW_decode(PCUIF__rach__ind_ra_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_qta.RAW_decode(PCUIF__rach__ind_qta_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_fn.RAW_decode(PCUIF__rach__ind_fn_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_arfcn.RAW_decode(PCUIF__rach__ind_arfcn_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_is__11bit.RAW_decode(PCUIF__rach__ind_is__11bit_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_burst__type.RAW_decode(PCUIF__rach__ind_burst__type_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return 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 PCUIF__rach__ind::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, PCUIF__rach__ind_sapi_descr_.raw); + myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PCUIF__rach__ind_ra_descr_.raw); + myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, PCUIF__rach__ind_qta_descr_.raw); + myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, PCUIF__rach__ind_fn_descr_.raw); + myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, PCUIF__rach__ind_arfcn_descr_.raw); + myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, PCUIF__rach__ind_is__11bit_descr_.raw); + myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, PCUIF__rach__ind_burst__type_descr_.raw); + encoded_length += field_sapi.RAW_encode(PCUIF__rach__ind_sapi_descr_, *myleaf.body.node.nodes[0]); + encoded_length += field_ra.RAW_encode(PCUIF__rach__ind_ra_descr_, *myleaf.body.node.nodes[1]); + encoded_length += field_qta.RAW_encode(PCUIF__rach__ind_qta_descr_, *myleaf.body.node.nodes[2]); + encoded_length += field_fn.RAW_encode(PCUIF__rach__ind_fn_descr_, *myleaf.body.node.nodes[3]); + encoded_length += field_arfcn.RAW_encode(PCUIF__rach__ind_arfcn_descr_, *myleaf.body.node.nodes[4]); + encoded_length += field_is__11bit.RAW_encode(PCUIF__rach__ind_is__11bit_descr_, *myleaf.body.node.nodes[5]); + encoded_length += field_burst__type.RAW_encode(PCUIF__rach__ind_burst__type_descr_, *myleaf.body.node.nodes[6]); + return myleaf.length = encoded_length; +} + +struct PCUIF__rach__ind_template::single_value_struct { +PCUIF__Sapi_template field_sapi; +INTEGER_template field_ra; +INTEGER_template field_qta; +INTEGER_template field_fn; +INTEGER_template field_arfcn; +INTEGER_template field_is__11bit; +INTEGER_template field_burst__type; +}; + +void PCUIF__rach__ind_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_sapi = ANY_VALUE; +single_value->field_ra = ANY_VALUE; +single_value->field_qta = ANY_VALUE; +single_value->field_fn = ANY_VALUE; +single_value->field_arfcn = ANY_VALUE; +single_value->field_is__11bit = ANY_VALUE; +single_value->field_burst__type = ANY_VALUE; +} +} +} + +void PCUIF__rach__ind_template::copy_value(const PCUIF__rach__ind& other_value) +{ +single_value = new single_value_struct; +if (other_value.sapi().is_bound()) { + single_value->field_sapi = other_value.sapi(); +} else { + single_value->field_sapi.clean_up(); +} +if (other_value.ra().is_bound()) { + single_value->field_ra = other_value.ra(); +} else { + single_value->field_ra.clean_up(); +} +if (other_value.qta().is_bound()) { + single_value->field_qta = other_value.qta(); +} else { + single_value->field_qta.clean_up(); +} +if (other_value.fn().is_bound()) { + single_value->field_fn = other_value.fn(); +} else { + single_value->field_fn.clean_up(); +} +if (other_value.arfcn().is_bound()) { + single_value->field_arfcn = other_value.arfcn(); +} else { + single_value->field_arfcn.clean_up(); +} +if (other_value.is__11bit().is_bound()) { + single_value->field_is__11bit = other_value.is__11bit(); +} else { + single_value->field_is__11bit.clean_up(); +} +if (other_value.burst__type().is_bound()) { + single_value->field_burst__type = other_value.burst__type(); +} else { + single_value->field_burst__type.clean_up(); +} +set_selection(SPECIFIC_VALUE); +} + +void PCUIF__rach__ind_template::copy_template(const PCUIF__rach__ind_template& other_value) +{ +switch (other_value.template_selection) { +case SPECIFIC_VALUE: +single_value = new single_value_struct; +if (UNINITIALIZED_TEMPLATE != other_value.sapi().get_selection()) { +single_value->field_sapi = other_value.sapi(); +} else { +single_value->field_sapi.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.ra().get_selection()) { +single_value->field_ra = other_value.ra(); +} else { +single_value->field_ra.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.qta().get_selection()) { +single_value->field_qta = other_value.qta(); +} else { +single_value->field_qta.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.fn().get_selection()) { +single_value->field_fn = other_value.fn(); +} else { +single_value->field_fn.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.arfcn().get_selection()) { +single_value->field_arfcn = other_value.arfcn(); +} else { +single_value->field_arfcn.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.is__11bit().get_selection()) { +single_value->field_is__11bit = other_value.is__11bit(); +} else { +single_value->field_is__11bit.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.burst__type().get_selection()) { +single_value->field_burst__type = other_value.burst__type(); +} else { +single_value->field_burst__type.clean_up(); +} +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new PCUIF__rach__ind_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_rach_ind."); +break; +} +set_selection(other_value); +} + +PCUIF__rach__ind_template::PCUIF__rach__ind_template() +{ +} + +PCUIF__rach__ind_template::PCUIF__rach__ind_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +PCUIF__rach__ind_template::PCUIF__rach__ind_template(const PCUIF__rach__ind& other_value) +{ +copy_value(other_value); +} + +PCUIF__rach__ind_template::PCUIF__rach__ind_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const PCUIF__rach__ind&)other_value); +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of type @PCUIF_Types.PCUIF_rach_ind from an unbound optional field."); +} +} + +PCUIF__rach__ind_template::PCUIF__rach__ind_template(const PCUIF__rach__ind_template& other_value) +: Base_Template() +{ +copy_template(other_value); +} + +PCUIF__rach__ind_template::~PCUIF__rach__ind_template() +{ +clean_up(); +} + +PCUIF__rach__ind_template& PCUIF__rach__ind_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +PCUIF__rach__ind_template& PCUIF__rach__ind_template::operator=(const PCUIF__rach__ind& other_value) +{ +clean_up(); +copy_value(other_value); +return *this; +} + +PCUIF__rach__ind_template& PCUIF__rach__ind_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const PCUIF__rach__ind&)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 @PCUIF_Types.PCUIF_rach_ind."); +} +return *this; +} + +PCUIF__rach__ind_template& PCUIF__rach__ind_template::operator=(const PCUIF__rach__ind_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean PCUIF__rach__ind_template::match(const PCUIF__rach__ind& 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.sapi().is_bound()) return FALSE; +if(!single_value->field_sapi.match(other_value.sapi(), legacy))return FALSE; +if(!other_value.ra().is_bound()) return FALSE; +if(!single_value->field_ra.match(other_value.ra(), legacy))return FALSE; +if(!other_value.qta().is_bound()) return FALSE; +if(!single_value->field_qta.match(other_value.qta(), legacy))return FALSE; +if(!other_value.fn().is_bound()) return FALSE; +if(!single_value->field_fn.match(other_value.fn(), legacy))return FALSE; +if(!other_value.arfcn().is_bound()) return FALSE; +if(!single_value->field_arfcn.match(other_value.arfcn(), legacy))return FALSE; +if(!other_value.is__11bit().is_bound()) return FALSE; +if(!single_value->field_is__11bit.match(other_value.is__11bit(), legacy))return FALSE; +if(!other_value.burst__type().is_bound()) return FALSE; +if(!single_value->field_burst__type.match(other_value.burst__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; +default: +TTCN_error("Matching an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_rach_ind."); +} +return FALSE; +} + +boolean PCUIF__rach__ind_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +if (template_selection != SPECIFIC_VALUE) return TRUE; +if (single_value->field_sapi.is_bound()) return TRUE; +if (single_value->field_ra.is_bound()) return TRUE; +if (single_value->field_qta.is_bound()) return TRUE; +if (single_value->field_fn.is_bound()) return TRUE; +if (single_value->field_arfcn.is_bound()) return TRUE; +if (single_value->field_is__11bit.is_bound()) return TRUE; +if (single_value->field_burst__type.is_bound()) return TRUE; +return FALSE; +} + +boolean PCUIF__rach__ind_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +if (!single_value->field_sapi.is_value()) return FALSE; +if (!single_value->field_ra.is_value()) return FALSE; +if (!single_value->field_qta.is_value()) return FALSE; +if (!single_value->field_fn.is_value()) return FALSE; +if (!single_value->field_arfcn.is_value()) return FALSE; +if (!single_value->field_is__11bit.is_value()) return FALSE; +if (!single_value->field_burst__type.is_value()) return FALSE; +return TRUE; +} + +void PCUIF__rach__ind_template::clean_up() +{ +switch (template_selection) { +case SPECIFIC_VALUE: +delete single_value; +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +delete [] value_list.list_value; +default: +break; +} +template_selection = UNINITIALIZED_TEMPLATE; +} + +PCUIF__rach__ind PCUIF__rach__ind_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 @PCUIF_Types.PCUIF_rach_ind."); +PCUIF__rach__ind ret_val; +if (single_value->field_sapi.is_bound()) { +ret_val.sapi() = single_value->field_sapi.valueof(); +} +if (single_value->field_ra.is_bound()) { +ret_val.ra() = single_value->field_ra.valueof(); +} +if (single_value->field_qta.is_bound()) { +ret_val.qta() = single_value->field_qta.valueof(); +} +if (single_value->field_fn.is_bound()) { +ret_val.fn() = single_value->field_fn.valueof(); +} +if (single_value->field_arfcn.is_bound()) { +ret_val.arfcn() = single_value->field_arfcn.valueof(); +} +if (single_value->field_is__11bit.is_bound()) { +ret_val.is__11bit() = single_value->field_is__11bit.valueof(); +} +if (single_value->field_burst__type.is_bound()) { +ret_val.burst__type() = single_value->field_burst__type.valueof(); +} +return ret_val; +} + +void PCUIF__rach__ind_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) +TTCN_error("Setting an invalid list for a template of type @PCUIF_Types.PCUIF_rach_ind."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new PCUIF__rach__ind_template[list_length]; +} + +PCUIF__rach__ind_template& PCUIF__rach__ind_template::list_item(unsigned int list_index) const +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) +TTCN_error("Accessing a list element of a non-list template of type @PCUIF_Types.PCUIF_rach_ind."); +if (list_index >= value_list.n_values) +TTCN_error("Index overflow in a value list template of type @PCUIF_Types.PCUIF_rach_ind."); +return value_list.list_value[list_index]; +} + +PCUIF__Sapi_template& PCUIF__rach__ind_template::sapi() +{ +set_specific(); +return single_value->field_sapi; +} + +const PCUIF__Sapi_template& PCUIF__rach__ind_template::sapi() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field sapi of a non-specific template of type @PCUIF_Types.PCUIF_rach_ind."); +return single_value->field_sapi; +} + +INTEGER_template& PCUIF__rach__ind_template::ra() +{ +set_specific(); +return single_value->field_ra; +} + +const INTEGER_template& PCUIF__rach__ind_template::ra() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field ra of a non-specific template of type @PCUIF_Types.PCUIF_rach_ind."); +return single_value->field_ra; +} + +INTEGER_template& PCUIF__rach__ind_template::qta() +{ +set_specific(); +return single_value->field_qta; +} + +const INTEGER_template& PCUIF__rach__ind_template::qta() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field qta of a non-specific template of type @PCUIF_Types.PCUIF_rach_ind."); +return single_value->field_qta; +} + +INTEGER_template& PCUIF__rach__ind_template::fn() +{ +set_specific(); +return single_value->field_fn; +} + +const INTEGER_template& PCUIF__rach__ind_template::fn() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field fn of a non-specific template of type @PCUIF_Types.PCUIF_rach_ind."); +return single_value->field_fn; +} + +INTEGER_template& PCUIF__rach__ind_template::arfcn() +{ +set_specific(); +return single_value->field_arfcn; +} + +const INTEGER_template& PCUIF__rach__ind_template::arfcn() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field arfcn of a non-specific template of type @PCUIF_Types.PCUIF_rach_ind."); +return single_value->field_arfcn; +} + +INTEGER_template& PCUIF__rach__ind_template::is__11bit() +{ +set_specific(); +return single_value->field_is__11bit; +} + +const INTEGER_template& PCUIF__rach__ind_template::is__11bit() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field is_11bit of a non-specific template of type @PCUIF_Types.PCUIF_rach_ind."); +return single_value->field_is__11bit; +} + +INTEGER_template& PCUIF__rach__ind_template::burst__type() +{ +set_specific(); +return single_value->field_burst__type; +} + +const INTEGER_template& PCUIF__rach__ind_template::burst__type() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field burst_type of a non-specific template of type @PCUIF_Types.PCUIF_rach_ind."); +return single_value->field_burst__type; +} + +int PCUIF__rach__ind_template::size_of() const +{ + if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_rach_ind 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 @PCUIF_Types.PCUIF_rach_ind 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 @PCUIF_Types.PCUIF_rach_ind containing a value list with different sizes."); + } + return item_size; + } + case OMIT_VALUE: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_rach_ind containing omit value."); + case ANY_VALUE: + case ANY_OR_OMIT: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_rach_ind containing */? value."); + case COMPLEMENTED_LIST: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_rach_ind containing complemented list."); + default: + TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_rach_ind."); + } + return 0; +} + +void PCUIF__rach__ind_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_str("{ sapi := "); +single_value->field_sapi.log(); +TTCN_Logger::log_event_str(", ra := "); +single_value->field_ra.log(); +TTCN_Logger::log_event_str(", qta := "); +single_value->field_qta.log(); +TTCN_Logger::log_event_str(", fn := "); +single_value->field_fn.log(); +TTCN_Logger::log_event_str(", arfcn := "); +single_value->field_arfcn.log(); +TTCN_Logger::log_event_str(", is_11bit := "); +single_value->field_is__11bit.log(); +TTCN_Logger::log_event_str(", burst_type := "); +single_value->field_burst__type.log(); +TTCN_Logger::log_event_str(" }"); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { +if (list_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[list_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void PCUIF__rach__ind_template::log_match(const PCUIF__rach__ind& 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_sapi.match(match_value.sapi(), legacy)){ +TTCN_Logger::log_logmatch_info(".sapi"); +single_value->field_sapi.log_match(match_value.sapi(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_ra.match(match_value.ra(), legacy)){ +TTCN_Logger::log_logmatch_info(".ra"); +single_value->field_ra.log_match(match_value.ra(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_qta.match(match_value.qta(), legacy)){ +TTCN_Logger::log_logmatch_info(".qta"); +single_value->field_qta.log_match(match_value.qta(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_fn.match(match_value.fn(), legacy)){ +TTCN_Logger::log_logmatch_info(".fn"); +single_value->field_fn.log_match(match_value.fn(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_arfcn.match(match_value.arfcn(), legacy)){ +TTCN_Logger::log_logmatch_info(".arfcn"); +single_value->field_arfcn.log_match(match_value.arfcn(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_is__11bit.match(match_value.is__11bit(), legacy)){ +TTCN_Logger::log_logmatch_info(".is_11bit"); +single_value->field_is__11bit.log_match(match_value.is__11bit(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_burst__type.match(match_value.burst__type(), legacy)){ +TTCN_Logger::log_logmatch_info(".burst_type"); +single_value->field_burst__type.log_match(match_value.burst__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("{ sapi := "); +single_value->field_sapi.log_match(match_value.sapi(), legacy); +TTCN_Logger::log_event_str(", ra := "); +single_value->field_ra.log_match(match_value.ra(), legacy); +TTCN_Logger::log_event_str(", qta := "); +single_value->field_qta.log_match(match_value.qta(), legacy); +TTCN_Logger::log_event_str(", fn := "); +single_value->field_fn.log_match(match_value.fn(), legacy); +TTCN_Logger::log_event_str(", arfcn := "); +single_value->field_arfcn.log_match(match_value.arfcn(), legacy); +TTCN_Logger::log_event_str(", is_11bit := "); +single_value->field_is__11bit.log_match(match_value.is__11bit(), legacy); +TTCN_Logger::log_event_str(", burst_type := "); +single_value->field_burst__type.log_match(match_value.burst__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 PCUIF__rach__ind_template::encode_text(Text_Buf& text_buf) const +{ +encode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value->field_sapi.encode_text(text_buf); +single_value->field_ra.encode_text(text_buf); +single_value->field_qta.encode_text(text_buf); +single_value->field_fn.encode_text(text_buf); +single_value->field_arfcn.encode_text(text_buf); +single_value->field_is__11bit.encode_text(text_buf); +single_value->field_burst__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 @PCUIF_Types.PCUIF_rach_ind."); +} +} + +void PCUIF__rach__ind_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_sapi.decode_text(text_buf); +single_value->field_ra.decode_text(text_buf); +single_value->field_qta.decode_text(text_buf); +single_value->field_fn.decode_text(text_buf); +single_value->field_arfcn.decode_text(text_buf); +single_value->field_is__11bit.decode_text(text_buf); +single_value->field_burst__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 PCUIF__rach__ind_template[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 @PCUIF_Types.PCUIF_rach_ind."); +} +} + +void PCUIF__rach__ind_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: { + PCUIF__rach__ind_template new_temp; + new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); + for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) sapi().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ra().set_param(*param.get_elem(1)); + if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) qta().set_param(*param.get_elem(2)); + if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) fn().set_param(*param.get_elem(3)); + if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) arfcn().set_param(*param.get_elem(4)); + if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) is__11bit().set_param(*param.get_elem(5)); + if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) burst__type().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(), "sapi")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + sapi().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "ra")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + ra().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "qta")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + qta().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "fn")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + fn().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "arfcn")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + arfcn().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "is_11bit")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + is__11bit().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "burst_type")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + burst__type().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @PCUIF_Types.PCUIF_rach_ind: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record template", "@PCUIF_Types.PCUIF_rach_ind"); + } + is_ifpresent = param.get_ifpresent(); +} + +void PCUIF__rach__ind_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_sapi.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_rach_ind"); +single_value->field_ra.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_rach_ind"); +single_value->field_qta.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_rach_ind"); +single_value->field_fn.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_rach_ind"); +single_value->field_arfcn.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_rach_ind"); +single_value->field_is__11bit.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_rach_ind"); +single_value->field_burst__type.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_rach_ind"); +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 : "@PCUIF_Types.PCUIF_rach_ind"); +} + +boolean PCUIF__rach__ind_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean PCUIF__rach__ind_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) arfcn().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) pdch__mask().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) tsc().set_param(*param.get_elem(3)); + if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) hLayer1().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(), "arfcn")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + arfcn().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "pdch_mask")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + pdch__mask().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(), "tsc")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + tsc().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "hLayer1")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + hLayer1().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @PCUIF_Types.PCUIF_InfoTrx: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record value", "@PCUIF_Types.PCUIF_InfoTrx"); + } +} + +void PCUIF__InfoTrx::set_implicit_omit() +{ +if (arfcn().is_bound()) arfcn().set_implicit_omit(); +if (pdch__mask().is_bound()) pdch__mask().set_implicit_omit(); +if (spare().is_bound()) spare().set_implicit_omit(); +if (tsc().is_bound()) tsc().set_implicit_omit(); +if (hLayer1().is_bound()) hLayer1().set_implicit_omit(); +} + +void PCUIF__InfoTrx::encode_text(Text_Buf& text_buf) const +{ +field_arfcn.encode_text(text_buf); +field_pdch__mask.encode_text(text_buf); +field_spare.encode_text(text_buf); +field_tsc.encode_text(text_buf); +field_hLayer1.encode_text(text_buf); +} + +void PCUIF__InfoTrx::decode_text(Text_Buf& text_buf) +{ +field_arfcn.decode_text(text_buf); +field_pdch__mask.decode_text(text_buf); +field_spare.decode_text(text_buf); +field_tsc.decode_text(text_buf); +field_hLayer1.decode_text(text_buf); +} + +void PCUIF__InfoTrx::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void PCUIF__InfoTrx::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int PCUIF__InfoTrx::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) +{ (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; + decoded_field_length = field_arfcn.RAW_decode(PCUIF__InfoTrx_arfcn_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_pdch__mask.RAW_decode(PCUIF__InfoTrx_pdch__mask_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_spare.RAW_decode(PCUIF__InfoTrx_spare_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_tsc.RAW_decode(PCUIF__InfoTrx_tsc_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_hLayer1.RAW_decode(PCUIF__InfoTrx_hLayer1_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return 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 PCUIF__InfoTrx::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, PCUIF__InfoTrx_arfcn_descr_.raw); + myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PCUIF__InfoTrx_pdch__mask_descr_.raw); + myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, PCUIF__InfoTrx_spare_descr_.raw); + myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, PCUIF__InfoTrx_tsc_descr_.raw); + myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, PCUIF__InfoTrx_hLayer1_descr_.raw); + encoded_length += field_arfcn.RAW_encode(PCUIF__InfoTrx_arfcn_descr_, *myleaf.body.node.nodes[0]); + encoded_length += field_pdch__mask.RAW_encode(PCUIF__InfoTrx_pdch__mask_descr_, *myleaf.body.node.nodes[1]); + encoded_length += field_spare.RAW_encode(PCUIF__InfoTrx_spare_descr_, *myleaf.body.node.nodes[2]); + encoded_length += field_tsc.RAW_encode(PCUIF__InfoTrx_tsc_descr_, *myleaf.body.node.nodes[3]); + encoded_length += field_hLayer1.RAW_encode(PCUIF__InfoTrx_hLayer1_descr_, *myleaf.body.node.nodes[4]); + return myleaf.length = encoded_length; +} + +struct PCUIF__InfoTrx_template::single_value_struct { +INTEGER_template field_arfcn; +BITSTRING_template field_pdch__mask; +OCTETSTRING_template field_spare; +OCTETSTRING_template field_tsc; +INTEGER_template field_hLayer1; +}; + +void PCUIF__InfoTrx_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_arfcn = ANY_VALUE; +single_value->field_pdch__mask = ANY_VALUE; +single_value->field_spare = ANY_VALUE; +single_value->field_tsc = ANY_VALUE; +single_value->field_hLayer1 = ANY_VALUE; +} +} +} + +void PCUIF__InfoTrx_template::copy_value(const PCUIF__InfoTrx& other_value) +{ +single_value = new single_value_struct; +if (other_value.arfcn().is_bound()) { + single_value->field_arfcn = other_value.arfcn(); +} else { + single_value->field_arfcn.clean_up(); +} +if (other_value.pdch__mask().is_bound()) { + single_value->field_pdch__mask = other_value.pdch__mask(); +} else { + single_value->field_pdch__mask.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.tsc().is_bound()) { + single_value->field_tsc = other_value.tsc(); +} else { + single_value->field_tsc.clean_up(); +} +if (other_value.hLayer1().is_bound()) { + single_value->field_hLayer1 = other_value.hLayer1(); +} else { + single_value->field_hLayer1.clean_up(); +} +set_selection(SPECIFIC_VALUE); +} + +void PCUIF__InfoTrx_template::copy_template(const PCUIF__InfoTrx_template& other_value) +{ +switch (other_value.template_selection) { +case SPECIFIC_VALUE: +single_value = new single_value_struct; +if (UNINITIALIZED_TEMPLATE != other_value.arfcn().get_selection()) { +single_value->field_arfcn = other_value.arfcn(); +} else { +single_value->field_arfcn.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.pdch__mask().get_selection()) { +single_value->field_pdch__mask = other_value.pdch__mask(); +} else { +single_value->field_pdch__mask.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.tsc().get_selection()) { +single_value->field_tsc = other_value.tsc(); +} else { +single_value->field_tsc.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.hLayer1().get_selection()) { +single_value->field_hLayer1 = other_value.hLayer1(); +} else { +single_value->field_hLayer1.clean_up(); +} +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new PCUIF__InfoTrx_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_InfoTrx."); +break; +} +set_selection(other_value); +} + +PCUIF__InfoTrx_template::PCUIF__InfoTrx_template() +{ +} + +PCUIF__InfoTrx_template::PCUIF__InfoTrx_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +PCUIF__InfoTrx_template::PCUIF__InfoTrx_template(const PCUIF__InfoTrx& other_value) +{ +copy_value(other_value); +} + +PCUIF__InfoTrx_template::PCUIF__InfoTrx_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const PCUIF__InfoTrx&)other_value); +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of type @PCUIF_Types.PCUIF_InfoTrx from an unbound optional field."); +} +} + +PCUIF__InfoTrx_template::PCUIF__InfoTrx_template(const PCUIF__InfoTrx_template& other_value) +: Base_Template() +{ +copy_template(other_value); +} + +PCUIF__InfoTrx_template::~PCUIF__InfoTrx_template() +{ +clean_up(); +} + +PCUIF__InfoTrx_template& PCUIF__InfoTrx_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +PCUIF__InfoTrx_template& PCUIF__InfoTrx_template::operator=(const PCUIF__InfoTrx& other_value) +{ +clean_up(); +copy_value(other_value); +return *this; +} + +PCUIF__InfoTrx_template& PCUIF__InfoTrx_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const PCUIF__InfoTrx&)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 @PCUIF_Types.PCUIF_InfoTrx."); +} +return *this; +} + +PCUIF__InfoTrx_template& PCUIF__InfoTrx_template::operator=(const PCUIF__InfoTrx_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean PCUIF__InfoTrx_template::match(const PCUIF__InfoTrx& 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.arfcn().is_bound()) return FALSE; +if(!single_value->field_arfcn.match(other_value.arfcn(), legacy))return FALSE; +if(!other_value.pdch__mask().is_bound()) return FALSE; +if(!single_value->field_pdch__mask.match(other_value.pdch__mask(), 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.tsc().is_bound()) return FALSE; +if(!single_value->field_tsc.match(other_value.tsc(), legacy))return FALSE; +if(!other_value.hLayer1().is_bound()) return FALSE; +if(!single_value->field_hLayer1.match(other_value.hLayer1(), legacy))return FALSE; +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_InfoTrx."); +} +return FALSE; +} + +boolean PCUIF__InfoTrx_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +if (template_selection != SPECIFIC_VALUE) return TRUE; +if (single_value->field_arfcn.is_bound()) return TRUE; +if (single_value->field_pdch__mask.is_bound()) return TRUE; +if (single_value->field_spare.is_bound()) return TRUE; +if (single_value->field_tsc.is_bound()) return TRUE; +if (single_value->field_hLayer1.is_bound()) return TRUE; +return FALSE; +} + +boolean PCUIF__InfoTrx_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +if (!single_value->field_arfcn.is_value()) return FALSE; +if (!single_value->field_pdch__mask.is_value()) return FALSE; +if (!single_value->field_spare.is_value()) return FALSE; +if (!single_value->field_tsc.is_value()) return FALSE; +if (!single_value->field_hLayer1.is_value()) return FALSE; +return TRUE; +} + +void PCUIF__InfoTrx_template::clean_up() +{ +switch (template_selection) { +case SPECIFIC_VALUE: +delete single_value; +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +delete [] value_list.list_value; +default: +break; +} +template_selection = UNINITIALIZED_TEMPLATE; +} + +PCUIF__InfoTrx PCUIF__InfoTrx_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 @PCUIF_Types.PCUIF_InfoTrx."); +PCUIF__InfoTrx ret_val; +if (single_value->field_arfcn.is_bound()) { +ret_val.arfcn() = single_value->field_arfcn.valueof(); +} +if (single_value->field_pdch__mask.is_bound()) { +ret_val.pdch__mask() = single_value->field_pdch__mask.valueof(); +} +if (single_value->field_spare.is_bound()) { +ret_val.spare() = single_value->field_spare.valueof(); +} +if (single_value->field_tsc.is_bound()) { +ret_val.tsc() = single_value->field_tsc.valueof(); +} +if (single_value->field_hLayer1.is_bound()) { +ret_val.hLayer1() = single_value->field_hLayer1.valueof(); +} +return ret_val; +} + +void PCUIF__InfoTrx_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) +TTCN_error("Setting an invalid list for a template of type @PCUIF_Types.PCUIF_InfoTrx."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new PCUIF__InfoTrx_template[list_length]; +} + +PCUIF__InfoTrx_template& PCUIF__InfoTrx_template::list_item(unsigned int list_index) const +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) +TTCN_error("Accessing a list element of a non-list template of type @PCUIF_Types.PCUIF_InfoTrx."); +if (list_index >= value_list.n_values) +TTCN_error("Index overflow in a value list template of type @PCUIF_Types.PCUIF_InfoTrx."); +return value_list.list_value[list_index]; +} + +INTEGER_template& PCUIF__InfoTrx_template::arfcn() +{ +set_specific(); +return single_value->field_arfcn; +} + +const INTEGER_template& PCUIF__InfoTrx_template::arfcn() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field arfcn of a non-specific template of type @PCUIF_Types.PCUIF_InfoTrx."); +return single_value->field_arfcn; +} + +BITSTRING_template& PCUIF__InfoTrx_template::pdch__mask() +{ +set_specific(); +return single_value->field_pdch__mask; +} + +const BITSTRING_template& PCUIF__InfoTrx_template::pdch__mask() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field pdch_mask of a non-specific template of type @PCUIF_Types.PCUIF_InfoTrx."); +return single_value->field_pdch__mask; +} + +OCTETSTRING_template& PCUIF__InfoTrx_template::spare() +{ +set_specific(); +return single_value->field_spare; +} + +const OCTETSTRING_template& PCUIF__InfoTrx_template::spare() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field spare of a non-specific template of type @PCUIF_Types.PCUIF_InfoTrx."); +return single_value->field_spare; +} + +OCTETSTRING_template& PCUIF__InfoTrx_template::tsc() +{ +set_specific(); +return single_value->field_tsc; +} + +const OCTETSTRING_template& PCUIF__InfoTrx_template::tsc() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field tsc of a non-specific template of type @PCUIF_Types.PCUIF_InfoTrx."); +return single_value->field_tsc; +} + +INTEGER_template& PCUIF__InfoTrx_template::hLayer1() +{ +set_specific(); +return single_value->field_hLayer1; +} + +const INTEGER_template& PCUIF__InfoTrx_template::hLayer1() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field hLayer1 of a non-specific template of type @PCUIF_Types.PCUIF_InfoTrx."); +return single_value->field_hLayer1; +} + +int PCUIF__InfoTrx_template::size_of() const +{ + if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_InfoTrx 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 @PCUIF_Types.PCUIF_InfoTrx 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 @PCUIF_Types.PCUIF_InfoTrx containing a value list with different sizes."); + } + return item_size; + } + case OMIT_VALUE: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_InfoTrx containing omit value."); + case ANY_VALUE: + case ANY_OR_OMIT: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_InfoTrx containing */? value."); + case COMPLEMENTED_LIST: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_InfoTrx containing complemented list."); + default: + TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_InfoTrx."); + } + return 0; +} + +void PCUIF__InfoTrx_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_str("{ arfcn := "); +single_value->field_arfcn.log(); +TTCN_Logger::log_event_str(", pdch_mask := "); +single_value->field_pdch__mask.log(); +TTCN_Logger::log_event_str(", spare := "); +single_value->field_spare.log(); +TTCN_Logger::log_event_str(", tsc := "); +single_value->field_tsc.log(); +TTCN_Logger::log_event_str(", hLayer1 := "); +single_value->field_hLayer1.log(); +TTCN_Logger::log_event_str(" }"); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { +if (list_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[list_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void PCUIF__InfoTrx_template::log_match(const PCUIF__InfoTrx& 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_arfcn.match(match_value.arfcn(), legacy)){ +TTCN_Logger::log_logmatch_info(".arfcn"); +single_value->field_arfcn.log_match(match_value.arfcn(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_pdch__mask.match(match_value.pdch__mask(), legacy)){ +TTCN_Logger::log_logmatch_info(".pdch_mask"); +single_value->field_pdch__mask.log_match(match_value.pdch__mask(), 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_tsc.match(match_value.tsc(), legacy)){ +TTCN_Logger::log_logmatch_info(".tsc"); +single_value->field_tsc.log_match(match_value.tsc(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_hLayer1.match(match_value.hLayer1(), legacy)){ +TTCN_Logger::log_logmatch_info(".hLayer1"); +single_value->field_hLayer1.log_match(match_value.hLayer1(), 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("{ arfcn := "); +single_value->field_arfcn.log_match(match_value.arfcn(), legacy); +TTCN_Logger::log_event_str(", pdch_mask := "); +single_value->field_pdch__mask.log_match(match_value.pdch__mask(), legacy); +TTCN_Logger::log_event_str(", spare := "); +single_value->field_spare.log_match(match_value.spare(), legacy); +TTCN_Logger::log_event_str(", tsc := "); +single_value->field_tsc.log_match(match_value.tsc(), legacy); +TTCN_Logger::log_event_str(", hLayer1 := "); +single_value->field_hLayer1.log_match(match_value.hLayer1(), 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 PCUIF__InfoTrx_template::encode_text(Text_Buf& text_buf) const +{ +encode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value->field_arfcn.encode_text(text_buf); +single_value->field_pdch__mask.encode_text(text_buf); +single_value->field_spare.encode_text(text_buf); +single_value->field_tsc.encode_text(text_buf); +single_value->field_hLayer1.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 @PCUIF_Types.PCUIF_InfoTrx."); +} +} + +void PCUIF__InfoTrx_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_arfcn.decode_text(text_buf); +single_value->field_pdch__mask.decode_text(text_buf); +single_value->field_spare.decode_text(text_buf); +single_value->field_tsc.decode_text(text_buf); +single_value->field_hLayer1.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 PCUIF__InfoTrx_template[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 @PCUIF_Types.PCUIF_InfoTrx."); +} +} + +void PCUIF__InfoTrx_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: { + PCUIF__InfoTrx_template new_temp; + new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); + for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) arfcn().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) pdch__mask().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) tsc().set_param(*param.get_elem(3)); + if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) hLayer1().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(), "arfcn")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + arfcn().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "pdch_mask")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + pdch__mask().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(), "tsc")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + tsc().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "hLayer1")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + hLayer1().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @PCUIF_Types.PCUIF_InfoTrx: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record template", "@PCUIF_Types.PCUIF_InfoTrx"); + } + is_ifpresent = param.get_ifpresent(); +} + +void PCUIF__InfoTrx_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_arfcn.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_InfoTrx"); +single_value->field_pdch__mask.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_InfoTrx"); +single_value->field_spare.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_InfoTrx"); +single_value->field_tsc.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_InfoTrx"); +single_value->field_hLayer1.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_InfoTrx"); +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 : "@PCUIF_Types.PCUIF_InfoTrx"); +} + +boolean PCUIF__InfoTrx_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean PCUIF__InfoTrx_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int l_idx=0; l_idxref_count = 1; +val_ptr->n_elements = 0; +val_ptr->value_elements = NULL; +} + +PCUIF__info__ind_trx::PCUIF__info__ind_trx(const PCUIF__info__ind_trx& other_value) +{ +if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @PCUIF_Types.PCUIF_info_ind.trx."); +val_ptr = other_value.val_ptr; +val_ptr->ref_count++; +} + +PCUIF__info__ind_trx::~PCUIF__info__ind_trx() +{ +clean_up(); +if (val_ptr != NULL) val_ptr = NULL; +} + +void PCUIF__info__ind_trx::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."); +} +} + +PCUIF__info__ind_trx& PCUIF__info__ind_trx::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; +} + +PCUIF__info__ind_trx& PCUIF__info__ind_trx::operator=(const PCUIF__info__ind_trx& other_value) +{ +if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @PCUIF_Types.PCUIF_info_ind.trx."); +if (this != &other_value) { +clean_up(); +val_ptr = other_value.val_ptr; +val_ptr->ref_count++; +} +return *this; +} + +boolean PCUIF__info__ind_trx::operator==(null_type) const +{ +if (val_ptr == NULL) +TTCN_error("The left operand of comparison is an unbound value of type @PCUIF_Types.PCUIF_info_ind.trx."); +return val_ptr->n_elements == 0 ; +} + +boolean PCUIF__info__ind_trx::operator==(const PCUIF__info__ind_trx& other_value) const +{ +if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @PCUIF_Types.PCUIF_info_ind.trx."); +if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @PCUIF_Types.PCUIF_info_ind.trx."); +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; +} + +PCUIF__InfoTrx& PCUIF__info__ind_trx::operator[](int index_value) +{ +if (index_value < 0) TTCN_error("Accessing an element of type @PCUIF_Types.PCUIF_info_ind.trx 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 = (PCUIF__InfoTrx**)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 PCUIF__InfoTrx(*(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 PCUIF__InfoTrx; +} +return *val_ptr->value_elements[index_value]; +} + +PCUIF__InfoTrx& PCUIF__info__ind_trx::operator[](const INTEGER& index_value) +{ +index_value.must_bound("Using an unbound integer value for indexing a value of type @PCUIF_Types.PCUIF_info_ind.trx."); +return (*this)[(int)index_value]; +} + +const PCUIF__InfoTrx& PCUIF__info__ind_trx::operator[](int index_value) const +{ +if (val_ptr == NULL) +TTCN_error("Accessing an element in an unbound value of type @PCUIF_Types.PCUIF_info_ind.trx."); +if (index_value < 0) TTCN_error("Accessing an element of type @PCUIF_Types.PCUIF_info_ind.trx using a negative index: %d.", index_value); +if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @PCUIF_Types.PCUIF_info_ind.trx: 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) ? +*val_ptr->value_elements[index_value] : UNBOUND_ELEM; +} + +const PCUIF__InfoTrx& PCUIF__info__ind_trx::operator[](const INTEGER& index_value) const +{ +index_value.must_bound("Using an unbound integer value for indexing a value of type @PCUIF_Types.PCUIF_info_ind.trx."); +return (*this)[(int)index_value]; +} + +PCUIF__info__ind_trx PCUIF__info__ind_trx::operator<<=(int rotate_count) const +{ +return *this >>= (-rotate_count); +} + +PCUIF__info__ind_trx PCUIF__info__ind_trx::operator<<=(const INTEGER& rotate_count) const +{ +rotate_count.must_bound("Unbound integer operand of rotate left operator."); +return *this >>= (int)(-rotate_count); +} + +PCUIF__info__ind_trx PCUIF__info__ind_trx::operator>>=(const INTEGER& rotate_count) const +{ +rotate_count.must_bound("Unbound integer operand of rotate right operator."); +return *this >>= (int)rotate_count; +} + +PCUIF__info__ind_trx PCUIF__info__ind_trx::operator>>=(int rotate_count) const +{ +if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @PCUIF_Types.PCUIF_info_ind.trx."); +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; +PCUIF__info__ind_trx 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 PCUIF__InfoTrx(*val_ptr->value_elements[i]); +} +} +return ret_val; +} + +PCUIF__info__ind_trx PCUIF__info__ind_trx::operator+(const PCUIF__info__ind_trx& other_value) const +{ +if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @PCUIF_Types.PCUIF_info_ind.trx concatenation."); +if (val_ptr->n_elements == 0) return other_value; +if (other_value.val_ptr->n_elements == 0) return *this; +PCUIF__info__ind_trx 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 PCUIF__InfoTrx(*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 PCUIF__InfoTrx(*other_value.val_ptr->value_elements[i]); +} +} +return ret_val; +} + +PCUIF__info__ind_trx PCUIF__info__ind_trx::substr(int index, int returncount) const +{ +if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @PCUIF_Types.PCUIF_info_ind.trx."); +check_substr_arguments(val_ptr->n_elements, index, returncount, "@PCUIF_Types.PCUIF_info_ind.trx","element"); +PCUIF__info__ind_trx ret_val; +ret_val.set_size(returncount); +for (int i=0; ivalue_elements[i+index] != NULL) { +ret_val.val_ptr->value_elements[i] = new PCUIF__InfoTrx(*val_ptr->value_elements[i+index]); +} +} +return ret_val; +} + +PCUIF__info__ind_trx PCUIF__info__ind_trx::replace(int index, int len, const PCUIF__info__ind_trx& repl) const +{ +if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @PCUIF_Types.PCUIF_info_ind.trx."); +if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @PCUIF_Types.PCUIF_info_ind.trx."); +check_replace_arguments(val_ptr->n_elements, index, len, "@PCUIF_Types.PCUIF_info_ind.trx","element"); +PCUIF__info__ind_trx 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 PCUIF__InfoTrx(*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 PCUIF__InfoTrx(*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 PCUIF__InfoTrx(*val_ptr->value_elements[index+i+len]); +} +} +return ret_val; +} + +PCUIF__info__ind_trx PCUIF__info__ind_trx::replace(int index, int len, const PCUIF__info__ind_trx_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 PCUIF__info__ind_trx::set_size(int new_size) +{ +if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @PCUIF_Types.PCUIF_info_ind.trx."); +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 = (PCUIF__InfoTrx**)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 PCUIF__InfoTrx(*(val_ptr->value_elements[elem_count])); +} +} +clean_up(); +val_ptr = new_val_ptr; +} +if (new_size > val_ptr->n_elements) { +val_ptr->value_elements = (PCUIF__InfoTrx**)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 @PCUIF_Types.PCUIF_info_ind.trx: %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 = (PCUIF__InfoTrx**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); +val_ptr->n_elements = new_size; +} +} + +boolean PCUIF__info__ind_trx::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 PCUIF__info__ind_trx::size_of() const +{ +if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @PCUIF_Types.PCUIF_info_ind.trx."); +return val_ptr->n_elements; +} + +int PCUIF__info__ind_trx::lengthof() const +{ +if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @PCUIF_Types.PCUIF_info_ind.trx."); +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 PCUIF__info__ind_trx::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 PCUIF__info__ind_trx::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", "@PCUIF_Types.PCUIF_info_ind.trx"); + } + 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", "@PCUIF_Types.PCUIF_info_ind.trx"); + } + break; + default: + TTCN_error("Internal error: Unknown operation type."); + } +} + +void PCUIF__info__ind_trx::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 PCUIF__info__ind_trx::encode_text(Text_Buf& text_buf) const +{ +if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @PCUIF_Types.PCUIF_info_ind.trx."); +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 PCUIF__info__ind_trx::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 @PCUIF_Types.PCUIF_info_ind.trx."); +val_ptr->value_elements = (PCUIF__InfoTrx**)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 PCUIF__InfoTrx; +val_ptr->value_elements[elem_count]->decode_text(text_buf); +} +} + +void PCUIF__info__ind_trx::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void PCUIF__info__ind_trx::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int PCUIF__info__ind_trx::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){ + int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); + limit-=prepaddlength; + int decoded_length=0; + int decoded_field_length=0; + size_t start_of_field=0; + if(first_call) { + clean_up(); + val_ptr=new recordof_setof_struct; + val_ptr->ref_count=1; + val_ptr->n_elements=0; + val_ptr->value_elements=NULL; + } + int start_field=val_ptr->n_elements; + if(p_td.raw->fieldlength || sel_field!=-1){ + int a=0; + if(sel_field==-1) sel_field=p_td.raw->fieldlength; + for(a=0;an_elements=0; + } else { + int a=start_field; + 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; + } + 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 PCUIF__info__ind_trx::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 PCUIF__info__ind_trx_template::copy_value(const PCUIF__info__ind_trx& other_value) +{ +if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @PCUIF_Types.PCUIF_info_ind.trx with an unbound value."); +single_value.n_elements = other_value.size_of(); +single_value.value_elements = (PCUIF__InfoTrx_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 PCUIF__InfoTrx_template(other_value[elem_count]); +} else { +single_value.value_elements[elem_count] = new PCUIF__InfoTrx_template; +} +} +set_selection(SPECIFIC_VALUE); +} + +void PCUIF__info__ind_trx_template::copy_template(const PCUIF__info__ind_trx_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 = (PCUIF__InfoTrx_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 PCUIF__InfoTrx_template(*other_value.single_value.value_elements[elem_count]); +} else { +single_value.value_elements[elem_count] = new PCUIF__InfoTrx_template; +} +} +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new PCUIF__info__ind_trx_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_info_ind.trx."); +break; +} +set_selection(other_value); +} + +boolean PCUIF__info__ind_trx_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 PCUIF__info__ind_trx_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const PCUIF__info__ind_trx*)value_ptr)[value_index], legacy); +else return ((const PCUIF__info__ind_trx_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); +} + +PCUIF__info__ind_trx_template::PCUIF__info__ind_trx_template() +{ +} + +PCUIF__info__ind_trx_template::PCUIF__info__ind_trx_template(template_sel other_value) + : Record_Of_Template(other_value) +{ +check_single_selection(other_value); +} + +PCUIF__info__ind_trx_template::PCUIF__info__ind_trx_template(null_type) + : Record_Of_Template(SPECIFIC_VALUE) +{ +single_value.n_elements = 0; +single_value.value_elements = NULL; +} + +PCUIF__info__ind_trx_template::PCUIF__info__ind_trx_template(const PCUIF__info__ind_trx& other_value) +{ +copy_value(other_value); +} + +PCUIF__info__ind_trx_template::PCUIF__info__ind_trx_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const PCUIF__info__ind_trx&)other_value); +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of type @PCUIF_Types.PCUIF_info_ind.trx from an unbound optional field."); +} +} + +PCUIF__info__ind_trx_template::PCUIF__info__ind_trx_template(const PCUIF__info__ind_trx_template& other_value) + : Record_Of_Template() +{ +copy_template(other_value); +} + +PCUIF__info__ind_trx_template::~PCUIF__info__ind_trx_template() +{ +clean_up(); +} + +void PCUIF__info__ind_trx_template::clean_up() +{ +switch (template_selection) { +case SPECIFIC_VALUE: +for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) +delete single_value.value_elements[elem_count]; +free_pointers((void**)single_value.value_elements); +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +delete [] value_list.list_value; +default: +break; +} +template_selection = UNINITIALIZED_TEMPLATE; +} + +PCUIF__info__ind_trx_template& PCUIF__info__ind_trx_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +PCUIF__info__ind_trx_template& PCUIF__info__ind_trx_template::operator=(null_type) +{ +clean_up(); +set_selection(SPECIFIC_VALUE); +single_value.n_elements = 0; +single_value.value_elements = NULL; +return *this; +} + +PCUIF__info__ind_trx_template& PCUIF__info__ind_trx_template::operator=(const PCUIF__info__ind_trx& other_value) +{ +clean_up(); +copy_value(other_value); +return *this; +} + +PCUIF__info__ind_trx_template& PCUIF__info__ind_trx_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const PCUIF__info__ind_trx&)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 @PCUIF_Types.PCUIF_info_ind.trx."); +} +return *this; +} + +PCUIF__info__ind_trx_template& PCUIF__info__ind_trx_template::operator=(const PCUIF__info__ind_trx_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +PCUIF__InfoTrx_template& PCUIF__info__ind_trx_template::operator[](int index_value) +{ +if (index_value < 0) TTCN_error("Accessing an element of a template for type @PCUIF_Types.PCUIF_info_ind.trx 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 @PCUIF_Types.PCUIF_info_ind.trx."); + break; +} +return *single_value.value_elements[index_value]; +} + +PCUIF__InfoTrx_template& PCUIF__info__ind_trx_template::operator[](const INTEGER& index_value) +{ +index_value.must_bound("Using an unbound integer value for indexing a template of type @PCUIF_Types.PCUIF_info_ind.trx."); +return (*this)[(int)index_value]; +} + +const PCUIF__InfoTrx_template& PCUIF__info__ind_trx_template::operator[](int index_value) const +{ +if (index_value < 0) TTCN_error("Accessing an element of a template for type @PCUIF_Types.PCUIF_info_ind.trx using a negative index: %d.", index_value); +if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @PCUIF_Types.PCUIF_info_ind.trx."); +if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @PCUIF_Types.PCUIF_info_ind.trx: 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 PCUIF__InfoTrx_template& PCUIF__info__ind_trx_template::operator[](const INTEGER& index_value) const +{ +index_value.must_bound("Using an unbound integer value for indexing a template of type @PCUIF_Types.PCUIF_info_ind.trx."); +return (*this)[(int)index_value]; +} + +void PCUIF__info__ind_trx_template::set_size(int new_size) +{ +if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @PCUIF_Types.PCUIF_info_ind.trx."); +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 = (PCUIF__InfoTrx_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 PCUIF__InfoTrx_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 PCUIF__InfoTrx_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 = (PCUIF__InfoTrx_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); +single_value.n_elements = new_size; +} +} + +int PCUIF__info__ind_trx_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 PCUIF__info__ind_trx_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 @PCUIF_Types.PCUIF_info_ind.trx 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 @PCUIF_Types.PCUIF_info_ind.trx 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 @PCUIF_Types.PCUIF_info_ind.trx 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 @PCUIF_Types.PCUIF_info_ind.trx 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 @PCUIF_Types.PCUIF_info_ind.trx 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 @PCUIF_Types.PCUIF_info_ind.trx containing complemented list.", op_name); +default: + TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_info_ind.trx.", op_name); +} +return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @PCUIF_Types.PCUIF_info_ind.trx"); +} + +boolean PCUIF__info__ind_trx_template::match(const PCUIF__info__ind_trx& other_value, boolean legacy) const +{ +if (!other_value.is_bound()) return FALSE; +int value_length = other_value.size_of(); +if (!match_length(value_length)) return FALSE; +switch (template_selection) { +case SPECIFIC_VALUE: +return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy); +case OMIT_VALUE: +return FALSE; +case ANY_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching with an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_info_ind.trx."); +} +return FALSE; +} + +boolean PCUIF__info__ind_trx_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; +} + +PCUIF__info__ind_trx PCUIF__info__ind_trx_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 @PCUIF_Types.PCUIF_info_ind.trx."); +PCUIF__info__ind_trx 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; +} + +PCUIF__info__ind_trx PCUIF__info__ind_trx_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); +} + +PCUIF__info__ind_trx PCUIF__info__ind_trx_template::replace(int index, int len, const PCUIF__info__ind_trx_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()); +} + +PCUIF__info__ind_trx PCUIF__info__ind_trx_template::replace(int index, int len, const PCUIF__info__ind_trx& 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 PCUIF__info__ind_trx_template::set_type(template_sel template_type, unsigned int list_length) +{ +clean_up(); +switch (template_type) { +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = list_length; +value_list.list_value = new PCUIF__info__ind_trx_template[list_length]; +break; +default: +TTCN_error("Internal error: Setting an invalid type for a template of type @PCUIF_Types.PCUIF_info_ind.trx."); +} +set_selection(template_type); +} + +PCUIF__info__ind_trx_template& PCUIF__info__ind_trx_template::list_item(unsigned int list_index) +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of type @PCUIF_Types.PCUIF_info_ind.trx."); +if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @PCUIF_Types.PCUIF_info_ind.trx."); +return value_list.list_value[list_index]; +} + +void PCUIF__info__ind_trx_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +if (single_value.n_elements > 0) { +TTCN_Logger::log_event_str("{ "); +for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { +if (elem_count > 0) TTCN_Logger::log_event_str(", "); +if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation("); +single_value.value_elements[elem_count]->log(); +if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')'); +} +TTCN_Logger::log_event_str(" }"); +} else TTCN_Logger::log_event_str("{ }"); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { +if (list_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[list_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_restricted(); +log_ifpresent(); +} + +void PCUIF__info__ind_trx_template::log_match(const PCUIF__info__ind_trx& 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 PCUIF__info__ind_trx_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 @PCUIF_Types.PCUIF_info_ind.trx."); +} +} + +void PCUIF__info__ind_trx_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 @PCUIF_Types.PCUIF_info_ind.trx."); +single_value.value_elements = (PCUIF__InfoTrx_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 PCUIF__InfoTrx_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 PCUIF__info__ind_trx_template[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 @PCUIF_Types.PCUIF_info_ind.trx."); +} +} + +boolean PCUIF__info__ind_trx_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean PCUIF__info__ind_trx_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int i=0; 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; + for (size_t perm_i=0; perm_iget_size(); perm_i++) { + (*this)[curr_idx].set_param(*(param.get_elem(p_i)->get_elem(perm_i))); + curr_idx++; + } + int perm_end_idx = curr_idx - 1; + add_permutation(perm_start_idx, perm_end_idx); + } break; + default: + (*this)[curr_idx].set_param(*param.get_elem(p_i)); + curr_idx++; + } + } + } break; + default: + param.type_error("record of template", "@PCUIF_Types.PCUIF_info_ind.trx"); + } + is_ifpresent = param.get_ifpresent(); + set_length_range(param); +} + +void PCUIF__info__ind_trx_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 : "@PCUIF_Types.PCUIF_info_ind.trx"); +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 : "@PCUIF_Types.PCUIF_info_ind.trx"); +} + +boolean PCUIF__info__ind_trx_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); +} +} +PCUIF__info__ind::PCUIF__info__ind() +{ +} + +PCUIF__info__ind::PCUIF__info__ind(const INTEGER& par_version, + const PCUIF__Flags& par_flags, + const PCUIF__info__ind_trx& par_trx, + const INTEGER& par_bsic, + const INTEGER& par_mcc, + const INTEGER& par_mnc, + const INTEGER& par_mnc__3__digits, + const INTEGER& par_lac, + const INTEGER& par_rac, + const INTEGER& par_nsei, + const PCUIF__info__ind_nse__timer& par_nse__timer, + const PCUIF__info__ind_cell__timer& par_cell__timer, + const INTEGER& par_cell__id, + const INTEGER& par_repeat__time, + const INTEGER& par_repeat__count, + const INTEGER& par_bvci, + const INTEGER& par_t3142, + const INTEGER& par_t3169, + const INTEGER& par_t3191, + const INTEGER& par_t3193__10ms, + const INTEGER& par_t3195, + const INTEGER& par_t3101, + const INTEGER& par_t3103, + const INTEGER& par_t3105, + const INTEGER& par_cv__countdown, + const INTEGER& par_dl__tbf__ext, + const INTEGER& par_ul__tbf__ext, + const INTEGER& par_initial__cs, + const INTEGER& par_initial__mcs, + const PCUIF__info__ind_nsvci& par_nsvci, + const PCUIF__info__ind_local__pprt& par_local__pprt, + const PCUIF__info__ind_remote__port& par_remote__port, + const PCUIF__info__ind_remote__ip& par_remote__ip) + : field_version(par_version), + field_flags(par_flags), + field_trx(par_trx), + field_bsic(par_bsic), + field_mcc(par_mcc), + field_mnc(par_mnc), + field_mnc__3__digits(par_mnc__3__digits), + field_lac(par_lac), + field_rac(par_rac), + field_nsei(par_nsei), + field_nse__timer(par_nse__timer), + field_cell__timer(par_cell__timer), + field_cell__id(par_cell__id), + field_repeat__time(par_repeat__time), + field_repeat__count(par_repeat__count), + field_bvci(par_bvci), + field_t3142(par_t3142), + field_t3169(par_t3169), + field_t3191(par_t3191), + field_t3193__10ms(par_t3193__10ms), + field_t3195(par_t3195), + field_t3101(par_t3101), + field_t3103(par_t3103), + field_t3105(par_t3105), + field_cv__countdown(par_cv__countdown), + field_dl__tbf__ext(par_dl__tbf__ext), + field_ul__tbf__ext(par_ul__tbf__ext), + field_initial__cs(par_initial__cs), + field_initial__mcs(par_initial__mcs), + field_nsvci(par_nsvci), + field_local__pprt(par_local__pprt), + field_remote__port(par_remote__port), + field_remote__ip(par_remote__ip) +{ +} + +PCUIF__info__ind::PCUIF__info__ind(const PCUIF__info__ind& other_value) +{ +if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @PCUIF_Types.PCUIF_info_ind."); +if (other_value.version().is_bound()) field_version = other_value.version(); +else field_version.clean_up(); +if (other_value.flags().is_bound()) field_flags = other_value.flags(); +else field_flags.clean_up(); +if (other_value.trx().is_bound()) field_trx = other_value.trx(); +else field_trx.clean_up(); +if (other_value.bsic().is_bound()) field_bsic = other_value.bsic(); +else field_bsic.clean_up(); +if (other_value.mcc().is_bound()) field_mcc = other_value.mcc(); +else field_mcc.clean_up(); +if (other_value.mnc().is_bound()) field_mnc = other_value.mnc(); +else field_mnc.clean_up(); +if (other_value.mnc__3__digits().is_bound()) field_mnc__3__digits = other_value.mnc__3__digits(); +else field_mnc__3__digits.clean_up(); +if (other_value.lac().is_bound()) field_lac = other_value.lac(); +else field_lac.clean_up(); +if (other_value.rac().is_bound()) field_rac = other_value.rac(); +else field_rac.clean_up(); +if (other_value.nsei().is_bound()) field_nsei = other_value.nsei(); +else field_nsei.clean_up(); +if (other_value.nse__timer().is_bound()) field_nse__timer = other_value.nse__timer(); +else field_nse__timer.clean_up(); +if (other_value.cell__timer().is_bound()) field_cell__timer = other_value.cell__timer(); +else field_cell__timer.clean_up(); +if (other_value.cell__id().is_bound()) field_cell__id = other_value.cell__id(); +else field_cell__id.clean_up(); +if (other_value.repeat__time().is_bound()) field_repeat__time = other_value.repeat__time(); +else field_repeat__time.clean_up(); +if (other_value.repeat__count().is_bound()) field_repeat__count = other_value.repeat__count(); +else field_repeat__count.clean_up(); +if (other_value.bvci().is_bound()) field_bvci = other_value.bvci(); +else field_bvci.clean_up(); +if (other_value.t3142().is_bound()) field_t3142 = other_value.t3142(); +else field_t3142.clean_up(); +if (other_value.t3169().is_bound()) field_t3169 = other_value.t3169(); +else field_t3169.clean_up(); +if (other_value.t3191().is_bound()) field_t3191 = other_value.t3191(); +else field_t3191.clean_up(); +if (other_value.t3193__10ms().is_bound()) field_t3193__10ms = other_value.t3193__10ms(); +else field_t3193__10ms.clean_up(); +if (other_value.t3195().is_bound()) field_t3195 = other_value.t3195(); +else field_t3195.clean_up(); +if (other_value.t3101().is_bound()) field_t3101 = other_value.t3101(); +else field_t3101.clean_up(); +if (other_value.t3103().is_bound()) field_t3103 = other_value.t3103(); +else field_t3103.clean_up(); +if (other_value.t3105().is_bound()) field_t3105 = other_value.t3105(); +else field_t3105.clean_up(); +if (other_value.cv__countdown().is_bound()) field_cv__countdown = other_value.cv__countdown(); +else field_cv__countdown.clean_up(); +if (other_value.dl__tbf__ext().is_bound()) field_dl__tbf__ext = other_value.dl__tbf__ext(); +else field_dl__tbf__ext.clean_up(); +if (other_value.ul__tbf__ext().is_bound()) field_ul__tbf__ext = other_value.ul__tbf__ext(); +else field_ul__tbf__ext.clean_up(); +if (other_value.initial__cs().is_bound()) field_initial__cs = other_value.initial__cs(); +else field_initial__cs.clean_up(); +if (other_value.initial__mcs().is_bound()) field_initial__mcs = other_value.initial__mcs(); +else field_initial__mcs.clean_up(); +if (other_value.nsvci().is_bound()) field_nsvci = other_value.nsvci(); +else field_nsvci.clean_up(); +if (other_value.local__pprt().is_bound()) field_local__pprt = other_value.local__pprt(); +else field_local__pprt.clean_up(); +if (other_value.remote__port().is_bound()) field_remote__port = other_value.remote__port(); +else field_remote__port.clean_up(); +if (other_value.remote__ip().is_bound()) field_remote__ip = other_value.remote__ip(); +else field_remote__ip.clean_up(); +} + +void PCUIF__info__ind::clean_up() +{ +field_version.clean_up(); +field_flags.clean_up(); +field_trx.clean_up(); +field_bsic.clean_up(); +field_mcc.clean_up(); +field_mnc.clean_up(); +field_mnc__3__digits.clean_up(); +field_lac.clean_up(); +field_rac.clean_up(); +field_nsei.clean_up(); +field_nse__timer.clean_up(); +field_cell__timer.clean_up(); +field_cell__id.clean_up(); +field_repeat__time.clean_up(); +field_repeat__count.clean_up(); +field_bvci.clean_up(); +field_t3142.clean_up(); +field_t3169.clean_up(); +field_t3191.clean_up(); +field_t3193__10ms.clean_up(); +field_t3195.clean_up(); +field_t3101.clean_up(); +field_t3103.clean_up(); +field_t3105.clean_up(); +field_cv__countdown.clean_up(); +field_dl__tbf__ext.clean_up(); +field_ul__tbf__ext.clean_up(); +field_initial__cs.clean_up(); +field_initial__mcs.clean_up(); +field_nsvci.clean_up(); +field_local__pprt.clean_up(); +field_remote__port.clean_up(); +field_remote__ip.clean_up(); +} + +PCUIF__info__ind& PCUIF__info__ind::operator=(const PCUIF__info__ind& other_value) +{ +if (this != &other_value) { + if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @PCUIF_Types.PCUIF_info_ind."); + if (other_value.version().is_bound()) field_version = other_value.version(); + else field_version.clean_up(); + if (other_value.flags().is_bound()) field_flags = other_value.flags(); + else field_flags.clean_up(); + if (other_value.trx().is_bound()) field_trx = other_value.trx(); + else field_trx.clean_up(); + if (other_value.bsic().is_bound()) field_bsic = other_value.bsic(); + else field_bsic.clean_up(); + if (other_value.mcc().is_bound()) field_mcc = other_value.mcc(); + else field_mcc.clean_up(); + if (other_value.mnc().is_bound()) field_mnc = other_value.mnc(); + else field_mnc.clean_up(); + if (other_value.mnc__3__digits().is_bound()) field_mnc__3__digits = other_value.mnc__3__digits(); + else field_mnc__3__digits.clean_up(); + if (other_value.lac().is_bound()) field_lac = other_value.lac(); + else field_lac.clean_up(); + if (other_value.rac().is_bound()) field_rac = other_value.rac(); + else field_rac.clean_up(); + if (other_value.nsei().is_bound()) field_nsei = other_value.nsei(); + else field_nsei.clean_up(); + if (other_value.nse__timer().is_bound()) field_nse__timer = other_value.nse__timer(); + else field_nse__timer.clean_up(); + if (other_value.cell__timer().is_bound()) field_cell__timer = other_value.cell__timer(); + else field_cell__timer.clean_up(); + if (other_value.cell__id().is_bound()) field_cell__id = other_value.cell__id(); + else field_cell__id.clean_up(); + if (other_value.repeat__time().is_bound()) field_repeat__time = other_value.repeat__time(); + else field_repeat__time.clean_up(); + if (other_value.repeat__count().is_bound()) field_repeat__count = other_value.repeat__count(); + else field_repeat__count.clean_up(); + if (other_value.bvci().is_bound()) field_bvci = other_value.bvci(); + else field_bvci.clean_up(); + if (other_value.t3142().is_bound()) field_t3142 = other_value.t3142(); + else field_t3142.clean_up(); + if (other_value.t3169().is_bound()) field_t3169 = other_value.t3169(); + else field_t3169.clean_up(); + if (other_value.t3191().is_bound()) field_t3191 = other_value.t3191(); + else field_t3191.clean_up(); + if (other_value.t3193__10ms().is_bound()) field_t3193__10ms = other_value.t3193__10ms(); + else field_t3193__10ms.clean_up(); + if (other_value.t3195().is_bound()) field_t3195 = other_value.t3195(); + else field_t3195.clean_up(); + if (other_value.t3101().is_bound()) field_t3101 = other_value.t3101(); + else field_t3101.clean_up(); + if (other_value.t3103().is_bound()) field_t3103 = other_value.t3103(); + else field_t3103.clean_up(); + if (other_value.t3105().is_bound()) field_t3105 = other_value.t3105(); + else field_t3105.clean_up(); + if (other_value.cv__countdown().is_bound()) field_cv__countdown = other_value.cv__countdown(); + else field_cv__countdown.clean_up(); + if (other_value.dl__tbf__ext().is_bound()) field_dl__tbf__ext = other_value.dl__tbf__ext(); + else field_dl__tbf__ext.clean_up(); + if (other_value.ul__tbf__ext().is_bound()) field_ul__tbf__ext = other_value.ul__tbf__ext(); + else field_ul__tbf__ext.clean_up(); + if (other_value.initial__cs().is_bound()) field_initial__cs = other_value.initial__cs(); + else field_initial__cs.clean_up(); + if (other_value.initial__mcs().is_bound()) field_initial__mcs = other_value.initial__mcs(); + else field_initial__mcs.clean_up(); + if (other_value.nsvci().is_bound()) field_nsvci = other_value.nsvci(); + else field_nsvci.clean_up(); + if (other_value.local__pprt().is_bound()) field_local__pprt = other_value.local__pprt(); + else field_local__pprt.clean_up(); + if (other_value.remote__port().is_bound()) field_remote__port = other_value.remote__port(); + else field_remote__port.clean_up(); + if (other_value.remote__ip().is_bound()) field_remote__ip = other_value.remote__ip(); + else field_remote__ip.clean_up(); +} +return *this; +} + +boolean PCUIF__info__ind::operator==(const PCUIF__info__ind& other_value) const +{ +return field_version==other_value.field_version + && field_flags==other_value.field_flags + && field_trx==other_value.field_trx + && field_bsic==other_value.field_bsic + && field_mcc==other_value.field_mcc + && field_mnc==other_value.field_mnc + && field_mnc__3__digits==other_value.field_mnc__3__digits + && field_lac==other_value.field_lac + && field_rac==other_value.field_rac + && field_nsei==other_value.field_nsei + && field_nse__timer==other_value.field_nse__timer + && field_cell__timer==other_value.field_cell__timer + && field_cell__id==other_value.field_cell__id + && field_repeat__time==other_value.field_repeat__time + && field_repeat__count==other_value.field_repeat__count + && field_bvci==other_value.field_bvci + && field_t3142==other_value.field_t3142 + && field_t3169==other_value.field_t3169 + && field_t3191==other_value.field_t3191 + && field_t3193__10ms==other_value.field_t3193__10ms + && field_t3195==other_value.field_t3195 + && field_t3101==other_value.field_t3101 + && field_t3103==other_value.field_t3103 + && field_t3105==other_value.field_t3105 + && field_cv__countdown==other_value.field_cv__countdown + && field_dl__tbf__ext==other_value.field_dl__tbf__ext + && field_ul__tbf__ext==other_value.field_ul__tbf__ext + && field_initial__cs==other_value.field_initial__cs + && field_initial__mcs==other_value.field_initial__mcs + && field_nsvci==other_value.field_nsvci + && field_local__pprt==other_value.field_local__pprt + && field_remote__port==other_value.field_remote__port + && field_remote__ip==other_value.field_remote__ip; +} + +boolean PCUIF__info__ind::is_bound() const +{ +if(field_version.is_bound()) return TRUE; +if(field_flags.is_bound()) return TRUE; +if(field_trx.is_bound()) return TRUE; +if(field_bsic.is_bound()) return TRUE; +if(field_mcc.is_bound()) return TRUE; +if(field_mnc.is_bound()) return TRUE; +if(field_mnc__3__digits.is_bound()) return TRUE; +if(field_lac.is_bound()) return TRUE; +if(field_rac.is_bound()) return TRUE; +if(field_nsei.is_bound()) return TRUE; +if(field_nse__timer.is_bound()) return TRUE; +if(field_cell__timer.is_bound()) return TRUE; +if(field_cell__id.is_bound()) return TRUE; +if(field_repeat__time.is_bound()) return TRUE; +if(field_repeat__count.is_bound()) return TRUE; +if(field_bvci.is_bound()) return TRUE; +if(field_t3142.is_bound()) return TRUE; +if(field_t3169.is_bound()) return TRUE; +if(field_t3191.is_bound()) return TRUE; +if(field_t3193__10ms.is_bound()) return TRUE; +if(field_t3195.is_bound()) return TRUE; +if(field_t3101.is_bound()) return TRUE; +if(field_t3103.is_bound()) return TRUE; +if(field_t3105.is_bound()) return TRUE; +if(field_cv__countdown.is_bound()) return TRUE; +if(field_dl__tbf__ext.is_bound()) return TRUE; +if(field_ul__tbf__ext.is_bound()) return TRUE; +if(field_initial__cs.is_bound()) return TRUE; +if(field_initial__mcs.is_bound()) return TRUE; +if(field_nsvci.is_bound()) return TRUE; +if(field_local__pprt.is_bound()) return TRUE; +if(field_remote__port.is_bound()) return TRUE; +if(field_remote__ip.is_bound()) return TRUE; +return FALSE; +} +boolean PCUIF__info__ind::is_value() const +{ +if(!field_version.is_value()) return FALSE; +if(!field_flags.is_value()) return FALSE; +if(!field_trx.is_value()) return FALSE; +if(!field_bsic.is_value()) return FALSE; +if(!field_mcc.is_value()) return FALSE; +if(!field_mnc.is_value()) return FALSE; +if(!field_mnc__3__digits.is_value()) return FALSE; +if(!field_lac.is_value()) return FALSE; +if(!field_rac.is_value()) return FALSE; +if(!field_nsei.is_value()) return FALSE; +if(!field_nse__timer.is_value()) return FALSE; +if(!field_cell__timer.is_value()) return FALSE; +if(!field_cell__id.is_value()) return FALSE; +if(!field_repeat__time.is_value()) return FALSE; +if(!field_repeat__count.is_value()) return FALSE; +if(!field_bvci.is_value()) return FALSE; +if(!field_t3142.is_value()) return FALSE; +if(!field_t3169.is_value()) return FALSE; +if(!field_t3191.is_value()) return FALSE; +if(!field_t3193__10ms.is_value()) return FALSE; +if(!field_t3195.is_value()) return FALSE; +if(!field_t3101.is_value()) return FALSE; +if(!field_t3103.is_value()) return FALSE; +if(!field_t3105.is_value()) return FALSE; +if(!field_cv__countdown.is_value()) return FALSE; +if(!field_dl__tbf__ext.is_value()) return FALSE; +if(!field_ul__tbf__ext.is_value()) return FALSE; +if(!field_initial__cs.is_value()) return FALSE; +if(!field_initial__mcs.is_value()) return FALSE; +if(!field_nsvci.is_value()) return FALSE; +if(!field_local__pprt.is_value()) return FALSE; +if(!field_remote__port.is_value()) return FALSE; +if(!field_remote__ip.is_value()) return FALSE; +return TRUE; +} +void PCUIF__info__ind::log() const +{ +if (!is_bound()) { +TTCN_Logger::log_event_unbound(); +return; +} +TTCN_Logger::log_event_str("{ version := "); +field_version.log(); +TTCN_Logger::log_event_str(", flags := "); +field_flags.log(); +TTCN_Logger::log_event_str(", trx := "); +field_trx.log(); +TTCN_Logger::log_event_str(", bsic := "); +field_bsic.log(); +TTCN_Logger::log_event_str(", mcc := "); +field_mcc.log(); +TTCN_Logger::log_event_str(", mnc := "); +field_mnc.log(); +TTCN_Logger::log_event_str(", mnc_3_digits := "); +field_mnc__3__digits.log(); +TTCN_Logger::log_event_str(", lac := "); +field_lac.log(); +TTCN_Logger::log_event_str(", rac := "); +field_rac.log(); +TTCN_Logger::log_event_str(", nsei := "); +field_nsei.log(); +TTCN_Logger::log_event_str(", nse_timer := "); +field_nse__timer.log(); +TTCN_Logger::log_event_str(", cell_timer := "); +field_cell__timer.log(); +TTCN_Logger::log_event_str(", cell_id := "); +field_cell__id.log(); +TTCN_Logger::log_event_str(", repeat_time := "); +field_repeat__time.log(); +TTCN_Logger::log_event_str(", repeat_count := "); +field_repeat__count.log(); +TTCN_Logger::log_event_str(", bvci := "); +field_bvci.log(); +TTCN_Logger::log_event_str(", t3142 := "); +field_t3142.log(); +TTCN_Logger::log_event_str(", t3169 := "); +field_t3169.log(); +TTCN_Logger::log_event_str(", t3191 := "); +field_t3191.log(); +TTCN_Logger::log_event_str(", t3193_10ms := "); +field_t3193__10ms.log(); +TTCN_Logger::log_event_str(", t3195 := "); +field_t3195.log(); +TTCN_Logger::log_event_str(", t3101 := "); +field_t3101.log(); +TTCN_Logger::log_event_str(", t3103 := "); +field_t3103.log(); +TTCN_Logger::log_event_str(", t3105 := "); +field_t3105.log(); +TTCN_Logger::log_event_str(", cv_countdown := "); +field_cv__countdown.log(); +TTCN_Logger::log_event_str(", dl_tbf_ext := "); +field_dl__tbf__ext.log(); +TTCN_Logger::log_event_str(", ul_tbf_ext := "); +field_ul__tbf__ext.log(); +TTCN_Logger::log_event_str(", initial_cs := "); +field_initial__cs.log(); +TTCN_Logger::log_event_str(", initial_mcs := "); +field_initial__mcs.log(); +TTCN_Logger::log_event_str(", nsvci := "); +field_nsvci.log(); +TTCN_Logger::log_event_str(", local_pprt := "); +field_local__pprt.log(); +TTCN_Logger::log_event_str(", remote_port := "); +field_remote__port.log(); +TTCN_Logger::log_event_str(", remote_ip := "); +field_remote__ip.log(); +TTCN_Logger::log_event_str(" }"); +} + +void PCUIF__info__ind::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 (330 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) version().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) flags().set_param(*param.get_elem(1)); + if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) trx().set_param(*param.get_elem(2)); + if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) bsic().set_param(*param.get_elem(3)); + if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) mcc().set_param(*param.get_elem(4)); + if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) mnc().set_param(*param.get_elem(5)); + if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) mnc__3__digits().set_param(*param.get_elem(6)); + if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) lac().set_param(*param.get_elem(7)); + if (param.get_size()>8 && param.get_elem(8)->get_type()!=Module_Param::MP_NotUsed) rac().set_param(*param.get_elem(8)); + if (param.get_size()>9 && param.get_elem(9)->get_type()!=Module_Param::MP_NotUsed) nsei().set_param(*param.get_elem(9)); + if (param.get_size()>10 && param.get_elem(10)->get_type()!=Module_Param::MP_NotUsed) nse__timer().set_param(*param.get_elem(10)); + if (param.get_size()>11 && param.get_elem(11)->get_type()!=Module_Param::MP_NotUsed) cell__timer().set_param(*param.get_elem(11)); + if (param.get_size()>12 && param.get_elem(12)->get_type()!=Module_Param::MP_NotUsed) cell__id().set_param(*param.get_elem(12)); + if (param.get_size()>13 && param.get_elem(13)->get_type()!=Module_Param::MP_NotUsed) repeat__time().set_param(*param.get_elem(13)); + if (param.get_size()>14 && param.get_elem(14)->get_type()!=Module_Param::MP_NotUsed) repeat__count().set_param(*param.get_elem(14)); + if (param.get_size()>15 && param.get_elem(15)->get_type()!=Module_Param::MP_NotUsed) bvci().set_param(*param.get_elem(15)); + if (param.get_size()>16 && param.get_elem(16)->get_type()!=Module_Param::MP_NotUsed) t3142().set_param(*param.get_elem(16)); + if (param.get_size()>17 && param.get_elem(17)->get_type()!=Module_Param::MP_NotUsed) t3169().set_param(*param.get_elem(17)); + if (param.get_size()>18 && param.get_elem(18)->get_type()!=Module_Param::MP_NotUsed) t3191().set_param(*param.get_elem(18)); + if (param.get_size()>19 && param.get_elem(19)->get_type()!=Module_Param::MP_NotUsed) t3193__10ms().set_param(*param.get_elem(19)); + if (param.get_size()>20 && param.get_elem(20)->get_type()!=Module_Param::MP_NotUsed) t3195().set_param(*param.get_elem(20)); + if (param.get_size()>21 && param.get_elem(21)->get_type()!=Module_Param::MP_NotUsed) t3101().set_param(*param.get_elem(21)); + if (param.get_size()>22 && param.get_elem(22)->get_type()!=Module_Param::MP_NotUsed) t3103().set_param(*param.get_elem(22)); + if (param.get_size()>23 && param.get_elem(23)->get_type()!=Module_Param::MP_NotUsed) t3105().set_param(*param.get_elem(23)); + if (param.get_size()>24 && param.get_elem(24)->get_type()!=Module_Param::MP_NotUsed) cv__countdown().set_param(*param.get_elem(24)); + if (param.get_size()>25 && param.get_elem(25)->get_type()!=Module_Param::MP_NotUsed) dl__tbf__ext().set_param(*param.get_elem(25)); + if (param.get_size()>26 && param.get_elem(26)->get_type()!=Module_Param::MP_NotUsed) ul__tbf__ext().set_param(*param.get_elem(26)); + if (param.get_size()>27 && param.get_elem(27)->get_type()!=Module_Param::MP_NotUsed) initial__cs().set_param(*param.get_elem(27)); + if (param.get_size()>28 && param.get_elem(28)->get_type()!=Module_Param::MP_NotUsed) initial__mcs().set_param(*param.get_elem(28)); + if (param.get_size()>29 && param.get_elem(29)->get_type()!=Module_Param::MP_NotUsed) nsvci().set_param(*param.get_elem(29)); + if (param.get_size()>30 && param.get_elem(30)->get_type()!=Module_Param::MP_NotUsed) local__pprt().set_param(*param.get_elem(30)); + if (param.get_size()>31 && param.get_elem(31)->get_type()!=Module_Param::MP_NotUsed) remote__port().set_param(*param.get_elem(31)); + if (param.get_size()>32 && param.get_elem(32)->get_type()!=Module_Param::MP_NotUsed) remote__ip().set_param(*param.get_elem(32)); + 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(), "version")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + version().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "flags")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + flags().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "trx")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + trx().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "bsic")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + bsic().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "mcc")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + mcc().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "mnc")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + mnc().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "mnc_3_digits")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + mnc__3__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_idxget_id()->get_name(), "nsei")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + nsei().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "nse_timer")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + nse__timer().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "cell_timer")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + cell__timer().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "cell_id")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + cell__id().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "repeat_time")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + repeat__time().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "repeat_count")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + repeat__count().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "bvci")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + bvci().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "t3142")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + t3142().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "t3169")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + t3169().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "t3191")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + t3191().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "t3193_10ms")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + t3193__10ms().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "t3195")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + t3195().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "t3101")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + t3101().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "t3103")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + t3103().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "t3105")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + t3105().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "cv_countdown")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + cv__countdown().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "dl_tbf_ext")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + dl__tbf__ext().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "ul_tbf_ext")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + ul__tbf__ext().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "initial_cs")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + initial__cs().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "initial_mcs")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + initial__mcs().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "nsvci")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + nsvci().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "local_pprt")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + local__pprt().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "remote_port")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + remote__port().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "remote_ip")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + remote__ip().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @PCUIF_Types.PCUIF_info_ind: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record value", "@PCUIF_Types.PCUIF_info_ind"); + } +} + +void PCUIF__info__ind::set_implicit_omit() +{ +if (version().is_bound()) version().set_implicit_omit(); +if (flags().is_bound()) flags().set_implicit_omit(); +if (trx().is_bound()) trx().set_implicit_omit(); +if (bsic().is_bound()) bsic().set_implicit_omit(); +if (mcc().is_bound()) mcc().set_implicit_omit(); +if (mnc().is_bound()) mnc().set_implicit_omit(); +if (mnc__3__digits().is_bound()) mnc__3__digits().set_implicit_omit(); +if (lac().is_bound()) lac().set_implicit_omit(); +if (rac().is_bound()) rac().set_implicit_omit(); +if (nsei().is_bound()) nsei().set_implicit_omit(); +if (nse__timer().is_bound()) nse__timer().set_implicit_omit(); +if (cell__timer().is_bound()) cell__timer().set_implicit_omit(); +if (cell__id().is_bound()) cell__id().set_implicit_omit(); +if (repeat__time().is_bound()) repeat__time().set_implicit_omit(); +if (repeat__count().is_bound()) repeat__count().set_implicit_omit(); +if (bvci().is_bound()) bvci().set_implicit_omit(); +if (t3142().is_bound()) t3142().set_implicit_omit(); +if (t3169().is_bound()) t3169().set_implicit_omit(); +if (t3191().is_bound()) t3191().set_implicit_omit(); +if (t3193__10ms().is_bound()) t3193__10ms().set_implicit_omit(); +if (t3195().is_bound()) t3195().set_implicit_omit(); +if (t3101().is_bound()) t3101().set_implicit_omit(); +if (t3103().is_bound()) t3103().set_implicit_omit(); +if (t3105().is_bound()) t3105().set_implicit_omit(); +if (cv__countdown().is_bound()) cv__countdown().set_implicit_omit(); +if (dl__tbf__ext().is_bound()) dl__tbf__ext().set_implicit_omit(); +if (ul__tbf__ext().is_bound()) ul__tbf__ext().set_implicit_omit(); +if (initial__cs().is_bound()) initial__cs().set_implicit_omit(); +if (initial__mcs().is_bound()) initial__mcs().set_implicit_omit(); +if (nsvci().is_bound()) nsvci().set_implicit_omit(); +if (local__pprt().is_bound()) local__pprt().set_implicit_omit(); +if (remote__port().is_bound()) remote__port().set_implicit_omit(); +if (remote__ip().is_bound()) remote__ip().set_implicit_omit(); +} + +void PCUIF__info__ind::encode_text(Text_Buf& text_buf) const +{ +field_version.encode_text(text_buf); +field_flags.encode_text(text_buf); +field_trx.encode_text(text_buf); +field_bsic.encode_text(text_buf); +field_mcc.encode_text(text_buf); +field_mnc.encode_text(text_buf); +field_mnc__3__digits.encode_text(text_buf); +field_lac.encode_text(text_buf); +field_rac.encode_text(text_buf); +field_nsei.encode_text(text_buf); +field_nse__timer.encode_text(text_buf); +field_cell__timer.encode_text(text_buf); +field_cell__id.encode_text(text_buf); +field_repeat__time.encode_text(text_buf); +field_repeat__count.encode_text(text_buf); +field_bvci.encode_text(text_buf); +field_t3142.encode_text(text_buf); +field_t3169.encode_text(text_buf); +field_t3191.encode_text(text_buf); +field_t3193__10ms.encode_text(text_buf); +field_t3195.encode_text(text_buf); +field_t3101.encode_text(text_buf); +field_t3103.encode_text(text_buf); +field_t3105.encode_text(text_buf); +field_cv__countdown.encode_text(text_buf); +field_dl__tbf__ext.encode_text(text_buf); +field_ul__tbf__ext.encode_text(text_buf); +field_initial__cs.encode_text(text_buf); +field_initial__mcs.encode_text(text_buf); +field_nsvci.encode_text(text_buf); +field_local__pprt.encode_text(text_buf); +field_remote__port.encode_text(text_buf); +field_remote__ip.encode_text(text_buf); +} + +void PCUIF__info__ind::decode_text(Text_Buf& text_buf) +{ +field_version.decode_text(text_buf); +field_flags.decode_text(text_buf); +field_trx.decode_text(text_buf); +field_bsic.decode_text(text_buf); +field_mcc.decode_text(text_buf); +field_mnc.decode_text(text_buf); +field_mnc__3__digits.decode_text(text_buf); +field_lac.decode_text(text_buf); +field_rac.decode_text(text_buf); +field_nsei.decode_text(text_buf); +field_nse__timer.decode_text(text_buf); +field_cell__timer.decode_text(text_buf); +field_cell__id.decode_text(text_buf); +field_repeat__time.decode_text(text_buf); +field_repeat__count.decode_text(text_buf); +field_bvci.decode_text(text_buf); +field_t3142.decode_text(text_buf); +field_t3169.decode_text(text_buf); +field_t3191.decode_text(text_buf); +field_t3193__10ms.decode_text(text_buf); +field_t3195.decode_text(text_buf); +field_t3101.decode_text(text_buf); +field_t3103.decode_text(text_buf); +field_t3105.decode_text(text_buf); +field_cv__countdown.decode_text(text_buf); +field_dl__tbf__ext.decode_text(text_buf); +field_ul__tbf__ext.decode_text(text_buf); +field_initial__cs.decode_text(text_buf); +field_initial__mcs.decode_text(text_buf); +field_nsvci.decode_text(text_buf); +field_local__pprt.decode_text(text_buf); +field_remote__port.decode_text(text_buf); +field_remote__ip.decode_text(text_buf); +} + +void PCUIF__info__ind::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void PCUIF__info__ind::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int PCUIF__info__ind::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) +{ (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; + decoded_field_length = field_version.RAW_decode(PCUIF__info__ind_version_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_flags.RAW_decode(PCUIF__info__ind_flags_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_trx.RAW_decode(PCUIF__info__ind_trx_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_bsic.RAW_decode(PCUIF__info__ind_bsic_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_mcc.RAW_decode(PCUIF__info__ind_mcc_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_mnc.RAW_decode(PCUIF__info__ind_mnc_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_mnc__3__digits.RAW_decode(PCUIF__info__ind_mnc__3__digits_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_lac.RAW_decode(PCUIF__info__ind_lac_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_rac.RAW_decode(PCUIF__info__ind_rac_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_nsei.RAW_decode(PCUIF__info__ind_nsei_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_nse__timer.RAW_decode(PCUIF__info__ind_nse__timer_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_cell__timer.RAW_decode(PCUIF__info__ind_cell__timer_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_cell__id.RAW_decode(PCUIF__info__ind_cell__id_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_repeat__time.RAW_decode(PCUIF__info__ind_repeat__time_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_repeat__count.RAW_decode(PCUIF__info__ind_repeat__count_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_bvci.RAW_decode(PCUIF__info__ind_bvci_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_t3142.RAW_decode(PCUIF__info__ind_t3142_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_t3169.RAW_decode(PCUIF__info__ind_t3169_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_t3191.RAW_decode(PCUIF__info__ind_t3191_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_t3193__10ms.RAW_decode(PCUIF__info__ind_t3193__10ms_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_t3195.RAW_decode(PCUIF__info__ind_t3195_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_t3101.RAW_decode(PCUIF__info__ind_t3101_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_t3103.RAW_decode(PCUIF__info__ind_t3103_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_t3105.RAW_decode(PCUIF__info__ind_t3105_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_cv__countdown.RAW_decode(PCUIF__info__ind_cv__countdown_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_dl__tbf__ext.RAW_decode(PCUIF__info__ind_dl__tbf__ext_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_ul__tbf__ext.RAW_decode(PCUIF__info__ind_ul__tbf__ext_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_initial__cs.RAW_decode(PCUIF__info__ind_initial__cs_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_initial__mcs.RAW_decode(PCUIF__info__ind_initial__mcs_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_nsvci.RAW_decode(PCUIF__info__ind_nsvci_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_local__pprt.RAW_decode(PCUIF__info__ind_local__pprt_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_remote__port.RAW_decode(PCUIF__info__ind_remote__port_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_remote__ip.RAW_decode(PCUIF__info__ind_remote__ip_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return 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 PCUIF__info__ind::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 = 33; + myleaf.body.node.nodes = init_nodes_of_enc_tree(33); + myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, PCUIF__info__ind_version_descr_.raw); + myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PCUIF__info__ind_flags_descr_.raw); + myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, PCUIF__info__ind_trx_descr_.raw); + myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, PCUIF__info__ind_bsic_descr_.raw); + myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, PCUIF__info__ind_mcc_descr_.raw); + myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, PCUIF__info__ind_mnc_descr_.raw); + myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, PCUIF__info__ind_mnc__3__digits_descr_.raw); + myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, PCUIF__info__ind_lac_descr_.raw); + myleaf.body.node.nodes[8] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 8, PCUIF__info__ind_rac_descr_.raw); + myleaf.body.node.nodes[9] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 9, PCUIF__info__ind_nsei_descr_.raw); + myleaf.body.node.nodes[10] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 10, PCUIF__info__ind_nse__timer_descr_.raw); + myleaf.body.node.nodes[11] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 11, PCUIF__info__ind_cell__timer_descr_.raw); + myleaf.body.node.nodes[12] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 12, PCUIF__info__ind_cell__id_descr_.raw); + myleaf.body.node.nodes[13] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 13, PCUIF__info__ind_repeat__time_descr_.raw); + myleaf.body.node.nodes[14] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 14, PCUIF__info__ind_repeat__count_descr_.raw); + myleaf.body.node.nodes[15] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 15, PCUIF__info__ind_bvci_descr_.raw); + myleaf.body.node.nodes[16] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 16, PCUIF__info__ind_t3142_descr_.raw); + myleaf.body.node.nodes[17] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 17, PCUIF__info__ind_t3169_descr_.raw); + myleaf.body.node.nodes[18] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 18, PCUIF__info__ind_t3191_descr_.raw); + myleaf.body.node.nodes[19] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 19, PCUIF__info__ind_t3193__10ms_descr_.raw); + myleaf.body.node.nodes[20] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 20, PCUIF__info__ind_t3195_descr_.raw); + myleaf.body.node.nodes[21] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 21, PCUIF__info__ind_t3101_descr_.raw); + myleaf.body.node.nodes[22] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 22, PCUIF__info__ind_t3103_descr_.raw); + myleaf.body.node.nodes[23] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 23, PCUIF__info__ind_t3105_descr_.raw); + myleaf.body.node.nodes[24] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 24, PCUIF__info__ind_cv__countdown_descr_.raw); + myleaf.body.node.nodes[25] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 25, PCUIF__info__ind_dl__tbf__ext_descr_.raw); + myleaf.body.node.nodes[26] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 26, PCUIF__info__ind_ul__tbf__ext_descr_.raw); + myleaf.body.node.nodes[27] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 27, PCUIF__info__ind_initial__cs_descr_.raw); + myleaf.body.node.nodes[28] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 28, PCUIF__info__ind_initial__mcs_descr_.raw); + myleaf.body.node.nodes[29] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 29, PCUIF__info__ind_nsvci_descr_.raw); + myleaf.body.node.nodes[30] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 30, PCUIF__info__ind_local__pprt_descr_.raw); + myleaf.body.node.nodes[31] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 31, PCUIF__info__ind_remote__port_descr_.raw); + myleaf.body.node.nodes[32] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 32, PCUIF__info__ind_remote__ip_descr_.raw); + encoded_length += field_version.RAW_encode(PCUIF__info__ind_version_descr_, *myleaf.body.node.nodes[0]); + encoded_length += field_flags.RAW_encode(PCUIF__info__ind_flags_descr_, *myleaf.body.node.nodes[1]); + encoded_length += field_trx.RAW_encode(PCUIF__info__ind_trx_descr_, *myleaf.body.node.nodes[2]); + encoded_length += field_bsic.RAW_encode(PCUIF__info__ind_bsic_descr_, *myleaf.body.node.nodes[3]); + encoded_length += field_mcc.RAW_encode(PCUIF__info__ind_mcc_descr_, *myleaf.body.node.nodes[4]); + encoded_length += field_mnc.RAW_encode(PCUIF__info__ind_mnc_descr_, *myleaf.body.node.nodes[5]); + encoded_length += field_mnc__3__digits.RAW_encode(PCUIF__info__ind_mnc__3__digits_descr_, *myleaf.body.node.nodes[6]); + encoded_length += field_lac.RAW_encode(PCUIF__info__ind_lac_descr_, *myleaf.body.node.nodes[7]); + encoded_length += field_rac.RAW_encode(PCUIF__info__ind_rac_descr_, *myleaf.body.node.nodes[8]); + encoded_length += field_nsei.RAW_encode(PCUIF__info__ind_nsei_descr_, *myleaf.body.node.nodes[9]); + encoded_length += field_nse__timer.RAW_encode(PCUIF__info__ind_nse__timer_descr_, *myleaf.body.node.nodes[10]); + encoded_length += field_cell__timer.RAW_encode(PCUIF__info__ind_cell__timer_descr_, *myleaf.body.node.nodes[11]); + encoded_length += field_cell__id.RAW_encode(PCUIF__info__ind_cell__id_descr_, *myleaf.body.node.nodes[12]); + encoded_length += field_repeat__time.RAW_encode(PCUIF__info__ind_repeat__time_descr_, *myleaf.body.node.nodes[13]); + encoded_length += field_repeat__count.RAW_encode(PCUIF__info__ind_repeat__count_descr_, *myleaf.body.node.nodes[14]); + encoded_length += field_bvci.RAW_encode(PCUIF__info__ind_bvci_descr_, *myleaf.body.node.nodes[15]); + encoded_length += field_t3142.RAW_encode(PCUIF__info__ind_t3142_descr_, *myleaf.body.node.nodes[16]); + encoded_length += field_t3169.RAW_encode(PCUIF__info__ind_t3169_descr_, *myleaf.body.node.nodes[17]); + encoded_length += field_t3191.RAW_encode(PCUIF__info__ind_t3191_descr_, *myleaf.body.node.nodes[18]); + encoded_length += field_t3193__10ms.RAW_encode(PCUIF__info__ind_t3193__10ms_descr_, *myleaf.body.node.nodes[19]); + encoded_length += field_t3195.RAW_encode(PCUIF__info__ind_t3195_descr_, *myleaf.body.node.nodes[20]); + encoded_length += field_t3101.RAW_encode(PCUIF__info__ind_t3101_descr_, *myleaf.body.node.nodes[21]); + encoded_length += field_t3103.RAW_encode(PCUIF__info__ind_t3103_descr_, *myleaf.body.node.nodes[22]); + encoded_length += field_t3105.RAW_encode(PCUIF__info__ind_t3105_descr_, *myleaf.body.node.nodes[23]); + encoded_length += field_cv__countdown.RAW_encode(PCUIF__info__ind_cv__countdown_descr_, *myleaf.body.node.nodes[24]); + encoded_length += field_dl__tbf__ext.RAW_encode(PCUIF__info__ind_dl__tbf__ext_descr_, *myleaf.body.node.nodes[25]); + encoded_length += field_ul__tbf__ext.RAW_encode(PCUIF__info__ind_ul__tbf__ext_descr_, *myleaf.body.node.nodes[26]); + encoded_length += field_initial__cs.RAW_encode(PCUIF__info__ind_initial__cs_descr_, *myleaf.body.node.nodes[27]); + encoded_length += field_initial__mcs.RAW_encode(PCUIF__info__ind_initial__mcs_descr_, *myleaf.body.node.nodes[28]); + encoded_length += field_nsvci.RAW_encode(PCUIF__info__ind_nsvci_descr_, *myleaf.body.node.nodes[29]); + encoded_length += field_local__pprt.RAW_encode(PCUIF__info__ind_local__pprt_descr_, *myleaf.body.node.nodes[30]); + encoded_length += field_remote__port.RAW_encode(PCUIF__info__ind_remote__port_descr_, *myleaf.body.node.nodes[31]); + encoded_length += field_remote__ip.RAW_encode(PCUIF__info__ind_remote__ip_descr_, *myleaf.body.node.nodes[32]); + return myleaf.length = encoded_length; +} + +struct PCUIF__info__ind_template::single_value_struct { +INTEGER_template field_version; +PCUIF__Flags_template field_flags; +PCUIF__info__ind_trx_template field_trx; +INTEGER_template field_bsic; +INTEGER_template field_mcc; +INTEGER_template field_mnc; +INTEGER_template field_mnc__3__digits; +INTEGER_template field_lac; +INTEGER_template field_rac; +INTEGER_template field_nsei; +PCUIF__info__ind_nse__timer_template field_nse__timer; +PCUIF__info__ind_cell__timer_template field_cell__timer; +INTEGER_template field_cell__id; +INTEGER_template field_repeat__time; +INTEGER_template field_repeat__count; +INTEGER_template field_bvci; +INTEGER_template field_t3142; +INTEGER_template field_t3169; +INTEGER_template field_t3191; +INTEGER_template field_t3193__10ms; +INTEGER_template field_t3195; +INTEGER_template field_t3101; +INTEGER_template field_t3103; +INTEGER_template field_t3105; +INTEGER_template field_cv__countdown; +INTEGER_template field_dl__tbf__ext; +INTEGER_template field_ul__tbf__ext; +INTEGER_template field_initial__cs; +INTEGER_template field_initial__mcs; +PCUIF__info__ind_nsvci_template field_nsvci; +PCUIF__info__ind_local__pprt_template field_local__pprt; +PCUIF__info__ind_remote__port_template field_remote__port; +PCUIF__info__ind_remote__ip_template field_remote__ip; +}; + +void PCUIF__info__ind_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_version = ANY_VALUE; +single_value->field_flags = ANY_VALUE; +single_value->field_trx = ANY_VALUE; +single_value->field_bsic = ANY_VALUE; +single_value->field_mcc = ANY_VALUE; +single_value->field_mnc = ANY_VALUE; +single_value->field_mnc__3__digits = ANY_VALUE; +single_value->field_lac = ANY_VALUE; +single_value->field_rac = ANY_VALUE; +single_value->field_nsei = ANY_VALUE; +single_value->field_nse__timer = ANY_VALUE; +single_value->field_cell__timer = ANY_VALUE; +single_value->field_cell__id = ANY_VALUE; +single_value->field_repeat__time = ANY_VALUE; +single_value->field_repeat__count = ANY_VALUE; +single_value->field_bvci = ANY_VALUE; +single_value->field_t3142 = ANY_VALUE; +single_value->field_t3169 = ANY_VALUE; +single_value->field_t3191 = ANY_VALUE; +single_value->field_t3193__10ms = ANY_VALUE; +single_value->field_t3195 = ANY_VALUE; +single_value->field_t3101 = ANY_VALUE; +single_value->field_t3103 = ANY_VALUE; +single_value->field_t3105 = ANY_VALUE; +single_value->field_cv__countdown = ANY_VALUE; +single_value->field_dl__tbf__ext = ANY_VALUE; +single_value->field_ul__tbf__ext = ANY_VALUE; +single_value->field_initial__cs = ANY_VALUE; +single_value->field_initial__mcs = ANY_VALUE; +single_value->field_nsvci = ANY_VALUE; +single_value->field_local__pprt = ANY_VALUE; +single_value->field_remote__port = ANY_VALUE; +single_value->field_remote__ip = ANY_VALUE; +} +} +} + +void PCUIF__info__ind_template::copy_value(const PCUIF__info__ind& other_value) +{ +single_value = new single_value_struct; +if (other_value.version().is_bound()) { + single_value->field_version = other_value.version(); +} else { + single_value->field_version.clean_up(); +} +if (other_value.flags().is_bound()) { + single_value->field_flags = other_value.flags(); +} else { + single_value->field_flags.clean_up(); +} +if (other_value.trx().is_bound()) { + single_value->field_trx = other_value.trx(); +} else { + single_value->field_trx.clean_up(); +} +if (other_value.bsic().is_bound()) { + single_value->field_bsic = other_value.bsic(); +} else { + single_value->field_bsic.clean_up(); +} +if (other_value.mcc().is_bound()) { + single_value->field_mcc = other_value.mcc(); +} else { + single_value->field_mcc.clean_up(); +} +if (other_value.mnc().is_bound()) { + single_value->field_mnc = other_value.mnc(); +} else { + single_value->field_mnc.clean_up(); +} +if (other_value.mnc__3__digits().is_bound()) { + single_value->field_mnc__3__digits = other_value.mnc__3__digits(); +} else { + single_value->field_mnc__3__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(); +} +if (other_value.nsei().is_bound()) { + single_value->field_nsei = other_value.nsei(); +} else { + single_value->field_nsei.clean_up(); +} +if (other_value.nse__timer().is_bound()) { + single_value->field_nse__timer = other_value.nse__timer(); +} else { + single_value->field_nse__timer.clean_up(); +} +if (other_value.cell__timer().is_bound()) { + single_value->field_cell__timer = other_value.cell__timer(); +} else { + single_value->field_cell__timer.clean_up(); +} +if (other_value.cell__id().is_bound()) { + single_value->field_cell__id = other_value.cell__id(); +} else { + single_value->field_cell__id.clean_up(); +} +if (other_value.repeat__time().is_bound()) { + single_value->field_repeat__time = other_value.repeat__time(); +} else { + single_value->field_repeat__time.clean_up(); +} +if (other_value.repeat__count().is_bound()) { + single_value->field_repeat__count = other_value.repeat__count(); +} else { + single_value->field_repeat__count.clean_up(); +} +if (other_value.bvci().is_bound()) { + single_value->field_bvci = other_value.bvci(); +} else { + single_value->field_bvci.clean_up(); +} +if (other_value.t3142().is_bound()) { + single_value->field_t3142 = other_value.t3142(); +} else { + single_value->field_t3142.clean_up(); +} +if (other_value.t3169().is_bound()) { + single_value->field_t3169 = other_value.t3169(); +} else { + single_value->field_t3169.clean_up(); +} +if (other_value.t3191().is_bound()) { + single_value->field_t3191 = other_value.t3191(); +} else { + single_value->field_t3191.clean_up(); +} +if (other_value.t3193__10ms().is_bound()) { + single_value->field_t3193__10ms = other_value.t3193__10ms(); +} else { + single_value->field_t3193__10ms.clean_up(); +} +if (other_value.t3195().is_bound()) { + single_value->field_t3195 = other_value.t3195(); +} else { + single_value->field_t3195.clean_up(); +} +if (other_value.t3101().is_bound()) { + single_value->field_t3101 = other_value.t3101(); +} else { + single_value->field_t3101.clean_up(); +} +if (other_value.t3103().is_bound()) { + single_value->field_t3103 = other_value.t3103(); +} else { + single_value->field_t3103.clean_up(); +} +if (other_value.t3105().is_bound()) { + single_value->field_t3105 = other_value.t3105(); +} else { + single_value->field_t3105.clean_up(); +} +if (other_value.cv__countdown().is_bound()) { + single_value->field_cv__countdown = other_value.cv__countdown(); +} else { + single_value->field_cv__countdown.clean_up(); +} +if (other_value.dl__tbf__ext().is_bound()) { + single_value->field_dl__tbf__ext = other_value.dl__tbf__ext(); +} else { + single_value->field_dl__tbf__ext.clean_up(); +} +if (other_value.ul__tbf__ext().is_bound()) { + single_value->field_ul__tbf__ext = other_value.ul__tbf__ext(); +} else { + single_value->field_ul__tbf__ext.clean_up(); +} +if (other_value.initial__cs().is_bound()) { + single_value->field_initial__cs = other_value.initial__cs(); +} else { + single_value->field_initial__cs.clean_up(); +} +if (other_value.initial__mcs().is_bound()) { + single_value->field_initial__mcs = other_value.initial__mcs(); +} else { + single_value->field_initial__mcs.clean_up(); +} +if (other_value.nsvci().is_bound()) { + single_value->field_nsvci = other_value.nsvci(); +} else { + single_value->field_nsvci.clean_up(); +} +if (other_value.local__pprt().is_bound()) { + single_value->field_local__pprt = other_value.local__pprt(); +} else { + single_value->field_local__pprt.clean_up(); +} +if (other_value.remote__port().is_bound()) { + single_value->field_remote__port = other_value.remote__port(); +} else { + single_value->field_remote__port.clean_up(); +} +if (other_value.remote__ip().is_bound()) { + single_value->field_remote__ip = other_value.remote__ip(); +} else { + single_value->field_remote__ip.clean_up(); +} +set_selection(SPECIFIC_VALUE); +} + +void PCUIF__info__ind_template::copy_template(const PCUIF__info__ind_template& other_value) +{ +switch (other_value.template_selection) { +case SPECIFIC_VALUE: +single_value = new single_value_struct; +if (UNINITIALIZED_TEMPLATE != other_value.version().get_selection()) { +single_value->field_version = other_value.version(); +} else { +single_value->field_version.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.flags().get_selection()) { +single_value->field_flags = other_value.flags(); +} else { +single_value->field_flags.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.trx().get_selection()) { +single_value->field_trx = other_value.trx(); +} else { +single_value->field_trx.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.bsic().get_selection()) { +single_value->field_bsic = other_value.bsic(); +} else { +single_value->field_bsic.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.mcc().get_selection()) { +single_value->field_mcc = other_value.mcc(); +} else { +single_value->field_mcc.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.mnc().get_selection()) { +single_value->field_mnc = other_value.mnc(); +} else { +single_value->field_mnc.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.mnc__3__digits().get_selection()) { +single_value->field_mnc__3__digits = other_value.mnc__3__digits(); +} else { +single_value->field_mnc__3__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(); +} +if (UNINITIALIZED_TEMPLATE != other_value.nsei().get_selection()) { +single_value->field_nsei = other_value.nsei(); +} else { +single_value->field_nsei.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.nse__timer().get_selection()) { +single_value->field_nse__timer = other_value.nse__timer(); +} else { +single_value->field_nse__timer.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.cell__timer().get_selection()) { +single_value->field_cell__timer = other_value.cell__timer(); +} else { +single_value->field_cell__timer.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.cell__id().get_selection()) { +single_value->field_cell__id = other_value.cell__id(); +} else { +single_value->field_cell__id.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.repeat__time().get_selection()) { +single_value->field_repeat__time = other_value.repeat__time(); +} else { +single_value->field_repeat__time.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.repeat__count().get_selection()) { +single_value->field_repeat__count = other_value.repeat__count(); +} else { +single_value->field_repeat__count.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.bvci().get_selection()) { +single_value->field_bvci = other_value.bvci(); +} else { +single_value->field_bvci.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.t3142().get_selection()) { +single_value->field_t3142 = other_value.t3142(); +} else { +single_value->field_t3142.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.t3169().get_selection()) { +single_value->field_t3169 = other_value.t3169(); +} else { +single_value->field_t3169.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.t3191().get_selection()) { +single_value->field_t3191 = other_value.t3191(); +} else { +single_value->field_t3191.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.t3193__10ms().get_selection()) { +single_value->field_t3193__10ms = other_value.t3193__10ms(); +} else { +single_value->field_t3193__10ms.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.t3195().get_selection()) { +single_value->field_t3195 = other_value.t3195(); +} else { +single_value->field_t3195.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.t3101().get_selection()) { +single_value->field_t3101 = other_value.t3101(); +} else { +single_value->field_t3101.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.t3103().get_selection()) { +single_value->field_t3103 = other_value.t3103(); +} else { +single_value->field_t3103.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.t3105().get_selection()) { +single_value->field_t3105 = other_value.t3105(); +} else { +single_value->field_t3105.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.cv__countdown().get_selection()) { +single_value->field_cv__countdown = other_value.cv__countdown(); +} else { +single_value->field_cv__countdown.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.dl__tbf__ext().get_selection()) { +single_value->field_dl__tbf__ext = other_value.dl__tbf__ext(); +} else { +single_value->field_dl__tbf__ext.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.ul__tbf__ext().get_selection()) { +single_value->field_ul__tbf__ext = other_value.ul__tbf__ext(); +} else { +single_value->field_ul__tbf__ext.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.initial__cs().get_selection()) { +single_value->field_initial__cs = other_value.initial__cs(); +} else { +single_value->field_initial__cs.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.initial__mcs().get_selection()) { +single_value->field_initial__mcs = other_value.initial__mcs(); +} else { +single_value->field_initial__mcs.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.nsvci().get_selection()) { +single_value->field_nsvci = other_value.nsvci(); +} else { +single_value->field_nsvci.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.local__pprt().get_selection()) { +single_value->field_local__pprt = other_value.local__pprt(); +} else { +single_value->field_local__pprt.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.remote__port().get_selection()) { +single_value->field_remote__port = other_value.remote__port(); +} else { +single_value->field_remote__port.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.remote__ip().get_selection()) { +single_value->field_remote__ip = other_value.remote__ip(); +} else { +single_value->field_remote__ip.clean_up(); +} +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new PCUIF__info__ind_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_info_ind."); +break; +} +set_selection(other_value); +} + +PCUIF__info__ind_template::PCUIF__info__ind_template() +{ +} + +PCUIF__info__ind_template::PCUIF__info__ind_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +PCUIF__info__ind_template::PCUIF__info__ind_template(const PCUIF__info__ind& other_value) +{ +copy_value(other_value); +} + +PCUIF__info__ind_template::PCUIF__info__ind_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const PCUIF__info__ind&)other_value); +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of type @PCUIF_Types.PCUIF_info_ind from an unbound optional field."); +} +} + +PCUIF__info__ind_template::PCUIF__info__ind_template(const PCUIF__info__ind_template& other_value) +: Base_Template() +{ +copy_template(other_value); +} + +PCUIF__info__ind_template::~PCUIF__info__ind_template() +{ +clean_up(); +} + +PCUIF__info__ind_template& PCUIF__info__ind_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +PCUIF__info__ind_template& PCUIF__info__ind_template::operator=(const PCUIF__info__ind& other_value) +{ +clean_up(); +copy_value(other_value); +return *this; +} + +PCUIF__info__ind_template& PCUIF__info__ind_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const PCUIF__info__ind&)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 @PCUIF_Types.PCUIF_info_ind."); +} +return *this; +} + +PCUIF__info__ind_template& PCUIF__info__ind_template::operator=(const PCUIF__info__ind_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean PCUIF__info__ind_template::match(const PCUIF__info__ind& 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.version().is_bound()) return FALSE; +if(!single_value->field_version.match(other_value.version(), legacy))return FALSE; +if(!other_value.flags().is_bound()) return FALSE; +if(!single_value->field_flags.match(other_value.flags(), legacy))return FALSE; +if(!other_value.trx().is_bound()) return FALSE; +if(!single_value->field_trx.match(other_value.trx(), legacy))return FALSE; +if(!other_value.bsic().is_bound()) return FALSE; +if(!single_value->field_bsic.match(other_value.bsic(), legacy))return FALSE; +if(!other_value.mcc().is_bound()) return FALSE; +if(!single_value->field_mcc.match(other_value.mcc(), legacy))return FALSE; +if(!other_value.mnc().is_bound()) return FALSE; +if(!single_value->field_mnc.match(other_value.mnc(), legacy))return FALSE; +if(!other_value.mnc__3__digits().is_bound()) return FALSE; +if(!single_value->field_mnc__3__digits.match(other_value.mnc__3__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; +if(!other_value.nsei().is_bound()) return FALSE; +if(!single_value->field_nsei.match(other_value.nsei(), legacy))return FALSE; +if(!other_value.nse__timer().is_bound()) return FALSE; +if(!single_value->field_nse__timer.match(other_value.nse__timer(), legacy))return FALSE; +if(!other_value.cell__timer().is_bound()) return FALSE; +if(!single_value->field_cell__timer.match(other_value.cell__timer(), legacy))return FALSE; +if(!other_value.cell__id().is_bound()) return FALSE; +if(!single_value->field_cell__id.match(other_value.cell__id(), legacy))return FALSE; +if(!other_value.repeat__time().is_bound()) return FALSE; +if(!single_value->field_repeat__time.match(other_value.repeat__time(), legacy))return FALSE; +if(!other_value.repeat__count().is_bound()) return FALSE; +if(!single_value->field_repeat__count.match(other_value.repeat__count(), legacy))return FALSE; +if(!other_value.bvci().is_bound()) return FALSE; +if(!single_value->field_bvci.match(other_value.bvci(), legacy))return FALSE; +if(!other_value.t3142().is_bound()) return FALSE; +if(!single_value->field_t3142.match(other_value.t3142(), legacy))return FALSE; +if(!other_value.t3169().is_bound()) return FALSE; +if(!single_value->field_t3169.match(other_value.t3169(), legacy))return FALSE; +if(!other_value.t3191().is_bound()) return FALSE; +if(!single_value->field_t3191.match(other_value.t3191(), legacy))return FALSE; +if(!other_value.t3193__10ms().is_bound()) return FALSE; +if(!single_value->field_t3193__10ms.match(other_value.t3193__10ms(), legacy))return FALSE; +if(!other_value.t3195().is_bound()) return FALSE; +if(!single_value->field_t3195.match(other_value.t3195(), legacy))return FALSE; +if(!other_value.t3101().is_bound()) return FALSE; +if(!single_value->field_t3101.match(other_value.t3101(), legacy))return FALSE; +if(!other_value.t3103().is_bound()) return FALSE; +if(!single_value->field_t3103.match(other_value.t3103(), legacy))return FALSE; +if(!other_value.t3105().is_bound()) return FALSE; +if(!single_value->field_t3105.match(other_value.t3105(), legacy))return FALSE; +if(!other_value.cv__countdown().is_bound()) return FALSE; +if(!single_value->field_cv__countdown.match(other_value.cv__countdown(), legacy))return FALSE; +if(!other_value.dl__tbf__ext().is_bound()) return FALSE; +if(!single_value->field_dl__tbf__ext.match(other_value.dl__tbf__ext(), legacy))return FALSE; +if(!other_value.ul__tbf__ext().is_bound()) return FALSE; +if(!single_value->field_ul__tbf__ext.match(other_value.ul__tbf__ext(), legacy))return FALSE; +if(!other_value.initial__cs().is_bound()) return FALSE; +if(!single_value->field_initial__cs.match(other_value.initial__cs(), legacy))return FALSE; +if(!other_value.initial__mcs().is_bound()) return FALSE; +if(!single_value->field_initial__mcs.match(other_value.initial__mcs(), legacy))return FALSE; +if(!other_value.nsvci().is_bound()) return FALSE; +if(!single_value->field_nsvci.match(other_value.nsvci(), legacy))return FALSE; +if(!other_value.local__pprt().is_bound()) return FALSE; +if(!single_value->field_local__pprt.match(other_value.local__pprt(), legacy))return FALSE; +if(!other_value.remote__port().is_bound()) return FALSE; +if(!single_value->field_remote__port.match(other_value.remote__port(), legacy))return FALSE; +if(!other_value.remote__ip().is_bound()) return FALSE; +if(!single_value->field_remote__ip.match(other_value.remote__ip(), legacy))return FALSE; +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_info_ind."); +} +return FALSE; +} + +boolean PCUIF__info__ind_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +if (template_selection != SPECIFIC_VALUE) return TRUE; +if (single_value->field_version.is_bound()) return TRUE; +if (single_value->field_flags.is_bound()) return TRUE; +if (single_value->field_trx.is_bound()) return TRUE; +if (single_value->field_bsic.is_bound()) return TRUE; +if (single_value->field_mcc.is_bound()) return TRUE; +if (single_value->field_mnc.is_bound()) return TRUE; +if (single_value->field_mnc__3__digits.is_bound()) return TRUE; +if (single_value->field_lac.is_bound()) return TRUE; +if (single_value->field_rac.is_bound()) return TRUE; +if (single_value->field_nsei.is_bound()) return TRUE; +if (single_value->field_nse__timer.is_bound()) return TRUE; +if (single_value->field_cell__timer.is_bound()) return TRUE; +if (single_value->field_cell__id.is_bound()) return TRUE; +if (single_value->field_repeat__time.is_bound()) return TRUE; +if (single_value->field_repeat__count.is_bound()) return TRUE; +if (single_value->field_bvci.is_bound()) return TRUE; +if (single_value->field_t3142.is_bound()) return TRUE; +if (single_value->field_t3169.is_bound()) return TRUE; +if (single_value->field_t3191.is_bound()) return TRUE; +if (single_value->field_t3193__10ms.is_bound()) return TRUE; +if (single_value->field_t3195.is_bound()) return TRUE; +if (single_value->field_t3101.is_bound()) return TRUE; +if (single_value->field_t3103.is_bound()) return TRUE; +if (single_value->field_t3105.is_bound()) return TRUE; +if (single_value->field_cv__countdown.is_bound()) return TRUE; +if (single_value->field_dl__tbf__ext.is_bound()) return TRUE; +if (single_value->field_ul__tbf__ext.is_bound()) return TRUE; +if (single_value->field_initial__cs.is_bound()) return TRUE; +if (single_value->field_initial__mcs.is_bound()) return TRUE; +if (single_value->field_nsvci.is_bound()) return TRUE; +if (single_value->field_local__pprt.is_bound()) return TRUE; +if (single_value->field_remote__port.is_bound()) return TRUE; +if (single_value->field_remote__ip.is_bound()) return TRUE; +return FALSE; +} + +boolean PCUIF__info__ind_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +if (!single_value->field_version.is_value()) return FALSE; +if (!single_value->field_flags.is_value()) return FALSE; +if (!single_value->field_trx.is_value()) return FALSE; +if (!single_value->field_bsic.is_value()) return FALSE; +if (!single_value->field_mcc.is_value()) return FALSE; +if (!single_value->field_mnc.is_value()) return FALSE; +if (!single_value->field_mnc__3__digits.is_value()) return FALSE; +if (!single_value->field_lac.is_value()) return FALSE; +if (!single_value->field_rac.is_value()) return FALSE; +if (!single_value->field_nsei.is_value()) return FALSE; +if (!single_value->field_nse__timer.is_value()) return FALSE; +if (!single_value->field_cell__timer.is_value()) return FALSE; +if (!single_value->field_cell__id.is_value()) return FALSE; +if (!single_value->field_repeat__time.is_value()) return FALSE; +if (!single_value->field_repeat__count.is_value()) return FALSE; +if (!single_value->field_bvci.is_value()) return FALSE; +if (!single_value->field_t3142.is_value()) return FALSE; +if (!single_value->field_t3169.is_value()) return FALSE; +if (!single_value->field_t3191.is_value()) return FALSE; +if (!single_value->field_t3193__10ms.is_value()) return FALSE; +if (!single_value->field_t3195.is_value()) return FALSE; +if (!single_value->field_t3101.is_value()) return FALSE; +if (!single_value->field_t3103.is_value()) return FALSE; +if (!single_value->field_t3105.is_value()) return FALSE; +if (!single_value->field_cv__countdown.is_value()) return FALSE; +if (!single_value->field_dl__tbf__ext.is_value()) return FALSE; +if (!single_value->field_ul__tbf__ext.is_value()) return FALSE; +if (!single_value->field_initial__cs.is_value()) return FALSE; +if (!single_value->field_initial__mcs.is_value()) return FALSE; +if (!single_value->field_nsvci.is_value()) return FALSE; +if (!single_value->field_local__pprt.is_value()) return FALSE; +if (!single_value->field_remote__port.is_value()) return FALSE; +if (!single_value->field_remote__ip.is_value()) return FALSE; +return TRUE; +} + +void PCUIF__info__ind_template::clean_up() +{ +switch (template_selection) { +case SPECIFIC_VALUE: +delete single_value; +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +delete [] value_list.list_value; +default: +break; +} +template_selection = UNINITIALIZED_TEMPLATE; +} + +PCUIF__info__ind PCUIF__info__ind_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 @PCUIF_Types.PCUIF_info_ind."); +PCUIF__info__ind ret_val; +if (single_value->field_version.is_bound()) { +ret_val.version() = single_value->field_version.valueof(); +} +if (single_value->field_flags.is_bound()) { +ret_val.flags() = single_value->field_flags.valueof(); +} +if (single_value->field_trx.is_bound()) { +ret_val.trx() = single_value->field_trx.valueof(); +} +if (single_value->field_bsic.is_bound()) { +ret_val.bsic() = single_value->field_bsic.valueof(); +} +if (single_value->field_mcc.is_bound()) { +ret_val.mcc() = single_value->field_mcc.valueof(); +} +if (single_value->field_mnc.is_bound()) { +ret_val.mnc() = single_value->field_mnc.valueof(); +} +if (single_value->field_mnc__3__digits.is_bound()) { +ret_val.mnc__3__digits() = single_value->field_mnc__3__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(); +} +if (single_value->field_nsei.is_bound()) { +ret_val.nsei() = single_value->field_nsei.valueof(); +} +if (single_value->field_nse__timer.is_bound()) { +ret_val.nse__timer() = single_value->field_nse__timer.valueof(); +} +if (single_value->field_cell__timer.is_bound()) { +ret_val.cell__timer() = single_value->field_cell__timer.valueof(); +} +if (single_value->field_cell__id.is_bound()) { +ret_val.cell__id() = single_value->field_cell__id.valueof(); +} +if (single_value->field_repeat__time.is_bound()) { +ret_val.repeat__time() = single_value->field_repeat__time.valueof(); +} +if (single_value->field_repeat__count.is_bound()) { +ret_val.repeat__count() = single_value->field_repeat__count.valueof(); +} +if (single_value->field_bvci.is_bound()) { +ret_val.bvci() = single_value->field_bvci.valueof(); +} +if (single_value->field_t3142.is_bound()) { +ret_val.t3142() = single_value->field_t3142.valueof(); +} +if (single_value->field_t3169.is_bound()) { +ret_val.t3169() = single_value->field_t3169.valueof(); +} +if (single_value->field_t3191.is_bound()) { +ret_val.t3191() = single_value->field_t3191.valueof(); +} +if (single_value->field_t3193__10ms.is_bound()) { +ret_val.t3193__10ms() = single_value->field_t3193__10ms.valueof(); +} +if (single_value->field_t3195.is_bound()) { +ret_val.t3195() = single_value->field_t3195.valueof(); +} +if (single_value->field_t3101.is_bound()) { +ret_val.t3101() = single_value->field_t3101.valueof(); +} +if (single_value->field_t3103.is_bound()) { +ret_val.t3103() = single_value->field_t3103.valueof(); +} +if (single_value->field_t3105.is_bound()) { +ret_val.t3105() = single_value->field_t3105.valueof(); +} +if (single_value->field_cv__countdown.is_bound()) { +ret_val.cv__countdown() = single_value->field_cv__countdown.valueof(); +} +if (single_value->field_dl__tbf__ext.is_bound()) { +ret_val.dl__tbf__ext() = single_value->field_dl__tbf__ext.valueof(); +} +if (single_value->field_ul__tbf__ext.is_bound()) { +ret_val.ul__tbf__ext() = single_value->field_ul__tbf__ext.valueof(); +} +if (single_value->field_initial__cs.is_bound()) { +ret_val.initial__cs() = single_value->field_initial__cs.valueof(); +} +if (single_value->field_initial__mcs.is_bound()) { +ret_val.initial__mcs() = single_value->field_initial__mcs.valueof(); +} +if (single_value->field_nsvci.is_bound()) { +ret_val.nsvci() = single_value->field_nsvci.valueof(); +} +if (single_value->field_local__pprt.is_bound()) { +ret_val.local__pprt() = single_value->field_local__pprt.valueof(); +} +if (single_value->field_remote__port.is_bound()) { +ret_val.remote__port() = single_value->field_remote__port.valueof(); +} +if (single_value->field_remote__ip.is_bound()) { +ret_val.remote__ip() = single_value->field_remote__ip.valueof(); +} +return ret_val; +} + +void PCUIF__info__ind_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) +TTCN_error("Setting an invalid list for a template of type @PCUIF_Types.PCUIF_info_ind."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new PCUIF__info__ind_template[list_length]; +} + +PCUIF__info__ind_template& PCUIF__info__ind_template::list_item(unsigned int list_index) const +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) +TTCN_error("Accessing a list element of a non-list template of type @PCUIF_Types.PCUIF_info_ind."); +if (list_index >= value_list.n_values) +TTCN_error("Index overflow in a value list template of type @PCUIF_Types.PCUIF_info_ind."); +return value_list.list_value[list_index]; +} + +INTEGER_template& PCUIF__info__ind_template::version() +{ +set_specific(); +return single_value->field_version; +} + +const INTEGER_template& PCUIF__info__ind_template::version() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field version of a non-specific template of type @PCUIF_Types.PCUIF_info_ind."); +return single_value->field_version; +} + +PCUIF__Flags_template& PCUIF__info__ind_template::flags() +{ +set_specific(); +return single_value->field_flags; +} + +const PCUIF__Flags_template& PCUIF__info__ind_template::flags() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field flags of a non-specific template of type @PCUIF_Types.PCUIF_info_ind."); +return single_value->field_flags; +} + +PCUIF__info__ind_trx_template& PCUIF__info__ind_template::trx() +{ +set_specific(); +return single_value->field_trx; +} + +const PCUIF__info__ind_trx_template& PCUIF__info__ind_template::trx() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field trx of a non-specific template of type @PCUIF_Types.PCUIF_info_ind."); +return single_value->field_trx; +} + +INTEGER_template& PCUIF__info__ind_template::bsic() +{ +set_specific(); +return single_value->field_bsic; +} + +const INTEGER_template& PCUIF__info__ind_template::bsic() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field bsic of a non-specific template of type @PCUIF_Types.PCUIF_info_ind."); +return single_value->field_bsic; +} + +INTEGER_template& PCUIF__info__ind_template::mcc() +{ +set_specific(); +return single_value->field_mcc; +} + +const INTEGER_template& PCUIF__info__ind_template::mcc() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field mcc of a non-specific template of type @PCUIF_Types.PCUIF_info_ind."); +return single_value->field_mcc; +} + +INTEGER_template& PCUIF__info__ind_template::mnc() +{ +set_specific(); +return single_value->field_mnc; +} + +const INTEGER_template& PCUIF__info__ind_template::mnc() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field mnc of a non-specific template of type @PCUIF_Types.PCUIF_info_ind."); +return single_value->field_mnc; +} + +INTEGER_template& PCUIF__info__ind_template::mnc__3__digits() +{ +set_specific(); +return single_value->field_mnc__3__digits; +} + +const INTEGER_template& PCUIF__info__ind_template::mnc__3__digits() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field mnc_3_digits of a non-specific template of type @PCUIF_Types.PCUIF_info_ind."); +return single_value->field_mnc__3__digits; +} + +INTEGER_template& PCUIF__info__ind_template::lac() +{ +set_specific(); +return single_value->field_lac; +} + +const INTEGER_template& PCUIF__info__ind_template::lac() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field lac of a non-specific template of type @PCUIF_Types.PCUIF_info_ind."); +return single_value->field_lac; +} + +INTEGER_template& PCUIF__info__ind_template::rac() +{ +set_specific(); +return single_value->field_rac; +} + +const INTEGER_template& PCUIF__info__ind_template::rac() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field rac of a non-specific template of type @PCUIF_Types.PCUIF_info_ind."); +return single_value->field_rac; +} + +INTEGER_template& PCUIF__info__ind_template::nsei() +{ +set_specific(); +return single_value->field_nsei; +} + +const INTEGER_template& PCUIF__info__ind_template::nsei() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field nsei of a non-specific template of type @PCUIF_Types.PCUIF_info_ind."); +return single_value->field_nsei; +} + +PCUIF__info__ind_nse__timer_template& PCUIF__info__ind_template::nse__timer() +{ +set_specific(); +return single_value->field_nse__timer; +} + +const PCUIF__info__ind_nse__timer_template& PCUIF__info__ind_template::nse__timer() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field nse_timer of a non-specific template of type @PCUIF_Types.PCUIF_info_ind."); +return single_value->field_nse__timer; +} + +PCUIF__info__ind_cell__timer_template& PCUIF__info__ind_template::cell__timer() +{ +set_specific(); +return single_value->field_cell__timer; +} + +const PCUIF__info__ind_cell__timer_template& PCUIF__info__ind_template::cell__timer() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field cell_timer of a non-specific template of type @PCUIF_Types.PCUIF_info_ind."); +return single_value->field_cell__timer; +} + +INTEGER_template& PCUIF__info__ind_template::cell__id() +{ +set_specific(); +return single_value->field_cell__id; +} + +const INTEGER_template& PCUIF__info__ind_template::cell__id() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field cell_id of a non-specific template of type @PCUIF_Types.PCUIF_info_ind."); +return single_value->field_cell__id; +} + +INTEGER_template& PCUIF__info__ind_template::repeat__time() +{ +set_specific(); +return single_value->field_repeat__time; +} + +const INTEGER_template& PCUIF__info__ind_template::repeat__time() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field repeat_time of a non-specific template of type @PCUIF_Types.PCUIF_info_ind."); +return single_value->field_repeat__time; +} + +INTEGER_template& PCUIF__info__ind_template::repeat__count() +{ +set_specific(); +return single_value->field_repeat__count; +} + +const INTEGER_template& PCUIF__info__ind_template::repeat__count() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field repeat_count of a non-specific template of type @PCUIF_Types.PCUIF_info_ind."); +return single_value->field_repeat__count; +} + +INTEGER_template& PCUIF__info__ind_template::bvci() +{ +set_specific(); +return single_value->field_bvci; +} + +const INTEGER_template& PCUIF__info__ind_template::bvci() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field bvci of a non-specific template of type @PCUIF_Types.PCUIF_info_ind."); +return single_value->field_bvci; +} + +INTEGER_template& PCUIF__info__ind_template::t3142() +{ +set_specific(); +return single_value->field_t3142; +} + +const INTEGER_template& PCUIF__info__ind_template::t3142() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field t3142 of a non-specific template of type @PCUIF_Types.PCUIF_info_ind."); +return single_value->field_t3142; +} + +INTEGER_template& PCUIF__info__ind_template::t3169() +{ +set_specific(); +return single_value->field_t3169; +} + +const INTEGER_template& PCUIF__info__ind_template::t3169() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field t3169 of a non-specific template of type @PCUIF_Types.PCUIF_info_ind."); +return single_value->field_t3169; +} + +INTEGER_template& PCUIF__info__ind_template::t3191() +{ +set_specific(); +return single_value->field_t3191; +} + +const INTEGER_template& PCUIF__info__ind_template::t3191() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field t3191 of a non-specific template of type @PCUIF_Types.PCUIF_info_ind."); +return single_value->field_t3191; +} + +INTEGER_template& PCUIF__info__ind_template::t3193__10ms() +{ +set_specific(); +return single_value->field_t3193__10ms; +} + +const INTEGER_template& PCUIF__info__ind_template::t3193__10ms() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field t3193_10ms of a non-specific template of type @PCUIF_Types.PCUIF_info_ind."); +return single_value->field_t3193__10ms; +} + +INTEGER_template& PCUIF__info__ind_template::t3195() +{ +set_specific(); +return single_value->field_t3195; +} + +const INTEGER_template& PCUIF__info__ind_template::t3195() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field t3195 of a non-specific template of type @PCUIF_Types.PCUIF_info_ind."); +return single_value->field_t3195; +} + +INTEGER_template& PCUIF__info__ind_template::t3101() +{ +set_specific(); +return single_value->field_t3101; +} + +const INTEGER_template& PCUIF__info__ind_template::t3101() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field t3101 of a non-specific template of type @PCUIF_Types.PCUIF_info_ind."); +return single_value->field_t3101; +} + +INTEGER_template& PCUIF__info__ind_template::t3103() +{ +set_specific(); +return single_value->field_t3103; +} + +const INTEGER_template& PCUIF__info__ind_template::t3103() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field t3103 of a non-specific template of type @PCUIF_Types.PCUIF_info_ind."); +return single_value->field_t3103; +} + +INTEGER_template& PCUIF__info__ind_template::t3105() +{ +set_specific(); +return single_value->field_t3105; +} + +const INTEGER_template& PCUIF__info__ind_template::t3105() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field t3105 of a non-specific template of type @PCUIF_Types.PCUIF_info_ind."); +return single_value->field_t3105; +} + +INTEGER_template& PCUIF__info__ind_template::cv__countdown() +{ +set_specific(); +return single_value->field_cv__countdown; +} + +const INTEGER_template& PCUIF__info__ind_template::cv__countdown() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field cv_countdown of a non-specific template of type @PCUIF_Types.PCUIF_info_ind."); +return single_value->field_cv__countdown; +} + +INTEGER_template& PCUIF__info__ind_template::dl__tbf__ext() +{ +set_specific(); +return single_value->field_dl__tbf__ext; +} + +const INTEGER_template& PCUIF__info__ind_template::dl__tbf__ext() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field dl_tbf_ext of a non-specific template of type @PCUIF_Types.PCUIF_info_ind."); +return single_value->field_dl__tbf__ext; +} + +INTEGER_template& PCUIF__info__ind_template::ul__tbf__ext() +{ +set_specific(); +return single_value->field_ul__tbf__ext; +} + +const INTEGER_template& PCUIF__info__ind_template::ul__tbf__ext() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field ul_tbf_ext of a non-specific template of type @PCUIF_Types.PCUIF_info_ind."); +return single_value->field_ul__tbf__ext; +} + +INTEGER_template& PCUIF__info__ind_template::initial__cs() +{ +set_specific(); +return single_value->field_initial__cs; +} + +const INTEGER_template& PCUIF__info__ind_template::initial__cs() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field initial_cs of a non-specific template of type @PCUIF_Types.PCUIF_info_ind."); +return single_value->field_initial__cs; +} + +INTEGER_template& PCUIF__info__ind_template::initial__mcs() +{ +set_specific(); +return single_value->field_initial__mcs; +} + +const INTEGER_template& PCUIF__info__ind_template::initial__mcs() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field initial_mcs of a non-specific template of type @PCUIF_Types.PCUIF_info_ind."); +return single_value->field_initial__mcs; +} + +PCUIF__info__ind_nsvci_template& PCUIF__info__ind_template::nsvci() +{ +set_specific(); +return single_value->field_nsvci; +} + +const PCUIF__info__ind_nsvci_template& PCUIF__info__ind_template::nsvci() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field nsvci of a non-specific template of type @PCUIF_Types.PCUIF_info_ind."); +return single_value->field_nsvci; +} + +PCUIF__info__ind_local__pprt_template& PCUIF__info__ind_template::local__pprt() +{ +set_specific(); +return single_value->field_local__pprt; +} + +const PCUIF__info__ind_local__pprt_template& PCUIF__info__ind_template::local__pprt() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field local_pprt of a non-specific template of type @PCUIF_Types.PCUIF_info_ind."); +return single_value->field_local__pprt; +} + +PCUIF__info__ind_remote__port_template& PCUIF__info__ind_template::remote__port() +{ +set_specific(); +return single_value->field_remote__port; +} + +const PCUIF__info__ind_remote__port_template& PCUIF__info__ind_template::remote__port() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field remote_port of a non-specific template of type @PCUIF_Types.PCUIF_info_ind."); +return single_value->field_remote__port; +} + +PCUIF__info__ind_remote__ip_template& PCUIF__info__ind_template::remote__ip() +{ +set_specific(); +return single_value->field_remote__ip; +} + +const PCUIF__info__ind_remote__ip_template& PCUIF__info__ind_template::remote__ip() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field remote_ip of a non-specific template of type @PCUIF_Types.PCUIF_info_ind."); +return single_value->field_remote__ip; +} + +int PCUIF__info__ind_template::size_of() const +{ + if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_info_ind which has an ifpresent attribute."); + switch (template_selection) + { + case SPECIFIC_VALUE: + return 33; + case VALUE_LIST: + { + if (value_list.n_values<1) + TTCN_error("Internal error: Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_info_ind 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 @PCUIF_Types.PCUIF_info_ind containing a value list with different sizes."); + } + return item_size; + } + case OMIT_VALUE: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_info_ind containing omit value."); + case ANY_VALUE: + case ANY_OR_OMIT: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_info_ind containing */? value."); + case COMPLEMENTED_LIST: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_info_ind containing complemented list."); + default: + TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_info_ind."); + } + return 0; +} + +void PCUIF__info__ind_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_str("{ version := "); +single_value->field_version.log(); +TTCN_Logger::log_event_str(", flags := "); +single_value->field_flags.log(); +TTCN_Logger::log_event_str(", trx := "); +single_value->field_trx.log(); +TTCN_Logger::log_event_str(", bsic := "); +single_value->field_bsic.log(); +TTCN_Logger::log_event_str(", mcc := "); +single_value->field_mcc.log(); +TTCN_Logger::log_event_str(", mnc := "); +single_value->field_mnc.log(); +TTCN_Logger::log_event_str(", mnc_3_digits := "); +single_value->field_mnc__3__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(", nsei := "); +single_value->field_nsei.log(); +TTCN_Logger::log_event_str(", nse_timer := "); +single_value->field_nse__timer.log(); +TTCN_Logger::log_event_str(", cell_timer := "); +single_value->field_cell__timer.log(); +TTCN_Logger::log_event_str(", cell_id := "); +single_value->field_cell__id.log(); +TTCN_Logger::log_event_str(", repeat_time := "); +single_value->field_repeat__time.log(); +TTCN_Logger::log_event_str(", repeat_count := "); +single_value->field_repeat__count.log(); +TTCN_Logger::log_event_str(", bvci := "); +single_value->field_bvci.log(); +TTCN_Logger::log_event_str(", t3142 := "); +single_value->field_t3142.log(); +TTCN_Logger::log_event_str(", t3169 := "); +single_value->field_t3169.log(); +TTCN_Logger::log_event_str(", t3191 := "); +single_value->field_t3191.log(); +TTCN_Logger::log_event_str(", t3193_10ms := "); +single_value->field_t3193__10ms.log(); +TTCN_Logger::log_event_str(", t3195 := "); +single_value->field_t3195.log(); +TTCN_Logger::log_event_str(", t3101 := "); +single_value->field_t3101.log(); +TTCN_Logger::log_event_str(", t3103 := "); +single_value->field_t3103.log(); +TTCN_Logger::log_event_str(", t3105 := "); +single_value->field_t3105.log(); +TTCN_Logger::log_event_str(", cv_countdown := "); +single_value->field_cv__countdown.log(); +TTCN_Logger::log_event_str(", dl_tbf_ext := "); +single_value->field_dl__tbf__ext.log(); +TTCN_Logger::log_event_str(", ul_tbf_ext := "); +single_value->field_ul__tbf__ext.log(); +TTCN_Logger::log_event_str(", initial_cs := "); +single_value->field_initial__cs.log(); +TTCN_Logger::log_event_str(", initial_mcs := "); +single_value->field_initial__mcs.log(); +TTCN_Logger::log_event_str(", nsvci := "); +single_value->field_nsvci.log(); +TTCN_Logger::log_event_str(", local_pprt := "); +single_value->field_local__pprt.log(); +TTCN_Logger::log_event_str(", remote_port := "); +single_value->field_remote__port.log(); +TTCN_Logger::log_event_str(", remote_ip := "); +single_value->field_remote__ip.log(); +TTCN_Logger::log_event_str(" }"); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { +if (list_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[list_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void PCUIF__info__ind_template::log_match(const PCUIF__info__ind& 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_version.match(match_value.version(), legacy)){ +TTCN_Logger::log_logmatch_info(".version"); +single_value->field_version.log_match(match_value.version(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_flags.match(match_value.flags(), legacy)){ +TTCN_Logger::log_logmatch_info(".flags"); +single_value->field_flags.log_match(match_value.flags(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_trx.match(match_value.trx(), legacy)){ +TTCN_Logger::log_logmatch_info(".trx"); +single_value->field_trx.log_match(match_value.trx(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_bsic.match(match_value.bsic(), legacy)){ +TTCN_Logger::log_logmatch_info(".bsic"); +single_value->field_bsic.log_match(match_value.bsic(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_mcc.match(match_value.mcc(), legacy)){ +TTCN_Logger::log_logmatch_info(".mcc"); +single_value->field_mcc.log_match(match_value.mcc(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_mnc.match(match_value.mnc(), legacy)){ +TTCN_Logger::log_logmatch_info(".mnc"); +single_value->field_mnc.log_match(match_value.mnc(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_mnc__3__digits.match(match_value.mnc__3__digits(), legacy)){ +TTCN_Logger::log_logmatch_info(".mnc_3_digits"); +single_value->field_mnc__3__digits.log_match(match_value.mnc__3__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); +} +if(!single_value->field_nsei.match(match_value.nsei(), legacy)){ +TTCN_Logger::log_logmatch_info(".nsei"); +single_value->field_nsei.log_match(match_value.nsei(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_nse__timer.match(match_value.nse__timer(), legacy)){ +TTCN_Logger::log_logmatch_info(".nse_timer"); +single_value->field_nse__timer.log_match(match_value.nse__timer(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_cell__timer.match(match_value.cell__timer(), legacy)){ +TTCN_Logger::log_logmatch_info(".cell_timer"); +single_value->field_cell__timer.log_match(match_value.cell__timer(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_cell__id.match(match_value.cell__id(), legacy)){ +TTCN_Logger::log_logmatch_info(".cell_id"); +single_value->field_cell__id.log_match(match_value.cell__id(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_repeat__time.match(match_value.repeat__time(), legacy)){ +TTCN_Logger::log_logmatch_info(".repeat_time"); +single_value->field_repeat__time.log_match(match_value.repeat__time(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_repeat__count.match(match_value.repeat__count(), legacy)){ +TTCN_Logger::log_logmatch_info(".repeat_count"); +single_value->field_repeat__count.log_match(match_value.repeat__count(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_bvci.match(match_value.bvci(), legacy)){ +TTCN_Logger::log_logmatch_info(".bvci"); +single_value->field_bvci.log_match(match_value.bvci(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_t3142.match(match_value.t3142(), legacy)){ +TTCN_Logger::log_logmatch_info(".t3142"); +single_value->field_t3142.log_match(match_value.t3142(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_t3169.match(match_value.t3169(), legacy)){ +TTCN_Logger::log_logmatch_info(".t3169"); +single_value->field_t3169.log_match(match_value.t3169(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_t3191.match(match_value.t3191(), legacy)){ +TTCN_Logger::log_logmatch_info(".t3191"); +single_value->field_t3191.log_match(match_value.t3191(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_t3193__10ms.match(match_value.t3193__10ms(), legacy)){ +TTCN_Logger::log_logmatch_info(".t3193_10ms"); +single_value->field_t3193__10ms.log_match(match_value.t3193__10ms(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_t3195.match(match_value.t3195(), legacy)){ +TTCN_Logger::log_logmatch_info(".t3195"); +single_value->field_t3195.log_match(match_value.t3195(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_t3101.match(match_value.t3101(), legacy)){ +TTCN_Logger::log_logmatch_info(".t3101"); +single_value->field_t3101.log_match(match_value.t3101(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_t3103.match(match_value.t3103(), legacy)){ +TTCN_Logger::log_logmatch_info(".t3103"); +single_value->field_t3103.log_match(match_value.t3103(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_t3105.match(match_value.t3105(), legacy)){ +TTCN_Logger::log_logmatch_info(".t3105"); +single_value->field_t3105.log_match(match_value.t3105(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_cv__countdown.match(match_value.cv__countdown(), legacy)){ +TTCN_Logger::log_logmatch_info(".cv_countdown"); +single_value->field_cv__countdown.log_match(match_value.cv__countdown(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_dl__tbf__ext.match(match_value.dl__tbf__ext(), legacy)){ +TTCN_Logger::log_logmatch_info(".dl_tbf_ext"); +single_value->field_dl__tbf__ext.log_match(match_value.dl__tbf__ext(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_ul__tbf__ext.match(match_value.ul__tbf__ext(), legacy)){ +TTCN_Logger::log_logmatch_info(".ul_tbf_ext"); +single_value->field_ul__tbf__ext.log_match(match_value.ul__tbf__ext(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_initial__cs.match(match_value.initial__cs(), legacy)){ +TTCN_Logger::log_logmatch_info(".initial_cs"); +single_value->field_initial__cs.log_match(match_value.initial__cs(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_initial__mcs.match(match_value.initial__mcs(), legacy)){ +TTCN_Logger::log_logmatch_info(".initial_mcs"); +single_value->field_initial__mcs.log_match(match_value.initial__mcs(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_nsvci.match(match_value.nsvci(), legacy)){ +TTCN_Logger::log_logmatch_info(".nsvci"); +single_value->field_nsvci.log_match(match_value.nsvci(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_local__pprt.match(match_value.local__pprt(), legacy)){ +TTCN_Logger::log_logmatch_info(".local_pprt"); +single_value->field_local__pprt.log_match(match_value.local__pprt(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_remote__port.match(match_value.remote__port(), legacy)){ +TTCN_Logger::log_logmatch_info(".remote_port"); +single_value->field_remote__port.log_match(match_value.remote__port(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_remote__ip.match(match_value.remote__ip(), legacy)){ +TTCN_Logger::log_logmatch_info(".remote_ip"); +single_value->field_remote__ip.log_match(match_value.remote__ip(), 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("{ version := "); +single_value->field_version.log_match(match_value.version(), legacy); +TTCN_Logger::log_event_str(", flags := "); +single_value->field_flags.log_match(match_value.flags(), legacy); +TTCN_Logger::log_event_str(", trx := "); +single_value->field_trx.log_match(match_value.trx(), legacy); +TTCN_Logger::log_event_str(", bsic := "); +single_value->field_bsic.log_match(match_value.bsic(), legacy); +TTCN_Logger::log_event_str(", mcc := "); +single_value->field_mcc.log_match(match_value.mcc(), legacy); +TTCN_Logger::log_event_str(", mnc := "); +single_value->field_mnc.log_match(match_value.mnc(), legacy); +TTCN_Logger::log_event_str(", mnc_3_digits := "); +single_value->field_mnc__3__digits.log_match(match_value.mnc__3__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(", nsei := "); +single_value->field_nsei.log_match(match_value.nsei(), legacy); +TTCN_Logger::log_event_str(", nse_timer := "); +single_value->field_nse__timer.log_match(match_value.nse__timer(), legacy); +TTCN_Logger::log_event_str(", cell_timer := "); +single_value->field_cell__timer.log_match(match_value.cell__timer(), legacy); +TTCN_Logger::log_event_str(", cell_id := "); +single_value->field_cell__id.log_match(match_value.cell__id(), legacy); +TTCN_Logger::log_event_str(", repeat_time := "); +single_value->field_repeat__time.log_match(match_value.repeat__time(), legacy); +TTCN_Logger::log_event_str(", repeat_count := "); +single_value->field_repeat__count.log_match(match_value.repeat__count(), legacy); +TTCN_Logger::log_event_str(", bvci := "); +single_value->field_bvci.log_match(match_value.bvci(), legacy); +TTCN_Logger::log_event_str(", t3142 := "); +single_value->field_t3142.log_match(match_value.t3142(), legacy); +TTCN_Logger::log_event_str(", t3169 := "); +single_value->field_t3169.log_match(match_value.t3169(), legacy); +TTCN_Logger::log_event_str(", t3191 := "); +single_value->field_t3191.log_match(match_value.t3191(), legacy); +TTCN_Logger::log_event_str(", t3193_10ms := "); +single_value->field_t3193__10ms.log_match(match_value.t3193__10ms(), legacy); +TTCN_Logger::log_event_str(", t3195 := "); +single_value->field_t3195.log_match(match_value.t3195(), legacy); +TTCN_Logger::log_event_str(", t3101 := "); +single_value->field_t3101.log_match(match_value.t3101(), legacy); +TTCN_Logger::log_event_str(", t3103 := "); +single_value->field_t3103.log_match(match_value.t3103(), legacy); +TTCN_Logger::log_event_str(", t3105 := "); +single_value->field_t3105.log_match(match_value.t3105(), legacy); +TTCN_Logger::log_event_str(", cv_countdown := "); +single_value->field_cv__countdown.log_match(match_value.cv__countdown(), legacy); +TTCN_Logger::log_event_str(", dl_tbf_ext := "); +single_value->field_dl__tbf__ext.log_match(match_value.dl__tbf__ext(), legacy); +TTCN_Logger::log_event_str(", ul_tbf_ext := "); +single_value->field_ul__tbf__ext.log_match(match_value.ul__tbf__ext(), legacy); +TTCN_Logger::log_event_str(", initial_cs := "); +single_value->field_initial__cs.log_match(match_value.initial__cs(), legacy); +TTCN_Logger::log_event_str(", initial_mcs := "); +single_value->field_initial__mcs.log_match(match_value.initial__mcs(), legacy); +TTCN_Logger::log_event_str(", nsvci := "); +single_value->field_nsvci.log_match(match_value.nsvci(), legacy); +TTCN_Logger::log_event_str(", local_pprt := "); +single_value->field_local__pprt.log_match(match_value.local__pprt(), legacy); +TTCN_Logger::log_event_str(", remote_port := "); +single_value->field_remote__port.log_match(match_value.remote__port(), legacy); +TTCN_Logger::log_event_str(", remote_ip := "); +single_value->field_remote__ip.log_match(match_value.remote__ip(), 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 PCUIF__info__ind_template::encode_text(Text_Buf& text_buf) const +{ +encode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value->field_version.encode_text(text_buf); +single_value->field_flags.encode_text(text_buf); +single_value->field_trx.encode_text(text_buf); +single_value->field_bsic.encode_text(text_buf); +single_value->field_mcc.encode_text(text_buf); +single_value->field_mnc.encode_text(text_buf); +single_value->field_mnc__3__digits.encode_text(text_buf); +single_value->field_lac.encode_text(text_buf); +single_value->field_rac.encode_text(text_buf); +single_value->field_nsei.encode_text(text_buf); +single_value->field_nse__timer.encode_text(text_buf); +single_value->field_cell__timer.encode_text(text_buf); +single_value->field_cell__id.encode_text(text_buf); +single_value->field_repeat__time.encode_text(text_buf); +single_value->field_repeat__count.encode_text(text_buf); +single_value->field_bvci.encode_text(text_buf); +single_value->field_t3142.encode_text(text_buf); +single_value->field_t3169.encode_text(text_buf); +single_value->field_t3191.encode_text(text_buf); +single_value->field_t3193__10ms.encode_text(text_buf); +single_value->field_t3195.encode_text(text_buf); +single_value->field_t3101.encode_text(text_buf); +single_value->field_t3103.encode_text(text_buf); +single_value->field_t3105.encode_text(text_buf); +single_value->field_cv__countdown.encode_text(text_buf); +single_value->field_dl__tbf__ext.encode_text(text_buf); +single_value->field_ul__tbf__ext.encode_text(text_buf); +single_value->field_initial__cs.encode_text(text_buf); +single_value->field_initial__mcs.encode_text(text_buf); +single_value->field_nsvci.encode_text(text_buf); +single_value->field_local__pprt.encode_text(text_buf); +single_value->field_remote__port.encode_text(text_buf); +single_value->field_remote__ip.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 @PCUIF_Types.PCUIF_info_ind."); +} +} + +void PCUIF__info__ind_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_version.decode_text(text_buf); +single_value->field_flags.decode_text(text_buf); +single_value->field_trx.decode_text(text_buf); +single_value->field_bsic.decode_text(text_buf); +single_value->field_mcc.decode_text(text_buf); +single_value->field_mnc.decode_text(text_buf); +single_value->field_mnc__3__digits.decode_text(text_buf); +single_value->field_lac.decode_text(text_buf); +single_value->field_rac.decode_text(text_buf); +single_value->field_nsei.decode_text(text_buf); +single_value->field_nse__timer.decode_text(text_buf); +single_value->field_cell__timer.decode_text(text_buf); +single_value->field_cell__id.decode_text(text_buf); +single_value->field_repeat__time.decode_text(text_buf); +single_value->field_repeat__count.decode_text(text_buf); +single_value->field_bvci.decode_text(text_buf); +single_value->field_t3142.decode_text(text_buf); +single_value->field_t3169.decode_text(text_buf); +single_value->field_t3191.decode_text(text_buf); +single_value->field_t3193__10ms.decode_text(text_buf); +single_value->field_t3195.decode_text(text_buf); +single_value->field_t3101.decode_text(text_buf); +single_value->field_t3103.decode_text(text_buf); +single_value->field_t3105.decode_text(text_buf); +single_value->field_cv__countdown.decode_text(text_buf); +single_value->field_dl__tbf__ext.decode_text(text_buf); +single_value->field_ul__tbf__ext.decode_text(text_buf); +single_value->field_initial__cs.decode_text(text_buf); +single_value->field_initial__mcs.decode_text(text_buf); +single_value->field_nsvci.decode_text(text_buf); +single_value->field_local__pprt.decode_text(text_buf); +single_value->field_remote__port.decode_text(text_buf); +single_value->field_remote__ip.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 PCUIF__info__ind_template[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 @PCUIF_Types.PCUIF_info_ind."); +} +} + +void PCUIF__info__ind_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: { + PCUIF__info__ind_template new_temp; + new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); + for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) version().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) flags().set_param(*param.get_elem(1)); + if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) trx().set_param(*param.get_elem(2)); + if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) bsic().set_param(*param.get_elem(3)); + if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) mcc().set_param(*param.get_elem(4)); + if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) mnc().set_param(*param.get_elem(5)); + if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) mnc__3__digits().set_param(*param.get_elem(6)); + if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) lac().set_param(*param.get_elem(7)); + if (param.get_size()>8 && param.get_elem(8)->get_type()!=Module_Param::MP_NotUsed) rac().set_param(*param.get_elem(8)); + if (param.get_size()>9 && param.get_elem(9)->get_type()!=Module_Param::MP_NotUsed) nsei().set_param(*param.get_elem(9)); + if (param.get_size()>10 && param.get_elem(10)->get_type()!=Module_Param::MP_NotUsed) nse__timer().set_param(*param.get_elem(10)); + if (param.get_size()>11 && param.get_elem(11)->get_type()!=Module_Param::MP_NotUsed) cell__timer().set_param(*param.get_elem(11)); + if (param.get_size()>12 && param.get_elem(12)->get_type()!=Module_Param::MP_NotUsed) cell__id().set_param(*param.get_elem(12)); + if (param.get_size()>13 && param.get_elem(13)->get_type()!=Module_Param::MP_NotUsed) repeat__time().set_param(*param.get_elem(13)); + if (param.get_size()>14 && param.get_elem(14)->get_type()!=Module_Param::MP_NotUsed) repeat__count().set_param(*param.get_elem(14)); + if (param.get_size()>15 && param.get_elem(15)->get_type()!=Module_Param::MP_NotUsed) bvci().set_param(*param.get_elem(15)); + if (param.get_size()>16 && param.get_elem(16)->get_type()!=Module_Param::MP_NotUsed) t3142().set_param(*param.get_elem(16)); + if (param.get_size()>17 && param.get_elem(17)->get_type()!=Module_Param::MP_NotUsed) t3169().set_param(*param.get_elem(17)); + if (param.get_size()>18 && param.get_elem(18)->get_type()!=Module_Param::MP_NotUsed) t3191().set_param(*param.get_elem(18)); + if (param.get_size()>19 && param.get_elem(19)->get_type()!=Module_Param::MP_NotUsed) t3193__10ms().set_param(*param.get_elem(19)); + if (param.get_size()>20 && param.get_elem(20)->get_type()!=Module_Param::MP_NotUsed) t3195().set_param(*param.get_elem(20)); + if (param.get_size()>21 && param.get_elem(21)->get_type()!=Module_Param::MP_NotUsed) t3101().set_param(*param.get_elem(21)); + if (param.get_size()>22 && param.get_elem(22)->get_type()!=Module_Param::MP_NotUsed) t3103().set_param(*param.get_elem(22)); + if (param.get_size()>23 && param.get_elem(23)->get_type()!=Module_Param::MP_NotUsed) t3105().set_param(*param.get_elem(23)); + if (param.get_size()>24 && param.get_elem(24)->get_type()!=Module_Param::MP_NotUsed) cv__countdown().set_param(*param.get_elem(24)); + if (param.get_size()>25 && param.get_elem(25)->get_type()!=Module_Param::MP_NotUsed) dl__tbf__ext().set_param(*param.get_elem(25)); + if (param.get_size()>26 && param.get_elem(26)->get_type()!=Module_Param::MP_NotUsed) ul__tbf__ext().set_param(*param.get_elem(26)); + if (param.get_size()>27 && param.get_elem(27)->get_type()!=Module_Param::MP_NotUsed) initial__cs().set_param(*param.get_elem(27)); + if (param.get_size()>28 && param.get_elem(28)->get_type()!=Module_Param::MP_NotUsed) initial__mcs().set_param(*param.get_elem(28)); + if (param.get_size()>29 && param.get_elem(29)->get_type()!=Module_Param::MP_NotUsed) nsvci().set_param(*param.get_elem(29)); + if (param.get_size()>30 && param.get_elem(30)->get_type()!=Module_Param::MP_NotUsed) local__pprt().set_param(*param.get_elem(30)); + if (param.get_size()>31 && param.get_elem(31)->get_type()!=Module_Param::MP_NotUsed) remote__port().set_param(*param.get_elem(31)); + if (param.get_size()>32 && param.get_elem(32)->get_type()!=Module_Param::MP_NotUsed) remote__ip().set_param(*param.get_elem(32)); + 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(), "version")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + version().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "flags")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + flags().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "trx")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + trx().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "bsic")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + bsic().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "mcc")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + mcc().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "mnc")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + mnc().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "mnc_3_digits")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + mnc__3__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_idxget_id()->get_name(), "nsei")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + nsei().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "nse_timer")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + nse__timer().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "cell_timer")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + cell__timer().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "cell_id")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + cell__id().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "repeat_time")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + repeat__time().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "repeat_count")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + repeat__count().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "bvci")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + bvci().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "t3142")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + t3142().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "t3169")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + t3169().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "t3191")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + t3191().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "t3193_10ms")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + t3193__10ms().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "t3195")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + t3195().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "t3101")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + t3101().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "t3103")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + t3103().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "t3105")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + t3105().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "cv_countdown")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + cv__countdown().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "dl_tbf_ext")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + dl__tbf__ext().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "ul_tbf_ext")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + ul__tbf__ext().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "initial_cs")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + initial__cs().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "initial_mcs")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + initial__mcs().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "nsvci")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + nsvci().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "local_pprt")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + local__pprt().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "remote_port")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + remote__port().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "remote_ip")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + remote__ip().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @PCUIF_Types.PCUIF_info_ind: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record template", "@PCUIF_Types.PCUIF_info_ind"); + } + is_ifpresent = param.get_ifpresent(); +} + +void PCUIF__info__ind_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_version.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_info_ind"); +single_value->field_flags.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_info_ind"); +single_value->field_trx.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_info_ind"); +single_value->field_bsic.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_info_ind"); +single_value->field_mcc.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_info_ind"); +single_value->field_mnc.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_info_ind"); +single_value->field_mnc__3__digits.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_info_ind"); +single_value->field_lac.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_info_ind"); +single_value->field_rac.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_info_ind"); +single_value->field_nsei.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_info_ind"); +single_value->field_nse__timer.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_info_ind"); +single_value->field_cell__timer.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_info_ind"); +single_value->field_cell__id.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_info_ind"); +single_value->field_repeat__time.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_info_ind"); +single_value->field_repeat__count.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_info_ind"); +single_value->field_bvci.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_info_ind"); +single_value->field_t3142.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_info_ind"); +single_value->field_t3169.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_info_ind"); +single_value->field_t3191.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_info_ind"); +single_value->field_t3193__10ms.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_info_ind"); +single_value->field_t3195.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_info_ind"); +single_value->field_t3101.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_info_ind"); +single_value->field_t3103.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_info_ind"); +single_value->field_t3105.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_info_ind"); +single_value->field_cv__countdown.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_info_ind"); +single_value->field_dl__tbf__ext.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_info_ind"); +single_value->field_ul__tbf__ext.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_info_ind"); +single_value->field_initial__cs.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_info_ind"); +single_value->field_initial__mcs.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_info_ind"); +single_value->field_nsvci.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_info_ind"); +single_value->field_local__pprt.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_info_ind"); +single_value->field_remote__port.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_info_ind"); +single_value->field_remote__ip.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_info_ind"); +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 : "@PCUIF_Types.PCUIF_info_ind"); +} + +boolean PCUIF__info__ind_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean PCUIF__info__ind_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) is__activate().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) trx__nr().set_param(*param.get_elem(1)); + if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) ts__nr().set_param(*param.get_elem(2)); + if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) spare().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(), "is_activate")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + is__activate().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "trx_nr")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + trx__nr().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "ts_nr")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + ts__nr().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 @PCUIF_Types.PCUIF_act_req: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record value", "@PCUIF_Types.PCUIF_act_req"); + } +} + +void PCUIF__act__req::set_implicit_omit() +{ +if (is__activate().is_bound()) is__activate().set_implicit_omit(); +if (trx__nr().is_bound()) trx__nr().set_implicit_omit(); +if (ts__nr().is_bound()) ts__nr().set_implicit_omit(); +if (spare().is_bound()) spare().set_implicit_omit(); +} + +void PCUIF__act__req::encode_text(Text_Buf& text_buf) const +{ +field_is__activate.encode_text(text_buf); +field_trx__nr.encode_text(text_buf); +field_ts__nr.encode_text(text_buf); +field_spare.encode_text(text_buf); +} + +void PCUIF__act__req::decode_text(Text_Buf& text_buf) +{ +field_is__activate.decode_text(text_buf); +field_trx__nr.decode_text(text_buf); +field_ts__nr.decode_text(text_buf); +field_spare.decode_text(text_buf); +} + +void PCUIF__act__req::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void PCUIF__act__req::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int PCUIF__act__req::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) +{ (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; + decoded_field_length = field_is__activate.RAW_decode(PCUIF__act__req_is__activate_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_trx__nr.RAW_decode(PCUIF__act__req_trx__nr_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_ts__nr.RAW_decode(PCUIF__act__req_ts__nr_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_spare.RAW_decode(PCUIF__act__req_spare_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return 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 PCUIF__act__req::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, PCUIF__act__req_is__activate_descr_.raw); + myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PCUIF__act__req_trx__nr_descr_.raw); + myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, PCUIF__act__req_ts__nr_descr_.raw); + myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, PCUIF__act__req_spare_descr_.raw); + encoded_length += field_is__activate.RAW_encode(PCUIF__act__req_is__activate_descr_, *myleaf.body.node.nodes[0]); + encoded_length += field_trx__nr.RAW_encode(PCUIF__act__req_trx__nr_descr_, *myleaf.body.node.nodes[1]); + encoded_length += field_ts__nr.RAW_encode(PCUIF__act__req_ts__nr_descr_, *myleaf.body.node.nodes[2]); + encoded_length += field_spare.RAW_encode(PCUIF__act__req_spare_descr_, *myleaf.body.node.nodes[3]); + return myleaf.length = encoded_length; +} + +struct PCUIF__act__req_template::single_value_struct { +INTEGER_template field_is__activate; +INTEGER_template field_trx__nr; +INTEGER_template field_ts__nr; +OCTETSTRING_template field_spare; +}; + +void PCUIF__act__req_template::set_specific() +{ +if (template_selection != SPECIFIC_VALUE) { +template_sel old_selection = template_selection; +clean_up(); +single_value = new single_value_struct; +set_selection(SPECIFIC_VALUE); +if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { +single_value->field_is__activate = ANY_VALUE; +single_value->field_trx__nr = ANY_VALUE; +single_value->field_ts__nr = ANY_VALUE; +single_value->field_spare = ANY_VALUE; +} +} +} + +void PCUIF__act__req_template::copy_value(const PCUIF__act__req& other_value) +{ +single_value = new single_value_struct; +if (other_value.is__activate().is_bound()) { + single_value->field_is__activate = other_value.is__activate(); +} else { + single_value->field_is__activate.clean_up(); +} +if (other_value.trx__nr().is_bound()) { + single_value->field_trx__nr = other_value.trx__nr(); +} else { + single_value->field_trx__nr.clean_up(); +} +if (other_value.ts__nr().is_bound()) { + single_value->field_ts__nr = other_value.ts__nr(); +} else { + single_value->field_ts__nr.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 PCUIF__act__req_template::copy_template(const PCUIF__act__req_template& other_value) +{ +switch (other_value.template_selection) { +case SPECIFIC_VALUE: +single_value = new single_value_struct; +if (UNINITIALIZED_TEMPLATE != other_value.is__activate().get_selection()) { +single_value->field_is__activate = other_value.is__activate(); +} else { +single_value->field_is__activate.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.trx__nr().get_selection()) { +single_value->field_trx__nr = other_value.trx__nr(); +} else { +single_value->field_trx__nr.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.ts__nr().get_selection()) { +single_value->field_ts__nr = other_value.ts__nr(); +} else { +single_value->field_ts__nr.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: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new PCUIF__act__req_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_act_req."); +break; +} +set_selection(other_value); +} + +PCUIF__act__req_template::PCUIF__act__req_template() +{ +} + +PCUIF__act__req_template::PCUIF__act__req_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +PCUIF__act__req_template::PCUIF__act__req_template(const PCUIF__act__req& other_value) +{ +copy_value(other_value); +} + +PCUIF__act__req_template::PCUIF__act__req_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const PCUIF__act__req&)other_value); +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of type @PCUIF_Types.PCUIF_act_req from an unbound optional field."); +} +} + +PCUIF__act__req_template::PCUIF__act__req_template(const PCUIF__act__req_template& other_value) +: Base_Template() +{ +copy_template(other_value); +} + +PCUIF__act__req_template::~PCUIF__act__req_template() +{ +clean_up(); +} + +PCUIF__act__req_template& PCUIF__act__req_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +PCUIF__act__req_template& PCUIF__act__req_template::operator=(const PCUIF__act__req& other_value) +{ +clean_up(); +copy_value(other_value); +return *this; +} + +PCUIF__act__req_template& PCUIF__act__req_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const PCUIF__act__req&)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 @PCUIF_Types.PCUIF_act_req."); +} +return *this; +} + +PCUIF__act__req_template& PCUIF__act__req_template::operator=(const PCUIF__act__req_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean PCUIF__act__req_template::match(const PCUIF__act__req& other_value, boolean legacy) const +{ +if (!other_value.is_bound()) return FALSE; +switch (template_selection) { +case ANY_VALUE: +case ANY_OR_OMIT: +return TRUE; +case OMIT_VALUE: +return FALSE; +case SPECIFIC_VALUE: +if(!other_value.is__activate().is_bound()) return FALSE; +if(!single_value->field_is__activate.match(other_value.is__activate(), legacy))return FALSE; +if(!other_value.trx__nr().is_bound()) return FALSE; +if(!single_value->field_trx__nr.match(other_value.trx__nr(), legacy))return FALSE; +if(!other_value.ts__nr().is_bound()) return FALSE; +if(!single_value->field_ts__nr.match(other_value.ts__nr(), 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; +default: +TTCN_error("Matching an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_act_req."); +} +return FALSE; +} + +boolean PCUIF__act__req_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +if (template_selection != SPECIFIC_VALUE) return TRUE; +if (single_value->field_is__activate.is_bound()) return TRUE; +if (single_value->field_trx__nr.is_bound()) return TRUE; +if (single_value->field_ts__nr.is_bound()) return TRUE; +if (single_value->field_spare.is_bound()) return TRUE; +return FALSE; +} + +boolean PCUIF__act__req_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +if (!single_value->field_is__activate.is_value()) return FALSE; +if (!single_value->field_trx__nr.is_value()) return FALSE; +if (!single_value->field_ts__nr.is_value()) return FALSE; +if (!single_value->field_spare.is_value()) return FALSE; +return TRUE; +} + +void PCUIF__act__req_template::clean_up() +{ +switch (template_selection) { +case SPECIFIC_VALUE: +delete single_value; +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +delete [] value_list.list_value; +default: +break; +} +template_selection = UNINITIALIZED_TEMPLATE; +} + +PCUIF__act__req PCUIF__act__req_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 @PCUIF_Types.PCUIF_act_req."); +PCUIF__act__req ret_val; +if (single_value->field_is__activate.is_bound()) { +ret_val.is__activate() = single_value->field_is__activate.valueof(); +} +if (single_value->field_trx__nr.is_bound()) { +ret_val.trx__nr() = single_value->field_trx__nr.valueof(); +} +if (single_value->field_ts__nr.is_bound()) { +ret_val.ts__nr() = single_value->field_ts__nr.valueof(); +} +if (single_value->field_spare.is_bound()) { +ret_val.spare() = single_value->field_spare.valueof(); +} +return ret_val; +} + +void PCUIF__act__req_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) +TTCN_error("Setting an invalid list for a template of type @PCUIF_Types.PCUIF_act_req."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new PCUIF__act__req_template[list_length]; +} + +PCUIF__act__req_template& PCUIF__act__req_template::list_item(unsigned int list_index) const +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) +TTCN_error("Accessing a list element of a non-list template of type @PCUIF_Types.PCUIF_act_req."); +if (list_index >= value_list.n_values) +TTCN_error("Index overflow in a value list template of type @PCUIF_Types.PCUIF_act_req."); +return value_list.list_value[list_index]; +} + +INTEGER_template& PCUIF__act__req_template::is__activate() +{ +set_specific(); +return single_value->field_is__activate; +} + +const INTEGER_template& PCUIF__act__req_template::is__activate() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field is_activate of a non-specific template of type @PCUIF_Types.PCUIF_act_req."); +return single_value->field_is__activate; +} + +INTEGER_template& PCUIF__act__req_template::trx__nr() +{ +set_specific(); +return single_value->field_trx__nr; +} + +const INTEGER_template& PCUIF__act__req_template::trx__nr() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field trx_nr of a non-specific template of type @PCUIF_Types.PCUIF_act_req."); +return single_value->field_trx__nr; +} + +INTEGER_template& PCUIF__act__req_template::ts__nr() +{ +set_specific(); +return single_value->field_ts__nr; +} + +const INTEGER_template& PCUIF__act__req_template::ts__nr() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field ts_nr of a non-specific template of type @PCUIF_Types.PCUIF_act_req."); +return single_value->field_ts__nr; +} + +OCTETSTRING_template& PCUIF__act__req_template::spare() +{ +set_specific(); +return single_value->field_spare; +} + +const OCTETSTRING_template& PCUIF__act__req_template::spare() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field spare of a non-specific template of type @PCUIF_Types.PCUIF_act_req."); +return single_value->field_spare; +} + +int PCUIF__act__req_template::size_of() const +{ + if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_act_req 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 @PCUIF_Types.PCUIF_act_req 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 @PCUIF_Types.PCUIF_act_req containing a value list with different sizes."); + } + return item_size; + } + case OMIT_VALUE: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_act_req containing omit value."); + case ANY_VALUE: + case ANY_OR_OMIT: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_act_req containing */? value."); + case COMPLEMENTED_LIST: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_act_req containing complemented list."); + default: + TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_act_req."); + } + return 0; +} + +void PCUIF__act__req_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_str("{ is_activate := "); +single_value->field_is__activate.log(); +TTCN_Logger::log_event_str(", trx_nr := "); +single_value->field_trx__nr.log(); +TTCN_Logger::log_event_str(", ts_nr := "); +single_value->field_ts__nr.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 VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { +if (list_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[list_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void PCUIF__act__req_template::log_match(const PCUIF__act__req& match_value, boolean legacy) const +{ +if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ +if(match(match_value, legacy)){ +TTCN_Logger::print_logmatch_buffer(); +TTCN_Logger::log_event_str(" matched"); +} else{ +if (template_selection == SPECIFIC_VALUE) { +size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); +if(!single_value->field_is__activate.match(match_value.is__activate(), legacy)){ +TTCN_Logger::log_logmatch_info(".is_activate"); +single_value->field_is__activate.log_match(match_value.is__activate(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_trx__nr.match(match_value.trx__nr(), legacy)){ +TTCN_Logger::log_logmatch_info(".trx_nr"); +single_value->field_trx__nr.log_match(match_value.trx__nr(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_ts__nr.match(match_value.ts__nr(), legacy)){ +TTCN_Logger::log_logmatch_info(".ts_nr"); +single_value->field_ts__nr.log_match(match_value.ts__nr(), 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("{ is_activate := "); +single_value->field_is__activate.log_match(match_value.is__activate(), legacy); +TTCN_Logger::log_event_str(", trx_nr := "); +single_value->field_trx__nr.log_match(match_value.trx__nr(), legacy); +TTCN_Logger::log_event_str(", ts_nr := "); +single_value->field_ts__nr.log_match(match_value.ts__nr(), 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 PCUIF__act__req_template::encode_text(Text_Buf& text_buf) const +{ +encode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value->field_is__activate.encode_text(text_buf); +single_value->field_trx__nr.encode_text(text_buf); +single_value->field_ts__nr.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 @PCUIF_Types.PCUIF_act_req."); +} +} + +void PCUIF__act__req_template::decode_text(Text_Buf& text_buf) +{ +clean_up(); +decode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value = new single_value_struct; +single_value->field_is__activate.decode_text(text_buf); +single_value->field_trx__nr.decode_text(text_buf); +single_value->field_ts__nr.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 PCUIF__act__req_template[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 @PCUIF_Types.PCUIF_act_req."); +} +} + +void PCUIF__act__req_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: { + PCUIF__act__req_template new_temp; + new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); + for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) is__activate().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) trx__nr().set_param(*param.get_elem(1)); + if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) ts__nr().set_param(*param.get_elem(2)); + if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) spare().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(), "is_activate")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + is__activate().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "trx_nr")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + trx__nr().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "ts_nr")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + ts__nr().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 @PCUIF_Types.PCUIF_act_req: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record template", "@PCUIF_Types.PCUIF_act_req"); + } + is_ifpresent = param.get_ifpresent(); +} + +void PCUIF__act__req_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return; +switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { +case TR_OMIT: +if (template_selection==OMIT_VALUE) return; +case TR_VALUE: +if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; +single_value->field_is__activate.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_act_req"); +single_value->field_trx__nr.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_act_req"); +single_value->field_ts__nr.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_act_req"); +single_value->field_spare.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_act_req"); +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 : "@PCUIF_Types.PCUIF_act_req"); +} + +boolean PCUIF__act__req_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean PCUIF__act__req_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) fn().set_param(*param.get_elem(0)); + 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(), "fn")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + fn().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @PCUIF_Types.PCUIF_time_ind: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record value", "@PCUIF_Types.PCUIF_time_ind"); + } +} + +void PCUIF__time__ind::set_implicit_omit() +{ +if (fn().is_bound()) fn().set_implicit_omit(); +} + +void PCUIF__time__ind::encode_text(Text_Buf& text_buf) const +{ +field_fn.encode_text(text_buf); +} + +void PCUIF__time__ind::decode_text(Text_Buf& text_buf) +{ +field_fn.decode_text(text_buf); +} + +void PCUIF__time__ind::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void PCUIF__time__ind::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int PCUIF__time__ind::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) +{ (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; + decoded_field_length = field_fn.RAW_decode(PCUIF__time__ind_fn_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return 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 PCUIF__time__ind::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { + if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); + int encoded_length = 0; + myleaf.isleaf = FALSE; + myleaf.body.node.num_of_nodes = 1; + myleaf.body.node.nodes = init_nodes_of_enc_tree(1); + myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, PCUIF__time__ind_fn_descr_.raw); + encoded_length += field_fn.RAW_encode(PCUIF__time__ind_fn_descr_, *myleaf.body.node.nodes[0]); + return myleaf.length = encoded_length; +} + +struct PCUIF__time__ind_template::single_value_struct { +INTEGER_template field_fn; +}; + +void PCUIF__time__ind_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_fn = ANY_VALUE; +} +} +} + +void PCUIF__time__ind_template::copy_value(const PCUIF__time__ind& other_value) +{ +single_value = new single_value_struct; +if (other_value.fn().is_bound()) { + single_value->field_fn = other_value.fn(); +} else { + single_value->field_fn.clean_up(); +} +set_selection(SPECIFIC_VALUE); +} + +void PCUIF__time__ind_template::copy_template(const PCUIF__time__ind_template& other_value) +{ +switch (other_value.template_selection) { +case SPECIFIC_VALUE: +single_value = new single_value_struct; +if (UNINITIALIZED_TEMPLATE != other_value.fn().get_selection()) { +single_value->field_fn = other_value.fn(); +} else { +single_value->field_fn.clean_up(); +} +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new PCUIF__time__ind_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_time_ind."); +break; +} +set_selection(other_value); +} + +PCUIF__time__ind_template::PCUIF__time__ind_template() +{ +} + +PCUIF__time__ind_template::PCUIF__time__ind_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +PCUIF__time__ind_template::PCUIF__time__ind_template(const PCUIF__time__ind& other_value) +{ +copy_value(other_value); +} + +PCUIF__time__ind_template::PCUIF__time__ind_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const PCUIF__time__ind&)other_value); +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of type @PCUIF_Types.PCUIF_time_ind from an unbound optional field."); +} +} + +PCUIF__time__ind_template::PCUIF__time__ind_template(const PCUIF__time__ind_template& other_value) +: Base_Template() +{ +copy_template(other_value); +} + +PCUIF__time__ind_template::~PCUIF__time__ind_template() +{ +clean_up(); +} + +PCUIF__time__ind_template& PCUIF__time__ind_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +PCUIF__time__ind_template& PCUIF__time__ind_template::operator=(const PCUIF__time__ind& other_value) +{ +clean_up(); +copy_value(other_value); +return *this; +} + +PCUIF__time__ind_template& PCUIF__time__ind_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const PCUIF__time__ind&)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 @PCUIF_Types.PCUIF_time_ind."); +} +return *this; +} + +PCUIF__time__ind_template& PCUIF__time__ind_template::operator=(const PCUIF__time__ind_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean PCUIF__time__ind_template::match(const PCUIF__time__ind& 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.fn().is_bound()) return FALSE; +if(!single_value->field_fn.match(other_value.fn(), legacy))return FALSE; +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_time_ind."); +} +return FALSE; +} + +boolean PCUIF__time__ind_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +if (template_selection != SPECIFIC_VALUE) return TRUE; +if (single_value->field_fn.is_bound()) return TRUE; +return FALSE; +} + +boolean PCUIF__time__ind_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +if (!single_value->field_fn.is_value()) return FALSE; +return TRUE; +} + +void PCUIF__time__ind_template::clean_up() +{ +switch (template_selection) { +case SPECIFIC_VALUE: +delete single_value; +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +delete [] value_list.list_value; +default: +break; +} +template_selection = UNINITIALIZED_TEMPLATE; +} + +PCUIF__time__ind PCUIF__time__ind_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 @PCUIF_Types.PCUIF_time_ind."); +PCUIF__time__ind ret_val; +if (single_value->field_fn.is_bound()) { +ret_val.fn() = single_value->field_fn.valueof(); +} +return ret_val; +} + +void PCUIF__time__ind_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) +TTCN_error("Setting an invalid list for a template of type @PCUIF_Types.PCUIF_time_ind."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new PCUIF__time__ind_template[list_length]; +} + +PCUIF__time__ind_template& PCUIF__time__ind_template::list_item(unsigned int list_index) const +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) +TTCN_error("Accessing a list element of a non-list template of type @PCUIF_Types.PCUIF_time_ind."); +if (list_index >= value_list.n_values) +TTCN_error("Index overflow in a value list template of type @PCUIF_Types.PCUIF_time_ind."); +return value_list.list_value[list_index]; +} + +INTEGER_template& PCUIF__time__ind_template::fn() +{ +set_specific(); +return single_value->field_fn; +} + +const INTEGER_template& PCUIF__time__ind_template::fn() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field fn of a non-specific template of type @PCUIF_Types.PCUIF_time_ind."); +return single_value->field_fn; +} + +int PCUIF__time__ind_template::size_of() const +{ + if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_time_ind which has an ifpresent attribute."); + switch (template_selection) + { + case SPECIFIC_VALUE: + return 1; + case VALUE_LIST: + { + if (value_list.n_values<1) + TTCN_error("Internal error: Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_time_ind 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 @PCUIF_Types.PCUIF_time_ind containing a value list with different sizes."); + } + return item_size; + } + case OMIT_VALUE: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_time_ind containing omit value."); + case ANY_VALUE: + case ANY_OR_OMIT: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_time_ind containing */? value."); + case COMPLEMENTED_LIST: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_time_ind containing complemented list."); + default: + TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_time_ind."); + } + return 0; +} + +void PCUIF__time__ind_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_str("{ fn := "); +single_value->field_fn.log(); +TTCN_Logger::log_event_str(" }"); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { +if (list_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[list_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void PCUIF__time__ind_template::log_match(const PCUIF__time__ind& 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_fn.match(match_value.fn(), legacy)){ +TTCN_Logger::log_logmatch_info(".fn"); +single_value->field_fn.log_match(match_value.fn(), 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("{ fn := "); +single_value->field_fn.log_match(match_value.fn(), 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 PCUIF__time__ind_template::encode_text(Text_Buf& text_buf) const +{ +encode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value->field_fn.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 @PCUIF_Types.PCUIF_time_ind."); +} +} + +void PCUIF__time__ind_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_fn.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 PCUIF__time__ind_template[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 @PCUIF_Types.PCUIF_time_ind."); +} +} + +void PCUIF__time__ind_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: { + PCUIF__time__ind_template new_temp; + new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); + for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) fn().set_param(*param.get_elem(0)); + 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(), "fn")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + fn().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @PCUIF_Types.PCUIF_time_ind: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record template", "@PCUIF_Types.PCUIF_time_ind"); + } + is_ifpresent = param.get_ifpresent(); +} + +void PCUIF__time__ind_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_fn.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_time_ind"); +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 : "@PCUIF_Types.PCUIF_time_ind"); +} + +boolean PCUIF__time__ind_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean PCUIF__time__ind_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) sapi().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) chan__needed().set_param(*param.get_elem(1)); + if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) identity__lv().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(), "sapi")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + sapi().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "chan_needed")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + chan__needed().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "identity_lv")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + identity__lv().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @PCUIF_Types.PCUIF_pag_req: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record value", "@PCUIF_Types.PCUIF_pag_req"); + } +} + +void PCUIF__pag__req::set_implicit_omit() +{ +if (sapi().is_bound()) sapi().set_implicit_omit(); +if (chan__needed().is_bound()) chan__needed().set_implicit_omit(); +if (identity__lv().is_bound()) identity__lv().set_implicit_omit(); +} + +void PCUIF__pag__req::encode_text(Text_Buf& text_buf) const +{ +field_sapi.encode_text(text_buf); +field_chan__needed.encode_text(text_buf); +field_identity__lv.encode_text(text_buf); +} + +void PCUIF__pag__req::decode_text(Text_Buf& text_buf) +{ +field_sapi.decode_text(text_buf); +field_chan__needed.decode_text(text_buf); +field_identity__lv.decode_text(text_buf); +} + +void PCUIF__pag__req::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void PCUIF__pag__req::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int PCUIF__pag__req::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) +{ (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; + decoded_field_length = field_sapi.RAW_decode(PCUIF__pag__req_sapi_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_chan__needed.RAW_decode(PCUIF__pag__req_chan__needed_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_identity__lv.RAW_decode(PCUIF__pag__req_identity__lv_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return 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 PCUIF__pag__req::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, PCUIF__pag__req_sapi_descr_.raw); + myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PCUIF__pag__req_chan__needed_descr_.raw); + myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, PCUIF__pag__req_identity__lv_descr_.raw); + encoded_length += field_sapi.RAW_encode(PCUIF__pag__req_sapi_descr_, *myleaf.body.node.nodes[0]); + encoded_length += field_chan__needed.RAW_encode(PCUIF__pag__req_chan__needed_descr_, *myleaf.body.node.nodes[1]); + encoded_length += field_identity__lv.RAW_encode(PCUIF__pag__req_identity__lv_descr_, *myleaf.body.node.nodes[2]); + return myleaf.length = encoded_length; +} + +struct PCUIF__pag__req_template::single_value_struct { +PCUIF__Sapi_template field_sapi; +INTEGER_template field_chan__needed; +OCTETSTRING_template field_identity__lv; +}; + +void PCUIF__pag__req_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_sapi = ANY_VALUE; +single_value->field_chan__needed = ANY_VALUE; +single_value->field_identity__lv = ANY_VALUE; +} +} +} + +void PCUIF__pag__req_template::copy_value(const PCUIF__pag__req& other_value) +{ +single_value = new single_value_struct; +if (other_value.sapi().is_bound()) { + single_value->field_sapi = other_value.sapi(); +} else { + single_value->field_sapi.clean_up(); +} +if (other_value.chan__needed().is_bound()) { + single_value->field_chan__needed = other_value.chan__needed(); +} else { + single_value->field_chan__needed.clean_up(); +} +if (other_value.identity__lv().is_bound()) { + single_value->field_identity__lv = other_value.identity__lv(); +} else { + single_value->field_identity__lv.clean_up(); +} +set_selection(SPECIFIC_VALUE); +} + +void PCUIF__pag__req_template::copy_template(const PCUIF__pag__req_template& other_value) +{ +switch (other_value.template_selection) { +case SPECIFIC_VALUE: +single_value = new single_value_struct; +if (UNINITIALIZED_TEMPLATE != other_value.sapi().get_selection()) { +single_value->field_sapi = other_value.sapi(); +} else { +single_value->field_sapi.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.chan__needed().get_selection()) { +single_value->field_chan__needed = other_value.chan__needed(); +} else { +single_value->field_chan__needed.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.identity__lv().get_selection()) { +single_value->field_identity__lv = other_value.identity__lv(); +} else { +single_value->field_identity__lv.clean_up(); +} +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new PCUIF__pag__req_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_pag_req."); +break; +} +set_selection(other_value); +} + +PCUIF__pag__req_template::PCUIF__pag__req_template() +{ +} + +PCUIF__pag__req_template::PCUIF__pag__req_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +PCUIF__pag__req_template::PCUIF__pag__req_template(const PCUIF__pag__req& other_value) +{ +copy_value(other_value); +} + +PCUIF__pag__req_template::PCUIF__pag__req_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const PCUIF__pag__req&)other_value); +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of type @PCUIF_Types.PCUIF_pag_req from an unbound optional field."); +} +} + +PCUIF__pag__req_template::PCUIF__pag__req_template(const PCUIF__pag__req_template& other_value) +: Base_Template() +{ +copy_template(other_value); +} + +PCUIF__pag__req_template::~PCUIF__pag__req_template() +{ +clean_up(); +} + +PCUIF__pag__req_template& PCUIF__pag__req_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +PCUIF__pag__req_template& PCUIF__pag__req_template::operator=(const PCUIF__pag__req& other_value) +{ +clean_up(); +copy_value(other_value); +return *this; +} + +PCUIF__pag__req_template& PCUIF__pag__req_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const PCUIF__pag__req&)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 @PCUIF_Types.PCUIF_pag_req."); +} +return *this; +} + +PCUIF__pag__req_template& PCUIF__pag__req_template::operator=(const PCUIF__pag__req_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean PCUIF__pag__req_template::match(const PCUIF__pag__req& 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.sapi().is_bound()) return FALSE; +if(!single_value->field_sapi.match(other_value.sapi(), legacy))return FALSE; +if(!other_value.chan__needed().is_bound()) return FALSE; +if(!single_value->field_chan__needed.match(other_value.chan__needed(), legacy))return FALSE; +if(!other_value.identity__lv().is_bound()) return FALSE; +if(!single_value->field_identity__lv.match(other_value.identity__lv(), legacy))return FALSE; +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_pag_req."); +} +return FALSE; +} + +boolean PCUIF__pag__req_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +if (template_selection != SPECIFIC_VALUE) return TRUE; +if (single_value->field_sapi.is_bound()) return TRUE; +if (single_value->field_chan__needed.is_bound()) return TRUE; +if (single_value->field_identity__lv.is_bound()) return TRUE; +return FALSE; +} + +boolean PCUIF__pag__req_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +if (!single_value->field_sapi.is_value()) return FALSE; +if (!single_value->field_chan__needed.is_value()) return FALSE; +if (!single_value->field_identity__lv.is_value()) return FALSE; +return TRUE; +} + +void PCUIF__pag__req_template::clean_up() +{ +switch (template_selection) { +case SPECIFIC_VALUE: +delete single_value; +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +delete [] value_list.list_value; +default: +break; +} +template_selection = UNINITIALIZED_TEMPLATE; +} + +PCUIF__pag__req PCUIF__pag__req_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 @PCUIF_Types.PCUIF_pag_req."); +PCUIF__pag__req ret_val; +if (single_value->field_sapi.is_bound()) { +ret_val.sapi() = single_value->field_sapi.valueof(); +} +if (single_value->field_chan__needed.is_bound()) { +ret_val.chan__needed() = single_value->field_chan__needed.valueof(); +} +if (single_value->field_identity__lv.is_bound()) { +ret_val.identity__lv() = single_value->field_identity__lv.valueof(); +} +return ret_val; +} + +void PCUIF__pag__req_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) +TTCN_error("Setting an invalid list for a template of type @PCUIF_Types.PCUIF_pag_req."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new PCUIF__pag__req_template[list_length]; +} + +PCUIF__pag__req_template& PCUIF__pag__req_template::list_item(unsigned int list_index) const +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) +TTCN_error("Accessing a list element of a non-list template of type @PCUIF_Types.PCUIF_pag_req."); +if (list_index >= value_list.n_values) +TTCN_error("Index overflow in a value list template of type @PCUIF_Types.PCUIF_pag_req."); +return value_list.list_value[list_index]; +} + +PCUIF__Sapi_template& PCUIF__pag__req_template::sapi() +{ +set_specific(); +return single_value->field_sapi; +} + +const PCUIF__Sapi_template& PCUIF__pag__req_template::sapi() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field sapi of a non-specific template of type @PCUIF_Types.PCUIF_pag_req."); +return single_value->field_sapi; +} + +INTEGER_template& PCUIF__pag__req_template::chan__needed() +{ +set_specific(); +return single_value->field_chan__needed; +} + +const INTEGER_template& PCUIF__pag__req_template::chan__needed() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field chan_needed of a non-specific template of type @PCUIF_Types.PCUIF_pag_req."); +return single_value->field_chan__needed; +} + +OCTETSTRING_template& PCUIF__pag__req_template::identity__lv() +{ +set_specific(); +return single_value->field_identity__lv; +} + +const OCTETSTRING_template& PCUIF__pag__req_template::identity__lv() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field identity_lv of a non-specific template of type @PCUIF_Types.PCUIF_pag_req."); +return single_value->field_identity__lv; +} + +int PCUIF__pag__req_template::size_of() const +{ + if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_pag_req 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 @PCUIF_Types.PCUIF_pag_req 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 @PCUIF_Types.PCUIF_pag_req containing a value list with different sizes."); + } + return item_size; + } + case OMIT_VALUE: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_pag_req containing omit value."); + case ANY_VALUE: + case ANY_OR_OMIT: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_pag_req containing */? value."); + case COMPLEMENTED_LIST: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_pag_req containing complemented list."); + default: + TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_pag_req."); + } + return 0; +} + +void PCUIF__pag__req_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_str("{ sapi := "); +single_value->field_sapi.log(); +TTCN_Logger::log_event_str(", chan_needed := "); +single_value->field_chan__needed.log(); +TTCN_Logger::log_event_str(", identity_lv := "); +single_value->field_identity__lv.log(); +TTCN_Logger::log_event_str(" }"); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { +if (list_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[list_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void PCUIF__pag__req_template::log_match(const PCUIF__pag__req& 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_sapi.match(match_value.sapi(), legacy)){ +TTCN_Logger::log_logmatch_info(".sapi"); +single_value->field_sapi.log_match(match_value.sapi(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_chan__needed.match(match_value.chan__needed(), legacy)){ +TTCN_Logger::log_logmatch_info(".chan_needed"); +single_value->field_chan__needed.log_match(match_value.chan__needed(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_identity__lv.match(match_value.identity__lv(), legacy)){ +TTCN_Logger::log_logmatch_info(".identity_lv"); +single_value->field_identity__lv.log_match(match_value.identity__lv(), 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("{ sapi := "); +single_value->field_sapi.log_match(match_value.sapi(), legacy); +TTCN_Logger::log_event_str(", chan_needed := "); +single_value->field_chan__needed.log_match(match_value.chan__needed(), legacy); +TTCN_Logger::log_event_str(", identity_lv := "); +single_value->field_identity__lv.log_match(match_value.identity__lv(), 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 PCUIF__pag__req_template::encode_text(Text_Buf& text_buf) const +{ +encode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value->field_sapi.encode_text(text_buf); +single_value->field_chan__needed.encode_text(text_buf); +single_value->field_identity__lv.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 @PCUIF_Types.PCUIF_pag_req."); +} +} + +void PCUIF__pag__req_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_sapi.decode_text(text_buf); +single_value->field_chan__needed.decode_text(text_buf); +single_value->field_identity__lv.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 PCUIF__pag__req_template[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 @PCUIF_Types.PCUIF_pag_req."); +} +} + +void PCUIF__pag__req_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: { + PCUIF__pag__req_template new_temp; + new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); + for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) sapi().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) chan__needed().set_param(*param.get_elem(1)); + if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) identity__lv().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(), "sapi")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + sapi().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "chan_needed")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + chan__needed().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "identity_lv")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + identity__lv().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @PCUIF_Types.PCUIF_pag_req: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record template", "@PCUIF_Types.PCUIF_pag_req"); + } + is_ifpresent = param.get_ifpresent(); +} + +void PCUIF__pag__req_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_sapi.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_pag_req"); +single_value->field_chan__needed.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_pag_req"); +single_value->field_identity__lv.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_pag_req"); +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 : "@PCUIF_Types.PCUIF_pag_req"); +} + +boolean PCUIF__pag__req_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean PCUIF__pag__req_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) tlli().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ra__id().set_param(*param.get_elem(1)); + if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) cause().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(), "tlli")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + tlli().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "ra_id")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + ra__id().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "cause")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + cause().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @PCUIF_Types.PCUIF_susp_req: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record value", "@PCUIF_Types.PCUIF_susp_req"); + } +} + +void PCUIF__susp__req::set_implicit_omit() +{ +if (tlli().is_bound()) tlli().set_implicit_omit(); +if (ra__id().is_bound()) ra__id().set_implicit_omit(); +if (cause().is_bound()) cause().set_implicit_omit(); +} + +void PCUIF__susp__req::encode_text(Text_Buf& text_buf) const +{ +field_tlli.encode_text(text_buf); +field_ra__id.encode_text(text_buf); +field_cause.encode_text(text_buf); +} + +void PCUIF__susp__req::decode_text(Text_Buf& text_buf) +{ +field_tlli.decode_text(text_buf); +field_ra__id.decode_text(text_buf); +field_cause.decode_text(text_buf); +} + +void PCUIF__susp__req::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void PCUIF__susp__req::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int PCUIF__susp__req::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) +{ (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; + decoded_field_length = field_tlli.RAW_decode(PCUIF__susp__req_tlli_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_ra__id.RAW_decode(PCUIF__susp__req_ra__id_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_cause.RAW_decode(PCUIF__susp__req_cause_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return 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 PCUIF__susp__req::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, PCUIF__susp__req_tlli_descr_.raw); + myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PCUIF__susp__req_ra__id_descr_.raw); + myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, PCUIF__susp__req_cause_descr_.raw); + encoded_length += field_tlli.RAW_encode(PCUIF__susp__req_tlli_descr_, *myleaf.body.node.nodes[0]); + encoded_length += field_ra__id.RAW_encode(PCUIF__susp__req_ra__id_descr_, *myleaf.body.node.nodes[1]); + encoded_length += field_cause.RAW_encode(PCUIF__susp__req_cause_descr_, *myleaf.body.node.nodes[2]); + return myleaf.length = encoded_length; +} + +struct PCUIF__susp__req_template::single_value_struct { +OCTETSTRING_template field_tlli; +OCTETSTRING_template field_ra__id; +INTEGER_template field_cause; +}; + +void PCUIF__susp__req_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_tlli = ANY_VALUE; +single_value->field_ra__id = ANY_VALUE; +single_value->field_cause = ANY_VALUE; +} +} +} + +void PCUIF__susp__req_template::copy_value(const PCUIF__susp__req& other_value) +{ +single_value = new single_value_struct; +if (other_value.tlli().is_bound()) { + single_value->field_tlli = other_value.tlli(); +} else { + single_value->field_tlli.clean_up(); +} +if (other_value.ra__id().is_bound()) { + single_value->field_ra__id = other_value.ra__id(); +} else { + single_value->field_ra__id.clean_up(); +} +if (other_value.cause().is_bound()) { + single_value->field_cause = other_value.cause(); +} else { + single_value->field_cause.clean_up(); +} +set_selection(SPECIFIC_VALUE); +} + +void PCUIF__susp__req_template::copy_template(const PCUIF__susp__req_template& other_value) +{ +switch (other_value.template_selection) { +case SPECIFIC_VALUE: +single_value = new single_value_struct; +if (UNINITIALIZED_TEMPLATE != other_value.tlli().get_selection()) { +single_value->field_tlli = other_value.tlli(); +} else { +single_value->field_tlli.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.ra__id().get_selection()) { +single_value->field_ra__id = other_value.ra__id(); +} else { +single_value->field_ra__id.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.cause().get_selection()) { +single_value->field_cause = other_value.cause(); +} else { +single_value->field_cause.clean_up(); +} +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new PCUIF__susp__req_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_susp_req."); +break; +} +set_selection(other_value); +} + +PCUIF__susp__req_template::PCUIF__susp__req_template() +{ +} + +PCUIF__susp__req_template::PCUIF__susp__req_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +PCUIF__susp__req_template::PCUIF__susp__req_template(const PCUIF__susp__req& other_value) +{ +copy_value(other_value); +} + +PCUIF__susp__req_template::PCUIF__susp__req_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const PCUIF__susp__req&)other_value); +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of type @PCUIF_Types.PCUIF_susp_req from an unbound optional field."); +} +} + +PCUIF__susp__req_template::PCUIF__susp__req_template(const PCUIF__susp__req_template& other_value) +: Base_Template() +{ +copy_template(other_value); +} + +PCUIF__susp__req_template::~PCUIF__susp__req_template() +{ +clean_up(); +} + +PCUIF__susp__req_template& PCUIF__susp__req_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +PCUIF__susp__req_template& PCUIF__susp__req_template::operator=(const PCUIF__susp__req& other_value) +{ +clean_up(); +copy_value(other_value); +return *this; +} + +PCUIF__susp__req_template& PCUIF__susp__req_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const PCUIF__susp__req&)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 @PCUIF_Types.PCUIF_susp_req."); +} +return *this; +} + +PCUIF__susp__req_template& PCUIF__susp__req_template::operator=(const PCUIF__susp__req_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean PCUIF__susp__req_template::match(const PCUIF__susp__req& 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.tlli().is_bound()) return FALSE; +if(!single_value->field_tlli.match(other_value.tlli(), legacy))return FALSE; +if(!other_value.ra__id().is_bound()) return FALSE; +if(!single_value->field_ra__id.match(other_value.ra__id(), legacy))return FALSE; +if(!other_value.cause().is_bound()) return FALSE; +if(!single_value->field_cause.match(other_value.cause(), legacy))return FALSE; +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_susp_req."); +} +return FALSE; +} + +boolean PCUIF__susp__req_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +if (template_selection != SPECIFIC_VALUE) return TRUE; +if (single_value->field_tlli.is_bound()) return TRUE; +if (single_value->field_ra__id.is_bound()) return TRUE; +if (single_value->field_cause.is_bound()) return TRUE; +return FALSE; +} + +boolean PCUIF__susp__req_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +if (!single_value->field_tlli.is_value()) return FALSE; +if (!single_value->field_ra__id.is_value()) return FALSE; +if (!single_value->field_cause.is_value()) return FALSE; +return TRUE; +} + +void PCUIF__susp__req_template::clean_up() +{ +switch (template_selection) { +case SPECIFIC_VALUE: +delete single_value; +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +delete [] value_list.list_value; +default: +break; +} +template_selection = UNINITIALIZED_TEMPLATE; +} + +PCUIF__susp__req PCUIF__susp__req_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 @PCUIF_Types.PCUIF_susp_req."); +PCUIF__susp__req ret_val; +if (single_value->field_tlli.is_bound()) { +ret_val.tlli() = single_value->field_tlli.valueof(); +} +if (single_value->field_ra__id.is_bound()) { +ret_val.ra__id() = single_value->field_ra__id.valueof(); +} +if (single_value->field_cause.is_bound()) { +ret_val.cause() = single_value->field_cause.valueof(); +} +return ret_val; +} + +void PCUIF__susp__req_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) +TTCN_error("Setting an invalid list for a template of type @PCUIF_Types.PCUIF_susp_req."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new PCUIF__susp__req_template[list_length]; +} + +PCUIF__susp__req_template& PCUIF__susp__req_template::list_item(unsigned int list_index) const +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) +TTCN_error("Accessing a list element of a non-list template of type @PCUIF_Types.PCUIF_susp_req."); +if (list_index >= value_list.n_values) +TTCN_error("Index overflow in a value list template of type @PCUIF_Types.PCUIF_susp_req."); +return value_list.list_value[list_index]; +} + +OCTETSTRING_template& PCUIF__susp__req_template::tlli() +{ +set_specific(); +return single_value->field_tlli; +} + +const OCTETSTRING_template& PCUIF__susp__req_template::tlli() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field tlli of a non-specific template of type @PCUIF_Types.PCUIF_susp_req."); +return single_value->field_tlli; +} + +OCTETSTRING_template& PCUIF__susp__req_template::ra__id() +{ +set_specific(); +return single_value->field_ra__id; +} + +const OCTETSTRING_template& PCUIF__susp__req_template::ra__id() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field ra_id of a non-specific template of type @PCUIF_Types.PCUIF_susp_req."); +return single_value->field_ra__id; +} + +INTEGER_template& PCUIF__susp__req_template::cause() +{ +set_specific(); +return single_value->field_cause; +} + +const INTEGER_template& PCUIF__susp__req_template::cause() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field cause of a non-specific template of type @PCUIF_Types.PCUIF_susp_req."); +return single_value->field_cause; +} + +int PCUIF__susp__req_template::size_of() const +{ + if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_susp_req 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 @PCUIF_Types.PCUIF_susp_req 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 @PCUIF_Types.PCUIF_susp_req containing a value list with different sizes."); + } + return item_size; + } + case OMIT_VALUE: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_susp_req containing omit value."); + case ANY_VALUE: + case ANY_OR_OMIT: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_susp_req containing */? value."); + case COMPLEMENTED_LIST: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_susp_req containing complemented list."); + default: + TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_susp_req."); + } + return 0; +} + +void PCUIF__susp__req_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_str("{ tlli := "); +single_value->field_tlli.log(); +TTCN_Logger::log_event_str(", ra_id := "); +single_value->field_ra__id.log(); +TTCN_Logger::log_event_str(", cause := "); +single_value->field_cause.log(); +TTCN_Logger::log_event_str(" }"); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { +if (list_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[list_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void PCUIF__susp__req_template::log_match(const PCUIF__susp__req& 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_tlli.match(match_value.tlli(), legacy)){ +TTCN_Logger::log_logmatch_info(".tlli"); +single_value->field_tlli.log_match(match_value.tlli(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_ra__id.match(match_value.ra__id(), legacy)){ +TTCN_Logger::log_logmatch_info(".ra_id"); +single_value->field_ra__id.log_match(match_value.ra__id(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_cause.match(match_value.cause(), legacy)){ +TTCN_Logger::log_logmatch_info(".cause"); +single_value->field_cause.log_match(match_value.cause(), 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("{ tlli := "); +single_value->field_tlli.log_match(match_value.tlli(), legacy); +TTCN_Logger::log_event_str(", ra_id := "); +single_value->field_ra__id.log_match(match_value.ra__id(), legacy); +TTCN_Logger::log_event_str(", cause := "); +single_value->field_cause.log_match(match_value.cause(), 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 PCUIF__susp__req_template::encode_text(Text_Buf& text_buf) const +{ +encode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value->field_tlli.encode_text(text_buf); +single_value->field_ra__id.encode_text(text_buf); +single_value->field_cause.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 @PCUIF_Types.PCUIF_susp_req."); +} +} + +void PCUIF__susp__req_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_tlli.decode_text(text_buf); +single_value->field_ra__id.decode_text(text_buf); +single_value->field_cause.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 PCUIF__susp__req_template[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 @PCUIF_Types.PCUIF_susp_req."); +} +} + +void PCUIF__susp__req_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: { + PCUIF__susp__req_template new_temp; + new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); + for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) tlli().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ra__id().set_param(*param.get_elem(1)); + if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) cause().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(), "tlli")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + tlli().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "ra_id")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + ra__id().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "cause")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + cause().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @PCUIF_Types.PCUIF_susp_req: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record template", "@PCUIF_Types.PCUIF_susp_req"); + } + is_ifpresent = param.get_ifpresent(); +} + +void PCUIF__susp__req_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_tlli.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_susp_req"); +single_value->field_ra__id.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_susp_req"); +single_value->field_cause.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_susp_req"); +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 : "@PCUIF_Types.PCUIF_susp_req"); +} + +boolean PCUIF__susp__req_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean PCUIF__susp__req_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int l_idx=0; l_idxis_value(); +case ALT_data__cnf: return field_data__cnf->is_value(); +case ALT_data__cnf__dt: return field_data__cnf__dt->is_value(); +case ALT_data__ind: return field_data__ind->is_value(); +case ALT_susp__req: return field_susp__req->is_value(); +case ALT_rts__req: return field_rts__req->is_value(); +case ALT_rach__ind: return field_rach__ind->is_value(); +case ALT_txt__ind: return field_txt__ind->is_value(); +case ALT_info__ind: return field_info__ind->is_value(); +case ALT_act__req: return field_act__req->is_value(); +case ALT_time__ind: return field_time__ind->is_value(); +case ALT_pag__req: return field_pag__req->is_value(); +default: TTCN_error("Invalid selection in union is_bound");} +} + +void PCUIF__MsgUnion::clean_up() +{ +switch (union_selection) { +case ALT_data__req: + delete field_data__req; + break; +case ALT_data__cnf: + delete field_data__cnf; + break; +case ALT_data__cnf__dt: + delete field_data__cnf__dt; + break; +case ALT_data__ind: + delete field_data__ind; + break; +case ALT_susp__req: + delete field_susp__req; + break; +case ALT_rts__req: + delete field_rts__req; + break; +case ALT_rach__ind: + delete field_rach__ind; + break; +case ALT_txt__ind: + delete field_txt__ind; + break; +case ALT_info__ind: + delete field_info__ind; + break; +case ALT_act__req: + delete field_act__req; + break; +case ALT_time__ind: + delete field_time__ind; + break; +case ALT_pag__req: + delete field_pag__req; + break; +default: + break; +} +union_selection = UNBOUND_VALUE; +} + +void PCUIF__MsgUnion::log() const +{ +switch (union_selection) { +case ALT_data__req: +TTCN_Logger::log_event_str("{ data_req := "); +field_data__req->log(); +TTCN_Logger::log_event_str(" }"); +break; +case ALT_data__cnf: +TTCN_Logger::log_event_str("{ data_cnf := "); +field_data__cnf->log(); +TTCN_Logger::log_event_str(" }"); +break; +case ALT_data__cnf__dt: +TTCN_Logger::log_event_str("{ data_cnf_dt := "); +field_data__cnf__dt->log(); +TTCN_Logger::log_event_str(" }"); +break; +case ALT_data__ind: +TTCN_Logger::log_event_str("{ data_ind := "); +field_data__ind->log(); +TTCN_Logger::log_event_str(" }"); +break; +case ALT_susp__req: +TTCN_Logger::log_event_str("{ susp_req := "); +field_susp__req->log(); +TTCN_Logger::log_event_str(" }"); +break; +case ALT_rts__req: +TTCN_Logger::log_event_str("{ rts_req := "); +field_rts__req->log(); +TTCN_Logger::log_event_str(" }"); +break; +case ALT_rach__ind: +TTCN_Logger::log_event_str("{ rach_ind := "); +field_rach__ind->log(); +TTCN_Logger::log_event_str(" }"); +break; +case ALT_txt__ind: +TTCN_Logger::log_event_str("{ txt_ind := "); +field_txt__ind->log(); +TTCN_Logger::log_event_str(" }"); +break; +case ALT_info__ind: +TTCN_Logger::log_event_str("{ info_ind := "); +field_info__ind->log(); +TTCN_Logger::log_event_str(" }"); +break; +case ALT_act__req: +TTCN_Logger::log_event_str("{ act_req := "); +field_act__req->log(); +TTCN_Logger::log_event_str(" }"); +break; +case ALT_time__ind: +TTCN_Logger::log_event_str("{ time_ind := "); +field_time__ind->log(); +TTCN_Logger::log_event_str(" }"); +break; +case ALT_pag__req: +TTCN_Logger::log_event_str("{ pag_req := "); +field_pag__req->log(); +TTCN_Logger::log_event_str(" }"); +break; +default: +TTCN_Logger::log_event_unbound(); +} +} + +void PCUIF__MsgUnion::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); + if (!strcmp(mp_last->get_id()->get_name(), "data_req")) { + data__req().set_param(*mp_last); + if (!data__req().is_bound()) clean_up(); + return; + } + if (!strcmp(mp_last->get_id()->get_name(), "data_cnf")) { + data__cnf().set_param(*mp_last); + if (!data__cnf().is_bound()) clean_up(); + return; + } + if (!strcmp(mp_last->get_id()->get_name(), "data_cnf_dt")) { + data__cnf__dt().set_param(*mp_last); + if (!data__cnf__dt().is_bound()) clean_up(); + return; + } + if (!strcmp(mp_last->get_id()->get_name(), "data_ind")) { + data__ind().set_param(*mp_last); + if (!data__ind().is_bound()) clean_up(); + return; + } + if (!strcmp(mp_last->get_id()->get_name(), "susp_req")) { + susp__req().set_param(*mp_last); + if (!susp__req().is_bound()) clean_up(); + return; + } + if (!strcmp(mp_last->get_id()->get_name(), "rts_req")) { + rts__req().set_param(*mp_last); + if (!rts__req().is_bound()) clean_up(); + return; + } + if (!strcmp(mp_last->get_id()->get_name(), "rach_ind")) { + rach__ind().set_param(*mp_last); + if (!rach__ind().is_bound()) clean_up(); + return; + } + if (!strcmp(mp_last->get_id()->get_name(), "txt_ind")) { + txt__ind().set_param(*mp_last); + if (!txt__ind().is_bound()) clean_up(); + return; + } + if (!strcmp(mp_last->get_id()->get_name(), "info_ind")) { + info__ind().set_param(*mp_last); + if (!info__ind().is_bound()) clean_up(); + return; + } + if (!strcmp(mp_last->get_id()->get_name(), "act_req")) { + act__req().set_param(*mp_last); + if (!act__req().is_bound()) clean_up(); + return; + } + if (!strcmp(mp_last->get_id()->get_name(), "time_ind")) { + time__ind().set_param(*mp_last); + if (!time__ind().is_bound()) clean_up(); + return; + } + if (!strcmp(mp_last->get_id()->get_name(), "pag_req")) { + pag__req().set_param(*mp_last); + if (!pag__req().is_bound()) clean_up(); + return; + } + mp_last->error("Field %s does not exist in type @PCUIF_Types.PCUIF_MsgUnion.", mp_last->get_id()->get_name()); +} + +void PCUIF__MsgUnion::set_implicit_omit() +{ +switch (union_selection) { +case ALT_data__req: +field_data__req->set_implicit_omit(); break; +case ALT_data__cnf: +field_data__cnf->set_implicit_omit(); break; +case ALT_data__cnf__dt: +field_data__cnf__dt->set_implicit_omit(); break; +case ALT_data__ind: +field_data__ind->set_implicit_omit(); break; +case ALT_susp__req: +field_susp__req->set_implicit_omit(); break; +case ALT_rts__req: +field_rts__req->set_implicit_omit(); break; +case ALT_rach__ind: +field_rach__ind->set_implicit_omit(); break; +case ALT_txt__ind: +field_txt__ind->set_implicit_omit(); break; +case ALT_info__ind: +field_info__ind->set_implicit_omit(); break; +case ALT_act__req: +field_act__req->set_implicit_omit(); break; +case ALT_time__ind: +field_time__ind->set_implicit_omit(); break; +case ALT_pag__req: +field_pag__req->set_implicit_omit(); break; +default: break; +} +} + +void PCUIF__MsgUnion::encode_text(Text_Buf& text_buf) const +{ +text_buf.push_int(union_selection); +switch (union_selection) { +case ALT_data__req: +field_data__req->encode_text(text_buf); +break; +case ALT_data__cnf: +field_data__cnf->encode_text(text_buf); +break; +case ALT_data__cnf__dt: +field_data__cnf__dt->encode_text(text_buf); +break; +case ALT_data__ind: +field_data__ind->encode_text(text_buf); +break; +case ALT_susp__req: +field_susp__req->encode_text(text_buf); +break; +case ALT_rts__req: +field_rts__req->encode_text(text_buf); +break; +case ALT_rach__ind: +field_rach__ind->encode_text(text_buf); +break; +case ALT_txt__ind: +field_txt__ind->encode_text(text_buf); +break; +case ALT_info__ind: +field_info__ind->encode_text(text_buf); +break; +case ALT_act__req: +field_act__req->encode_text(text_buf); +break; +case ALT_time__ind: +field_time__ind->encode_text(text_buf); +break; +case ALT_pag__req: +field_pag__req->encode_text(text_buf); +break; +default: +TTCN_error("Text encoder: Encoding an unbound value of union type @PCUIF_Types.PCUIF_MsgUnion."); +} +} + +void PCUIF__MsgUnion::decode_text(Text_Buf& text_buf) +{ +switch ((union_selection_type)text_buf.pull_int().get_val()) { +case ALT_data__req: +data__req().decode_text(text_buf); +break; +case ALT_data__cnf: +data__cnf().decode_text(text_buf); +break; +case ALT_data__cnf__dt: +data__cnf__dt().decode_text(text_buf); +break; +case ALT_data__ind: +data__ind().decode_text(text_buf); +break; +case ALT_susp__req: +susp__req().decode_text(text_buf); +break; +case ALT_rts__req: +rts__req().decode_text(text_buf); +break; +case ALT_rach__ind: +rach__ind().decode_text(text_buf); +break; +case ALT_txt__ind: +txt__ind().decode_text(text_buf); +break; +case ALT_info__ind: +info__ind().decode_text(text_buf); +break; +case ALT_act__req: +act__req().decode_text(text_buf); +break; +case ALT_time__ind: +time__ind().decode_text(text_buf); +break; +case ALT_pag__req: +pag__req().decode_text(text_buf); +break; +default: +TTCN_error("Text decoder: Unrecognized union selector was received for type @PCUIF_Types.PCUIF_MsgUnion."); +} +} + +void PCUIF__MsgUnion::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void PCUIF__MsgUnion::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int PCUIF__MsgUnion::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) +{ + 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: + decoded_length = data__req().RAW_decode(PCUIF__MsgUnion_data__req_descr_, p_buf, limit, top_bit_ord, no_err); + break; + case 1: + decoded_length = data__cnf().RAW_decode(PCUIF__MsgUnion_data__cnf_descr_, p_buf, limit, top_bit_ord, no_err); + break; + case 2: + decoded_length = data__cnf__dt().RAW_decode(PCUIF__MsgUnion_data__cnf__dt_descr_, p_buf, limit, top_bit_ord, no_err); + break; + case 3: + decoded_length = data__ind().RAW_decode(PCUIF__MsgUnion_data__ind_descr_, p_buf, limit, top_bit_ord, no_err); + break; + case 4: + decoded_length = susp__req().RAW_decode(PCUIF__MsgUnion_susp__req_descr_, p_buf, limit, top_bit_ord, no_err); + break; + case 5: + decoded_length = rts__req().RAW_decode(PCUIF__MsgUnion_rts__req_descr_, p_buf, limit, top_bit_ord, no_err); + break; + case 6: + decoded_length = rach__ind().RAW_decode(PCUIF__MsgUnion_rach__ind_descr_, p_buf, limit, top_bit_ord, no_err); + break; + case 7: + decoded_length = txt__ind().RAW_decode(PCUIF__MsgUnion_txt__ind_descr_, p_buf, limit, top_bit_ord, no_err); + break; + case 8: + decoded_length = info__ind().RAW_decode(PCUIF__MsgUnion_info__ind_descr_, p_buf, limit, top_bit_ord, no_err); + break; + case 9: + decoded_length = act__req().RAW_decode(PCUIF__MsgUnion_act__req_descr_, p_buf, limit, top_bit_ord, no_err); + break; + case 10: + decoded_length = time__ind().RAW_decode(PCUIF__MsgUnion_time__ind_descr_, p_buf, limit, top_bit_ord, no_err); + break; + case 11: + decoded_length = pag__req().RAW_decode(PCUIF__MsgUnion_pag__req_descr_, p_buf, limit, top_bit_ord, no_err); + break; + default: break; + } + return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; + } else { + p_buf.set_pos_bit(starting_pos); + decoded_length = data__req().RAW_decode(PCUIF__MsgUnion_data__req_descr_, p_buf, limit, top_bit_ord, TRUE); + if (decoded_length >= 0) { + return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; + } + p_buf.set_pos_bit(starting_pos); + decoded_length = data__cnf().RAW_decode(PCUIF__MsgUnion_data__cnf_descr_, p_buf, limit, top_bit_ord, TRUE); + if (decoded_length >= 0) { + return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; + } + p_buf.set_pos_bit(starting_pos); + decoded_length = data__cnf__dt().RAW_decode(PCUIF__MsgUnion_data__cnf__dt_descr_, p_buf, limit, top_bit_ord, TRUE); + if (decoded_length >= 0) { + return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; + } + p_buf.set_pos_bit(starting_pos); + decoded_length = data__ind().RAW_decode(PCUIF__MsgUnion_data__ind_descr_, p_buf, limit, top_bit_ord, TRUE); + if (decoded_length >= 0) { + return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; + } + p_buf.set_pos_bit(starting_pos); + decoded_length = susp__req().RAW_decode(PCUIF__MsgUnion_susp__req_descr_, p_buf, limit, top_bit_ord, TRUE); + if (decoded_length >= 0) { + return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; + } + p_buf.set_pos_bit(starting_pos); + decoded_length = rts__req().RAW_decode(PCUIF__MsgUnion_rts__req_descr_, p_buf, limit, top_bit_ord, TRUE); + if (decoded_length >= 0) { + return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; + } + p_buf.set_pos_bit(starting_pos); + decoded_length = rach__ind().RAW_decode(PCUIF__MsgUnion_rach__ind_descr_, p_buf, limit, top_bit_ord, TRUE); + if (decoded_length >= 0) { + return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; + } + p_buf.set_pos_bit(starting_pos); + decoded_length = txt__ind().RAW_decode(PCUIF__MsgUnion_txt__ind_descr_, p_buf, limit, top_bit_ord, TRUE); + if (decoded_length >= 0) { + return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; + } + p_buf.set_pos_bit(starting_pos); + decoded_length = info__ind().RAW_decode(PCUIF__MsgUnion_info__ind_descr_, p_buf, limit, top_bit_ord, TRUE); + if (decoded_length >= 0) { + return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; + } + p_buf.set_pos_bit(starting_pos); + decoded_length = act__req().RAW_decode(PCUIF__MsgUnion_act__req_descr_, p_buf, limit, top_bit_ord, TRUE); + if (decoded_length >= 0) { + return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; + } + p_buf.set_pos_bit(starting_pos); + decoded_length = time__ind().RAW_decode(PCUIF__MsgUnion_time__ind_descr_, p_buf, limit, top_bit_ord, TRUE); + if (decoded_length >= 0) { + return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; + } + p_buf.set_pos_bit(starting_pos); + decoded_length = pag__req().RAW_decode(PCUIF__MsgUnion_pag__req_descr_, p_buf, limit, top_bit_ord, TRUE); + if (decoded_length >= 0) { + return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; + } + } + clean_up(); + return -1; +} + +int PCUIF__MsgUnion::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const +{ + int encoded_length = 0; + myleaf.isleaf = FALSE; + myleaf.body.node.num_of_nodes = 12; myleaf.body.node.nodes = init_nodes_of_enc_tree(12); + memset(myleaf.body.node.nodes, 0, 12 * sizeof(RAW_enc_tree *)); + switch (union_selection) { + case ALT_data__req: + myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 0, PCUIF__MsgUnion_data__req_descr_.raw); + encoded_length = field_data__req->RAW_encode(PCUIF__MsgUnion_data__req_descr_, *myleaf.body.node.nodes[0]); + myleaf.body.node.nodes[0]->coding_descr = &PCUIF__MsgUnion_data__req_descr_; + break; + case ALT_data__cnf: + myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 1, PCUIF__MsgUnion_data__cnf_descr_.raw); + encoded_length = field_data__cnf->RAW_encode(PCUIF__MsgUnion_data__cnf_descr_, *myleaf.body.node.nodes[1]); + myleaf.body.node.nodes[1]->coding_descr = &PCUIF__MsgUnion_data__cnf_descr_; + break; + case ALT_data__cnf__dt: + myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 2, PCUIF__MsgUnion_data__cnf__dt_descr_.raw); + encoded_length = field_data__cnf__dt->RAW_encode(PCUIF__MsgUnion_data__cnf__dt_descr_, *myleaf.body.node.nodes[2]); + myleaf.body.node.nodes[2]->coding_descr = &PCUIF__MsgUnion_data__cnf__dt_descr_; + break; + case ALT_data__ind: + myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 3, PCUIF__MsgUnion_data__ind_descr_.raw); + encoded_length = field_data__ind->RAW_encode(PCUIF__MsgUnion_data__ind_descr_, *myleaf.body.node.nodes[3]); + myleaf.body.node.nodes[3]->coding_descr = &PCUIF__MsgUnion_data__ind_descr_; + break; + case ALT_susp__req: + myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 4, PCUIF__MsgUnion_susp__req_descr_.raw); + encoded_length = field_susp__req->RAW_encode(PCUIF__MsgUnion_susp__req_descr_, *myleaf.body.node.nodes[4]); + myleaf.body.node.nodes[4]->coding_descr = &PCUIF__MsgUnion_susp__req_descr_; + break; + case ALT_rts__req: + myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 5, PCUIF__MsgUnion_rts__req_descr_.raw); + encoded_length = field_rts__req->RAW_encode(PCUIF__MsgUnion_rts__req_descr_, *myleaf.body.node.nodes[5]); + myleaf.body.node.nodes[5]->coding_descr = &PCUIF__MsgUnion_rts__req_descr_; + break; + case ALT_rach__ind: + myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 6, PCUIF__MsgUnion_rach__ind_descr_.raw); + encoded_length = field_rach__ind->RAW_encode(PCUIF__MsgUnion_rach__ind_descr_, *myleaf.body.node.nodes[6]); + myleaf.body.node.nodes[6]->coding_descr = &PCUIF__MsgUnion_rach__ind_descr_; + break; + case ALT_txt__ind: + myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 7, PCUIF__MsgUnion_txt__ind_descr_.raw); + encoded_length = field_txt__ind->RAW_encode(PCUIF__MsgUnion_txt__ind_descr_, *myleaf.body.node.nodes[7]); + myleaf.body.node.nodes[7]->coding_descr = &PCUIF__MsgUnion_txt__ind_descr_; + break; + case ALT_info__ind: + myleaf.body.node.nodes[8] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 8, PCUIF__MsgUnion_info__ind_descr_.raw); + encoded_length = field_info__ind->RAW_encode(PCUIF__MsgUnion_info__ind_descr_, *myleaf.body.node.nodes[8]); + myleaf.body.node.nodes[8]->coding_descr = &PCUIF__MsgUnion_info__ind_descr_; + break; + case ALT_act__req: + myleaf.body.node.nodes[9] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 9, PCUIF__MsgUnion_act__req_descr_.raw); + encoded_length = field_act__req->RAW_encode(PCUIF__MsgUnion_act__req_descr_, *myleaf.body.node.nodes[9]); + myleaf.body.node.nodes[9]->coding_descr = &PCUIF__MsgUnion_act__req_descr_; + break; + case ALT_time__ind: + myleaf.body.node.nodes[10] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 10, PCUIF__MsgUnion_time__ind_descr_.raw); + encoded_length = field_time__ind->RAW_encode(PCUIF__MsgUnion_time__ind_descr_, *myleaf.body.node.nodes[10]); + myleaf.body.node.nodes[10]->coding_descr = &PCUIF__MsgUnion_time__ind_descr_; + break; + case ALT_pag__req: + myleaf.body.node.nodes[11] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 11, PCUIF__MsgUnion_pag__req_descr_.raw); + encoded_length = field_pag__req->RAW_encode(PCUIF__MsgUnion_pag__req_descr_, *myleaf.body.node.nodes[11]); + myleaf.body.node.nodes[11]->coding_descr = &PCUIF__MsgUnion_pag__req_descr_; + break; + default: + TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); + } + return encoded_length; +} + +void PCUIF__MsgUnion_template::copy_value(const PCUIF__MsgUnion& other_value) +{ +single_value.union_selection = other_value.get_selection(); +switch (single_value.union_selection) { +case PCUIF__MsgUnion::ALT_data__req: +single_value.field_data__req = new PCUIF__data_template(other_value.data__req()); +break; +case PCUIF__MsgUnion::ALT_data__cnf: +single_value.field_data__cnf = new PCUIF__data_template(other_value.data__cnf()); +break; +case PCUIF__MsgUnion::ALT_data__cnf__dt: +single_value.field_data__cnf__dt = new PCUIF__data__cnf__dt_template(other_value.data__cnf__dt()); +break; +case PCUIF__MsgUnion::ALT_data__ind: +single_value.field_data__ind = new PCUIF__data_template(other_value.data__ind()); +break; +case PCUIF__MsgUnion::ALT_susp__req: +single_value.field_susp__req = new PCUIF__susp__req_template(other_value.susp__req()); +break; +case PCUIF__MsgUnion::ALT_rts__req: +single_value.field_rts__req = new PCUIF__rts__req_template(other_value.rts__req()); +break; +case PCUIF__MsgUnion::ALT_rach__ind: +single_value.field_rach__ind = new PCUIF__rach__ind_template(other_value.rach__ind()); +break; +case PCUIF__MsgUnion::ALT_txt__ind: +single_value.field_txt__ind = new PCUIF__txt__ind_template(other_value.txt__ind()); +break; +case PCUIF__MsgUnion::ALT_info__ind: +single_value.field_info__ind = new PCUIF__info__ind_template(other_value.info__ind()); +break; +case PCUIF__MsgUnion::ALT_act__req: +single_value.field_act__req = new PCUIF__act__req_template(other_value.act__req()); +break; +case PCUIF__MsgUnion::ALT_time__ind: +single_value.field_time__ind = new PCUIF__time__ind_template(other_value.time__ind()); +break; +case PCUIF__MsgUnion::ALT_pag__req: +single_value.field_pag__req = new PCUIF__pag__req_template(other_value.pag__req()); +break; +default: +TTCN_error("Initializing a template with an unbound value of type @PCUIF_Types.PCUIF_MsgUnion."); +} +set_selection(SPECIFIC_VALUE); +} + +void PCUIF__MsgUnion_template::copy_template(const PCUIF__MsgUnion_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 PCUIF__MsgUnion::ALT_data__req: +single_value.field_data__req = new PCUIF__data_template(*other_value.single_value.field_data__req); +break; +case PCUIF__MsgUnion::ALT_data__cnf: +single_value.field_data__cnf = new PCUIF__data_template(*other_value.single_value.field_data__cnf); +break; +case PCUIF__MsgUnion::ALT_data__cnf__dt: +single_value.field_data__cnf__dt = new PCUIF__data__cnf__dt_template(*other_value.single_value.field_data__cnf__dt); +break; +case PCUIF__MsgUnion::ALT_data__ind: +single_value.field_data__ind = new PCUIF__data_template(*other_value.single_value.field_data__ind); +break; +case PCUIF__MsgUnion::ALT_susp__req: +single_value.field_susp__req = new PCUIF__susp__req_template(*other_value.single_value.field_susp__req); +break; +case PCUIF__MsgUnion::ALT_rts__req: +single_value.field_rts__req = new PCUIF__rts__req_template(*other_value.single_value.field_rts__req); +break; +case PCUIF__MsgUnion::ALT_rach__ind: +single_value.field_rach__ind = new PCUIF__rach__ind_template(*other_value.single_value.field_rach__ind); +break; +case PCUIF__MsgUnion::ALT_txt__ind: +single_value.field_txt__ind = new PCUIF__txt__ind_template(*other_value.single_value.field_txt__ind); +break; +case PCUIF__MsgUnion::ALT_info__ind: +single_value.field_info__ind = new PCUIF__info__ind_template(*other_value.single_value.field_info__ind); +break; +case PCUIF__MsgUnion::ALT_act__req: +single_value.field_act__req = new PCUIF__act__req_template(*other_value.single_value.field_act__req); +break; +case PCUIF__MsgUnion::ALT_time__ind: +single_value.field_time__ind = new PCUIF__time__ind_template(*other_value.single_value.field_time__ind); +break; +case PCUIF__MsgUnion::ALT_pag__req: +single_value.field_pag__req = new PCUIF__pag__req_template(*other_value.single_value.field_pag__req); +break; +default: +TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @PCUIF_Types.PCUIF_MsgUnion."); +} +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new PCUIF__MsgUnion_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized template of union type @PCUIF_Types.PCUIF_MsgUnion."); +} +set_selection(other_value); +} + +PCUIF__MsgUnion_template::PCUIF__MsgUnion_template() +{ +} + +PCUIF__MsgUnion_template::PCUIF__MsgUnion_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +PCUIF__MsgUnion_template::PCUIF__MsgUnion_template(const PCUIF__MsgUnion& other_value) +{ +copy_value(other_value); +} + +PCUIF__MsgUnion_template::PCUIF__MsgUnion_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const PCUIF__MsgUnion&)other_value); +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of union type @PCUIF_Types.PCUIF_MsgUnion from an unbound optional field."); +} +} + +PCUIF__MsgUnion_template::PCUIF__MsgUnion_template(const PCUIF__MsgUnion_template& other_value) +: Base_Template(){ +copy_template(other_value); +} + +PCUIF__MsgUnion_template::~PCUIF__MsgUnion_template() +{ +clean_up(); +} + +void PCUIF__MsgUnion_template::clean_up() +{ +switch (template_selection) { +case SPECIFIC_VALUE: +switch (single_value.union_selection) { +case PCUIF__MsgUnion::ALT_data__req: +delete single_value.field_data__req; +break; +case PCUIF__MsgUnion::ALT_data__cnf: +delete single_value.field_data__cnf; +break; +case PCUIF__MsgUnion::ALT_data__cnf__dt: +delete single_value.field_data__cnf__dt; +break; +case PCUIF__MsgUnion::ALT_data__ind: +delete single_value.field_data__ind; +break; +case PCUIF__MsgUnion::ALT_susp__req: +delete single_value.field_susp__req; +break; +case PCUIF__MsgUnion::ALT_rts__req: +delete single_value.field_rts__req; +break; +case PCUIF__MsgUnion::ALT_rach__ind: +delete single_value.field_rach__ind; +break; +case PCUIF__MsgUnion::ALT_txt__ind: +delete single_value.field_txt__ind; +break; +case PCUIF__MsgUnion::ALT_info__ind: +delete single_value.field_info__ind; +break; +case PCUIF__MsgUnion::ALT_act__req: +delete single_value.field_act__req; +break; +case PCUIF__MsgUnion::ALT_time__ind: +delete single_value.field_time__ind; +break; +case PCUIF__MsgUnion::ALT_pag__req: +delete single_value.field_pag__req; +default: +break; +} +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +delete [] value_list.list_value; +default: +break; +} +template_selection = UNINITIALIZED_TEMPLATE; +} + +PCUIF__MsgUnion_template& PCUIF__MsgUnion_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +PCUIF__MsgUnion_template& PCUIF__MsgUnion_template::operator=(const PCUIF__MsgUnion& other_value) +{ +clean_up(); +copy_value(other_value); +return *this; +} + +PCUIF__MsgUnion_template& PCUIF__MsgUnion_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const PCUIF__MsgUnion&)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 @PCUIF_Types.PCUIF_MsgUnion."); +} +return *this; +} + +PCUIF__MsgUnion_template& PCUIF__MsgUnion_template::operator=(const PCUIF__MsgUnion_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean PCUIF__MsgUnion_template::match(const PCUIF__MsgUnion& 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: +{ +PCUIF__MsgUnion::union_selection_type value_selection = other_value.get_selection(); +if (value_selection == PCUIF__MsgUnion::UNBOUND_VALUE) return FALSE; +if (value_selection != single_value.union_selection) return FALSE; +switch (value_selection) { +case PCUIF__MsgUnion::ALT_data__req: +return single_value.field_data__req->match(other_value.data__req(), legacy); +case PCUIF__MsgUnion::ALT_data__cnf: +return single_value.field_data__cnf->match(other_value.data__cnf(), legacy); +case PCUIF__MsgUnion::ALT_data__cnf__dt: +return single_value.field_data__cnf__dt->match(other_value.data__cnf__dt(), legacy); +case PCUIF__MsgUnion::ALT_data__ind: +return single_value.field_data__ind->match(other_value.data__ind(), legacy); +case PCUIF__MsgUnion::ALT_susp__req: +return single_value.field_susp__req->match(other_value.susp__req(), legacy); +case PCUIF__MsgUnion::ALT_rts__req: +return single_value.field_rts__req->match(other_value.rts__req(), legacy); +case PCUIF__MsgUnion::ALT_rach__ind: +return single_value.field_rach__ind->match(other_value.rach__ind(), legacy); +case PCUIF__MsgUnion::ALT_txt__ind: +return single_value.field_txt__ind->match(other_value.txt__ind(), legacy); +case PCUIF__MsgUnion::ALT_info__ind: +return single_value.field_info__ind->match(other_value.info__ind(), legacy); +case PCUIF__MsgUnion::ALT_act__req: +return single_value.field_act__req->match(other_value.act__req(), legacy); +case PCUIF__MsgUnion::ALT_time__ind: +return single_value.field_time__ind->match(other_value.time__ind(), legacy); +case PCUIF__MsgUnion::ALT_pag__req: +return single_value.field_pag__req->match(other_value.pag__req(), legacy); +default: +TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @PCUIF_Types.PCUIF_MsgUnion."); +} +} +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error ("Matching an uninitialized template of union type @PCUIF_Types.PCUIF_MsgUnion."); +} +return FALSE; +} + +boolean PCUIF__MsgUnion_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +switch (single_value.union_selection) { +case PCUIF__MsgUnion::ALT_data__req: +return single_value.field_data__req->is_value(); +case PCUIF__MsgUnion::ALT_data__cnf: +return single_value.field_data__cnf->is_value(); +case PCUIF__MsgUnion::ALT_data__cnf__dt: +return single_value.field_data__cnf__dt->is_value(); +case PCUIF__MsgUnion::ALT_data__ind: +return single_value.field_data__ind->is_value(); +case PCUIF__MsgUnion::ALT_susp__req: +return single_value.field_susp__req->is_value(); +case PCUIF__MsgUnion::ALT_rts__req: +return single_value.field_rts__req->is_value(); +case PCUIF__MsgUnion::ALT_rach__ind: +return single_value.field_rach__ind->is_value(); +case PCUIF__MsgUnion::ALT_txt__ind: +return single_value.field_txt__ind->is_value(); +case PCUIF__MsgUnion::ALT_info__ind: +return single_value.field_info__ind->is_value(); +case PCUIF__MsgUnion::ALT_act__req: +return single_value.field_act__req->is_value(); +case PCUIF__MsgUnion::ALT_time__ind: +return single_value.field_time__ind->is_value(); +case PCUIF__MsgUnion::ALT_pag__req: +return single_value.field_pag__req->is_value(); +default: +TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @PCUIF_Types.PCUIF_MsgUnion."); +} +} + +PCUIF__MsgUnion PCUIF__MsgUnion_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 @PCUIF_Types.PCUIF_MsgUnion."); +PCUIF__MsgUnion ret_val; +switch (single_value.union_selection) { +case PCUIF__MsgUnion::ALT_data__req: +ret_val.data__req() = single_value.field_data__req->valueof(); +break; +case PCUIF__MsgUnion::ALT_data__cnf: +ret_val.data__cnf() = single_value.field_data__cnf->valueof(); +break; +case PCUIF__MsgUnion::ALT_data__cnf__dt: +ret_val.data__cnf__dt() = single_value.field_data__cnf__dt->valueof(); +break; +case PCUIF__MsgUnion::ALT_data__ind: +ret_val.data__ind() = single_value.field_data__ind->valueof(); +break; +case PCUIF__MsgUnion::ALT_susp__req: +ret_val.susp__req() = single_value.field_susp__req->valueof(); +break; +case PCUIF__MsgUnion::ALT_rts__req: +ret_val.rts__req() = single_value.field_rts__req->valueof(); +break; +case PCUIF__MsgUnion::ALT_rach__ind: +ret_val.rach__ind() = single_value.field_rach__ind->valueof(); +break; +case PCUIF__MsgUnion::ALT_txt__ind: +ret_val.txt__ind() = single_value.field_txt__ind->valueof(); +break; +case PCUIF__MsgUnion::ALT_info__ind: +ret_val.info__ind() = single_value.field_info__ind->valueof(); +break; +case PCUIF__MsgUnion::ALT_act__req: +ret_val.act__req() = single_value.field_act__req->valueof(); +break; +case PCUIF__MsgUnion::ALT_time__ind: +ret_val.time__ind() = single_value.field_time__ind->valueof(); +break; +case PCUIF__MsgUnion::ALT_pag__req: +ret_val.pag__req() = single_value.field_pag__req->valueof(); +break; +default: +TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @PCUIF_Types.PCUIF_MsgUnion."); +} +return ret_val; +} + +PCUIF__MsgUnion_template& PCUIF__MsgUnion_template::list_item(unsigned int list_index) const +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @PCUIF_Types.PCUIF_MsgUnion."); +if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @PCUIF_Types.PCUIF_MsgUnion."); +return value_list.list_value[list_index]; +} +void PCUIF__MsgUnion_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error ("Internal error: Setting an invalid list for a template of union type @PCUIF_Types.PCUIF_MsgUnion."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new PCUIF__MsgUnion_template[list_length]; +} + +PCUIF__data_template& PCUIF__MsgUnion_template::data__req() +{ +if (template_selection != SPECIFIC_VALUE || single_value.union_selection != PCUIF__MsgUnion::ALT_data__req) { +template_sel old_selection = template_selection; +clean_up(); +if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_data__req = new PCUIF__data_template(ANY_VALUE); +else single_value.field_data__req = new PCUIF__data_template; +single_value.union_selection = PCUIF__MsgUnion::ALT_data__req; +set_selection(SPECIFIC_VALUE); +} +return *single_value.field_data__req; +} + +const PCUIF__data_template& PCUIF__MsgUnion_template::data__req() const +{ +if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field data_req in a non-specific template of union type @PCUIF_Types.PCUIF_MsgUnion."); +if (single_value.union_selection != PCUIF__MsgUnion::ALT_data__req) TTCN_error("Accessing non-selected field data_req in a template of union type @PCUIF_Types.PCUIF_MsgUnion."); +return *single_value.field_data__req; +} + +PCUIF__data_template& PCUIF__MsgUnion_template::data__cnf() +{ +if (template_selection != SPECIFIC_VALUE || single_value.union_selection != PCUIF__MsgUnion::ALT_data__cnf) { +template_sel old_selection = template_selection; +clean_up(); +if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_data__cnf = new PCUIF__data_template(ANY_VALUE); +else single_value.field_data__cnf = new PCUIF__data_template; +single_value.union_selection = PCUIF__MsgUnion::ALT_data__cnf; +set_selection(SPECIFIC_VALUE); +} +return *single_value.field_data__cnf; +} + +const PCUIF__data_template& PCUIF__MsgUnion_template::data__cnf() const +{ +if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field data_cnf in a non-specific template of union type @PCUIF_Types.PCUIF_MsgUnion."); +if (single_value.union_selection != PCUIF__MsgUnion::ALT_data__cnf) TTCN_error("Accessing non-selected field data_cnf in a template of union type @PCUIF_Types.PCUIF_MsgUnion."); +return *single_value.field_data__cnf; +} + +PCUIF__data__cnf__dt_template& PCUIF__MsgUnion_template::data__cnf__dt() +{ +if (template_selection != SPECIFIC_VALUE || single_value.union_selection != PCUIF__MsgUnion::ALT_data__cnf__dt) { +template_sel old_selection = template_selection; +clean_up(); +if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_data__cnf__dt = new PCUIF__data__cnf__dt_template(ANY_VALUE); +else single_value.field_data__cnf__dt = new PCUIF__data__cnf__dt_template; +single_value.union_selection = PCUIF__MsgUnion::ALT_data__cnf__dt; +set_selection(SPECIFIC_VALUE); +} +return *single_value.field_data__cnf__dt; +} + +const PCUIF__data__cnf__dt_template& PCUIF__MsgUnion_template::data__cnf__dt() const +{ +if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field data_cnf_dt in a non-specific template of union type @PCUIF_Types.PCUIF_MsgUnion."); +if (single_value.union_selection != PCUIF__MsgUnion::ALT_data__cnf__dt) TTCN_error("Accessing non-selected field data_cnf_dt in a template of union type @PCUIF_Types.PCUIF_MsgUnion."); +return *single_value.field_data__cnf__dt; +} + +PCUIF__data_template& PCUIF__MsgUnion_template::data__ind() +{ +if (template_selection != SPECIFIC_VALUE || single_value.union_selection != PCUIF__MsgUnion::ALT_data__ind) { +template_sel old_selection = template_selection; +clean_up(); +if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_data__ind = new PCUIF__data_template(ANY_VALUE); +else single_value.field_data__ind = new PCUIF__data_template; +single_value.union_selection = PCUIF__MsgUnion::ALT_data__ind; +set_selection(SPECIFIC_VALUE); +} +return *single_value.field_data__ind; +} + +const PCUIF__data_template& PCUIF__MsgUnion_template::data__ind() const +{ +if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field data_ind in a non-specific template of union type @PCUIF_Types.PCUIF_MsgUnion."); +if (single_value.union_selection != PCUIF__MsgUnion::ALT_data__ind) TTCN_error("Accessing non-selected field data_ind in a template of union type @PCUIF_Types.PCUIF_MsgUnion."); +return *single_value.field_data__ind; +} + +PCUIF__susp__req_template& PCUIF__MsgUnion_template::susp__req() +{ +if (template_selection != SPECIFIC_VALUE || single_value.union_selection != PCUIF__MsgUnion::ALT_susp__req) { +template_sel old_selection = template_selection; +clean_up(); +if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_susp__req = new PCUIF__susp__req_template(ANY_VALUE); +else single_value.field_susp__req = new PCUIF__susp__req_template; +single_value.union_selection = PCUIF__MsgUnion::ALT_susp__req; +set_selection(SPECIFIC_VALUE); +} +return *single_value.field_susp__req; +} + +const PCUIF__susp__req_template& PCUIF__MsgUnion_template::susp__req() const +{ +if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field susp_req in a non-specific template of union type @PCUIF_Types.PCUIF_MsgUnion."); +if (single_value.union_selection != PCUIF__MsgUnion::ALT_susp__req) TTCN_error("Accessing non-selected field susp_req in a template of union type @PCUIF_Types.PCUIF_MsgUnion."); +return *single_value.field_susp__req; +} + +PCUIF__rts__req_template& PCUIF__MsgUnion_template::rts__req() +{ +if (template_selection != SPECIFIC_VALUE || single_value.union_selection != PCUIF__MsgUnion::ALT_rts__req) { +template_sel old_selection = template_selection; +clean_up(); +if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_rts__req = new PCUIF__rts__req_template(ANY_VALUE); +else single_value.field_rts__req = new PCUIF__rts__req_template; +single_value.union_selection = PCUIF__MsgUnion::ALT_rts__req; +set_selection(SPECIFIC_VALUE); +} +return *single_value.field_rts__req; +} + +const PCUIF__rts__req_template& PCUIF__MsgUnion_template::rts__req() const +{ +if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field rts_req in a non-specific template of union type @PCUIF_Types.PCUIF_MsgUnion."); +if (single_value.union_selection != PCUIF__MsgUnion::ALT_rts__req) TTCN_error("Accessing non-selected field rts_req in a template of union type @PCUIF_Types.PCUIF_MsgUnion."); +return *single_value.field_rts__req; +} + +PCUIF__rach__ind_template& PCUIF__MsgUnion_template::rach__ind() +{ +if (template_selection != SPECIFIC_VALUE || single_value.union_selection != PCUIF__MsgUnion::ALT_rach__ind) { +template_sel old_selection = template_selection; +clean_up(); +if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_rach__ind = new PCUIF__rach__ind_template(ANY_VALUE); +else single_value.field_rach__ind = new PCUIF__rach__ind_template; +single_value.union_selection = PCUIF__MsgUnion::ALT_rach__ind; +set_selection(SPECIFIC_VALUE); +} +return *single_value.field_rach__ind; +} + +const PCUIF__rach__ind_template& PCUIF__MsgUnion_template::rach__ind() const +{ +if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field rach_ind in a non-specific template of union type @PCUIF_Types.PCUIF_MsgUnion."); +if (single_value.union_selection != PCUIF__MsgUnion::ALT_rach__ind) TTCN_error("Accessing non-selected field rach_ind in a template of union type @PCUIF_Types.PCUIF_MsgUnion."); +return *single_value.field_rach__ind; +} + +PCUIF__txt__ind_template& PCUIF__MsgUnion_template::txt__ind() +{ +if (template_selection != SPECIFIC_VALUE || single_value.union_selection != PCUIF__MsgUnion::ALT_txt__ind) { +template_sel old_selection = template_selection; +clean_up(); +if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_txt__ind = new PCUIF__txt__ind_template(ANY_VALUE); +else single_value.field_txt__ind = new PCUIF__txt__ind_template; +single_value.union_selection = PCUIF__MsgUnion::ALT_txt__ind; +set_selection(SPECIFIC_VALUE); +} +return *single_value.field_txt__ind; +} + +const PCUIF__txt__ind_template& PCUIF__MsgUnion_template::txt__ind() const +{ +if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field txt_ind in a non-specific template of union type @PCUIF_Types.PCUIF_MsgUnion."); +if (single_value.union_selection != PCUIF__MsgUnion::ALT_txt__ind) TTCN_error("Accessing non-selected field txt_ind in a template of union type @PCUIF_Types.PCUIF_MsgUnion."); +return *single_value.field_txt__ind; +} + +PCUIF__info__ind_template& PCUIF__MsgUnion_template::info__ind() +{ +if (template_selection != SPECIFIC_VALUE || single_value.union_selection != PCUIF__MsgUnion::ALT_info__ind) { +template_sel old_selection = template_selection; +clean_up(); +if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_info__ind = new PCUIF__info__ind_template(ANY_VALUE); +else single_value.field_info__ind = new PCUIF__info__ind_template; +single_value.union_selection = PCUIF__MsgUnion::ALT_info__ind; +set_selection(SPECIFIC_VALUE); +} +return *single_value.field_info__ind; +} + +const PCUIF__info__ind_template& PCUIF__MsgUnion_template::info__ind() const +{ +if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field info_ind in a non-specific template of union type @PCUIF_Types.PCUIF_MsgUnion."); +if (single_value.union_selection != PCUIF__MsgUnion::ALT_info__ind) TTCN_error("Accessing non-selected field info_ind in a template of union type @PCUIF_Types.PCUIF_MsgUnion."); +return *single_value.field_info__ind; +} + +PCUIF__act__req_template& PCUIF__MsgUnion_template::act__req() +{ +if (template_selection != SPECIFIC_VALUE || single_value.union_selection != PCUIF__MsgUnion::ALT_act__req) { +template_sel old_selection = template_selection; +clean_up(); +if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_act__req = new PCUIF__act__req_template(ANY_VALUE); +else single_value.field_act__req = new PCUIF__act__req_template; +single_value.union_selection = PCUIF__MsgUnion::ALT_act__req; +set_selection(SPECIFIC_VALUE); +} +return *single_value.field_act__req; +} + +const PCUIF__act__req_template& PCUIF__MsgUnion_template::act__req() const +{ +if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field act_req in a non-specific template of union type @PCUIF_Types.PCUIF_MsgUnion."); +if (single_value.union_selection != PCUIF__MsgUnion::ALT_act__req) TTCN_error("Accessing non-selected field act_req in a template of union type @PCUIF_Types.PCUIF_MsgUnion."); +return *single_value.field_act__req; +} + +PCUIF__time__ind_template& PCUIF__MsgUnion_template::time__ind() +{ +if (template_selection != SPECIFIC_VALUE || single_value.union_selection != PCUIF__MsgUnion::ALT_time__ind) { +template_sel old_selection = template_selection; +clean_up(); +if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_time__ind = new PCUIF__time__ind_template(ANY_VALUE); +else single_value.field_time__ind = new PCUIF__time__ind_template; +single_value.union_selection = PCUIF__MsgUnion::ALT_time__ind; +set_selection(SPECIFIC_VALUE); +} +return *single_value.field_time__ind; +} + +const PCUIF__time__ind_template& PCUIF__MsgUnion_template::time__ind() const +{ +if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field time_ind in a non-specific template of union type @PCUIF_Types.PCUIF_MsgUnion."); +if (single_value.union_selection != PCUIF__MsgUnion::ALT_time__ind) TTCN_error("Accessing non-selected field time_ind in a template of union type @PCUIF_Types.PCUIF_MsgUnion."); +return *single_value.field_time__ind; +} + +PCUIF__pag__req_template& PCUIF__MsgUnion_template::pag__req() +{ +if (template_selection != SPECIFIC_VALUE || single_value.union_selection != PCUIF__MsgUnion::ALT_pag__req) { +template_sel old_selection = template_selection; +clean_up(); +if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_pag__req = new PCUIF__pag__req_template(ANY_VALUE); +else single_value.field_pag__req = new PCUIF__pag__req_template; +single_value.union_selection = PCUIF__MsgUnion::ALT_pag__req; +set_selection(SPECIFIC_VALUE); +} +return *single_value.field_pag__req; +} + +const PCUIF__pag__req_template& PCUIF__MsgUnion_template::pag__req() const +{ +if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field pag_req in a non-specific template of union type @PCUIF_Types.PCUIF_MsgUnion."); +if (single_value.union_selection != PCUIF__MsgUnion::ALT_pag__req) TTCN_error("Accessing non-selected field pag_req in a template of union type @PCUIF_Types.PCUIF_MsgUnion."); +return *single_value.field_pag__req; +} + +boolean PCUIF__MsgUnion_template::ischosen(PCUIF__MsgUnion::union_selection_type checked_selection) const +{ +if (checked_selection == PCUIF__MsgUnion::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @PCUIF_Types.PCUIF_MsgUnion."); +switch (template_selection) { +case SPECIFIC_VALUE: +if (single_value.union_selection == PCUIF__MsgUnion::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @PCUIF_Types.PCUIF_MsgUnion."); +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 @PCUIF_Types.PCUIF_MsgUnion 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 PCUIF__MsgUnion_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +switch (single_value.union_selection) { +case PCUIF__MsgUnion::ALT_data__req: +TTCN_Logger::log_event_str("{ data_req := "); +single_value.field_data__req->log(); +TTCN_Logger::log_event_str(" }"); +break; +case PCUIF__MsgUnion::ALT_data__cnf: +TTCN_Logger::log_event_str("{ data_cnf := "); +single_value.field_data__cnf->log(); +TTCN_Logger::log_event_str(" }"); +break; +case PCUIF__MsgUnion::ALT_data__cnf__dt: +TTCN_Logger::log_event_str("{ data_cnf_dt := "); +single_value.field_data__cnf__dt->log(); +TTCN_Logger::log_event_str(" }"); +break; +case PCUIF__MsgUnion::ALT_data__ind: +TTCN_Logger::log_event_str("{ data_ind := "); +single_value.field_data__ind->log(); +TTCN_Logger::log_event_str(" }"); +break; +case PCUIF__MsgUnion::ALT_susp__req: +TTCN_Logger::log_event_str("{ susp_req := "); +single_value.field_susp__req->log(); +TTCN_Logger::log_event_str(" }"); +break; +case PCUIF__MsgUnion::ALT_rts__req: +TTCN_Logger::log_event_str("{ rts_req := "); +single_value.field_rts__req->log(); +TTCN_Logger::log_event_str(" }"); +break; +case PCUIF__MsgUnion::ALT_rach__ind: +TTCN_Logger::log_event_str("{ rach_ind := "); +single_value.field_rach__ind->log(); +TTCN_Logger::log_event_str(" }"); +break; +case PCUIF__MsgUnion::ALT_txt__ind: +TTCN_Logger::log_event_str("{ txt_ind := "); +single_value.field_txt__ind->log(); +TTCN_Logger::log_event_str(" }"); +break; +case PCUIF__MsgUnion::ALT_info__ind: +TTCN_Logger::log_event_str("{ info_ind := "); +single_value.field_info__ind->log(); +TTCN_Logger::log_event_str(" }"); +break; +case PCUIF__MsgUnion::ALT_act__req: +TTCN_Logger::log_event_str("{ act_req := "); +single_value.field_act__req->log(); +TTCN_Logger::log_event_str(" }"); +break; +case PCUIF__MsgUnion::ALT_time__ind: +TTCN_Logger::log_event_str("{ time_ind := "); +single_value.field_time__ind->log(); +TTCN_Logger::log_event_str(" }"); +break; +case PCUIF__MsgUnion::ALT_pag__req: +TTCN_Logger::log_event_str("{ pag_req := "); +single_value.field_pag__req->log(); +TTCN_Logger::log_event_str(" }"); +break; +default: +TTCN_Logger::log_event_str(""); +} +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { +if (list_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[list_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void PCUIF__MsgUnion_template::log_match(const PCUIF__MsgUnion& match_value, boolean legacy) const +{ +if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity() && match(match_value, legacy)){ +TTCN_Logger::print_logmatch_buffer(); +TTCN_Logger::log_event_str(" matched"); +return; +} +if (template_selection == SPECIFIC_VALUE && single_value.union_selection == match_value.get_selection()) { +switch (single_value.union_selection) { +case PCUIF__MsgUnion::ALT_data__req: +if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ +TTCN_Logger::log_logmatch_info(".data_req"); +single_value.field_data__req->log_match(match_value.data__req(), legacy); +} else { +TTCN_Logger::log_event_str("{ data_req := "); +single_value.field_data__req->log_match(match_value.data__req(), legacy); +TTCN_Logger::log_event_str(" }"); +} +break; +case PCUIF__MsgUnion::ALT_data__cnf: +if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ +TTCN_Logger::log_logmatch_info(".data_cnf"); +single_value.field_data__cnf->log_match(match_value.data__cnf(), legacy); +} else { +TTCN_Logger::log_event_str("{ data_cnf := "); +single_value.field_data__cnf->log_match(match_value.data__cnf(), legacy); +TTCN_Logger::log_event_str(" }"); +} +break; +case PCUIF__MsgUnion::ALT_data__cnf__dt: +if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ +TTCN_Logger::log_logmatch_info(".data_cnf_dt"); +single_value.field_data__cnf__dt->log_match(match_value.data__cnf__dt(), legacy); +} else { +TTCN_Logger::log_event_str("{ data_cnf_dt := "); +single_value.field_data__cnf__dt->log_match(match_value.data__cnf__dt(), legacy); +TTCN_Logger::log_event_str(" }"); +} +break; +case PCUIF__MsgUnion::ALT_data__ind: +if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ +TTCN_Logger::log_logmatch_info(".data_ind"); +single_value.field_data__ind->log_match(match_value.data__ind(), legacy); +} else { +TTCN_Logger::log_event_str("{ data_ind := "); +single_value.field_data__ind->log_match(match_value.data__ind(), legacy); +TTCN_Logger::log_event_str(" }"); +} +break; +case PCUIF__MsgUnion::ALT_susp__req: +if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ +TTCN_Logger::log_logmatch_info(".susp_req"); +single_value.field_susp__req->log_match(match_value.susp__req(), legacy); +} else { +TTCN_Logger::log_event_str("{ susp_req := "); +single_value.field_susp__req->log_match(match_value.susp__req(), legacy); +TTCN_Logger::log_event_str(" }"); +} +break; +case PCUIF__MsgUnion::ALT_rts__req: +if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ +TTCN_Logger::log_logmatch_info(".rts_req"); +single_value.field_rts__req->log_match(match_value.rts__req(), legacy); +} else { +TTCN_Logger::log_event_str("{ rts_req := "); +single_value.field_rts__req->log_match(match_value.rts__req(), legacy); +TTCN_Logger::log_event_str(" }"); +} +break; +case PCUIF__MsgUnion::ALT_rach__ind: +if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ +TTCN_Logger::log_logmatch_info(".rach_ind"); +single_value.field_rach__ind->log_match(match_value.rach__ind(), legacy); +} else { +TTCN_Logger::log_event_str("{ rach_ind := "); +single_value.field_rach__ind->log_match(match_value.rach__ind(), legacy); +TTCN_Logger::log_event_str(" }"); +} +break; +case PCUIF__MsgUnion::ALT_txt__ind: +if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ +TTCN_Logger::log_logmatch_info(".txt_ind"); +single_value.field_txt__ind->log_match(match_value.txt__ind(), legacy); +} else { +TTCN_Logger::log_event_str("{ txt_ind := "); +single_value.field_txt__ind->log_match(match_value.txt__ind(), legacy); +TTCN_Logger::log_event_str(" }"); +} +break; +case PCUIF__MsgUnion::ALT_info__ind: +if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ +TTCN_Logger::log_logmatch_info(".info_ind"); +single_value.field_info__ind->log_match(match_value.info__ind(), legacy); +} else { +TTCN_Logger::log_event_str("{ info_ind := "); +single_value.field_info__ind->log_match(match_value.info__ind(), legacy); +TTCN_Logger::log_event_str(" }"); +} +break; +case PCUIF__MsgUnion::ALT_act__req: +if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ +TTCN_Logger::log_logmatch_info(".act_req"); +single_value.field_act__req->log_match(match_value.act__req(), legacy); +} else { +TTCN_Logger::log_event_str("{ act_req := "); +single_value.field_act__req->log_match(match_value.act__req(), legacy); +TTCN_Logger::log_event_str(" }"); +} +break; +case PCUIF__MsgUnion::ALT_time__ind: +if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ +TTCN_Logger::log_logmatch_info(".time_ind"); +single_value.field_time__ind->log_match(match_value.time__ind(), legacy); +} else { +TTCN_Logger::log_event_str("{ time_ind := "); +single_value.field_time__ind->log_match(match_value.time__ind(), legacy); +TTCN_Logger::log_event_str(" }"); +} +break; +case PCUIF__MsgUnion::ALT_pag__req: +if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ +TTCN_Logger::log_logmatch_info(".pag_req"); +single_value.field_pag__req->log_match(match_value.pag__req(), legacy); +} else { +TTCN_Logger::log_event_str("{ pag_req := "); +single_value.field_pag__req->log_match(match_value.pag__req(), 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 PCUIF__MsgUnion_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 PCUIF__MsgUnion::ALT_data__req: +single_value.field_data__req->encode_text(text_buf); +break; +case PCUIF__MsgUnion::ALT_data__cnf: +single_value.field_data__cnf->encode_text(text_buf); +break; +case PCUIF__MsgUnion::ALT_data__cnf__dt: +single_value.field_data__cnf__dt->encode_text(text_buf); +break; +case PCUIF__MsgUnion::ALT_data__ind: +single_value.field_data__ind->encode_text(text_buf); +break; +case PCUIF__MsgUnion::ALT_susp__req: +single_value.field_susp__req->encode_text(text_buf); +break; +case PCUIF__MsgUnion::ALT_rts__req: +single_value.field_rts__req->encode_text(text_buf); +break; +case PCUIF__MsgUnion::ALT_rach__ind: +single_value.field_rach__ind->encode_text(text_buf); +break; +case PCUIF__MsgUnion::ALT_txt__ind: +single_value.field_txt__ind->encode_text(text_buf); +break; +case PCUIF__MsgUnion::ALT_info__ind: +single_value.field_info__ind->encode_text(text_buf); +break; +case PCUIF__MsgUnion::ALT_act__req: +single_value.field_act__req->encode_text(text_buf); +break; +case PCUIF__MsgUnion::ALT_time__ind: +single_value.field_time__ind->encode_text(text_buf); +break; +case PCUIF__MsgUnion::ALT_pag__req: +single_value.field_pag__req->encode_text(text_buf); +break; +default: +TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @PCUIF_Types.PCUIF_MsgUnion."); +} +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 @PCUIF_Types.PCUIF_MsgUnion."); +} +} + +void PCUIF__MsgUnion_template::decode_text(Text_Buf& text_buf) +{ +clean_up(); +decode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +{ +single_value.union_selection = PCUIF__MsgUnion::UNBOUND_VALUE; +PCUIF__MsgUnion::union_selection_type new_selection = (PCUIF__MsgUnion::union_selection_type)text_buf.pull_int().get_val(); +switch (new_selection) { +case PCUIF__MsgUnion::ALT_data__req: +single_value.field_data__req = new PCUIF__data_template; +single_value.field_data__req->decode_text(text_buf); +break; +case PCUIF__MsgUnion::ALT_data__cnf: +single_value.field_data__cnf = new PCUIF__data_template; +single_value.field_data__cnf->decode_text(text_buf); +break; +case PCUIF__MsgUnion::ALT_data__cnf__dt: +single_value.field_data__cnf__dt = new PCUIF__data__cnf__dt_template; +single_value.field_data__cnf__dt->decode_text(text_buf); +break; +case PCUIF__MsgUnion::ALT_data__ind: +single_value.field_data__ind = new PCUIF__data_template; +single_value.field_data__ind->decode_text(text_buf); +break; +case PCUIF__MsgUnion::ALT_susp__req: +single_value.field_susp__req = new PCUIF__susp__req_template; +single_value.field_susp__req->decode_text(text_buf); +break; +case PCUIF__MsgUnion::ALT_rts__req: +single_value.field_rts__req = new PCUIF__rts__req_template; +single_value.field_rts__req->decode_text(text_buf); +break; +case PCUIF__MsgUnion::ALT_rach__ind: +single_value.field_rach__ind = new PCUIF__rach__ind_template; +single_value.field_rach__ind->decode_text(text_buf); +break; +case PCUIF__MsgUnion::ALT_txt__ind: +single_value.field_txt__ind = new PCUIF__txt__ind_template; +single_value.field_txt__ind->decode_text(text_buf); +break; +case PCUIF__MsgUnion::ALT_info__ind: +single_value.field_info__ind = new PCUIF__info__ind_template; +single_value.field_info__ind->decode_text(text_buf); +break; +case PCUIF__MsgUnion::ALT_act__req: +single_value.field_act__req = new PCUIF__act__req_template; +single_value.field_act__req->decode_text(text_buf); +break; +case PCUIF__MsgUnion::ALT_time__ind: +single_value.field_time__ind = new PCUIF__time__ind_template; +single_value.field_time__ind->decode_text(text_buf); +break; +case PCUIF__MsgUnion::ALT_pag__req: +single_value.field_pag__req = new PCUIF__pag__req_template; +single_value.field_pag__req->decode_text(text_buf); +break; +default: +TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @PCUIF_Types.PCUIF_MsgUnion."); +} +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 PCUIF__MsgUnion_template[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 @PCUIF_Types.PCUIF_MsgUnion."); +} +} + +boolean PCUIF__MsgUnion_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean PCUIF__MsgUnion_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int v_idx=0; v_idx(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 `@PCUIF_Types.PCUIF_MsgUnion'"); + } + if (strcmp("data_req", param_field) == 0) { + data__req().set_param(param); + return; + } else if (strcmp("data_cnf", param_field) == 0) { + data__cnf().set_param(param); + return; + } else if (strcmp("data_cnf_dt", param_field) == 0) { + data__cnf__dt().set_param(param); + return; + } else if (strcmp("data_ind", param_field) == 0) { + data__ind().set_param(param); + return; + } else if (strcmp("susp_req", param_field) == 0) { + susp__req().set_param(param); + return; + } else if (strcmp("rts_req", param_field) == 0) { + rts__req().set_param(param); + return; + } else if (strcmp("rach_ind", param_field) == 0) { + rach__ind().set_param(param); + return; + } else if (strcmp("txt_ind", param_field) == 0) { + txt__ind().set_param(param); + return; + } else if (strcmp("info_ind", param_field) == 0) { + info__ind().set_param(param); + return; + } else if (strcmp("act_req", param_field) == 0) { + act__req().set_param(param); + return; + } else if (strcmp("time_ind", param_field) == 0) { + time__ind().set_param(param); + return; + } else if (strcmp("pag_req", param_field) == 0) { + pag__req().set_param(param); + return; + } else param.error("Field `%s' not found in union template type `@PCUIF_Types.PCUIF_MsgUnion'", 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: { + PCUIF__MsgUnion_template new_temp; + new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, m_p->get_size()); + for (size_t p_i=0; p_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", "@PCUIF_Types.PCUIF_MsgUnion"); + break; + case Module_Param::MP_Assignment_List: { + Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); + if (!strcmp(mp_last->get_id()->get_name(), "data_req")) { + data__req().set_param(*mp_last); + break; + } + if (!strcmp(mp_last->get_id()->get_name(), "data_cnf")) { + data__cnf().set_param(*mp_last); + break; + } + if (!strcmp(mp_last->get_id()->get_name(), "data_cnf_dt")) { + data__cnf__dt().set_param(*mp_last); + break; + } + if (!strcmp(mp_last->get_id()->get_name(), "data_ind")) { + data__ind().set_param(*mp_last); + break; + } + if (!strcmp(mp_last->get_id()->get_name(), "susp_req")) { + susp__req().set_param(*mp_last); + break; + } + if (!strcmp(mp_last->get_id()->get_name(), "rts_req")) { + rts__req().set_param(*mp_last); + break; + } + if (!strcmp(mp_last->get_id()->get_name(), "rach_ind")) { + rach__ind().set_param(*mp_last); + break; + } + if (!strcmp(mp_last->get_id()->get_name(), "txt_ind")) { + txt__ind().set_param(*mp_last); + break; + } + if (!strcmp(mp_last->get_id()->get_name(), "info_ind")) { + info__ind().set_param(*mp_last); + break; + } + if (!strcmp(mp_last->get_id()->get_name(), "act_req")) { + act__req().set_param(*mp_last); + break; + } + if (!strcmp(mp_last->get_id()->get_name(), "time_ind")) { + time__ind().set_param(*mp_last); + break; + } + if (!strcmp(mp_last->get_id()->get_name(), "pag_req")) { + pag__req().set_param(*mp_last); + break; + } + mp_last->error("Field %s does not exist in type @PCUIF_Types.PCUIF_MsgUnion.", mp_last->get_id()->get_name()); + } break; + default: + param.type_error("union template", "@PCUIF_Types.PCUIF_MsgUnion"); + } + is_ifpresent = param.get_ifpresent(); +} + +void PCUIF__MsgUnion_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 PCUIF__MsgUnion::ALT_data__req: +single_value.field_data__req->check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_MsgUnion"); +return; +case PCUIF__MsgUnion::ALT_data__cnf: +single_value.field_data__cnf->check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_MsgUnion"); +return; +case PCUIF__MsgUnion::ALT_data__cnf__dt: +single_value.field_data__cnf__dt->check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_MsgUnion"); +return; +case PCUIF__MsgUnion::ALT_data__ind: +single_value.field_data__ind->check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_MsgUnion"); +return; +case PCUIF__MsgUnion::ALT_susp__req: +single_value.field_susp__req->check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_MsgUnion"); +return; +case PCUIF__MsgUnion::ALT_rts__req: +single_value.field_rts__req->check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_MsgUnion"); +return; +case PCUIF__MsgUnion::ALT_rach__ind: +single_value.field_rach__ind->check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_MsgUnion"); +return; +case PCUIF__MsgUnion::ALT_txt__ind: +single_value.field_txt__ind->check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_MsgUnion"); +return; +case PCUIF__MsgUnion::ALT_info__ind: +single_value.field_info__ind->check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_MsgUnion"); +return; +case PCUIF__MsgUnion::ALT_act__req: +single_value.field_act__req->check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_MsgUnion"); +return; +case PCUIF__MsgUnion::ALT_time__ind: +single_value.field_time__ind->check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_MsgUnion"); +return; +case PCUIF__MsgUnion::ALT_pag__req: +single_value.field_pag__req->check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_MsgUnion"); +return; +default: +TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @PCUIF_Types.PCUIF_MsgUnion."); +} +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 : "@PCUIF_Types.PCUIF_MsgUnion"); +} + +PCUIF__Message::PCUIF__Message() +{ +} + +PCUIF__Message::PCUIF__Message(const PCUIF__MsgType& par_msg__type, + const INTEGER& par_bts__nr, + const OCTETSTRING& par_spare, + const PCUIF__MsgUnion& par_u) + : field_msg__type(par_msg__type), + field_bts__nr(par_bts__nr), + field_spare(par_spare), + field_u(par_u) +{ +} + +PCUIF__Message::PCUIF__Message(const PCUIF__Message& other_value) +{ +if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @PCUIF_Types.PCUIF_Message."); +if (other_value.msg__type().is_bound()) field_msg__type = other_value.msg__type(); +else field_msg__type.clean_up(); +if (other_value.bts__nr().is_bound()) field_bts__nr = other_value.bts__nr(); +else field_bts__nr.clean_up(); +if (other_value.spare().is_bound()) field_spare = other_value.spare(); +else field_spare.clean_up(); +if (other_value.u().is_bound()) field_u = other_value.u(); +else field_u.clean_up(); +} + +void PCUIF__Message::clean_up() +{ +field_msg__type.clean_up(); +field_bts__nr.clean_up(); +field_spare.clean_up(); +field_u.clean_up(); +} + +PCUIF__Message& PCUIF__Message::operator=(const PCUIF__Message& other_value) +{ +if (this != &other_value) { + if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @PCUIF_Types.PCUIF_Message."); + if (other_value.msg__type().is_bound()) field_msg__type = other_value.msg__type(); + else field_msg__type.clean_up(); + if (other_value.bts__nr().is_bound()) field_bts__nr = other_value.bts__nr(); + else field_bts__nr.clean_up(); + if (other_value.spare().is_bound()) field_spare = other_value.spare(); + else field_spare.clean_up(); + if (other_value.u().is_bound()) field_u = other_value.u(); + else field_u.clean_up(); +} +return *this; +} + +boolean PCUIF__Message::operator==(const PCUIF__Message& other_value) const +{ +return field_msg__type==other_value.field_msg__type + && field_bts__nr==other_value.field_bts__nr + && field_spare==other_value.field_spare + && field_u==other_value.field_u; +} + +boolean PCUIF__Message::is_bound() const +{ +if(field_msg__type.is_bound()) return TRUE; +if(field_bts__nr.is_bound()) return TRUE; +if(field_spare.is_bound()) return TRUE; +if(field_u.is_bound()) return TRUE; +return FALSE; +} +boolean PCUIF__Message::is_value() const +{ +if(!field_msg__type.is_value()) return FALSE; +if(!field_bts__nr.is_value()) return FALSE; +if(!field_spare.is_value()) return FALSE; +if(!field_u.is_value()) return FALSE; +return TRUE; +} +void PCUIF__Message::log() const +{ +if (!is_bound()) { +TTCN_Logger::log_event_unbound(); +return; +} +TTCN_Logger::log_event_str("{ msg_type := "); +field_msg__type.log(); +TTCN_Logger::log_event_str(", bts_nr := "); +field_bts__nr.log(); +TTCN_Logger::log_event_str(", spare := "); +field_spare.log(); +TTCN_Logger::log_event_str(", u := "); +field_u.log(); +TTCN_Logger::log_event_str(" }"); +} + +void PCUIF__Message::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) msg__type().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) bts__nr().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) u().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(), "msg_type")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + msg__type().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "bts_nr")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + bts__nr().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(), "u")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + u().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @PCUIF_Types.PCUIF_Message: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record value", "@PCUIF_Types.PCUIF_Message"); + } +} + +void PCUIF__Message::set_implicit_omit() +{ +if (msg__type().is_bound()) msg__type().set_implicit_omit(); +if (bts__nr().is_bound()) bts__nr().set_implicit_omit(); +if (spare().is_bound()) spare().set_implicit_omit(); +if (u().is_bound()) u().set_implicit_omit(); +} + +void PCUIF__Message::encode_text(Text_Buf& text_buf) const +{ +field_msg__type.encode_text(text_buf); +field_bts__nr.encode_text(text_buf); +field_spare.encode_text(text_buf); +field_u.encode_text(text_buf); +} + +void PCUIF__Message::decode_text(Text_Buf& text_buf) +{ +field_msg__type.decode_text(text_buf); +field_bts__nr.decode_text(text_buf); +field_spare.decode_text(text_buf); +field_u.decode_text(text_buf); +} + +void PCUIF__Message::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) const +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); + unsigned BER_coding=va_arg(pvar, unsigned); + BER_encode_chk_coding(BER_coding); + ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); + tlv->put_in_buffer(p_buf); + ASN_BER_TLV_t::destruct(tlv); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + RAW_enc_tr_pos rp; + rp.level=0; + rp.pos=NULL; + RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); + RAW_encode(p_td, root); + root.put_to_buf(p_buf); + break;} + case TTCN_EncDec::CT_TEXT: { + TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + TEXT_encode(p_td,p_buf); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); + p_buf.put_c('\n'); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok(va_arg(pvar, int) != 0); + JSON_encode(p_td, tok); + p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_encode(p_td, p_buf); + break;} + default: + TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); + } + va_end(pvar); +} + +void PCUIF__Message::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t p_coding, ...) +{ + va_list pvar; + va_start(pvar, p_coding); + switch(p_coding) { + case TTCN_EncDec::CT_BER: { + TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); + unsigned L_form=va_arg(pvar, unsigned); + ASN_BER_TLV_t tlv; + BER_decode_str2TLV(p_buf, tlv, L_form); + BER_decode_TLV(p_td, tlv, L_form); + if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); + break;} + case TTCN_EncDec::CT_RAW: { + TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); + if(!p_td.raw) + TTCN_EncDec_ErrorContext::error_internal + ("No RAW descriptor available for type '%s'.", p_td.name); + raw_order_t r_order; + switch(p_td.raw->top_bit_order) { + case TOP_BIT_LEFT: + r_order=ORDER_LSB; + break; + case TOP_BIT_RIGHT: + default: + r_order=ORDER_MSB; + } + int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); + if(rawr<0) switch (-rawr) { + case TTCN_EncDec::ET_INCOMPL_MSG: + case TTCN_EncDec::ET_LEN_ERR: + ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); + break; + case 1: + default: + ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); + break; + } + break;} + case TTCN_EncDec::CT_TEXT: { + Limit_Token_List limit; + TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); + if(!p_td.text) + TTCN_EncDec_ErrorContext::error_internal + ("No TEXT descriptor available for type '%s'.", p_td.name); + const unsigned char *b_data=p_buf.get_data(); + if(b_data[p_buf.get_len()-1]!='\0'){ + p_buf.set_pos(p_buf.get_len()); + p_buf.put_zero(8,ORDER_LSB); + p_buf.rewind(); + } + if(TEXT_decode(p_td,p_buf,limit)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + break;} + case TTCN_EncDec::CT_XER: { + TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); + unsigned XER_coding=va_arg(pvar, unsigned); + XER_encode_chk_coding(XER_coding, p_td); + XmlReaderWrap reader(p_buf); + for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { + if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; + } + XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); + size_t bytes = reader.ByteConsumed(); + p_buf.set_pos(bytes); + break;} + case TTCN_EncDec::CT_JSON: { + TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); + if(!p_td.json) + TTCN_EncDec_ErrorContext::error_internal + ("No JSON descriptor available for type '%s'.", p_td.name); + JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); + if(JSON_decode(p_td, tok, FALSE)<0) + ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); + p_buf.set_pos(tok.get_buf_pos()); + break;} + case TTCN_EncDec::CT_OER: { + TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); + if(!p_td.oer) + TTCN_EncDec_ErrorContext::error_internal + ("No OER descriptor available for type '%s'.", p_td.name); + OER_struct p_oer; + OER_decode(p_td, p_buf, p_oer); + break;} + default: + TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); + } + va_end(pvar); +} + +int PCUIF__Message::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) +{ (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; + int selected_field = -1; + 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; + decoded_field_length = field_msg__type.RAW_decode(PCUIF__Message_msg__type_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_bts__nr.RAW_decode(PCUIF__Message_bts__nr_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return decoded_field_length; + decoded_length+=decoded_field_length; + limit-=decoded_field_length; + last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); + decoded_field_length = field_spare.RAW_decode(PCUIF__Message_spare_descr_, p_buf, limit, local_top_order, no_err); + if (decoded_field_length < 0) return 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_msg__type == PCUIF__MsgType::PCU__IF__MSG__DATA__REQ) selected_field = 0; + else if (field_msg__type == PCUIF__MsgType::PCU__IF__MSG__DATA__CNF) selected_field = 1; + else if (field_msg__type == PCUIF__MsgType::PCU__IF__MSG__DATA__CNF__DT) selected_field = 2; + else if (field_msg__type == PCUIF__MsgType::PCU__IF__MSG__DATA__IND) selected_field = 3; + else if (field_msg__type == PCUIF__MsgType::PCU__IF__MSG__SUSP__REQ) selected_field = 4; + else if (field_msg__type == PCUIF__MsgType::PCU__IF__MSG__RTS__REQ) selected_field = 5; + else if (field_msg__type == PCUIF__MsgType::PCU__IF__MSG__RACH__IND) selected_field = 6; + else if (field_msg__type == PCUIF__MsgType::PCU__IF__MSG__TXT__IND) selected_field = 7; + else if (field_msg__type == PCUIF__MsgType::PCU__IF__MSG__INFO__IND) selected_field = 8; + else if (field_msg__type == PCUIF__MsgType::PCU__IF__MSG__ACT__REQ) selected_field = 9; + else if (field_msg__type == PCUIF__MsgType::PCU__IF__MSG__TIME__IND) selected_field = 10; + else if (field_msg__type == PCUIF__MsgType::PCU__IF__MSG__PAG__REQ) selected_field = 11; + else selected_field = -1; + decoded_field_length = field_u.RAW_decode(PCUIF__Message_u_descr_, p_buf, limit, local_top_order, no_err, selected_field); + if (decoded_field_length < 0) return 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 PCUIF__Message::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, PCUIF__Message_msg__type_descr_.raw); + myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PCUIF__Message_bts__nr_descr_.raw); + myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, PCUIF__Message_spare_descr_.raw); + myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, PCUIF__Message_u_descr_.raw); + encoded_length += field_msg__type.RAW_encode(PCUIF__Message_msg__type_descr_, *myleaf.body.node.nodes[0]); + encoded_length += field_bts__nr.RAW_encode(PCUIF__Message_bts__nr_descr_, *myleaf.body.node.nodes[1]); + encoded_length += field_spare.RAW_encode(PCUIF__Message_spare_descr_, *myleaf.body.node.nodes[2]); + encoded_length += field_u.RAW_encode(PCUIF__Message_u_descr_, *myleaf.body.node.nodes[3]); + switch (field_u.get_selection()) { + case PCUIF__MsgUnion::ALT_data__req: + if (field_msg__type != PCUIF__MsgType::PCU__IF__MSG__DATA__REQ) { + RAW_enc_tr_pos pr_pos; + pr_pos.level = myleaf.curr_pos.level + 1; + int new_pos[] = { 0 }; + pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos); + PCUIF__MsgType new_val(PCUIF__MsgType::PCU__IF__MSG__DATA__REQ); + RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos); + if (temp_leaf != NULL) + new_val.RAW_encode(PCUIF__Message_msg__type_descr_,*temp_leaf); + else + TTCN_EncDec_ErrorContext::error + (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); + free_tree_pos(pr_pos.pos); + } + break; + case PCUIF__MsgUnion::ALT_data__cnf: + if (field_msg__type != PCUIF__MsgType::PCU__IF__MSG__DATA__CNF) { + RAW_enc_tr_pos pr_pos; + pr_pos.level = myleaf.curr_pos.level + 1; + int new_pos[] = { 0 }; + pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos); + PCUIF__MsgType new_val(PCUIF__MsgType::PCU__IF__MSG__DATA__CNF); + RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos); + if (temp_leaf != NULL) + new_val.RAW_encode(PCUIF__Message_msg__type_descr_,*temp_leaf); + else + TTCN_EncDec_ErrorContext::error + (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); + free_tree_pos(pr_pos.pos); + } + break; + case PCUIF__MsgUnion::ALT_data__cnf__dt: + if (field_msg__type != PCUIF__MsgType::PCU__IF__MSG__DATA__CNF__DT) { + RAW_enc_tr_pos pr_pos; + pr_pos.level = myleaf.curr_pos.level + 1; + int new_pos[] = { 0 }; + pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos); + PCUIF__MsgType new_val(PCUIF__MsgType::PCU__IF__MSG__DATA__CNF__DT); + RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos); + if (temp_leaf != NULL) + new_val.RAW_encode(PCUIF__Message_msg__type_descr_,*temp_leaf); + else + TTCN_EncDec_ErrorContext::error + (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); + free_tree_pos(pr_pos.pos); + } + break; + case PCUIF__MsgUnion::ALT_data__ind: + if (field_msg__type != PCUIF__MsgType::PCU__IF__MSG__DATA__IND) { + RAW_enc_tr_pos pr_pos; + pr_pos.level = myleaf.curr_pos.level + 1; + int new_pos[] = { 0 }; + pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos); + PCUIF__MsgType new_val(PCUIF__MsgType::PCU__IF__MSG__DATA__IND); + RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos); + if (temp_leaf != NULL) + new_val.RAW_encode(PCUIF__Message_msg__type_descr_,*temp_leaf); + else + TTCN_EncDec_ErrorContext::error + (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); + free_tree_pos(pr_pos.pos); + } + break; + case PCUIF__MsgUnion::ALT_susp__req: + if (field_msg__type != PCUIF__MsgType::PCU__IF__MSG__SUSP__REQ) { + RAW_enc_tr_pos pr_pos; + pr_pos.level = myleaf.curr_pos.level + 1; + int new_pos[] = { 0 }; + pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos); + PCUIF__MsgType new_val(PCUIF__MsgType::PCU__IF__MSG__SUSP__REQ); + RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos); + if (temp_leaf != NULL) + new_val.RAW_encode(PCUIF__Message_msg__type_descr_,*temp_leaf); + else + TTCN_EncDec_ErrorContext::error + (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); + free_tree_pos(pr_pos.pos); + } + break; + case PCUIF__MsgUnion::ALT_rts__req: + if (field_msg__type != PCUIF__MsgType::PCU__IF__MSG__RTS__REQ) { + RAW_enc_tr_pos pr_pos; + pr_pos.level = myleaf.curr_pos.level + 1; + int new_pos[] = { 0 }; + pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos); + PCUIF__MsgType new_val(PCUIF__MsgType::PCU__IF__MSG__RTS__REQ); + RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos); + if (temp_leaf != NULL) + new_val.RAW_encode(PCUIF__Message_msg__type_descr_,*temp_leaf); + else + TTCN_EncDec_ErrorContext::error + (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); + free_tree_pos(pr_pos.pos); + } + break; + case PCUIF__MsgUnion::ALT_rach__ind: + if (field_msg__type != PCUIF__MsgType::PCU__IF__MSG__RACH__IND) { + RAW_enc_tr_pos pr_pos; + pr_pos.level = myleaf.curr_pos.level + 1; + int new_pos[] = { 0 }; + pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos); + PCUIF__MsgType new_val(PCUIF__MsgType::PCU__IF__MSG__RACH__IND); + RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos); + if (temp_leaf != NULL) + new_val.RAW_encode(PCUIF__Message_msg__type_descr_,*temp_leaf); + else + TTCN_EncDec_ErrorContext::error + (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); + free_tree_pos(pr_pos.pos); + } + break; + case PCUIF__MsgUnion::ALT_txt__ind: + if (field_msg__type != PCUIF__MsgType::PCU__IF__MSG__TXT__IND) { + RAW_enc_tr_pos pr_pos; + pr_pos.level = myleaf.curr_pos.level + 1; + int new_pos[] = { 0 }; + pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos); + PCUIF__MsgType new_val(PCUIF__MsgType::PCU__IF__MSG__TXT__IND); + RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos); + if (temp_leaf != NULL) + new_val.RAW_encode(PCUIF__Message_msg__type_descr_,*temp_leaf); + else + TTCN_EncDec_ErrorContext::error + (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); + free_tree_pos(pr_pos.pos); + } + break; + case PCUIF__MsgUnion::ALT_info__ind: + if (field_msg__type != PCUIF__MsgType::PCU__IF__MSG__INFO__IND) { + RAW_enc_tr_pos pr_pos; + pr_pos.level = myleaf.curr_pos.level + 1; + int new_pos[] = { 0 }; + pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos); + PCUIF__MsgType new_val(PCUIF__MsgType::PCU__IF__MSG__INFO__IND); + RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos); + if (temp_leaf != NULL) + new_val.RAW_encode(PCUIF__Message_msg__type_descr_,*temp_leaf); + else + TTCN_EncDec_ErrorContext::error + (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); + free_tree_pos(pr_pos.pos); + } + break; + case PCUIF__MsgUnion::ALT_act__req: + if (field_msg__type != PCUIF__MsgType::PCU__IF__MSG__ACT__REQ) { + RAW_enc_tr_pos pr_pos; + pr_pos.level = myleaf.curr_pos.level + 1; + int new_pos[] = { 0 }; + pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos); + PCUIF__MsgType new_val(PCUIF__MsgType::PCU__IF__MSG__ACT__REQ); + RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos); + if (temp_leaf != NULL) + new_val.RAW_encode(PCUIF__Message_msg__type_descr_,*temp_leaf); + else + TTCN_EncDec_ErrorContext::error + (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); + free_tree_pos(pr_pos.pos); + } + break; + case PCUIF__MsgUnion::ALT_time__ind: + if (field_msg__type != PCUIF__MsgType::PCU__IF__MSG__TIME__IND) { + RAW_enc_tr_pos pr_pos; + pr_pos.level = myleaf.curr_pos.level + 1; + int new_pos[] = { 0 }; + pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos); + PCUIF__MsgType new_val(PCUIF__MsgType::PCU__IF__MSG__TIME__IND); + RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos); + if (temp_leaf != NULL) + new_val.RAW_encode(PCUIF__Message_msg__type_descr_,*temp_leaf); + else + TTCN_EncDec_ErrorContext::error + (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); + free_tree_pos(pr_pos.pos); + } + break; + case PCUIF__MsgUnion::ALT_pag__req: + if (field_msg__type != PCUIF__MsgType::PCU__IF__MSG__PAG__REQ) { + RAW_enc_tr_pos pr_pos; + pr_pos.level = myleaf.curr_pos.level + 1; + int new_pos[] = { 0 }; + pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos); + PCUIF__MsgType new_val(PCUIF__MsgType::PCU__IF__MSG__PAG__REQ); + RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos); + if (temp_leaf != NULL) + new_val.RAW_encode(PCUIF__Message_msg__type_descr_,*temp_leaf); + else + TTCN_EncDec_ErrorContext::error + (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); + free_tree_pos(pr_pos.pos); + } + break; + default:; + } + return myleaf.length = encoded_length; +} + +struct PCUIF__Message_template::single_value_struct { +PCUIF__MsgType_template field_msg__type; +INTEGER_template field_bts__nr; +OCTETSTRING_template field_spare; +PCUIF__MsgUnion_template field_u; +}; + +void PCUIF__Message_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_msg__type = ANY_VALUE; +single_value->field_bts__nr = ANY_VALUE; +single_value->field_spare = ANY_VALUE; +single_value->field_u = ANY_VALUE; +} +} +} + +void PCUIF__Message_template::copy_value(const PCUIF__Message& other_value) +{ +single_value = new single_value_struct; +if (other_value.msg__type().is_bound()) { + single_value->field_msg__type = other_value.msg__type(); +} else { + single_value->field_msg__type.clean_up(); +} +if (other_value.bts__nr().is_bound()) { + single_value->field_bts__nr = other_value.bts__nr(); +} else { + single_value->field_bts__nr.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.u().is_bound()) { + single_value->field_u = other_value.u(); +} else { + single_value->field_u.clean_up(); +} +set_selection(SPECIFIC_VALUE); +} + +void PCUIF__Message_template::copy_template(const PCUIF__Message_template& other_value) +{ +switch (other_value.template_selection) { +case SPECIFIC_VALUE: +single_value = new single_value_struct; +if (UNINITIALIZED_TEMPLATE != other_value.msg__type().get_selection()) { +single_value->field_msg__type = other_value.msg__type(); +} else { +single_value->field_msg__type.clean_up(); +} +if (UNINITIALIZED_TEMPLATE != other_value.bts__nr().get_selection()) { +single_value->field_bts__nr = other_value.bts__nr(); +} else { +single_value->field_bts__nr.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.u().get_selection()) { +single_value->field_u = other_value.u(); +} else { +single_value->field_u.clean_up(); +} +case OMIT_VALUE: +case ANY_VALUE: +case ANY_OR_OMIT: +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +value_list.n_values = other_value.value_list.n_values; +value_list.list_value = new PCUIF__Message_template[value_list.n_values]; +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); +break; +default: +TTCN_error("Copying an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_Message."); +break; +} +set_selection(other_value); +} + +PCUIF__Message_template::PCUIF__Message_template() +{ +} + +PCUIF__Message_template::PCUIF__Message_template(template_sel other_value) + : Base_Template(other_value) +{ +check_single_selection(other_value); +} + +PCUIF__Message_template::PCUIF__Message_template(const PCUIF__Message& other_value) +{ +copy_value(other_value); +} + +PCUIF__Message_template::PCUIF__Message_template(const OPTIONAL& other_value) +{ +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const PCUIF__Message&)other_value); +break; +case OPTIONAL_OMIT: +set_selection(OMIT_VALUE); +break; +default: +TTCN_error("Creating a template of type @PCUIF_Types.PCUIF_Message from an unbound optional field."); +} +} + +PCUIF__Message_template::PCUIF__Message_template(const PCUIF__Message_template& other_value) +: Base_Template() +{ +copy_template(other_value); +} + +PCUIF__Message_template::~PCUIF__Message_template() +{ +clean_up(); +} + +PCUIF__Message_template& PCUIF__Message_template::operator=(template_sel other_value) +{ +check_single_selection(other_value); +clean_up(); +set_selection(other_value); +return *this; +} + +PCUIF__Message_template& PCUIF__Message_template::operator=(const PCUIF__Message& other_value) +{ +clean_up(); +copy_value(other_value); +return *this; +} + +PCUIF__Message_template& PCUIF__Message_template::operator=(const OPTIONAL& other_value) +{ +clean_up(); +switch (other_value.get_selection()) { +case OPTIONAL_PRESENT: +copy_value((const PCUIF__Message&)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 @PCUIF_Types.PCUIF_Message."); +} +return *this; +} + +PCUIF__Message_template& PCUIF__Message_template::operator=(const PCUIF__Message_template& other_value) +{ +if (&other_value != this) { +clean_up(); +copy_template(other_value); +} +return *this; +} + +boolean PCUIF__Message_template::match(const PCUIF__Message& 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.msg__type().is_bound()) return FALSE; +if(!single_value->field_msg__type.match(other_value.msg__type(), legacy))return FALSE; +if(!other_value.bts__nr().is_bound()) return FALSE; +if(!single_value->field_bts__nr.match(other_value.bts__nr(), 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.u().is_bound()) return FALSE; +if(!single_value->field_u.match(other_value.u(), legacy))return FALSE; +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) +if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; +return template_selection == COMPLEMENTED_LIST; +default: +TTCN_error("Matching an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_Message."); +} +return FALSE; +} + +boolean PCUIF__Message_template::is_bound() const +{ +if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; +if (template_selection != SPECIFIC_VALUE) return TRUE; +if (single_value->field_msg__type.is_bound()) return TRUE; +if (single_value->field_bts__nr.is_bound()) return TRUE; +if (single_value->field_spare.is_bound()) return TRUE; +if (single_value->field_u.is_bound()) return TRUE; +return FALSE; +} + +boolean PCUIF__Message_template::is_value() const +{ +if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; +if (!single_value->field_msg__type.is_value()) return FALSE; +if (!single_value->field_bts__nr.is_value()) return FALSE; +if (!single_value->field_spare.is_value()) return FALSE; +if (!single_value->field_u.is_value()) return FALSE; +return TRUE; +} + +void PCUIF__Message_template::clean_up() +{ +switch (template_selection) { +case SPECIFIC_VALUE: +delete single_value; +break; +case VALUE_LIST: +case COMPLEMENTED_LIST: +delete [] value_list.list_value; +default: +break; +} +template_selection = UNINITIALIZED_TEMPLATE; +} + +PCUIF__Message PCUIF__Message_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 @PCUIF_Types.PCUIF_Message."); +PCUIF__Message ret_val; +if (single_value->field_msg__type.is_bound()) { +ret_val.msg__type() = single_value->field_msg__type.valueof(); +} +if (single_value->field_bts__nr.is_bound()) { +ret_val.bts__nr() = single_value->field_bts__nr.valueof(); +} +if (single_value->field_spare.is_bound()) { +ret_val.spare() = single_value->field_spare.valueof(); +} +if (single_value->field_u.is_bound()) { +ret_val.u() = single_value->field_u.valueof(); +} +return ret_val; +} + +void PCUIF__Message_template::set_type(template_sel template_type, unsigned int list_length) +{ +if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) +TTCN_error("Setting an invalid list for a template of type @PCUIF_Types.PCUIF_Message."); +clean_up(); +set_selection(template_type); +value_list.n_values = list_length; +value_list.list_value = new PCUIF__Message_template[list_length]; +} + +PCUIF__Message_template& PCUIF__Message_template::list_item(unsigned int list_index) const +{ +if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) +TTCN_error("Accessing a list element of a non-list template of type @PCUIF_Types.PCUIF_Message."); +if (list_index >= value_list.n_values) +TTCN_error("Index overflow in a value list template of type @PCUIF_Types.PCUIF_Message."); +return value_list.list_value[list_index]; +} + +PCUIF__MsgType_template& PCUIF__Message_template::msg__type() +{ +set_specific(); +return single_value->field_msg__type; +} + +const PCUIF__MsgType_template& PCUIF__Message_template::msg__type() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field msg_type of a non-specific template of type @PCUIF_Types.PCUIF_Message."); +return single_value->field_msg__type; +} + +INTEGER_template& PCUIF__Message_template::bts__nr() +{ +set_specific(); +return single_value->field_bts__nr; +} + +const INTEGER_template& PCUIF__Message_template::bts__nr() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field bts_nr of a non-specific template of type @PCUIF_Types.PCUIF_Message."); +return single_value->field_bts__nr; +} + +OCTETSTRING_template& PCUIF__Message_template::spare() +{ +set_specific(); +return single_value->field_spare; +} + +const OCTETSTRING_template& PCUIF__Message_template::spare() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field spare of a non-specific template of type @PCUIF_Types.PCUIF_Message."); +return single_value->field_spare; +} + +PCUIF__MsgUnion_template& PCUIF__Message_template::u() +{ +set_specific(); +return single_value->field_u; +} + +const PCUIF__MsgUnion_template& PCUIF__Message_template::u() const +{ +if (template_selection != SPECIFIC_VALUE) +TTCN_error("Accessing field u of a non-specific template of type @PCUIF_Types.PCUIF_Message."); +return single_value->field_u; +} + +int PCUIF__Message_template::size_of() const +{ + if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_Message 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 @PCUIF_Types.PCUIF_Message 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 @PCUIF_Types.PCUIF_Message containing a value list with different sizes."); + } + return item_size; + } + case OMIT_VALUE: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_Message containing omit value."); + case ANY_VALUE: + case ANY_OR_OMIT: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_Message containing */? value."); + case COMPLEMENTED_LIST: + TTCN_error("Performing sizeof() operation on a template of type @PCUIF_Types.PCUIF_Message containing complemented list."); + default: + TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @PCUIF_Types.PCUIF_Message."); + } + return 0; +} + +void PCUIF__Message_template::log() const +{ +switch (template_selection) { +case SPECIFIC_VALUE: +TTCN_Logger::log_event_str("{ msg_type := "); +single_value->field_msg__type.log(); +TTCN_Logger::log_event_str(", bts_nr := "); +single_value->field_bts__nr.log(); +TTCN_Logger::log_event_str(", spare := "); +single_value->field_spare.log(); +TTCN_Logger::log_event_str(", u := "); +single_value->field_u.log(); +TTCN_Logger::log_event_str(" }"); +break; +case COMPLEMENTED_LIST: +TTCN_Logger::log_event_str("complement"); +case VALUE_LIST: +TTCN_Logger::log_char('('); +for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { +if (list_count > 0) TTCN_Logger::log_event_str(", "); +value_list.list_value[list_count].log(); +} +TTCN_Logger::log_char(')'); +break; +default: +log_generic(); +} +log_ifpresent(); +} + +void PCUIF__Message_template::log_match(const PCUIF__Message& 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_msg__type.match(match_value.msg__type(), legacy)){ +TTCN_Logger::log_logmatch_info(".msg_type"); +single_value->field_msg__type.log_match(match_value.msg__type(), legacy); +TTCN_Logger::set_logmatch_buffer_len(previous_size); +} +if(!single_value->field_bts__nr.match(match_value.bts__nr(), legacy)){ +TTCN_Logger::log_logmatch_info(".bts_nr"); +single_value->field_bts__nr.log_match(match_value.bts__nr(), 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_u.match(match_value.u(), legacy)){ +TTCN_Logger::log_logmatch_info(".u"); +single_value->field_u.log_match(match_value.u(), 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("{ msg_type := "); +single_value->field_msg__type.log_match(match_value.msg__type(), legacy); +TTCN_Logger::log_event_str(", bts_nr := "); +single_value->field_bts__nr.log_match(match_value.bts__nr(), legacy); +TTCN_Logger::log_event_str(", spare := "); +single_value->field_spare.log_match(match_value.spare(), legacy); +TTCN_Logger::log_event_str(", u := "); +single_value->field_u.log_match(match_value.u(), 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 PCUIF__Message_template::encode_text(Text_Buf& text_buf) const +{ +encode_text_base(text_buf); +switch (template_selection) { +case SPECIFIC_VALUE: +single_value->field_msg__type.encode_text(text_buf); +single_value->field_bts__nr.encode_text(text_buf); +single_value->field_spare.encode_text(text_buf); +single_value->field_u.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 @PCUIF_Types.PCUIF_Message."); +} +} + +void PCUIF__Message_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_msg__type.decode_text(text_buf); +single_value->field_bts__nr.decode_text(text_buf); +single_value->field_spare.decode_text(text_buf); +single_value->field_u.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 PCUIF__Message_template[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 @PCUIF_Types.PCUIF_Message."); +} +} + +void PCUIF__Message_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: { + PCUIF__Message_template new_temp; + new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); + for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msg__type().set_param(*param.get_elem(0)); + if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) bts__nr().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) u().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(), "msg_type")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + msg__type().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxget_id()->get_name(), "bts_nr")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + bts__nr().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(), "u")) { + if (curr_param->get_type()!=Module_Param::MP_NotUsed) { + u().set_param(*curr_param); + } + value_used[val_idx]=TRUE; + } + } + for (size_t val_idx=0; val_idxerror("Non existent field name in type @PCUIF_Types.PCUIF_Message: %s", param.get_elem(val_idx)->get_id()->get_name()); + break; + } + } break; + default: + param.type_error("record template", "@PCUIF_Types.PCUIF_Message"); + } + is_ifpresent = param.get_ifpresent(); +} + +void PCUIF__Message_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_msg__type.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_Message"); +single_value->field_bts__nr.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_Message"); +single_value->field_spare.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_Message"); +single_value->field_u.check_restriction(t_res, t_name ? t_name : "@PCUIF_Types.PCUIF_Message"); +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 : "@PCUIF_Types.PCUIF_Message"); +} + +boolean PCUIF__Message_template::is_present(boolean legacy) const +{ +if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; +return !match_omit(legacy); +} + +boolean PCUIF__Message_template::match_omit(boolean legacy) const +{ +if (is_ifpresent) return TRUE; +switch (template_selection) { +case OMIT_VALUE: +case ANY_OR_OMIT: +return TRUE; +case VALUE_LIST: +case COMPLEMENTED_LIST: +if (legacy) { +for (unsigned int l_idx=0; l_idxn_elements == 0; +} + +void PCUIF__info__ind_trx_0_encoder(const PCUIF__InfoTrx& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_InfoTrx' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_trx_0_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_trx_0_decoder(OCTETSTRING& input_stream, PCUIF__InfoTrx& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_InfoTrx' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_trx_0_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__info__ind_trx_encoder(const PCUIF__info__ind_trx& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_info_ind.trx' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_trx_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_trx_decoder(OCTETSTRING& input_stream, PCUIF__info__ind_trx& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_info_ind.trx' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_trx_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__info__ind_bsic_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_bsic_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_bsic_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_bsic_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__info__ind_mcc_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_mcc_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_mcc_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_mcc_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__info__ind_mnc_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_mnc_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_mnc_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_mnc_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__info__ind_mnc__3__digits_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_mnc__3__digits_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_mnc__3__digits_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_mnc__3__digits_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__info__ind_lac_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_lac_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_lac_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_lac_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__info__ind_rac_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_rac_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_rac_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_rac_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__info__ind_nsei_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_nsei_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_nsei_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_nsei_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__info__ind_nse__timer_0_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_nse__timer_0_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_nse__timer_0_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_nse__timer_0_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__info__ind_nse__timer_encoder(const PCUIF__info__ind_nse__timer& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_info_ind.nse_timer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_nse__timer_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_nse__timer_decoder(OCTETSTRING& input_stream, PCUIF__info__ind_nse__timer& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_info_ind.nse_timer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_nse__timer_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__info__ind_cell__timer_0_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_cell__timer_0_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_cell__timer_0_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_cell__timer_0_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__info__ind_cell__timer_encoder(const PCUIF__info__ind_cell__timer& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_info_ind.cell_timer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_cell__timer_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_cell__timer_decoder(OCTETSTRING& input_stream, PCUIF__info__ind_cell__timer& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_info_ind.cell_timer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_cell__timer_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__info__ind_cell__id_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_cell__id_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_cell__id_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_cell__id_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__info__ind_repeat__time_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_repeat__time_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_repeat__time_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_repeat__time_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__info__ind_repeat__count_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_repeat__count_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_repeat__count_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_repeat__count_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__info__ind_bvci_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_bvci_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_bvci_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_bvci_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__info__ind_t3142_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_t3142_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_t3142_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_t3142_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__info__ind_t3169_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_t3169_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_t3169_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_t3169_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__info__ind_t3191_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_t3191_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_t3191_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_t3191_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__info__ind_t3193__10ms_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_t3193__10ms_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_t3193__10ms_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_t3193__10ms_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__info__ind_t3195_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_t3195_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_t3195_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_t3195_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__info__ind_t3101_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_t3101_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_t3101_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_t3101_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__info__ind_t3103_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_t3103_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_t3103_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_t3103_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__info__ind_t3105_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_t3105_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_t3105_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_t3105_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__info__ind_cv__countdown_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_cv__countdown_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_cv__countdown_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_cv__countdown_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__info__ind_dl__tbf__ext_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_dl__tbf__ext_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_dl__tbf__ext_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_dl__tbf__ext_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__info__ind_ul__tbf__ext_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_ul__tbf__ext_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_ul__tbf__ext_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_ul__tbf__ext_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__info__ind_initial__cs_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_initial__cs_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_initial__cs_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_initial__cs_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__info__ind_initial__mcs_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_initial__mcs_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_initial__mcs_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_initial__mcs_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__info__ind_nsvci_0_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_nsvci_0_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_nsvci_0_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_nsvci_0_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__info__ind_nsvci_encoder(const PCUIF__info__ind_nsvci& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_info_ind.nsvci' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_nsvci_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_nsvci_decoder(OCTETSTRING& input_stream, PCUIF__info__ind_nsvci& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_info_ind.nsvci' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_nsvci_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__info__ind_local__pprt_0_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_local__pprt_0_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_local__pprt_0_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_local__pprt_0_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__info__ind_local__pprt_encoder(const PCUIF__info__ind_local__pprt& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_info_ind.local_pprt' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_local__pprt_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_local__pprt_decoder(OCTETSTRING& input_stream, PCUIF__info__ind_local__pprt& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_info_ind.local_pprt' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_local__pprt_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__info__ind_remote__port_0_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_remote__port_0_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_remote__port_0_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_remote__port_0_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__info__ind_remote__port_encoder(const PCUIF__info__ind_remote__port& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_info_ind.remote_port' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_remote__port_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_remote__port_decoder(OCTETSTRING& input_stream, PCUIF__info__ind_remote__port& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_info_ind.remote_port' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_remote__port_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__info__ind_remote__ip_0_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_remote__ip_0_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_remote__ip_0_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_remote__ip_0_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__info__ind_remote__ip_encoder(const PCUIF__info__ind_remote__ip& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_info_ind.remote_ip' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_remote__ip_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_remote__ip_decoder(OCTETSTRING& input_stream, PCUIF__info__ind_remote__ip& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_info_ind.remote_ip' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_remote__ip_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__info__ind_encoder(const PCUIF__info__ind& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_info_ind' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__info__ind_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__info__ind_decoder(OCTETSTRING& input_stream, PCUIF__info__ind& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_info_ind' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__info__ind_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__act__req_is__activate_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__act__req_is__activate_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__act__req_is__activate_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__act__req_is__activate_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__act__req_trx__nr_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__act__req_trx__nr_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__act__req_trx__nr_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__act__req_trx__nr_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__act__req_ts__nr_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__act__req_ts__nr_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__act__req_ts__nr_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__act__req_ts__nr_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__act__req_spare_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__act__req_spare_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__act__req_spare_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__act__req_spare_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__act__req_encoder(const PCUIF__act__req& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_act_req' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__act__req_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__act__req_decoder(OCTETSTRING& input_stream, PCUIF__act__req& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_act_req' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__act__req_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__time__ind_fn_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__time__ind_fn_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__time__ind_fn_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__time__ind_fn_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__time__ind_encoder(const PCUIF__time__ind& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_time_ind' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__time__ind_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__time__ind_decoder(OCTETSTRING& input_stream, PCUIF__time__ind& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_time_ind' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__time__ind_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__pag__req_sapi_encoder(const PCUIF__Sapi& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_Sapi' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__pag__req_sapi_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__pag__req_sapi_decoder(OCTETSTRING& input_stream, PCUIF__Sapi& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_Sapi' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__pag__req_sapi_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__pag__req_chan__needed_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__pag__req_chan__needed_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__pag__req_chan__needed_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__pag__req_chan__needed_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__pag__req_identity__lv_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__pag__req_identity__lv_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__pag__req_identity__lv_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__pag__req_identity__lv_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__pag__req_encoder(const PCUIF__pag__req& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_pag_req' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__pag__req_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__pag__req_decoder(OCTETSTRING& input_stream, PCUIF__pag__req& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_pag_req' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__pag__req_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__susp__req_tlli_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__susp__req_tlli_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__susp__req_tlli_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__susp__req_tlli_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__susp__req_ra__id_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__susp__req_ra__id_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__susp__req_ra__id_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__susp__req_ra__id_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__susp__req_cause_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__susp__req_cause_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__susp__req_cause_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__susp__req_cause_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__susp__req_encoder(const PCUIF__susp__req& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_susp_req' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__susp__req_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__susp__req_decoder(OCTETSTRING& input_stream, PCUIF__susp__req& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_susp_req' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__susp__req_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__MsgUnion_data__req_encoder(const PCUIF__data& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_data' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__MsgUnion_data__req_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__MsgUnion_data__req_decoder(OCTETSTRING& input_stream, PCUIF__data& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_data' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__MsgUnion_data__req_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__MsgUnion_data__cnf_encoder(const PCUIF__data& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_data' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__MsgUnion_data__cnf_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__MsgUnion_data__cnf_decoder(OCTETSTRING& input_stream, PCUIF__data& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_data' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__MsgUnion_data__cnf_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__MsgUnion_data__cnf__dt_encoder(const PCUIF__data__cnf__dt& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_data_cnf_dt' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__MsgUnion_data__cnf__dt_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__MsgUnion_data__cnf__dt_decoder(OCTETSTRING& input_stream, PCUIF__data__cnf__dt& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_data_cnf_dt' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__MsgUnion_data__cnf__dt_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__MsgUnion_data__ind_encoder(const PCUIF__data& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_data' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__MsgUnion_data__ind_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__MsgUnion_data__ind_decoder(OCTETSTRING& input_stream, PCUIF__data& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_data' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__MsgUnion_data__ind_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__MsgUnion_susp__req_encoder(const PCUIF__susp__req& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_susp_req' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__MsgUnion_susp__req_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__MsgUnion_susp__req_decoder(OCTETSTRING& input_stream, PCUIF__susp__req& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_susp_req' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__MsgUnion_susp__req_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__MsgUnion_rts__req_encoder(const PCUIF__rts__req& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_rts_req' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__MsgUnion_rts__req_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__MsgUnion_rts__req_decoder(OCTETSTRING& input_stream, PCUIF__rts__req& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_rts_req' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__MsgUnion_rts__req_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__MsgUnion_rach__ind_encoder(const PCUIF__rach__ind& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_rach_ind' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__MsgUnion_rach__ind_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__MsgUnion_rach__ind_decoder(OCTETSTRING& input_stream, PCUIF__rach__ind& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_rach_ind' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__MsgUnion_rach__ind_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__MsgUnion_txt__ind_encoder(const PCUIF__txt__ind& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_txt_ind' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__MsgUnion_txt__ind_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__MsgUnion_txt__ind_decoder(OCTETSTRING& input_stream, PCUIF__txt__ind& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_txt_ind' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__MsgUnion_txt__ind_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__MsgUnion_info__ind_encoder(const PCUIF__info__ind& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_info_ind' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__MsgUnion_info__ind_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__MsgUnion_info__ind_decoder(OCTETSTRING& input_stream, PCUIF__info__ind& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_info_ind' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__MsgUnion_info__ind_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__MsgUnion_act__req_encoder(const PCUIF__act__req& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_act_req' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__MsgUnion_act__req_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__MsgUnion_act__req_decoder(OCTETSTRING& input_stream, PCUIF__act__req& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_act_req' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__MsgUnion_act__req_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__MsgUnion_time__ind_encoder(const PCUIF__time__ind& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_time_ind' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__MsgUnion_time__ind_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__MsgUnion_time__ind_decoder(OCTETSTRING& input_stream, PCUIF__time__ind& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_time_ind' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__MsgUnion_time__ind_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__MsgUnion_pag__req_encoder(const PCUIF__pag__req& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_pag_req' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__MsgUnion_pag__req_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__MsgUnion_pag__req_decoder(OCTETSTRING& input_stream, PCUIF__pag__req& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_pag_req' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__MsgUnion_pag__req_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__MsgUnion_encoder(const PCUIF__MsgUnion& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_MsgUnion' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__MsgUnion_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__MsgUnion_decoder(OCTETSTRING& input_stream, PCUIF__MsgUnion& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_MsgUnion' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__MsgUnion_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__Message_msg__type_encoder(const PCUIF__MsgType& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_MsgType' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__Message_msg__type_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__Message_msg__type_decoder(OCTETSTRING& input_stream, PCUIF__MsgType& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_MsgType' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__Message_msg__type_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__Message_bts__nr_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__Message_bts__nr_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__Message_bts__nr_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `integer' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__Message_bts__nr_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__Message_spare_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__Message_spare_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__Message_spare_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `octetstring' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__Message_spare_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__Message_u_encoder(const PCUIF__MsgUnion& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_MsgUnion' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__Message_u_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__Message_u_decoder(OCTETSTRING& input_stream, PCUIF__MsgUnion& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_MsgUnion' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__Message_u_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +void PCUIF__Message_encoder(const PCUIF__Message& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, TRUE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_Message' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf; +input_value.encode(PCUIF__Message_descr_, ttcn_buf, coding_type, extra_options); +ttcn_buf.get_string(output_stream); +} + +INTEGER PCUIF__Message_decoder(OCTETSTRING& input_stream, PCUIF__Message& output_value, const UNIVERSAL_CHARSTRING& coding_name) +{ +TTCN_EncDec::coding_t coding_type; +unsigned int extra_options = 0; +TTCN_EncDec::get_coding_from_str(coding_name, &coding_type, &extra_options, FALSE); +if (coding_type != TTCN_EncDec::CT_RAW) { +TTCN_Logger::begin_event_log2str(); +coding_name.log(); +TTCN_error("Type `@PCUIF_Types.PCUIF_Message' does not support %s encoding", (const char*) TTCN_Logger::end_event_log2str()); +} +TTCN_Buffer ttcn_buf(input_stream); +output_value.decode(PCUIF__Message_descr_, ttcn_buf, coding_type, extra_options); +switch (TTCN_EncDec::get_last_error_type()) { +case TTCN_EncDec::ET_NONE: +ttcn_buf.cut(); +ttcn_buf.get_string(input_stream); +return 0; +case TTCN_EncDec::ET_INCOMPL_MSG: +case TTCN_EncDec::ET_LEN_ERR: +return 2; +default: +return 1; +} +} + +OCTETSTRING enc__PCUIF__Message(const PCUIF__Message& pdu) +{ +if (TTCN_Logger::log_this_event(TTCN_Logger::DEBUG_ENCDEC)) { +TTCN_Logger::begin_event(TTCN_Logger::DEBUG_ENCDEC); +TTCN_Logger::log_event_str("enc_PCUIF_Message(): Encoding @PCUIF_Types.PCUIF_Message: "); +pdu.log(); +TTCN_Logger::end_event(); +} +TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT); +TTCN_Buffer ttcn_buffer; +pdu.encode(PCUIF__Message_descr_, ttcn_buffer, TTCN_EncDec::CT_RAW, 0); +OCTETSTRING ret_val; +ttcn_buffer.get_string(ret_val); +if (TTCN_Logger::log_this_event(TTCN_Logger::DEBUG_ENCDEC)) { +TTCN_Logger::begin_event(TTCN_Logger::DEBUG_ENCDEC); +TTCN_Logger::log_event_str("enc_PCUIF_Message(): Stream after encoding: "); +ret_val.log(); +TTCN_Logger::end_event(); +} +return ret_val; +} + +PCUIF__Message dec__PCUIF__Message(const OCTETSTRING& stream) +{ +if (TTCN_Logger::log_this_event(TTCN_Logger::DEBUG_ENCDEC)) { +TTCN_Logger::begin_event(TTCN_Logger::DEBUG_ENCDEC); +TTCN_Logger::log_event_str("dec_PCUIF_Message(): Stream before decoding: "); +stream.log(); +TTCN_Logger::end_event(); +} +TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT); +TTCN_EncDec::clear_error(); +TTCN_Buffer ttcn_buffer(stream); +PCUIF__Message ret_val; +ret_val.decode(PCUIF__Message_descr_, ttcn_buffer, TTCN_EncDec::CT_RAW); +if (TTCN_Logger::log_this_event(TTCN_Logger::DEBUG_ENCDEC)) { +TTCN_Logger::begin_event(TTCN_Logger::DEBUG_ENCDEC); +TTCN_Logger::log_event_str("dec_PCUIF_Message(): Decoded @PCUIF_Types.PCUIF_Message: "); +ret_val.log(); +TTCN_Logger::end_event(); +} +if (TTCN_EncDec::get_last_error_type() == TTCN_EncDec::ET_NONE) { +if (ttcn_buffer.get_pos() < ttcn_buffer.get_len()-1 && TTCN_Logger::log_this_event(TTCN_WARNING)) { +ttcn_buffer.cut(); +OCTETSTRING remaining_stream; +ttcn_buffer.get_string(remaining_stream); +TTCN_Logger::begin_event(TTCN_WARNING); +TTCN_Logger::log_event_str("dec_PCUIF_Message(): Warning: Data remained at the end of the stream after successful decoding: "); +remaining_stream.log(); +TTCN_Logger::end_event(); +} +} +return ret_val; +} + +PCUIF__Message_template tr__PCUIF__RTS__REQ(const INTEGER_template& bts__nr, const INTEGER_template& trx__nr, const INTEGER_template& ts__nr, const PCUIF__Sapi_template& sapi, const INTEGER_template& fn, const INTEGER_template& block__nr) +{ +TTCN_Location current_location("PCUIF_Types.ttcn", 235, TTCN_Location::LOCATION_TEMPLATE, "tr_PCUIF_RTS_REQ"); +PCUIF__Message_template ret_val; +ret_val.msg__type() = PCUIF__MsgType::PCU__IF__MSG__RTS__REQ; +ret_val.bts__nr() = bts__nr; +ret_val.spare() = ANY_VALUE; +{ +PCUIF__rts__req_template& tmp_0 = ret_val.u().rts__req(); +tmp_0.sapi() = sapi; +tmp_0.spare() = ANY_VALUE; +tmp_0.fn() = fn; +tmp_0.arfcn() = ANY_VALUE; +tmp_0.trx__nr() = trx__nr; +tmp_0.ts__nr() = ts__nr; +tmp_0.block__nr() = block__nr; +} +return ret_val; +} + +PCUIF__Message_template ts__PCUIF__TXT__IND(const INTEGER& bts__nr, const PCUIF__TextType& tt, const CHARSTRING& text) +{ +TTCN_Location current_location("PCUIF_Types.ttcn", 258, TTCN_Location::LOCATION_TEMPLATE, "ts_PCUIF_TXT_IND"); +PCUIF__Message_template ret_val; +ret_val.msg__type() = PCUIF__MsgType::PCU__IF__MSG__TXT__IND; +ret_val.bts__nr() = bts__nr; +ret_val.spare() = os_0; +{ +PCUIF__txt__ind_template& tmp_1 = ret_val.u().txt__ind(); +tmp_1.txt__type() = tt; +tmp_1.text() = text; +} +return ret_val; +} + +PCUIF__Message_template ts__PCUIF__ACT__REQ(const INTEGER& bts__nr, const INTEGER& trx__nr, const INTEGER& ts__nr) +{ +TTCN_Location current_location("PCUIF_Types.ttcn", 270, TTCN_Location::LOCATION_TEMPLATE, "ts_PCUIF_ACT_REQ"); +PCUIF__Message_template ret_val; +ret_val.msg__type() = PCUIF__MsgType::PCU__IF__MSG__ACT__REQ; +ret_val.bts__nr() = bts__nr; +ret_val.spare() = os_0; +{ +PCUIF__act__req_template& tmp_2 = ret_val.u().act__req(); +tmp_2.is__activate() = 1; +tmp_2.trx__nr() = trx__nr; +tmp_2.ts__nr() = ts__nr; +tmp_2.spare() = os_1; +} +return ret_val; +} + +PCUIF__Message_template ts__PCUIF__DEACT__REQ(const INTEGER& bts__nr, const INTEGER& trx__nr, const INTEGER& ts__nr) +{ +TTCN_Location current_location("PCUIF_Types.ttcn", 284, TTCN_Location::LOCATION_TEMPLATE, "ts_PCUIF_DEACT_REQ"); +PCUIF__Message_template ret_val; +ret_val.msg__type() = PCUIF__MsgType::PCU__IF__MSG__ACT__REQ; +ret_val.bts__nr() = bts__nr; +ret_val.spare() = os_0; +{ +PCUIF__act__req_template& tmp_3 = ret_val.u().act__req(); +tmp_3.is__activate() = 0; +tmp_3.trx__nr() = trx__nr; +tmp_3.ts__nr() = ts__nr; +tmp_3.spare() = os_1; +} +return ret_val; +} + +PCUIF__Message_template tr__PCUIF__DATA__IND(const INTEGER_template& bts__nr, const INTEGER_template& trx__nr, const INTEGER_template& ts__nr, const INTEGER_template& block__nr, const PCUIF__Sapi_template& sapi, const OCTETSTRING_template& data) +{ +TTCN_Location current_location("PCUIF_Types.ttcn", 298, TTCN_Location::LOCATION_TEMPLATE, "tr_PCUIF_DATA_IND"); +PCUIF__Message_template ret_val; +ret_val.msg__type() = PCUIF__MsgType::PCU__IF__MSG__DATA__IND; +ret_val.bts__nr() = bts__nr; +ret_val.spare() = ANY_VALUE; +{ +PCUIF__data_template& tmp_4 = ret_val.u().data__ind(); +tmp_4.sapi() = sapi; +tmp_4.len() = ANY_VALUE; +tmp_4.data() = data; +tmp_4.fn() = ANY_VALUE; +tmp_4.arfcn() = ANY_VALUE; +tmp_4.trx__nr() = trx__nr; +tmp_4.ts__nr() = ts__nr; +tmp_4.block__nr() = block__nr; +tmp_4.rssi() = ANY_VALUE; +tmp_4.ber10k() = ANY_VALUE; +tmp_4.ta__offs__qbits() = ANY_VALUE; +tmp_4.lqual__cb() = ANY_VALUE; +} +return ret_val; +} + +PCUIF__Message_template ts__PCUIF__DATA__REQ(const INTEGER& bts__nr, const INTEGER& trx__nr, const INTEGER& ts__nr, const INTEGER& block__nr, const INTEGER& fn, const PCUIF__Sapi& sapi, const OCTETSTRING& data) +{ +TTCN_Location current_location("PCUIF_Types.ttcn", 325, TTCN_Location::LOCATION_TEMPLATE, "ts_PCUIF_DATA_REQ"); +PCUIF__Message_template ret_val; +ret_val.msg__type() = PCUIF__MsgType::PCU__IF__MSG__DATA__REQ; +ret_val.bts__nr() = bts__nr; +ret_val.spare() = os_0; +{ +PCUIF__data_template& tmp_5 = ret_val.u().data__req(); +tmp_5.sapi() = sapi; +tmp_5.len() = data.lengthof(); +tmp_5.data() = data; +tmp_5.fn() = fn; +tmp_5.arfcn() = 0; +tmp_5.trx__nr() = trx__nr; +tmp_5.ts__nr() = ts__nr; +tmp_5.block__nr() = block__nr; +tmp_5.rssi() = 0; +tmp_5.ber10k() = 0; +tmp_5.ta__offs__qbits() = 0; +tmp_5.lqual__cb() = 0; +} +return ret_val; +} + +PCUIF__Message_template tr__PCUIF__DATA__CNF(const INTEGER_template& bts__nr, const INTEGER_template& trx__nr, const INTEGER_template& ts__nr, const PCUIF__Sapi_template& sapi, const OCTETSTRING_template& data) +{ +TTCN_Location current_location("PCUIF_Types.ttcn", 351, TTCN_Location::LOCATION_TEMPLATE, "tr_PCUIF_DATA_CNF"); +PCUIF__Message_template ret_val; +ret_val.msg__type() = PCUIF__MsgType::PCU__IF__MSG__DATA__CNF; +ret_val.bts__nr() = bts__nr; +ret_val.spare() = ANY_VALUE; +{ +PCUIF__data_template& tmp_6 = ret_val.u().data__cnf(); +tmp_6.sapi() = sapi; +tmp_6.len() = ANY_VALUE; +tmp_6.data() = data; +tmp_6.fn() = ANY_VALUE; +tmp_6.arfcn() = ANY_VALUE; +tmp_6.trx__nr() = trx__nr; +tmp_6.ts__nr() = ts__nr; +tmp_6.block__nr() = ANY_VALUE; +tmp_6.rssi() = ANY_VALUE; +tmp_6.ber10k() = ANY_VALUE; +tmp_6.ta__offs__qbits() = ANY_VALUE; +tmp_6.lqual__cb() = ANY_VALUE; +} +return ret_val; +} + +PCUIF__Message_template tr__PCUIF__RACH__IND(const INTEGER_template& bts__nr, const INTEGER_template& ra, const INTEGER_template& is__11bit, const INTEGER_template& burst__type, const INTEGER_template& fn) +{ +TTCN_Location current_location("PCUIF_Types.ttcn", 377, TTCN_Location::LOCATION_TEMPLATE, "tr_PCUIF_RACH_IND"); +PCUIF__Message_template ret_val; +ret_val.msg__type() = PCUIF__MsgType::PCU__IF__MSG__RACH__IND; +ret_val.bts__nr() = bts__nr; +ret_val.spare() = ANY_VALUE; +{ +PCUIF__rach__ind_template& tmp_7 = ret_val.u().rach__ind(); +tmp_7.sapi() = PCUIF__Sapi::PCU__IF__SAPI__RACH; +tmp_7.ra() = ra; +tmp_7.qta() = ANY_VALUE; +tmp_7.fn() = fn; +tmp_7.arfcn() = ANY_VALUE; +tmp_7.is__11bit() = is__11bit; +tmp_7.burst__type() = burst__type; +} +return ret_val; +} + +PCUIF__Message_template tr__PCUIF__PAG__REQ(const INTEGER_template& bts__nr, const OCTETSTRING_template& id__lv, const INTEGER_template& chan__needed, const PCUIF__Sapi_template& ) +{ +TTCN_Location current_location("PCUIF_Types.ttcn", 398, TTCN_Location::LOCATION_TEMPLATE, "tr_PCUIF_PAG_REQ"); +PCUIF__Message_template ret_val; +ret_val.msg__type() = PCUIF__MsgType::PCU__IF__MSG__PAG__REQ; +ret_val.bts__nr() = bts__nr; +ret_val.spare() = ANY_VALUE; +{ +PCUIF__pag__req_template& tmp_8 = ret_val.u().pag__req(); +tmp_8.sapi() = ANY_VALUE; +tmp_8.chan__needed() = chan__needed; +tmp_8.identity__lv() = id__lv; +} +return ret_val; +} + +PCUIF__Message_template tr__PCUIF__INFO__IND(const INTEGER_template& bts__nr, const PCUIF__Flags_template& flags, const INTEGER_template& version) +{ +TTCN_Location current_location("PCUIF_Types.ttcn", 414, TTCN_Location::LOCATION_TEMPLATE, "tr_PCUIF_INFO_IND"); +PCUIF__Message_template ret_val; +ret_val.msg__type() = PCUIF__MsgType::PCU__IF__MSG__INFO__IND; +ret_val.bts__nr() = bts__nr; +ret_val.spare() = ANY_VALUE; +{ +PCUIF__info__ind_template& tmp_9 = ret_val.u().info__ind(); +tmp_9.version() = version; +tmp_9.flags() = flags; +tmp_9.trx() = ANY_VALUE; +tmp_9.bsic() = ANY_VALUE; +tmp_9.mcc() = ANY_VALUE; +tmp_9.mnc() = ANY_VALUE; +tmp_9.mnc__3__digits() = ANY_VALUE; +tmp_9.lac() = ANY_VALUE; +tmp_9.rac() = ANY_VALUE; +tmp_9.nsei() = ANY_VALUE; +tmp_9.nse__timer() = ANY_VALUE; +tmp_9.cell__timer() = ANY_VALUE; +tmp_9.cell__id() = ANY_VALUE; +tmp_9.repeat__time() = ANY_VALUE; +tmp_9.repeat__count() = ANY_VALUE; +tmp_9.bvci() = ANY_VALUE; +tmp_9.t3142() = ANY_VALUE; +tmp_9.t3169() = ANY_VALUE; +tmp_9.t3191() = ANY_VALUE; +tmp_9.t3193__10ms() = ANY_VALUE; +tmp_9.t3195() = ANY_VALUE; +tmp_9.t3101() = ANY_VALUE; +tmp_9.t3103() = ANY_VALUE; +tmp_9.t3105() = ANY_VALUE; +tmp_9.cv__countdown() = ANY_VALUE; +tmp_9.dl__tbf__ext() = ANY_VALUE; +tmp_9.ul__tbf__ext() = ANY_VALUE; +tmp_9.initial__cs() = ANY_VALUE; +tmp_9.initial__mcs() = ANY_VALUE; +tmp_9.nsvci() = ANY_VALUE; +tmp_9.local__pprt() = ANY_VALUE; +tmp_9.remote__port() = ANY_VALUE; +tmp_9.remote__ip() = ANY_VALUE; +} +return ret_val; +} + + +/* Bodies of static functions */ + +static void pre_init_module() +{ +TTCN_Location current_location("PCUIF_Types.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "PCUIF_Types"); +Osmocom__Types::module_object.pre_init_module(); +current_location.update_lineno(8); +/* PCUIF_Types.ttcn, line 8 */ +const_PCU__SOCK__DEFAULT = cs_0; +current_location.update_lineno(9); +/* PCUIF_Types.ttcn, line 9 */ +const_PCU__IF__VERSION = 9; +module_object.add_function("enc_PCUIF_Message", (genericfunc_t)&enc__PCUIF__Message, NULL); +module_object.add_function("dec_PCUIF_Message", (genericfunc_t)&dec__PCUIF__Message, NULL); +} + +static void post_init_module() +{ +TTCN_Location current_location("PCUIF_Types.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "PCUIF_Types"); +Osmocom__Types::module_object.post_init_module(); +template_tr__PCUIF__RTS__REQ_bts__nr_defval = ANY_VALUE; +template_tr__PCUIF__RTS__REQ_trx__nr_defval = ANY_VALUE; +template_tr__PCUIF__RTS__REQ_ts__nr_defval = ANY_VALUE; +template_tr__PCUIF__RTS__REQ_sapi_defval = ANY_VALUE; +template_tr__PCUIF__RTS__REQ_fn_defval = ANY_VALUE; +template_tr__PCUIF__RTS__REQ_block__nr_defval = ANY_VALUE; +template_tr__PCUIF__DATA__IND_bts__nr_defval = ANY_VALUE; +template_tr__PCUIF__DATA__IND_trx__nr_defval = ANY_VALUE; +template_tr__PCUIF__DATA__IND_ts__nr_defval = ANY_VALUE; +template_tr__PCUIF__DATA__IND_block__nr_defval = ANY_VALUE; +template_tr__PCUIF__DATA__IND_sapi_defval = ANY_VALUE; +template_tr__PCUIF__DATA__IND_data_defval = ANY_VALUE; +template_tr__PCUIF__DATA__CNF_bts__nr_defval = ANY_VALUE; +template_tr__PCUIF__DATA__CNF_trx__nr_defval = ANY_VALUE; +template_tr__PCUIF__DATA__CNF_ts__nr_defval = ANY_VALUE; +template_tr__PCUIF__DATA__CNF_sapi_defval = ANY_VALUE; +template_tr__PCUIF__DATA__CNF_data_defval = ANY_VALUE; +template_tr__PCUIF__RACH__IND_bts__nr_defval = ANY_VALUE; +template_tr__PCUIF__RACH__IND_ra_defval = ANY_VALUE; +template_tr__PCUIF__RACH__IND_is__11bit_defval = ANY_VALUE; +template_tr__PCUIF__RACH__IND_burst__type_defval = ANY_VALUE; +template_tr__PCUIF__RACH__IND_fn_defval = ANY_VALUE; +template_tr__PCUIF__PAG__REQ_bts__nr_defval = ANY_VALUE; +template_tr__PCUIF__PAG__REQ_id__lv_defval = ANY_VALUE; +template_tr__PCUIF__PAG__REQ_chan__needed_defval = ANY_VALUE; +template_tr__PCUIF__PAG__REQ_sapi_defval = ANY_VALUE; +template_tr__PCUIF__INFO__IND_bts__nr_defval = ANY_VALUE; +template_tr__PCUIF__INFO__IND_flags_defval = ANY_VALUE; +template_tr__PCUIF__INFO__IND_version_defval = 9; +} + + +} /* end of namespace */ diff --git a/titan/PCUIF_Types.hh b/titan/PCUIF_Types.hh new file mode 100644 index 0000000..ba6fd5a --- /dev/null +++ b/titan/PCUIF_Types.hh @@ -0,0 +1,3579 @@ +// This C++ header file was generated by the TTCN-3 compiler +// of the TTCN-3 Test Executor version CRL 113 200/6 R3B +// for Harald Welte (laforge@nataraja) on Thu Mar 22 22:09:15 2018 + +// Copyright (c) 2000-2017 Ericsson Telecom AB + +// Do not edit this file unless you know what you are doing. + +#ifndef PCUIF__Types_HH +#define PCUIF__Types_HH + +#ifdef TITAN_RUNTIME_2 +#error Generated code does not match with used runtime.\ + Code was generated without -R option but -DTITAN_RUNTIME_2 was used. +#endif + +/* Header file includes */ + +#include +#include "Osmocom_Types.hh" + +#if TTCN3_VERSION != 60301 +#error Version mismatch detected.\ + Please check the version of the TTCN-3 compiler and the base library.\ + Run make clean and rebuild the project if the version of the compiler changed recently. +#endif + +#ifndef LINUX +#error This file should be compiled on LINUX +#endif + +#undef PCUIF__Types_HH +#endif + +namespace PCUIF__Types { + +/* Forward declarations of classes */ + +class PCUIF__MsgType; +class PCUIF__MsgType_template; +class PCUIF__Sapi; +class PCUIF__Sapi_template; +class PCUIF__Flags; +class PCUIF__Flags_template; +class PCUIF__TextType; +class PCUIF__TextType_template; +class PCUIF__txt__ind; +class PCUIF__txt__ind_template; +class PCUIF__data; +class PCUIF__data_template; +class PCUIF__data__cnf__dt; +class PCUIF__data__cnf__dt_template; +class PCUIF__rts__req; +class PCUIF__rts__req_template; +class PCUIF__rach__ind; +class PCUIF__rach__ind_template; +class PCUIF__InfoTrx; +class PCUIF__InfoTrx_template; +class PCUIF__info__ind_trx; +class PCUIF__info__ind_trx_template; +typedef PreGenRecordOf::PREGEN__RECORD__OF__INTEGER PCUIF__info__ind_nse__timer; +typedef PreGenRecordOf::PREGEN__RECORD__OF__INTEGER_template PCUIF__info__ind_nse__timer_template; +typedef PreGenRecordOf::PREGEN__RECORD__OF__INTEGER PCUIF__info__ind_cell__timer; +typedef PreGenRecordOf::PREGEN__RECORD__OF__INTEGER_template PCUIF__info__ind_cell__timer_template; +typedef PreGenRecordOf::PREGEN__RECORD__OF__INTEGER PCUIF__info__ind_nsvci; +typedef PreGenRecordOf::PREGEN__RECORD__OF__INTEGER_template PCUIF__info__ind_nsvci_template; +typedef PreGenRecordOf::PREGEN__RECORD__OF__INTEGER PCUIF__info__ind_local__pprt; +typedef PreGenRecordOf::PREGEN__RECORD__OF__INTEGER_template PCUIF__info__ind_local__pprt_template; +typedef PreGenRecordOf::PREGEN__RECORD__OF__INTEGER PCUIF__info__ind_remote__port; +typedef PreGenRecordOf::PREGEN__RECORD__OF__INTEGER_template PCUIF__info__ind_remote__port_template; +typedef PreGenRecordOf::PREGEN__RECORD__OF__INTEGER PCUIF__info__ind_remote__ip; +typedef PreGenRecordOf::PREGEN__RECORD__OF__INTEGER_template PCUIF__info__ind_remote__ip_template; +class PCUIF__info__ind; +class PCUIF__info__ind_template; +class PCUIF__act__req; +class PCUIF__act__req_template; +class PCUIF__time__ind; +class PCUIF__time__ind_template; +class PCUIF__pag__req; +class PCUIF__pag__req_template; +class PCUIF__susp__req; +class PCUIF__susp__req_template; +class PCUIF__MsgUnion; +class PCUIF__MsgUnion_template; +class PCUIF__Message; +class PCUIF__Message_template; + +} /* end of namespace */ + +#ifndef PCUIF__Types_HH +#define PCUIF__Types_HH + +namespace PCUIF__Types { + +/* Type definitions */ + +typedef CHARSTRING PCUIF__Text; +typedef CHARSTRING_template PCUIF__Text_template; +typedef OCTETSTRING OCT162; +typedef OCTETSTRING_template OCT162_template; + +/* Class definitions */ + +class PCUIF__MsgType : public Base_Type { // enum +friend class PCUIF__MsgType_template; +public: +enum enum_type { PCU__IF__MSG__DATA__REQ = 0, PCU__IF__MSG__DATA__CNF = 1, PCU__IF__MSG__DATA__IND = 2, PCU__IF__MSG__SUSP__REQ = 3, PCU__IF__MSG__RTS__REQ = 16, PCU__IF__MSG__DATA__CNF__DT = 17, PCU__IF__MSG__RACH__IND = 34, PCU__IF__MSG__INFO__IND = 50, PCU__IF__MSG__ACT__REQ = 64, PCU__IF__MSG__TIME__IND = 82, PCU__IF__MSG__PAG__REQ = 96, PCU__IF__MSG__TXT__IND = 112, UNKNOWN_VALUE = 4, UNBOUND_VALUE = 5 }; +private: +enum_type enum_value; + +public: +PCUIF__MsgType(); +PCUIF__MsgType(int other_value); +PCUIF__MsgType(enum_type other_value); +PCUIF__MsgType(const PCUIF__MsgType& other_value); + +PCUIF__MsgType& operator=(int other_value); +PCUIF__MsgType& operator=(enum_type other_value); +PCUIF__MsgType& operator=(const PCUIF__MsgType& other_value); + +boolean operator==(enum_type other_value) const; +boolean operator==(const PCUIF__MsgType& other_value) const; +inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); } +inline boolean operator!=(const PCUIF__MsgType& other_value) const { return !(*this == other_value); } +boolean operator<(enum_type other_value) const; +boolean operator<(const PCUIF__MsgType& other_value) const; +boolean operator>(enum_type other_value) const; +boolean operator>(const PCUIF__MsgType& other_value) const; +inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); } +inline boolean operator<=(const PCUIF__MsgType& other_value) const { return !(*this > other_value); } +inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); } +inline boolean operator>=(const PCUIF__MsgType& other_value) const { return !(*this < other_value); } + +static const char *enum_to_str(enum_type enum_par); +static enum_type str_to_enum(const char *str_par); +static boolean is_valid_enum(int int_par); + +static int enum2int(enum_type enum_par); +static int enum2int(const PCUIF__MsgType& enum_par); +int as_int() const { return enum2int(enum_value); } +void from_int(int p_val) { *this = p_val; } +void int2enum(int int_val); +operator enum_type() const; +inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; } +inline boolean is_value() const { return enum_value != UNBOUND_VALUE; } +inline void clean_up(){ enum_value = UNBOUND_VALUE; } +inline boolean is_present() const { return is_bound(); } +void log() const; +void set_param(Module_Param& param); +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class PCUIF__MsgType_template : public Base_Template { +union { +PCUIF__MsgType::enum_type single_value; +struct { +unsigned int n_values; +PCUIF__MsgType_template *list_value; +} value_list; +}; + +void copy_template(const PCUIF__MsgType_template& other_value); + +public: +PCUIF__MsgType_template(); +PCUIF__MsgType_template(template_sel other_value); +PCUIF__MsgType_template(int other_value); +PCUIF__MsgType_template(PCUIF__MsgType::enum_type other_value); +PCUIF__MsgType_template(const PCUIF__MsgType& other_value); +PCUIF__MsgType_template(const OPTIONAL& other_value); +PCUIF__MsgType_template(const PCUIF__MsgType_template& other_value); +~PCUIF__MsgType_template(); + +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +PCUIF__MsgType_template& operator=(template_sel other_value); +PCUIF__MsgType_template& operator=(int other_value); +PCUIF__MsgType_template& operator=(PCUIF__MsgType::enum_type other_value); +PCUIF__MsgType_template& operator=(const PCUIF__MsgType& other_value); +PCUIF__MsgType_template& operator=(const OPTIONAL& other_value); +PCUIF__MsgType_template& operator=(const PCUIF__MsgType_template& other_value); + +boolean match(PCUIF__MsgType::enum_type other_value, boolean legacy = FALSE) const; +boolean match(const PCUIF__MsgType& other_value, boolean legacy = FALSE) const; +PCUIF__MsgType::enum_type valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +PCUIF__MsgType_template& list_item(unsigned int list_index); +void log() const; +void log_match(const PCUIF__MsgType& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +}; + +class PCUIF__Sapi : public Base_Type { // enum +friend class PCUIF__Sapi_template; +public: +enum enum_type { PCU__IF__SAPI__UNKNOWN = 0, PCU__IF__SAPI__RACH = 1, PCU__IF__SAPI__AGCH = 2, PCU__IF__SAPI__PCH = 3, PCU__IF__SAPI__BCCH = 4, PCU__IF__SAPI__PDTCH = 5, PCU__IF__SAPI__PRACH = 6, PCU__IF__SAPI__PTCCH = 7, PCU__IF__SAPI__AGCH__DT = 8, UNKNOWN_VALUE = 9, UNBOUND_VALUE = 10 }; +private: +enum_type enum_value; + +public: +PCUIF__Sapi(); +PCUIF__Sapi(int other_value); +PCUIF__Sapi(enum_type other_value); +PCUIF__Sapi(const PCUIF__Sapi& other_value); + +PCUIF__Sapi& operator=(int other_value); +PCUIF__Sapi& operator=(enum_type other_value); +PCUIF__Sapi& operator=(const PCUIF__Sapi& other_value); + +boolean operator==(enum_type other_value) const; +boolean operator==(const PCUIF__Sapi& other_value) const; +inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); } +inline boolean operator!=(const PCUIF__Sapi& other_value) const { return !(*this == other_value); } +boolean operator<(enum_type other_value) const; +boolean operator<(const PCUIF__Sapi& other_value) const; +boolean operator>(enum_type other_value) const; +boolean operator>(const PCUIF__Sapi& other_value) const; +inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); } +inline boolean operator<=(const PCUIF__Sapi& other_value) const { return !(*this > other_value); } +inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); } +inline boolean operator>=(const PCUIF__Sapi& other_value) const { return !(*this < other_value); } + +static const char *enum_to_str(enum_type enum_par); +static enum_type str_to_enum(const char *str_par); +static boolean is_valid_enum(int int_par); + +static int enum2int(enum_type enum_par); +static int enum2int(const PCUIF__Sapi& enum_par); +int as_int() const { return enum2int(enum_value); } +void from_int(int p_val) { *this = p_val; } +void int2enum(int int_val); +operator enum_type() const; +inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; } +inline boolean is_value() const { return enum_value != UNBOUND_VALUE; } +inline void clean_up(){ enum_value = UNBOUND_VALUE; } +inline boolean is_present() const { return is_bound(); } +void log() const; +void set_param(Module_Param& param); +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class PCUIF__Sapi_template : public Base_Template { +union { +PCUIF__Sapi::enum_type single_value; +struct { +unsigned int n_values; +PCUIF__Sapi_template *list_value; +} value_list; +}; + +void copy_template(const PCUIF__Sapi_template& other_value); + +public: +PCUIF__Sapi_template(); +PCUIF__Sapi_template(template_sel other_value); +PCUIF__Sapi_template(int other_value); +PCUIF__Sapi_template(PCUIF__Sapi::enum_type other_value); +PCUIF__Sapi_template(const PCUIF__Sapi& other_value); +PCUIF__Sapi_template(const OPTIONAL& other_value); +PCUIF__Sapi_template(const PCUIF__Sapi_template& other_value); +~PCUIF__Sapi_template(); + +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +PCUIF__Sapi_template& operator=(template_sel other_value); +PCUIF__Sapi_template& operator=(int other_value); +PCUIF__Sapi_template& operator=(PCUIF__Sapi::enum_type other_value); +PCUIF__Sapi_template& operator=(const PCUIF__Sapi& other_value); +PCUIF__Sapi_template& operator=(const OPTIONAL& other_value); +PCUIF__Sapi_template& operator=(const PCUIF__Sapi_template& other_value); + +boolean match(PCUIF__Sapi::enum_type other_value, boolean legacy = FALSE) const; +boolean match(const PCUIF__Sapi& other_value, boolean legacy = FALSE) const; +PCUIF__Sapi::enum_type valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +PCUIF__Sapi_template& list_item(unsigned int list_index); +void log() const; +void log_match(const PCUIF__Sapi& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +}; + +class PCUIF__Flags : public Base_Type { + BOOLEAN field_bts__active; + BOOLEAN field_sysmo__direct__dsp; + BITSTRING field_spare; + BOOLEAN field_cs1; + BOOLEAN field_cs2; + BOOLEAN field_cs3; + BOOLEAN field_cs4; + BOOLEAN field_mcs1; + BOOLEAN field_mcs2; + BOOLEAN field_mcs3; + BOOLEAN field_mcs4; + BOOLEAN field_mcs5; + BOOLEAN field_mcs6; + BOOLEAN field_mcs7; + BOOLEAN field_mcs8; + BOOLEAN field_mcs9; + BITSTRING field_spare2; +public: + PCUIF__Flags(); + PCUIF__Flags(const BOOLEAN& par_bts__active, + const BOOLEAN& par_sysmo__direct__dsp, + const BITSTRING& par_spare, + const BOOLEAN& par_cs1, + const BOOLEAN& par_cs2, + const BOOLEAN& par_cs3, + const BOOLEAN& par_cs4, + const BOOLEAN& par_mcs1, + const BOOLEAN& par_mcs2, + const BOOLEAN& par_mcs3, + const BOOLEAN& par_mcs4, + const BOOLEAN& par_mcs5, + const BOOLEAN& par_mcs6, + const BOOLEAN& par_mcs7, + const BOOLEAN& par_mcs8, + const BOOLEAN& par_mcs9, + const BITSTRING& par_spare2); + PCUIF__Flags(const PCUIF__Flags& other_value); + inline boolean is_component() { return FALSE; } + void clean_up(); + PCUIF__Flags& operator=(const PCUIF__Flags& other_value); + boolean operator==(const PCUIF__Flags& other_value) const; + inline boolean operator!=(const PCUIF__Flags& other_value) const + { return !(*this == other_value); } + + boolean is_bound() const; + +inline boolean is_present() const { return is_bound(); } + boolean is_value() const; + + inline BOOLEAN& bts__active() + {return field_bts__active;} + inline const BOOLEAN& bts__active() const + {return field_bts__active;} + inline BOOLEAN& sysmo__direct__dsp() + {return field_sysmo__direct__dsp;} + inline const BOOLEAN& sysmo__direct__dsp() const + {return field_sysmo__direct__dsp;} + inline BITSTRING& spare() + {return field_spare;} + inline const BITSTRING& spare() const + {return field_spare;} + inline BOOLEAN& cs1() + {return field_cs1;} + inline const BOOLEAN& cs1() const + {return field_cs1;} + inline BOOLEAN& cs2() + {return field_cs2;} + inline const BOOLEAN& cs2() const + {return field_cs2;} + inline BOOLEAN& cs3() + {return field_cs3;} + inline const BOOLEAN& cs3() const + {return field_cs3;} + inline BOOLEAN& cs4() + {return field_cs4;} + inline const BOOLEAN& cs4() const + {return field_cs4;} + inline BOOLEAN& mcs1() + {return field_mcs1;} + inline const BOOLEAN& mcs1() const + {return field_mcs1;} + inline BOOLEAN& mcs2() + {return field_mcs2;} + inline const BOOLEAN& mcs2() const + {return field_mcs2;} + inline BOOLEAN& mcs3() + {return field_mcs3;} + inline const BOOLEAN& mcs3() const + {return field_mcs3;} + inline BOOLEAN& mcs4() + {return field_mcs4;} + inline const BOOLEAN& mcs4() const + {return field_mcs4;} + inline BOOLEAN& mcs5() + {return field_mcs5;} + inline const BOOLEAN& mcs5() const + {return field_mcs5;} + inline BOOLEAN& mcs6() + {return field_mcs6;} + inline const BOOLEAN& mcs6() const + {return field_mcs6;} + inline BOOLEAN& mcs7() + {return field_mcs7;} + inline const BOOLEAN& mcs7() const + {return field_mcs7;} + inline BOOLEAN& mcs8() + {return field_mcs8;} + inline const BOOLEAN& mcs8() const + {return field_mcs8;} + inline BOOLEAN& mcs9() + {return field_mcs9;} + inline const BOOLEAN& mcs9() const + {return field_mcs9;} + inline BITSTRING& spare2() + {return field_spare2;} + inline const BITSTRING& spare2() const + {return field_spare2;} + inline int size_of() const + {return 17;} + void log() const; + void set_param(Module_Param& param); + void set_implicit_omit(); + void encode_text(Text_Buf& text_buf) const; + void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class PCUIF__Flags_template : public Base_Template { +struct single_value_struct; +union { +single_value_struct *single_value; +struct { +unsigned int n_values; +PCUIF__Flags_template *list_value; +} value_list; +}; + +void set_specific(); +void copy_value(const PCUIF__Flags& other_value); +void copy_template(const PCUIF__Flags_template& other_value); + +public: +PCUIF__Flags_template(); +PCUIF__Flags_template(template_sel other_value); +PCUIF__Flags_template(const PCUIF__Flags& other_value); +PCUIF__Flags_template(const OPTIONAL& other_value); +PCUIF__Flags_template(const PCUIF__Flags_template& other_value); +~PCUIF__Flags_template(); +PCUIF__Flags_template& operator=(template_sel other_value); +PCUIF__Flags_template& operator=(const PCUIF__Flags& other_value); +PCUIF__Flags_template& operator=(const OPTIONAL& other_value); +PCUIF__Flags_template& operator=(const PCUIF__Flags_template& other_value); +boolean match(const PCUIF__Flags& other_value, boolean legacy = FALSE) const; +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +PCUIF__Flags valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +PCUIF__Flags_template& list_item(unsigned int list_index) const; +BOOLEAN_template& bts__active(); +const BOOLEAN_template& bts__active() const; +BOOLEAN_template& sysmo__direct__dsp(); +const BOOLEAN_template& sysmo__direct__dsp() const; +BITSTRING_template& spare(); +const BITSTRING_template& spare() const; +BOOLEAN_template& cs1(); +const BOOLEAN_template& cs1() const; +BOOLEAN_template& cs2(); +const BOOLEAN_template& cs2() const; +BOOLEAN_template& cs3(); +const BOOLEAN_template& cs3() const; +BOOLEAN_template& cs4(); +const BOOLEAN_template& cs4() const; +BOOLEAN_template& mcs1(); +const BOOLEAN_template& mcs1() const; +BOOLEAN_template& mcs2(); +const BOOLEAN_template& mcs2() const; +BOOLEAN_template& mcs3(); +const BOOLEAN_template& mcs3() const; +BOOLEAN_template& mcs4(); +const BOOLEAN_template& mcs4() const; +BOOLEAN_template& mcs5(); +const BOOLEAN_template& mcs5() const; +BOOLEAN_template& mcs6(); +const BOOLEAN_template& mcs6() const; +BOOLEAN_template& mcs7(); +const BOOLEAN_template& mcs7() const; +BOOLEAN_template& mcs8(); +const BOOLEAN_template& mcs8() const; +BOOLEAN_template& mcs9(); +const BOOLEAN_template& mcs9() const; +BITSTRING_template& spare2(); +const BITSTRING_template& spare2() const; +int size_of() const; +void log() const; +void log_match(const PCUIF__Flags& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +}; + +class PCUIF__TextType : public Base_Type { // enum +friend class PCUIF__TextType_template; +public: +enum enum_type { PCU__VERSION = 0, PCU__OML__ALERT = 1, UNKNOWN_VALUE = 2, UNBOUND_VALUE = 3 }; +private: +enum_type enum_value; + +public: +PCUIF__TextType(); +PCUIF__TextType(int other_value); +PCUIF__TextType(enum_type other_value); +PCUIF__TextType(const PCUIF__TextType& other_value); + +PCUIF__TextType& operator=(int other_value); +PCUIF__TextType& operator=(enum_type other_value); +PCUIF__TextType& operator=(const PCUIF__TextType& other_value); + +boolean operator==(enum_type other_value) const; +boolean operator==(const PCUIF__TextType& other_value) const; +inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); } +inline boolean operator!=(const PCUIF__TextType& other_value) const { return !(*this == other_value); } +boolean operator<(enum_type other_value) const; +boolean operator<(const PCUIF__TextType& other_value) const; +boolean operator>(enum_type other_value) const; +boolean operator>(const PCUIF__TextType& other_value) const; +inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); } +inline boolean operator<=(const PCUIF__TextType& other_value) const { return !(*this > other_value); } +inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); } +inline boolean operator>=(const PCUIF__TextType& other_value) const { return !(*this < other_value); } + +static const char *enum_to_str(enum_type enum_par); +static enum_type str_to_enum(const char *str_par); +static boolean is_valid_enum(int int_par); + +static int enum2int(enum_type enum_par); +static int enum2int(const PCUIF__TextType& enum_par); +int as_int() const { return enum2int(enum_value); } +void from_int(int p_val) { *this = p_val; } +void int2enum(int int_val); +operator enum_type() const; +inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; } +inline boolean is_value() const { return enum_value != UNBOUND_VALUE; } +inline void clean_up(){ enum_value = UNBOUND_VALUE; } +inline boolean is_present() const { return is_bound(); } +void log() const; +void set_param(Module_Param& param); +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class PCUIF__TextType_template : public Base_Template { +union { +PCUIF__TextType::enum_type single_value; +struct { +unsigned int n_values; +PCUIF__TextType_template *list_value; +} value_list; +}; + +void copy_template(const PCUIF__TextType_template& other_value); + +public: +PCUIF__TextType_template(); +PCUIF__TextType_template(template_sel other_value); +PCUIF__TextType_template(int other_value); +PCUIF__TextType_template(PCUIF__TextType::enum_type other_value); +PCUIF__TextType_template(const PCUIF__TextType& other_value); +PCUIF__TextType_template(const OPTIONAL& other_value); +PCUIF__TextType_template(const PCUIF__TextType_template& other_value); +~PCUIF__TextType_template(); + +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +PCUIF__TextType_template& operator=(template_sel other_value); +PCUIF__TextType_template& operator=(int other_value); +PCUIF__TextType_template& operator=(PCUIF__TextType::enum_type other_value); +PCUIF__TextType_template& operator=(const PCUIF__TextType& other_value); +PCUIF__TextType_template& operator=(const OPTIONAL& other_value); +PCUIF__TextType_template& operator=(const PCUIF__TextType_template& other_value); + +boolean match(PCUIF__TextType::enum_type other_value, boolean legacy = FALSE) const; +boolean match(const PCUIF__TextType& other_value, boolean legacy = FALSE) const; +PCUIF__TextType::enum_type valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +PCUIF__TextType_template& list_item(unsigned int list_index); +void log() const; +void log_match(const PCUIF__TextType& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +}; + +class PCUIF__txt__ind : public Base_Type { + PCUIF__TextType field_txt__type; + CHARSTRING field_text; +public: + PCUIF__txt__ind(); + PCUIF__txt__ind(const PCUIF__TextType& par_txt__type, + const CHARSTRING& par_text); + PCUIF__txt__ind(const PCUIF__txt__ind& other_value); + inline boolean is_component() { return FALSE; } + void clean_up(); + PCUIF__txt__ind& operator=(const PCUIF__txt__ind& other_value); + boolean operator==(const PCUIF__txt__ind& other_value) const; + inline boolean operator!=(const PCUIF__txt__ind& other_value) const + { return !(*this == other_value); } + + boolean is_bound() const; + +inline boolean is_present() const { return is_bound(); } + boolean is_value() const; + + inline PCUIF__TextType& txt__type() + {return field_txt__type;} + inline const PCUIF__TextType& txt__type() const + {return field_txt__type;} + inline CHARSTRING& text() + {return field_text;} + inline const CHARSTRING& text() const + {return field_text;} + inline int size_of() const + {return 2;} + void log() const; + void set_param(Module_Param& param); + void set_implicit_omit(); + void encode_text(Text_Buf& text_buf) const; + void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class PCUIF__txt__ind_template : public Base_Template { +struct single_value_struct; +union { +single_value_struct *single_value; +struct { +unsigned int n_values; +PCUIF__txt__ind_template *list_value; +} value_list; +}; + +void set_specific(); +void copy_value(const PCUIF__txt__ind& other_value); +void copy_template(const PCUIF__txt__ind_template& other_value); + +public: +PCUIF__txt__ind_template(); +PCUIF__txt__ind_template(template_sel other_value); +PCUIF__txt__ind_template(const PCUIF__txt__ind& other_value); +PCUIF__txt__ind_template(const OPTIONAL& other_value); +PCUIF__txt__ind_template(const PCUIF__txt__ind_template& other_value); +~PCUIF__txt__ind_template(); +PCUIF__txt__ind_template& operator=(template_sel other_value); +PCUIF__txt__ind_template& operator=(const PCUIF__txt__ind& other_value); +PCUIF__txt__ind_template& operator=(const OPTIONAL& other_value); +PCUIF__txt__ind_template& operator=(const PCUIF__txt__ind_template& other_value); +boolean match(const PCUIF__txt__ind& other_value, boolean legacy = FALSE) const; +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +PCUIF__txt__ind valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +PCUIF__txt__ind_template& list_item(unsigned int list_index) const; +PCUIF__TextType_template& txt__type(); +const PCUIF__TextType_template& txt__type() const; +CHARSTRING_template& text(); +const CHARSTRING_template& text() const; +int size_of() const; +void log() const; +void log_match(const PCUIF__txt__ind& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +}; + +class PCUIF__data : public Base_Type { + PCUIF__Sapi field_sapi; + INTEGER field_len; + OCTETSTRING field_data; + INTEGER field_fn; + INTEGER field_arfcn; + INTEGER field_trx__nr; + INTEGER field_ts__nr; + INTEGER field_block__nr; + INTEGER field_rssi; + INTEGER field_ber10k; + INTEGER field_ta__offs__qbits; + INTEGER field_lqual__cb; +public: + PCUIF__data(); + PCUIF__data(const PCUIF__Sapi& par_sapi, + const INTEGER& par_len, + const OCTETSTRING& par_data, + const INTEGER& par_fn, + const INTEGER& par_arfcn, + const INTEGER& par_trx__nr, + const INTEGER& par_ts__nr, + const INTEGER& par_block__nr, + const INTEGER& par_rssi, + const INTEGER& par_ber10k, + const INTEGER& par_ta__offs__qbits, + const INTEGER& par_lqual__cb); + PCUIF__data(const PCUIF__data& other_value); + inline boolean is_component() { return FALSE; } + void clean_up(); + PCUIF__data& operator=(const PCUIF__data& other_value); + boolean operator==(const PCUIF__data& other_value) const; + inline boolean operator!=(const PCUIF__data& other_value) const + { return !(*this == other_value); } + + boolean is_bound() const; + +inline boolean is_present() const { return is_bound(); } + boolean is_value() const; + + inline PCUIF__Sapi& sapi() + {return field_sapi;} + inline const PCUIF__Sapi& sapi() const + {return field_sapi;} + inline INTEGER& len() + {return field_len;} + inline const INTEGER& len() const + {return field_len;} + inline OCTETSTRING& data() + {return field_data;} + inline const OCTETSTRING& data() const + {return field_data;} + inline INTEGER& fn() + {return field_fn;} + inline const INTEGER& fn() const + {return field_fn;} + inline INTEGER& arfcn() + {return field_arfcn;} + inline const INTEGER& arfcn() const + {return field_arfcn;} + inline INTEGER& trx__nr() + {return field_trx__nr;} + inline const INTEGER& trx__nr() const + {return field_trx__nr;} + inline INTEGER& ts__nr() + {return field_ts__nr;} + inline const INTEGER& ts__nr() const + {return field_ts__nr;} + inline INTEGER& block__nr() + {return field_block__nr;} + inline const INTEGER& block__nr() const + {return field_block__nr;} + inline INTEGER& rssi() + {return field_rssi;} + inline const INTEGER& rssi() const + {return field_rssi;} + inline INTEGER& ber10k() + {return field_ber10k;} + inline const INTEGER& ber10k() const + {return field_ber10k;} + inline INTEGER& ta__offs__qbits() + {return field_ta__offs__qbits;} + inline const INTEGER& ta__offs__qbits() const + {return field_ta__offs__qbits;} + inline INTEGER& lqual__cb() + {return field_lqual__cb;} + inline const INTEGER& lqual__cb() const + {return field_lqual__cb;} + inline int size_of() const + {return 12;} + void log() const; + void set_param(Module_Param& param); + void set_implicit_omit(); + void encode_text(Text_Buf& text_buf) const; + void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class PCUIF__data_template : public Base_Template { +struct single_value_struct; +union { +single_value_struct *single_value; +struct { +unsigned int n_values; +PCUIF__data_template *list_value; +} value_list; +}; + +void set_specific(); +void copy_value(const PCUIF__data& other_value); +void copy_template(const PCUIF__data_template& other_value); + +public: +PCUIF__data_template(); +PCUIF__data_template(template_sel other_value); +PCUIF__data_template(const PCUIF__data& other_value); +PCUIF__data_template(const OPTIONAL& other_value); +PCUIF__data_template(const PCUIF__data_template& other_value); +~PCUIF__data_template(); +PCUIF__data_template& operator=(template_sel other_value); +PCUIF__data_template& operator=(const PCUIF__data& other_value); +PCUIF__data_template& operator=(const OPTIONAL& other_value); +PCUIF__data_template& operator=(const PCUIF__data_template& other_value); +boolean match(const PCUIF__data& other_value, boolean legacy = FALSE) const; +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +PCUIF__data valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +PCUIF__data_template& list_item(unsigned int list_index) const; +PCUIF__Sapi_template& sapi(); +const PCUIF__Sapi_template& sapi() const; +INTEGER_template& len(); +const INTEGER_template& len() const; +OCTETSTRING_template& data(); +const OCTETSTRING_template& data() const; +INTEGER_template& fn(); +const INTEGER_template& fn() const; +INTEGER_template& arfcn(); +const INTEGER_template& arfcn() const; +INTEGER_template& trx__nr(); +const INTEGER_template& trx__nr() const; +INTEGER_template& ts__nr(); +const INTEGER_template& ts__nr() const; +INTEGER_template& block__nr(); +const INTEGER_template& block__nr() const; +INTEGER_template& rssi(); +const INTEGER_template& rssi() const; +INTEGER_template& ber10k(); +const INTEGER_template& ber10k() const; +INTEGER_template& ta__offs__qbits(); +const INTEGER_template& ta__offs__qbits() const; +INTEGER_template& lqual__cb(); +const INTEGER_template& lqual__cb() const; +int size_of() const; +void log() const; +void log_match(const PCUIF__data& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +}; + +class PCUIF__data__cnf__dt : public Base_Type { + PCUIF__Sapi field_sapi; + OCTETSTRING field_tlli; + INTEGER field_fn; + INTEGER field_arfcn; + INTEGER field_trx__nr; + INTEGER field_ts__nr; + INTEGER field_block__nr; + INTEGER field_rssi; + INTEGER field_ber10k; + INTEGER field_ta__offs__qbits; + INTEGER field_lqual__cb; +public: + PCUIF__data__cnf__dt(); + PCUIF__data__cnf__dt(const PCUIF__Sapi& par_sapi, + const OCTETSTRING& par_tlli, + const INTEGER& par_fn, + const INTEGER& par_arfcn, + const INTEGER& par_trx__nr, + const INTEGER& par_ts__nr, + const INTEGER& par_block__nr, + const INTEGER& par_rssi, + const INTEGER& par_ber10k, + const INTEGER& par_ta__offs__qbits, + const INTEGER& par_lqual__cb); + PCUIF__data__cnf__dt(const PCUIF__data__cnf__dt& other_value); + inline boolean is_component() { return FALSE; } + void clean_up(); + PCUIF__data__cnf__dt& operator=(const PCUIF__data__cnf__dt& other_value); + boolean operator==(const PCUIF__data__cnf__dt& other_value) const; + inline boolean operator!=(const PCUIF__data__cnf__dt& other_value) const + { return !(*this == other_value); } + + boolean is_bound() const; + +inline boolean is_present() const { return is_bound(); } + boolean is_value() const; + + inline PCUIF__Sapi& sapi() + {return field_sapi;} + inline const PCUIF__Sapi& sapi() const + {return field_sapi;} + inline OCTETSTRING& tlli() + {return field_tlli;} + inline const OCTETSTRING& tlli() const + {return field_tlli;} + inline INTEGER& fn() + {return field_fn;} + inline const INTEGER& fn() const + {return field_fn;} + inline INTEGER& arfcn() + {return field_arfcn;} + inline const INTEGER& arfcn() const + {return field_arfcn;} + inline INTEGER& trx__nr() + {return field_trx__nr;} + inline const INTEGER& trx__nr() const + {return field_trx__nr;} + inline INTEGER& ts__nr() + {return field_ts__nr;} + inline const INTEGER& ts__nr() const + {return field_ts__nr;} + inline INTEGER& block__nr() + {return field_block__nr;} + inline const INTEGER& block__nr() const + {return field_block__nr;} + inline INTEGER& rssi() + {return field_rssi;} + inline const INTEGER& rssi() const + {return field_rssi;} + inline INTEGER& ber10k() + {return field_ber10k;} + inline const INTEGER& ber10k() const + {return field_ber10k;} + inline INTEGER& ta__offs__qbits() + {return field_ta__offs__qbits;} + inline const INTEGER& ta__offs__qbits() const + {return field_ta__offs__qbits;} + inline INTEGER& lqual__cb() + {return field_lqual__cb;} + inline const INTEGER& lqual__cb() const + {return field_lqual__cb;} + inline int size_of() const + {return 11;} + void log() const; + void set_param(Module_Param& param); + void set_implicit_omit(); + void encode_text(Text_Buf& text_buf) const; + void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class PCUIF__data__cnf__dt_template : public Base_Template { +struct single_value_struct; +union { +single_value_struct *single_value; +struct { +unsigned int n_values; +PCUIF__data__cnf__dt_template *list_value; +} value_list; +}; + +void set_specific(); +void copy_value(const PCUIF__data__cnf__dt& other_value); +void copy_template(const PCUIF__data__cnf__dt_template& other_value); + +public: +PCUIF__data__cnf__dt_template(); +PCUIF__data__cnf__dt_template(template_sel other_value); +PCUIF__data__cnf__dt_template(const PCUIF__data__cnf__dt& other_value); +PCUIF__data__cnf__dt_template(const OPTIONAL& other_value); +PCUIF__data__cnf__dt_template(const PCUIF__data__cnf__dt_template& other_value); +~PCUIF__data__cnf__dt_template(); +PCUIF__data__cnf__dt_template& operator=(template_sel other_value); +PCUIF__data__cnf__dt_template& operator=(const PCUIF__data__cnf__dt& other_value); +PCUIF__data__cnf__dt_template& operator=(const OPTIONAL& other_value); +PCUIF__data__cnf__dt_template& operator=(const PCUIF__data__cnf__dt_template& other_value); +boolean match(const PCUIF__data__cnf__dt& other_value, boolean legacy = FALSE) const; +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +PCUIF__data__cnf__dt valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +PCUIF__data__cnf__dt_template& list_item(unsigned int list_index) const; +PCUIF__Sapi_template& sapi(); +const PCUIF__Sapi_template& sapi() const; +OCTETSTRING_template& tlli(); +const OCTETSTRING_template& tlli() const; +INTEGER_template& fn(); +const INTEGER_template& fn() const; +INTEGER_template& arfcn(); +const INTEGER_template& arfcn() const; +INTEGER_template& trx__nr(); +const INTEGER_template& trx__nr() const; +INTEGER_template& ts__nr(); +const INTEGER_template& ts__nr() const; +INTEGER_template& block__nr(); +const INTEGER_template& block__nr() const; +INTEGER_template& rssi(); +const INTEGER_template& rssi() const; +INTEGER_template& ber10k(); +const INTEGER_template& ber10k() const; +INTEGER_template& ta__offs__qbits(); +const INTEGER_template& ta__offs__qbits() const; +INTEGER_template& lqual__cb(); +const INTEGER_template& lqual__cb() const; +int size_of() const; +void log() const; +void log_match(const PCUIF__data__cnf__dt& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +}; + +class PCUIF__rts__req : public Base_Type { + PCUIF__Sapi field_sapi; + OCTETSTRING field_spare; + INTEGER field_fn; + INTEGER field_arfcn; + INTEGER field_trx__nr; + INTEGER field_ts__nr; + INTEGER field_block__nr; +public: + PCUIF__rts__req(); + PCUIF__rts__req(const PCUIF__Sapi& par_sapi, + const OCTETSTRING& par_spare, + const INTEGER& par_fn, + const INTEGER& par_arfcn, + const INTEGER& par_trx__nr, + const INTEGER& par_ts__nr, + const INTEGER& par_block__nr); + PCUIF__rts__req(const PCUIF__rts__req& other_value); + inline boolean is_component() { return FALSE; } + void clean_up(); + PCUIF__rts__req& operator=(const PCUIF__rts__req& other_value); + boolean operator==(const PCUIF__rts__req& other_value) const; + inline boolean operator!=(const PCUIF__rts__req& other_value) const + { return !(*this == other_value); } + + boolean is_bound() const; + +inline boolean is_present() const { return is_bound(); } + boolean is_value() const; + + inline PCUIF__Sapi& sapi() + {return field_sapi;} + inline const PCUIF__Sapi& sapi() const + {return field_sapi;} + inline OCTETSTRING& spare() + {return field_spare;} + inline const OCTETSTRING& spare() const + {return field_spare;} + inline INTEGER& fn() + {return field_fn;} + inline const INTEGER& fn() const + {return field_fn;} + inline INTEGER& arfcn() + {return field_arfcn;} + inline const INTEGER& arfcn() const + {return field_arfcn;} + inline INTEGER& trx__nr() + {return field_trx__nr;} + inline const INTEGER& trx__nr() const + {return field_trx__nr;} + inline INTEGER& ts__nr() + {return field_ts__nr;} + inline const INTEGER& ts__nr() const + {return field_ts__nr;} + inline INTEGER& block__nr() + {return field_block__nr;} + inline const INTEGER& block__nr() const + {return field_block__nr;} + inline int size_of() const + {return 7;} + void log() const; + void set_param(Module_Param& param); + void set_implicit_omit(); + void encode_text(Text_Buf& text_buf) const; + void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class PCUIF__rts__req_template : public Base_Template { +struct single_value_struct; +union { +single_value_struct *single_value; +struct { +unsigned int n_values; +PCUIF__rts__req_template *list_value; +} value_list; +}; + +void set_specific(); +void copy_value(const PCUIF__rts__req& other_value); +void copy_template(const PCUIF__rts__req_template& other_value); + +public: +PCUIF__rts__req_template(); +PCUIF__rts__req_template(template_sel other_value); +PCUIF__rts__req_template(const PCUIF__rts__req& other_value); +PCUIF__rts__req_template(const OPTIONAL& other_value); +PCUIF__rts__req_template(const PCUIF__rts__req_template& other_value); +~PCUIF__rts__req_template(); +PCUIF__rts__req_template& operator=(template_sel other_value); +PCUIF__rts__req_template& operator=(const PCUIF__rts__req& other_value); +PCUIF__rts__req_template& operator=(const OPTIONAL& other_value); +PCUIF__rts__req_template& operator=(const PCUIF__rts__req_template& other_value); +boolean match(const PCUIF__rts__req& other_value, boolean legacy = FALSE) const; +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +PCUIF__rts__req valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +PCUIF__rts__req_template& list_item(unsigned int list_index) const; +PCUIF__Sapi_template& sapi(); +const PCUIF__Sapi_template& sapi() const; +OCTETSTRING_template& spare(); +const OCTETSTRING_template& spare() const; +INTEGER_template& fn(); +const INTEGER_template& fn() const; +INTEGER_template& arfcn(); +const INTEGER_template& arfcn() const; +INTEGER_template& trx__nr(); +const INTEGER_template& trx__nr() const; +INTEGER_template& ts__nr(); +const INTEGER_template& ts__nr() const; +INTEGER_template& block__nr(); +const INTEGER_template& block__nr() const; +int size_of() const; +void log() const; +void log_match(const PCUIF__rts__req& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +}; + +class PCUIF__rach__ind : public Base_Type { + PCUIF__Sapi field_sapi; + INTEGER field_ra; + INTEGER field_qta; + INTEGER field_fn; + INTEGER field_arfcn; + INTEGER field_is__11bit; + INTEGER field_burst__type; +public: + PCUIF__rach__ind(); + PCUIF__rach__ind(const PCUIF__Sapi& par_sapi, + const INTEGER& par_ra, + const INTEGER& par_qta, + const INTEGER& par_fn, + const INTEGER& par_arfcn, + const INTEGER& par_is__11bit, + const INTEGER& par_burst__type); + PCUIF__rach__ind(const PCUIF__rach__ind& other_value); + inline boolean is_component() { return FALSE; } + void clean_up(); + PCUIF__rach__ind& operator=(const PCUIF__rach__ind& other_value); + boolean operator==(const PCUIF__rach__ind& other_value) const; + inline boolean operator!=(const PCUIF__rach__ind& other_value) const + { return !(*this == other_value); } + + boolean is_bound() const; + +inline boolean is_present() const { return is_bound(); } + boolean is_value() const; + + inline PCUIF__Sapi& sapi() + {return field_sapi;} + inline const PCUIF__Sapi& sapi() const + {return field_sapi;} + inline INTEGER& ra() + {return field_ra;} + inline const INTEGER& ra() const + {return field_ra;} + inline INTEGER& qta() + {return field_qta;} + inline const INTEGER& qta() const + {return field_qta;} + inline INTEGER& fn() + {return field_fn;} + inline const INTEGER& fn() const + {return field_fn;} + inline INTEGER& arfcn() + {return field_arfcn;} + inline const INTEGER& arfcn() const + {return field_arfcn;} + inline INTEGER& is__11bit() + {return field_is__11bit;} + inline const INTEGER& is__11bit() const + {return field_is__11bit;} + inline INTEGER& burst__type() + {return field_burst__type;} + inline const INTEGER& burst__type() const + {return field_burst__type;} + inline int size_of() const + {return 7;} + void log() const; + void set_param(Module_Param& param); + void set_implicit_omit(); + void encode_text(Text_Buf& text_buf) const; + void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class PCUIF__rach__ind_template : public Base_Template { +struct single_value_struct; +union { +single_value_struct *single_value; +struct { +unsigned int n_values; +PCUIF__rach__ind_template *list_value; +} value_list; +}; + +void set_specific(); +void copy_value(const PCUIF__rach__ind& other_value); +void copy_template(const PCUIF__rach__ind_template& other_value); + +public: +PCUIF__rach__ind_template(); +PCUIF__rach__ind_template(template_sel other_value); +PCUIF__rach__ind_template(const PCUIF__rach__ind& other_value); +PCUIF__rach__ind_template(const OPTIONAL& other_value); +PCUIF__rach__ind_template(const PCUIF__rach__ind_template& other_value); +~PCUIF__rach__ind_template(); +PCUIF__rach__ind_template& operator=(template_sel other_value); +PCUIF__rach__ind_template& operator=(const PCUIF__rach__ind& other_value); +PCUIF__rach__ind_template& operator=(const OPTIONAL& other_value); +PCUIF__rach__ind_template& operator=(const PCUIF__rach__ind_template& other_value); +boolean match(const PCUIF__rach__ind& other_value, boolean legacy = FALSE) const; +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +PCUIF__rach__ind valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +PCUIF__rach__ind_template& list_item(unsigned int list_index) const; +PCUIF__Sapi_template& sapi(); +const PCUIF__Sapi_template& sapi() const; +INTEGER_template& ra(); +const INTEGER_template& ra() const; +INTEGER_template& qta(); +const INTEGER_template& qta() const; +INTEGER_template& fn(); +const INTEGER_template& fn() const; +INTEGER_template& arfcn(); +const INTEGER_template& arfcn() const; +INTEGER_template& is__11bit(); +const INTEGER_template& is__11bit() const; +INTEGER_template& burst__type(); +const INTEGER_template& burst__type() const; +int size_of() const; +void log() const; +void log_match(const PCUIF__rach__ind& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +}; + +class PCUIF__InfoTrx : public Base_Type { + INTEGER field_arfcn; + BITSTRING field_pdch__mask; + OCTETSTRING field_spare; + OCTETSTRING field_tsc; + INTEGER field_hLayer1; +public: + PCUIF__InfoTrx(); + PCUIF__InfoTrx(const INTEGER& par_arfcn, + const BITSTRING& par_pdch__mask, + const OCTETSTRING& par_spare, + const OCTETSTRING& par_tsc, + const INTEGER& par_hLayer1); + PCUIF__InfoTrx(const PCUIF__InfoTrx& other_value); + inline boolean is_component() { return FALSE; } + void clean_up(); + PCUIF__InfoTrx& operator=(const PCUIF__InfoTrx& other_value); + boolean operator==(const PCUIF__InfoTrx& other_value) const; + inline boolean operator!=(const PCUIF__InfoTrx& other_value) const + { return !(*this == other_value); } + + boolean is_bound() const; + +inline boolean is_present() const { return is_bound(); } + boolean is_value() const; + + inline INTEGER& arfcn() + {return field_arfcn;} + inline const INTEGER& arfcn() const + {return field_arfcn;} + inline BITSTRING& pdch__mask() + {return field_pdch__mask;} + inline const BITSTRING& pdch__mask() const + {return field_pdch__mask;} + inline OCTETSTRING& spare() + {return field_spare;} + inline const OCTETSTRING& spare() const + {return field_spare;} + inline OCTETSTRING& tsc() + {return field_tsc;} + inline const OCTETSTRING& tsc() const + {return field_tsc;} + inline INTEGER& hLayer1() + {return field_hLayer1;} + inline const INTEGER& hLayer1() const + {return field_hLayer1;} + inline int size_of() const + {return 5;} + void log() const; + void set_param(Module_Param& param); + void set_implicit_omit(); + void encode_text(Text_Buf& text_buf) const; + void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class PCUIF__InfoTrx_template : public Base_Template { +struct single_value_struct; +union { +single_value_struct *single_value; +struct { +unsigned int n_values; +PCUIF__InfoTrx_template *list_value; +} value_list; +}; + +void set_specific(); +void copy_value(const PCUIF__InfoTrx& other_value); +void copy_template(const PCUIF__InfoTrx_template& other_value); + +public: +PCUIF__InfoTrx_template(); +PCUIF__InfoTrx_template(template_sel other_value); +PCUIF__InfoTrx_template(const PCUIF__InfoTrx& other_value); +PCUIF__InfoTrx_template(const OPTIONAL& other_value); +PCUIF__InfoTrx_template(const PCUIF__InfoTrx_template& other_value); +~PCUIF__InfoTrx_template(); +PCUIF__InfoTrx_template& operator=(template_sel other_value); +PCUIF__InfoTrx_template& operator=(const PCUIF__InfoTrx& other_value); +PCUIF__InfoTrx_template& operator=(const OPTIONAL& other_value); +PCUIF__InfoTrx_template& operator=(const PCUIF__InfoTrx_template& other_value); +boolean match(const PCUIF__InfoTrx& other_value, boolean legacy = FALSE) const; +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +PCUIF__InfoTrx valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +PCUIF__InfoTrx_template& list_item(unsigned int list_index) const; +INTEGER_template& arfcn(); +const INTEGER_template& arfcn() const; +BITSTRING_template& pdch__mask(); +const BITSTRING_template& pdch__mask() const; +OCTETSTRING_template& spare(); +const OCTETSTRING_template& spare() const; +OCTETSTRING_template& tsc(); +const OCTETSTRING_template& tsc() const; +INTEGER_template& hLayer1(); +const INTEGER_template& hLayer1() const; +int size_of() const; +void log() const; +void log_match(const PCUIF__InfoTrx& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +}; + +class PCUIF__info__ind_trx : public Base_Type { +struct recordof_setof_struct { +int ref_count; +int n_elements; +PCUIF__InfoTrx **value_elements; +} *val_ptr; + +static const PCUIF__InfoTrx UNBOUND_ELEM; +private: +friend boolean operator==(null_type null_value, const PCUIF__info__ind_trx& other_value); + +public: + typedef PCUIF__InfoTrx of_type; +PCUIF__info__ind_trx(); +PCUIF__info__ind_trx(null_type other_value); +PCUIF__info__ind_trx(const PCUIF__info__ind_trx& other_value); +~PCUIF__info__ind_trx(); + +void clean_up(); +PCUIF__info__ind_trx& operator=(null_type other_value); +PCUIF__info__ind_trx& operator=(const PCUIF__info__ind_trx& other_value); + +boolean operator==(null_type other_value) const; +boolean operator==(const PCUIF__info__ind_trx& other_value) const; +inline boolean operator!=(null_type other_value) const { return !(*this == other_value); } +inline boolean operator!=(const PCUIF__info__ind_trx& other_value) const { return !(*this == other_value); } + +PCUIF__InfoTrx& operator[](int index_value); +PCUIF__InfoTrx& operator[](const INTEGER& index_value); +const PCUIF__InfoTrx& operator[](int index_value) const; +const PCUIF__InfoTrx& operator[](const INTEGER& index_value) const; + +PCUIF__info__ind_trx operator<<=(int rotate_count) const; +PCUIF__info__ind_trx operator<<=(const INTEGER& rotate_count) const; +PCUIF__info__ind_trx operator>>=(int rotate_count) const; +PCUIF__info__ind_trx operator>>=(const INTEGER& rotate_count) const; + +PCUIF__info__ind_trx operator+(const PCUIF__info__ind_trx& other_value) const; + +PCUIF__info__ind_trx substr(int index, int returncount) const; + +PCUIF__info__ind_trx replace(int index, int len, const PCUIF__info__ind_trx& repl) const; + +PCUIF__info__ind_trx replace(int index, int len, const PCUIF__info__ind_trx_template& repl) const; + +void set_size(int new_size); +inline boolean is_bound() const {return val_ptr != NULL; } +inline boolean is_present() const { return is_bound(); } +boolean is_value() const; +int size_of() const; +int n_elem() const { return size_of(); } +int lengthof() const; +void log() const; +void set_param(Module_Param& param); + void set_implicit_omit(); +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class PCUIF__info__ind_trx_template : public Record_Of_Template { +union { +struct { +int n_elements; +PCUIF__InfoTrx_template **value_elements; +} single_value; +struct { +unsigned int n_values; +PCUIF__info__ind_trx_template *list_value; +} value_list; +}; +void copy_value(const PCUIF__info__ind_trx& other_value); +void copy_template(const PCUIF__info__ind_trx_template& other_value); +static boolean match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy); + +public: +PCUIF__info__ind_trx_template(); +PCUIF__info__ind_trx_template(template_sel other_value); +PCUIF__info__ind_trx_template(null_type other_value); +PCUIF__info__ind_trx_template(const PCUIF__info__ind_trx& other_value); +PCUIF__info__ind_trx_template(const OPTIONAL& other_value); +PCUIF__info__ind_trx_template(const PCUIF__info__ind_trx_template& other_value); +~PCUIF__info__ind_trx_template(); + +void clean_up(); +PCUIF__info__ind_trx_template& operator=(template_sel other_value); +PCUIF__info__ind_trx_template& operator=(null_type other_value); +PCUIF__info__ind_trx_template& operator=(const PCUIF__info__ind_trx& other_value); +PCUIF__info__ind_trx_template& operator=(const OPTIONAL& other_value); +PCUIF__info__ind_trx_template& operator=(const PCUIF__info__ind_trx_template& other_value); + +PCUIF__InfoTrx_template& operator[](int index_value); +PCUIF__InfoTrx_template& operator[](const INTEGER& index_value); +const PCUIF__InfoTrx_template& operator[](int index_value) const; +const PCUIF__InfoTrx_template& operator[](const INTEGER& index_value) const; + +void set_size(int new_size); +int n_elem() const; +int size_of(boolean is_size) const; +inline int size_of() const { return size_of(TRUE); } +inline int lengthof() const { return size_of(FALSE); } +boolean match(const PCUIF__info__ind_trx& other_value, boolean legacy = FALSE) const; +inline boolean is_bound() const + {return template_selection != UNINITIALIZED_TEMPLATE; } +boolean is_value() const; +PCUIF__info__ind_trx valueof() const; +PCUIF__info__ind_trx substr(int index, int returncount) const; + +PCUIF__info__ind_trx replace(int index, int len, const PCUIF__info__ind_trx_template& repl) const; + +PCUIF__info__ind_trx replace(int index, int len, const PCUIF__info__ind_trx& repl) const; + +void set_type(template_sel template_type, unsigned int list_length); +PCUIF__info__ind_trx_template& list_item(unsigned int list_index); +void log() const; +void log_match(const PCUIF__info__ind_trx& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +boolean get_istemplate_kind(const char* type) const; +}; + +class PCUIF__info__ind : public Base_Type { + INTEGER field_version; + PCUIF__Flags field_flags; + PCUIF__info__ind_trx field_trx; + INTEGER field_bsic; + INTEGER field_mcc; + INTEGER field_mnc; + INTEGER field_mnc__3__digits; + INTEGER field_lac; + INTEGER field_rac; + INTEGER field_nsei; + PCUIF__info__ind_nse__timer field_nse__timer; + PCUIF__info__ind_cell__timer field_cell__timer; + INTEGER field_cell__id; + INTEGER field_repeat__time; + INTEGER field_repeat__count; + INTEGER field_bvci; + INTEGER field_t3142; + INTEGER field_t3169; + INTEGER field_t3191; + INTEGER field_t3193__10ms; + INTEGER field_t3195; + INTEGER field_t3101; + INTEGER field_t3103; + INTEGER field_t3105; + INTEGER field_cv__countdown; + INTEGER field_dl__tbf__ext; + INTEGER field_ul__tbf__ext; + INTEGER field_initial__cs; + INTEGER field_initial__mcs; + PCUIF__info__ind_nsvci field_nsvci; + PCUIF__info__ind_local__pprt field_local__pprt; + PCUIF__info__ind_remote__port field_remote__port; + PCUIF__info__ind_remote__ip field_remote__ip; +public: + PCUIF__info__ind(); + PCUIF__info__ind(const INTEGER& par_version, + const PCUIF__Flags& par_flags, + const PCUIF__info__ind_trx& par_trx, + const INTEGER& par_bsic, + const INTEGER& par_mcc, + const INTEGER& par_mnc, + const INTEGER& par_mnc__3__digits, + const INTEGER& par_lac, + const INTEGER& par_rac, + const INTEGER& par_nsei, + const PCUIF__info__ind_nse__timer& par_nse__timer, + const PCUIF__info__ind_cell__timer& par_cell__timer, + const INTEGER& par_cell__id, + const INTEGER& par_repeat__time, + const INTEGER& par_repeat__count, + const INTEGER& par_bvci, + const INTEGER& par_t3142, + const INTEGER& par_t3169, + const INTEGER& par_t3191, + const INTEGER& par_t3193__10ms, + const INTEGER& par_t3195, + const INTEGER& par_t3101, + const INTEGER& par_t3103, + const INTEGER& par_t3105, + const INTEGER& par_cv__countdown, + const INTEGER& par_dl__tbf__ext, + const INTEGER& par_ul__tbf__ext, + const INTEGER& par_initial__cs, + const INTEGER& par_initial__mcs, + const PCUIF__info__ind_nsvci& par_nsvci, + const PCUIF__info__ind_local__pprt& par_local__pprt, + const PCUIF__info__ind_remote__port& par_remote__port, + const PCUIF__info__ind_remote__ip& par_remote__ip); + PCUIF__info__ind(const PCUIF__info__ind& other_value); + inline boolean is_component() { return FALSE; } + void clean_up(); + PCUIF__info__ind& operator=(const PCUIF__info__ind& other_value); + boolean operator==(const PCUIF__info__ind& other_value) const; + inline boolean operator!=(const PCUIF__info__ind& other_value) const + { return !(*this == other_value); } + + boolean is_bound() const; + +inline boolean is_present() const { return is_bound(); } + boolean is_value() const; + + inline INTEGER& version() + {return field_version;} + inline const INTEGER& version() const + {return field_version;} + inline PCUIF__Flags& flags() + {return field_flags;} + inline const PCUIF__Flags& flags() const + {return field_flags;} + inline PCUIF__info__ind_trx& trx() + {return field_trx;} + inline const PCUIF__info__ind_trx& trx() const + {return field_trx;} + inline INTEGER& bsic() + {return field_bsic;} + inline const INTEGER& bsic() const + {return field_bsic;} + inline INTEGER& mcc() + {return field_mcc;} + inline const INTEGER& mcc() const + {return field_mcc;} + inline INTEGER& mnc() + {return field_mnc;} + inline const INTEGER& mnc() const + {return field_mnc;} + inline INTEGER& mnc__3__digits() + {return field_mnc__3__digits;} + inline const INTEGER& mnc__3__digits() const + {return field_mnc__3__digits;} + inline INTEGER& lac() + {return field_lac;} + inline const INTEGER& lac() const + {return field_lac;} + inline INTEGER& rac() + {return field_rac;} + inline const INTEGER& rac() const + {return field_rac;} + inline INTEGER& nsei() + {return field_nsei;} + inline const INTEGER& nsei() const + {return field_nsei;} + inline PCUIF__info__ind_nse__timer& nse__timer() + {return field_nse__timer;} + inline const PCUIF__info__ind_nse__timer& nse__timer() const + {return field_nse__timer;} + inline PCUIF__info__ind_cell__timer& cell__timer() + {return field_cell__timer;} + inline const PCUIF__info__ind_cell__timer& cell__timer() const + {return field_cell__timer;} + inline INTEGER& cell__id() + {return field_cell__id;} + inline const INTEGER& cell__id() const + {return field_cell__id;} + inline INTEGER& repeat__time() + {return field_repeat__time;} + inline const INTEGER& repeat__time() const + {return field_repeat__time;} + inline INTEGER& repeat__count() + {return field_repeat__count;} + inline const INTEGER& repeat__count() const + {return field_repeat__count;} + inline INTEGER& bvci() + {return field_bvci;} + inline const INTEGER& bvci() const + {return field_bvci;} + inline INTEGER& t3142() + {return field_t3142;} + inline const INTEGER& t3142() const + {return field_t3142;} + inline INTEGER& t3169() + {return field_t3169;} + inline const INTEGER& t3169() const + {return field_t3169;} + inline INTEGER& t3191() + {return field_t3191;} + inline const INTEGER& t3191() const + {return field_t3191;} + inline INTEGER& t3193__10ms() + {return field_t3193__10ms;} + inline const INTEGER& t3193__10ms() const + {return field_t3193__10ms;} + inline INTEGER& t3195() + {return field_t3195;} + inline const INTEGER& t3195() const + {return field_t3195;} + inline INTEGER& t3101() + {return field_t3101;} + inline const INTEGER& t3101() const + {return field_t3101;} + inline INTEGER& t3103() + {return field_t3103;} + inline const INTEGER& t3103() const + {return field_t3103;} + inline INTEGER& t3105() + {return field_t3105;} + inline const INTEGER& t3105() const + {return field_t3105;} + inline INTEGER& cv__countdown() + {return field_cv__countdown;} + inline const INTEGER& cv__countdown() const + {return field_cv__countdown;} + inline INTEGER& dl__tbf__ext() + {return field_dl__tbf__ext;} + inline const INTEGER& dl__tbf__ext() const + {return field_dl__tbf__ext;} + inline INTEGER& ul__tbf__ext() + {return field_ul__tbf__ext;} + inline const INTEGER& ul__tbf__ext() const + {return field_ul__tbf__ext;} + inline INTEGER& initial__cs() + {return field_initial__cs;} + inline const INTEGER& initial__cs() const + {return field_initial__cs;} + inline INTEGER& initial__mcs() + {return field_initial__mcs;} + inline const INTEGER& initial__mcs() const + {return field_initial__mcs;} + inline PCUIF__info__ind_nsvci& nsvci() + {return field_nsvci;} + inline const PCUIF__info__ind_nsvci& nsvci() const + {return field_nsvci;} + inline PCUIF__info__ind_local__pprt& local__pprt() + {return field_local__pprt;} + inline const PCUIF__info__ind_local__pprt& local__pprt() const + {return field_local__pprt;} + inline PCUIF__info__ind_remote__port& remote__port() + {return field_remote__port;} + inline const PCUIF__info__ind_remote__port& remote__port() const + {return field_remote__port;} + inline PCUIF__info__ind_remote__ip& remote__ip() + {return field_remote__ip;} + inline const PCUIF__info__ind_remote__ip& remote__ip() const + {return field_remote__ip;} + inline int size_of() const + {return 33;} + void log() const; + void set_param(Module_Param& param); + void set_implicit_omit(); + void encode_text(Text_Buf& text_buf) const; + void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class PCUIF__info__ind_template : public Base_Template { +struct single_value_struct; +union { +single_value_struct *single_value; +struct { +unsigned int n_values; +PCUIF__info__ind_template *list_value; +} value_list; +}; + +void set_specific(); +void copy_value(const PCUIF__info__ind& other_value); +void copy_template(const PCUIF__info__ind_template& other_value); + +public: +PCUIF__info__ind_template(); +PCUIF__info__ind_template(template_sel other_value); +PCUIF__info__ind_template(const PCUIF__info__ind& other_value); +PCUIF__info__ind_template(const OPTIONAL& other_value); +PCUIF__info__ind_template(const PCUIF__info__ind_template& other_value); +~PCUIF__info__ind_template(); +PCUIF__info__ind_template& operator=(template_sel other_value); +PCUIF__info__ind_template& operator=(const PCUIF__info__ind& other_value); +PCUIF__info__ind_template& operator=(const OPTIONAL& other_value); +PCUIF__info__ind_template& operator=(const PCUIF__info__ind_template& other_value); +boolean match(const PCUIF__info__ind& other_value, boolean legacy = FALSE) const; +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +PCUIF__info__ind valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +PCUIF__info__ind_template& list_item(unsigned int list_index) const; +INTEGER_template& version(); +const INTEGER_template& version() const; +PCUIF__Flags_template& flags(); +const PCUIF__Flags_template& flags() const; +PCUIF__info__ind_trx_template& trx(); +const PCUIF__info__ind_trx_template& trx() const; +INTEGER_template& bsic(); +const INTEGER_template& bsic() const; +INTEGER_template& mcc(); +const INTEGER_template& mcc() const; +INTEGER_template& mnc(); +const INTEGER_template& mnc() const; +INTEGER_template& mnc__3__digits(); +const INTEGER_template& mnc__3__digits() const; +INTEGER_template& lac(); +const INTEGER_template& lac() const; +INTEGER_template& rac(); +const INTEGER_template& rac() const; +INTEGER_template& nsei(); +const INTEGER_template& nsei() const; +PCUIF__info__ind_nse__timer_template& nse__timer(); +const PCUIF__info__ind_nse__timer_template& nse__timer() const; +PCUIF__info__ind_cell__timer_template& cell__timer(); +const PCUIF__info__ind_cell__timer_template& cell__timer() const; +INTEGER_template& cell__id(); +const INTEGER_template& cell__id() const; +INTEGER_template& repeat__time(); +const INTEGER_template& repeat__time() const; +INTEGER_template& repeat__count(); +const INTEGER_template& repeat__count() const; +INTEGER_template& bvci(); +const INTEGER_template& bvci() const; +INTEGER_template& t3142(); +const INTEGER_template& t3142() const; +INTEGER_template& t3169(); +const INTEGER_template& t3169() const; +INTEGER_template& t3191(); +const INTEGER_template& t3191() const; +INTEGER_template& t3193__10ms(); +const INTEGER_template& t3193__10ms() const; +INTEGER_template& t3195(); +const INTEGER_template& t3195() const; +INTEGER_template& t3101(); +const INTEGER_template& t3101() const; +INTEGER_template& t3103(); +const INTEGER_template& t3103() const; +INTEGER_template& t3105(); +const INTEGER_template& t3105() const; +INTEGER_template& cv__countdown(); +const INTEGER_template& cv__countdown() const; +INTEGER_template& dl__tbf__ext(); +const INTEGER_template& dl__tbf__ext() const; +INTEGER_template& ul__tbf__ext(); +const INTEGER_template& ul__tbf__ext() const; +INTEGER_template& initial__cs(); +const INTEGER_template& initial__cs() const; +INTEGER_template& initial__mcs(); +const INTEGER_template& initial__mcs() const; +PCUIF__info__ind_nsvci_template& nsvci(); +const PCUIF__info__ind_nsvci_template& nsvci() const; +PCUIF__info__ind_local__pprt_template& local__pprt(); +const PCUIF__info__ind_local__pprt_template& local__pprt() const; +PCUIF__info__ind_remote__port_template& remote__port(); +const PCUIF__info__ind_remote__port_template& remote__port() const; +PCUIF__info__ind_remote__ip_template& remote__ip(); +const PCUIF__info__ind_remote__ip_template& remote__ip() const; +int size_of() const; +void log() const; +void log_match(const PCUIF__info__ind& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +}; + +class PCUIF__act__req : public Base_Type { + INTEGER field_is__activate; + INTEGER field_trx__nr; + INTEGER field_ts__nr; + OCTETSTRING field_spare; +public: + PCUIF__act__req(); + PCUIF__act__req(const INTEGER& par_is__activate, + const INTEGER& par_trx__nr, + const INTEGER& par_ts__nr, + const OCTETSTRING& par_spare); + PCUIF__act__req(const PCUIF__act__req& other_value); + inline boolean is_component() { return FALSE; } + void clean_up(); + PCUIF__act__req& operator=(const PCUIF__act__req& other_value); + boolean operator==(const PCUIF__act__req& other_value) const; + inline boolean operator!=(const PCUIF__act__req& other_value) const + { return !(*this == other_value); } + + boolean is_bound() const; + +inline boolean is_present() const { return is_bound(); } + boolean is_value() const; + + inline INTEGER& is__activate() + {return field_is__activate;} + inline const INTEGER& is__activate() const + {return field_is__activate;} + inline INTEGER& trx__nr() + {return field_trx__nr;} + inline const INTEGER& trx__nr() const + {return field_trx__nr;} + inline INTEGER& ts__nr() + {return field_ts__nr;} + inline const INTEGER& ts__nr() const + {return field_ts__nr;} + inline OCTETSTRING& spare() + {return field_spare;} + inline const OCTETSTRING& spare() const + {return field_spare;} + inline int size_of() const + {return 4;} + void log() const; + void set_param(Module_Param& param); + void set_implicit_omit(); + void encode_text(Text_Buf& text_buf) const; + void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class PCUIF__act__req_template : public Base_Template { +struct single_value_struct; +union { +single_value_struct *single_value; +struct { +unsigned int n_values; +PCUIF__act__req_template *list_value; +} value_list; +}; + +void set_specific(); +void copy_value(const PCUIF__act__req& other_value); +void copy_template(const PCUIF__act__req_template& other_value); + +public: +PCUIF__act__req_template(); +PCUIF__act__req_template(template_sel other_value); +PCUIF__act__req_template(const PCUIF__act__req& other_value); +PCUIF__act__req_template(const OPTIONAL& other_value); +PCUIF__act__req_template(const PCUIF__act__req_template& other_value); +~PCUIF__act__req_template(); +PCUIF__act__req_template& operator=(template_sel other_value); +PCUIF__act__req_template& operator=(const PCUIF__act__req& other_value); +PCUIF__act__req_template& operator=(const OPTIONAL& other_value); +PCUIF__act__req_template& operator=(const PCUIF__act__req_template& other_value); +boolean match(const PCUIF__act__req& other_value, boolean legacy = FALSE) const; +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +PCUIF__act__req valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +PCUIF__act__req_template& list_item(unsigned int list_index) const; +INTEGER_template& is__activate(); +const INTEGER_template& is__activate() const; +INTEGER_template& trx__nr(); +const INTEGER_template& trx__nr() const; +INTEGER_template& ts__nr(); +const INTEGER_template& ts__nr() const; +OCTETSTRING_template& spare(); +const OCTETSTRING_template& spare() const; +int size_of() const; +void log() const; +void log_match(const PCUIF__act__req& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +}; + +class PCUIF__time__ind : public Base_Type { + INTEGER field_fn; +public: + PCUIF__time__ind(); + PCUIF__time__ind(const INTEGER& par_fn); + PCUIF__time__ind(const PCUIF__time__ind& other_value); + inline boolean is_component() { return FALSE; } + void clean_up(); + PCUIF__time__ind& operator=(const PCUIF__time__ind& other_value); + boolean operator==(const PCUIF__time__ind& other_value) const; + inline boolean operator!=(const PCUIF__time__ind& other_value) const + { return !(*this == other_value); } + + boolean is_bound() const; + +inline boolean is_present() const { return is_bound(); } + boolean is_value() const; + + inline INTEGER& fn() + {return field_fn;} + inline const INTEGER& fn() const + {return field_fn;} + inline int size_of() const + {return 1;} + void log() const; + void set_param(Module_Param& param); + void set_implicit_omit(); + void encode_text(Text_Buf& text_buf) const; + void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class PCUIF__time__ind_template : public Base_Template { +struct single_value_struct; +union { +single_value_struct *single_value; +struct { +unsigned int n_values; +PCUIF__time__ind_template *list_value; +} value_list; +}; + +void set_specific(); +void copy_value(const PCUIF__time__ind& other_value); +void copy_template(const PCUIF__time__ind_template& other_value); + +public: +PCUIF__time__ind_template(); +PCUIF__time__ind_template(template_sel other_value); +PCUIF__time__ind_template(const PCUIF__time__ind& other_value); +PCUIF__time__ind_template(const OPTIONAL& other_value); +PCUIF__time__ind_template(const PCUIF__time__ind_template& other_value); +~PCUIF__time__ind_template(); +PCUIF__time__ind_template& operator=(template_sel other_value); +PCUIF__time__ind_template& operator=(const PCUIF__time__ind& other_value); +PCUIF__time__ind_template& operator=(const OPTIONAL& other_value); +PCUIF__time__ind_template& operator=(const PCUIF__time__ind_template& other_value); +boolean match(const PCUIF__time__ind& other_value, boolean legacy = FALSE) const; +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +PCUIF__time__ind valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +PCUIF__time__ind_template& list_item(unsigned int list_index) const; +INTEGER_template& fn(); +const INTEGER_template& fn() const; +int size_of() const; +void log() const; +void log_match(const PCUIF__time__ind& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +}; + +class PCUIF__pag__req : public Base_Type { + PCUIF__Sapi field_sapi; + INTEGER field_chan__needed; + OCTETSTRING field_identity__lv; +public: + PCUIF__pag__req(); + PCUIF__pag__req(const PCUIF__Sapi& par_sapi, + const INTEGER& par_chan__needed, + const OCTETSTRING& par_identity__lv); + PCUIF__pag__req(const PCUIF__pag__req& other_value); + inline boolean is_component() { return FALSE; } + void clean_up(); + PCUIF__pag__req& operator=(const PCUIF__pag__req& other_value); + boolean operator==(const PCUIF__pag__req& other_value) const; + inline boolean operator!=(const PCUIF__pag__req& other_value) const + { return !(*this == other_value); } + + boolean is_bound() const; + +inline boolean is_present() const { return is_bound(); } + boolean is_value() const; + + inline PCUIF__Sapi& sapi() + {return field_sapi;} + inline const PCUIF__Sapi& sapi() const + {return field_sapi;} + inline INTEGER& chan__needed() + {return field_chan__needed;} + inline const INTEGER& chan__needed() const + {return field_chan__needed;} + inline OCTETSTRING& identity__lv() + {return field_identity__lv;} + inline const OCTETSTRING& identity__lv() const + {return field_identity__lv;} + inline int size_of() const + {return 3;} + void log() const; + void set_param(Module_Param& param); + void set_implicit_omit(); + void encode_text(Text_Buf& text_buf) const; + void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class PCUIF__pag__req_template : public Base_Template { +struct single_value_struct; +union { +single_value_struct *single_value; +struct { +unsigned int n_values; +PCUIF__pag__req_template *list_value; +} value_list; +}; + +void set_specific(); +void copy_value(const PCUIF__pag__req& other_value); +void copy_template(const PCUIF__pag__req_template& other_value); + +public: +PCUIF__pag__req_template(); +PCUIF__pag__req_template(template_sel other_value); +PCUIF__pag__req_template(const PCUIF__pag__req& other_value); +PCUIF__pag__req_template(const OPTIONAL& other_value); +PCUIF__pag__req_template(const PCUIF__pag__req_template& other_value); +~PCUIF__pag__req_template(); +PCUIF__pag__req_template& operator=(template_sel other_value); +PCUIF__pag__req_template& operator=(const PCUIF__pag__req& other_value); +PCUIF__pag__req_template& operator=(const OPTIONAL& other_value); +PCUIF__pag__req_template& operator=(const PCUIF__pag__req_template& other_value); +boolean match(const PCUIF__pag__req& other_value, boolean legacy = FALSE) const; +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +PCUIF__pag__req valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +PCUIF__pag__req_template& list_item(unsigned int list_index) const; +PCUIF__Sapi_template& sapi(); +const PCUIF__Sapi_template& sapi() const; +INTEGER_template& chan__needed(); +const INTEGER_template& chan__needed() const; +OCTETSTRING_template& identity__lv(); +const OCTETSTRING_template& identity__lv() const; +int size_of() const; +void log() const; +void log_match(const PCUIF__pag__req& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +}; + +class PCUIF__susp__req : public Base_Type { + OCTETSTRING field_tlli; + OCTETSTRING field_ra__id; + INTEGER field_cause; +public: + PCUIF__susp__req(); + PCUIF__susp__req(const OCTETSTRING& par_tlli, + const OCTETSTRING& par_ra__id, + const INTEGER& par_cause); + PCUIF__susp__req(const PCUIF__susp__req& other_value); + inline boolean is_component() { return FALSE; } + void clean_up(); + PCUIF__susp__req& operator=(const PCUIF__susp__req& other_value); + boolean operator==(const PCUIF__susp__req& other_value) const; + inline boolean operator!=(const PCUIF__susp__req& other_value) const + { return !(*this == other_value); } + + boolean is_bound() const; + +inline boolean is_present() const { return is_bound(); } + boolean is_value() const; + + inline OCTETSTRING& tlli() + {return field_tlli;} + inline const OCTETSTRING& tlli() const + {return field_tlli;} + inline OCTETSTRING& ra__id() + {return field_ra__id;} + inline const OCTETSTRING& ra__id() const + {return field_ra__id;} + inline INTEGER& cause() + {return field_cause;} + inline const INTEGER& cause() const + {return field_cause;} + inline int size_of() const + {return 3;} + void log() const; + void set_param(Module_Param& param); + void set_implicit_omit(); + void encode_text(Text_Buf& text_buf) const; + void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class PCUIF__susp__req_template : public Base_Template { +struct single_value_struct; +union { +single_value_struct *single_value; +struct { +unsigned int n_values; +PCUIF__susp__req_template *list_value; +} value_list; +}; + +void set_specific(); +void copy_value(const PCUIF__susp__req& other_value); +void copy_template(const PCUIF__susp__req_template& other_value); + +public: +PCUIF__susp__req_template(); +PCUIF__susp__req_template(template_sel other_value); +PCUIF__susp__req_template(const PCUIF__susp__req& other_value); +PCUIF__susp__req_template(const OPTIONAL& other_value); +PCUIF__susp__req_template(const PCUIF__susp__req_template& other_value); +~PCUIF__susp__req_template(); +PCUIF__susp__req_template& operator=(template_sel other_value); +PCUIF__susp__req_template& operator=(const PCUIF__susp__req& other_value); +PCUIF__susp__req_template& operator=(const OPTIONAL& other_value); +PCUIF__susp__req_template& operator=(const PCUIF__susp__req_template& other_value); +boolean match(const PCUIF__susp__req& other_value, boolean legacy = FALSE) const; +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +PCUIF__susp__req valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +PCUIF__susp__req_template& list_item(unsigned int list_index) const; +OCTETSTRING_template& tlli(); +const OCTETSTRING_template& tlli() const; +OCTETSTRING_template& ra__id(); +const OCTETSTRING_template& ra__id() const; +INTEGER_template& cause(); +const INTEGER_template& cause() const; +int size_of() const; +void log() const; +void log_match(const PCUIF__susp__req& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +}; + +class PCUIF__MsgUnion : public Base_Type { +public: +enum union_selection_type { UNBOUND_VALUE = 0, ALT_data__req = 1, ALT_data__cnf = 2, ALT_data__cnf__dt = 3, ALT_data__ind = 4, ALT_susp__req = 5, ALT_rts__req = 6, ALT_rach__ind = 7, ALT_txt__ind = 8, ALT_info__ind = 9, ALT_act__req = 10, ALT_time__ind = 11, ALT_pag__req = 12 }; +private: +union_selection_type union_selection; +union { +PCUIF__data *field_data__req; +PCUIF__data *field_data__cnf; +PCUIF__data__cnf__dt *field_data__cnf__dt; +PCUIF__data *field_data__ind; +PCUIF__susp__req *field_susp__req; +PCUIF__rts__req *field_rts__req; +PCUIF__rach__ind *field_rach__ind; +PCUIF__txt__ind *field_txt__ind; +PCUIF__info__ind *field_info__ind; +PCUIF__act__req *field_act__req; +PCUIF__time__ind *field_time__ind; +PCUIF__pag__req *field_pag__req; +}; +void copy_value(const PCUIF__MsgUnion& other_value); + +public: +PCUIF__MsgUnion(); +PCUIF__MsgUnion(const PCUIF__MsgUnion& other_value); +~PCUIF__MsgUnion(); +PCUIF__MsgUnion& operator=(const PCUIF__MsgUnion& other_value); +boolean operator==(const PCUIF__MsgUnion& other_value) const; +inline boolean operator!=(const PCUIF__MsgUnion& other_value) const { return !(*this == other_value); } +PCUIF__data& data__req(); +const PCUIF__data& data__req() const; +PCUIF__data& data__cnf(); +const PCUIF__data& data__cnf() const; +PCUIF__data__cnf__dt& data__cnf__dt(); +const PCUIF__data__cnf__dt& data__cnf__dt() const; +PCUIF__data& data__ind(); +const PCUIF__data& data__ind() const; +PCUIF__susp__req& susp__req(); +const PCUIF__susp__req& susp__req() const; +PCUIF__rts__req& rts__req(); +const PCUIF__rts__req& rts__req() const; +PCUIF__rach__ind& rach__ind(); +const PCUIF__rach__ind& rach__ind() const; +PCUIF__txt__ind& txt__ind(); +const PCUIF__txt__ind& txt__ind() const; +PCUIF__info__ind& info__ind(); +const PCUIF__info__ind& info__ind() const; +PCUIF__act__req& act__req(); +const PCUIF__act__req& act__req() const; +PCUIF__time__ind& time__ind(); +const PCUIF__time__ind& time__ind() const; +PCUIF__pag__req& pag__req(); +const PCUIF__pag__req& pag__req() const; +inline union_selection_type get_selection() const { return union_selection; } +boolean ischosen(union_selection_type checked_selection) const; +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +inline boolean is_present() const { return is_bound(); } +void log() const; +void set_param(Module_Param& param); + void set_implicit_omit(); +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class PCUIF__MsgUnion_template : public Base_Template { +union { +struct { +PCUIF__MsgUnion::union_selection_type union_selection; +union { +PCUIF__data_template *field_data__req; +PCUIF__data_template *field_data__cnf; +PCUIF__data__cnf__dt_template *field_data__cnf__dt; +PCUIF__data_template *field_data__ind; +PCUIF__susp__req_template *field_susp__req; +PCUIF__rts__req_template *field_rts__req; +PCUIF__rach__ind_template *field_rach__ind; +PCUIF__txt__ind_template *field_txt__ind; +PCUIF__info__ind_template *field_info__ind; +PCUIF__act__req_template *field_act__req; +PCUIF__time__ind_template *field_time__ind; +PCUIF__pag__req_template *field_pag__req; +}; +} single_value; +struct { +unsigned int n_values; +PCUIF__MsgUnion_template *list_value; +} value_list; +}; +void copy_value(const PCUIF__MsgUnion& other_value); + +void copy_template(const PCUIF__MsgUnion_template& other_value); + +public: +PCUIF__MsgUnion_template(); +PCUIF__MsgUnion_template(template_sel other_value); +PCUIF__MsgUnion_template(const PCUIF__MsgUnion& other_value); +PCUIF__MsgUnion_template(const OPTIONAL& other_value); +PCUIF__MsgUnion_template(const PCUIF__MsgUnion_template& other_value); +~PCUIF__MsgUnion_template(); +void clean_up(); +PCUIF__MsgUnion_template& operator=(template_sel other_value); +PCUIF__MsgUnion_template& operator=(const PCUIF__MsgUnion& other_value); +PCUIF__MsgUnion_template& operator=(const OPTIONAL& other_value); +PCUIF__MsgUnion_template& operator=(const PCUIF__MsgUnion_template& other_value); +boolean match(const PCUIF__MsgUnion& other_value, boolean legacy = FALSE) const; +boolean is_value() const;PCUIF__MsgUnion valueof() const; +PCUIF__MsgUnion_template& list_item(unsigned int list_index) const; +void set_type(template_sel template_type, unsigned int list_length); +PCUIF__data_template& data__req(); +const PCUIF__data_template& data__req() const; +PCUIF__data_template& data__cnf(); +const PCUIF__data_template& data__cnf() const; +PCUIF__data__cnf__dt_template& data__cnf__dt(); +const PCUIF__data__cnf__dt_template& data__cnf__dt() const; +PCUIF__data_template& data__ind(); +const PCUIF__data_template& data__ind() const; +PCUIF__susp__req_template& susp__req(); +const PCUIF__susp__req_template& susp__req() const; +PCUIF__rts__req_template& rts__req(); +const PCUIF__rts__req_template& rts__req() const; +PCUIF__rach__ind_template& rach__ind(); +const PCUIF__rach__ind_template& rach__ind() const; +PCUIF__txt__ind_template& txt__ind(); +const PCUIF__txt__ind_template& txt__ind() const; +PCUIF__info__ind_template& info__ind(); +const PCUIF__info__ind_template& info__ind() const; +PCUIF__act__req_template& act__req(); +const PCUIF__act__req_template& act__req() const; +PCUIF__time__ind_template& time__ind(); +const PCUIF__time__ind_template& time__ind() const; +PCUIF__pag__req_template& pag__req(); +const PCUIF__pag__req_template& pag__req() const; +boolean ischosen(PCUIF__MsgUnion::union_selection_type checked_selection) const; +void log() const; +void log_match(const PCUIF__MsgUnion& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +}; + +class PCUIF__Message : public Base_Type { + PCUIF__MsgType field_msg__type; + INTEGER field_bts__nr; + OCTETSTRING field_spare; + PCUIF__MsgUnion field_u; +public: + PCUIF__Message(); + PCUIF__Message(const PCUIF__MsgType& par_msg__type, + const INTEGER& par_bts__nr, + const OCTETSTRING& par_spare, + const PCUIF__MsgUnion& par_u); + PCUIF__Message(const PCUIF__Message& other_value); + inline boolean is_component() { return FALSE; } + void clean_up(); + PCUIF__Message& operator=(const PCUIF__Message& other_value); + boolean operator==(const PCUIF__Message& other_value) const; + inline boolean operator!=(const PCUIF__Message& other_value) const + { return !(*this == other_value); } + + boolean is_bound() const; + +inline boolean is_present() const { return is_bound(); } + boolean is_value() const; + + inline PCUIF__MsgType& msg__type() + {return field_msg__type;} + inline const PCUIF__MsgType& msg__type() const + {return field_msg__type;} + inline INTEGER& bts__nr() + {return field_bts__nr;} + inline const INTEGER& bts__nr() const + {return field_bts__nr;} + inline OCTETSTRING& spare() + {return field_spare;} + inline const OCTETSTRING& spare() const + {return field_spare;} + inline PCUIF__MsgUnion& u() + {return field_u;} + inline const PCUIF__MsgUnion& u() const + {return field_u;} + inline int size_of() const + {return 4;} + void log() const; + void set_param(Module_Param& param); + void set_implicit_omit(); + void encode_text(Text_Buf& text_buf) const; + void decode_text(Text_Buf& text_buf); +void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const; +void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...); +int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const; +int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE); +}; + +class PCUIF__Message_template : public Base_Template { +struct single_value_struct; +union { +single_value_struct *single_value; +struct { +unsigned int n_values; +PCUIF__Message_template *list_value; +} value_list; +}; + +void set_specific(); +void copy_value(const PCUIF__Message& other_value); +void copy_template(const PCUIF__Message_template& other_value); + +public: +PCUIF__Message_template(); +PCUIF__Message_template(template_sel other_value); +PCUIF__Message_template(const PCUIF__Message& other_value); +PCUIF__Message_template(const OPTIONAL& other_value); +PCUIF__Message_template(const PCUIF__Message_template& other_value); +~PCUIF__Message_template(); +PCUIF__Message_template& operator=(template_sel other_value); +PCUIF__Message_template& operator=(const PCUIF__Message& other_value); +PCUIF__Message_template& operator=(const OPTIONAL& other_value); +PCUIF__Message_template& operator=(const PCUIF__Message_template& other_value); +boolean match(const PCUIF__Message& other_value, boolean legacy = FALSE) const; +boolean is_bound() const; +boolean is_value() const; +void clean_up(); +PCUIF__Message valueof() const; +void set_type(template_sel template_type, unsigned int list_length); +PCUIF__Message_template& list_item(unsigned int list_index) const; +PCUIF__MsgType_template& msg__type(); +const PCUIF__MsgType_template& msg__type() const; +INTEGER_template& bts__nr(); +const INTEGER_template& bts__nr() const; +OCTETSTRING_template& spare(); +const OCTETSTRING_template& spare() const; +PCUIF__MsgUnion_template& u(); +const PCUIF__MsgUnion_template& u() const; +int size_of() const; +void log() const; +void log_match(const PCUIF__Message& match_value, boolean legacy = FALSE) const; +void encode_text(Text_Buf& text_buf) const; +void decode_text(Text_Buf& text_buf); +void set_param(Module_Param& param); +void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const; +boolean is_present(boolean legacy = FALSE) const; +boolean match_omit(boolean legacy = FALSE) const; +}; + + +/* Function prototypes */ + +extern void PCUIF__MsgType_encoder(const PCUIF__MsgType& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__MsgType_decoder(OCTETSTRING& input_stream, PCUIF__MsgType& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__Sapi_encoder(const PCUIF__Sapi& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__Sapi_decoder(OCTETSTRING& input_stream, PCUIF__Sapi& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__Flags_bts__active_encoder(const BOOLEAN& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__Flags_bts__active_decoder(OCTETSTRING& input_stream, BOOLEAN& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__Flags_sysmo__direct__dsp_encoder(const BOOLEAN& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__Flags_sysmo__direct__dsp_decoder(OCTETSTRING& input_stream, BOOLEAN& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__Flags_spare_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__Flags_spare_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__Flags_cs1_encoder(const BOOLEAN& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__Flags_cs1_decoder(OCTETSTRING& input_stream, BOOLEAN& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__Flags_cs2_encoder(const BOOLEAN& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__Flags_cs2_decoder(OCTETSTRING& input_stream, BOOLEAN& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__Flags_cs3_encoder(const BOOLEAN& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__Flags_cs3_decoder(OCTETSTRING& input_stream, BOOLEAN& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__Flags_cs4_encoder(const BOOLEAN& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__Flags_cs4_decoder(OCTETSTRING& input_stream, BOOLEAN& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__Flags_mcs1_encoder(const BOOLEAN& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__Flags_mcs1_decoder(OCTETSTRING& input_stream, BOOLEAN& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__Flags_mcs2_encoder(const BOOLEAN& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__Flags_mcs2_decoder(OCTETSTRING& input_stream, BOOLEAN& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__Flags_mcs3_encoder(const BOOLEAN& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__Flags_mcs3_decoder(OCTETSTRING& input_stream, BOOLEAN& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__Flags_mcs4_encoder(const BOOLEAN& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__Flags_mcs4_decoder(OCTETSTRING& input_stream, BOOLEAN& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__Flags_mcs5_encoder(const BOOLEAN& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__Flags_mcs5_decoder(OCTETSTRING& input_stream, BOOLEAN& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__Flags_mcs6_encoder(const BOOLEAN& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__Flags_mcs6_decoder(OCTETSTRING& input_stream, BOOLEAN& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__Flags_mcs7_encoder(const BOOLEAN& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__Flags_mcs7_decoder(OCTETSTRING& input_stream, BOOLEAN& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__Flags_mcs8_encoder(const BOOLEAN& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__Flags_mcs8_decoder(OCTETSTRING& input_stream, BOOLEAN& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__Flags_mcs9_encoder(const BOOLEAN& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__Flags_mcs9_decoder(OCTETSTRING& input_stream, BOOLEAN& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__Flags_spare2_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__Flags_spare2_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__Flags_encoder(const PCUIF__Flags& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__Flags_decoder(OCTETSTRING& input_stream, PCUIF__Flags& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__TextType_encoder(const PCUIF__TextType& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__TextType_decoder(OCTETSTRING& input_stream, PCUIF__TextType& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__Text_encoder(const CHARSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__Text_decoder(OCTETSTRING& input_stream, CHARSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__txt__ind_txt__type_encoder(const PCUIF__TextType& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__txt__ind_txt__type_decoder(OCTETSTRING& input_stream, PCUIF__TextType& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__txt__ind_text_encoder(const CHARSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__txt__ind_text_decoder(OCTETSTRING& input_stream, CHARSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__txt__ind_encoder(const PCUIF__txt__ind& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__txt__ind_decoder(OCTETSTRING& input_stream, PCUIF__txt__ind& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void OCT162_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER OCT162_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__data_sapi_encoder(const PCUIF__Sapi& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__data_sapi_decoder(OCTETSTRING& input_stream, PCUIF__Sapi& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__data_len_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__data_len_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__data_data_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__data_data_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__data_fn_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__data_fn_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__data_arfcn_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__data_arfcn_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__data_trx__nr_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__data_trx__nr_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__data_ts__nr_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__data_ts__nr_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__data_block__nr_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__data_block__nr_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__data_rssi_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__data_rssi_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__data_ber10k_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__data_ber10k_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__data_ta__offs__qbits_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__data_ta__offs__qbits_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__data_lqual__cb_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__data_lqual__cb_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__data_encoder(const PCUIF__data& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__data_decoder(OCTETSTRING& input_stream, PCUIF__data& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__data__cnf__dt_sapi_encoder(const PCUIF__Sapi& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__data__cnf__dt_sapi_decoder(OCTETSTRING& input_stream, PCUIF__Sapi& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__data__cnf__dt_tlli_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__data__cnf__dt_tlli_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__data__cnf__dt_fn_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__data__cnf__dt_fn_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__data__cnf__dt_arfcn_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__data__cnf__dt_arfcn_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__data__cnf__dt_trx__nr_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__data__cnf__dt_trx__nr_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__data__cnf__dt_ts__nr_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__data__cnf__dt_ts__nr_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__data__cnf__dt_block__nr_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__data__cnf__dt_block__nr_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__data__cnf__dt_rssi_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__data__cnf__dt_rssi_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__data__cnf__dt_ber10k_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__data__cnf__dt_ber10k_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__data__cnf__dt_ta__offs__qbits_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__data__cnf__dt_ta__offs__qbits_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__data__cnf__dt_lqual__cb_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__data__cnf__dt_lqual__cb_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__data__cnf__dt_encoder(const PCUIF__data__cnf__dt& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__data__cnf__dt_decoder(OCTETSTRING& input_stream, PCUIF__data__cnf__dt& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__rts__req_sapi_encoder(const PCUIF__Sapi& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__rts__req_sapi_decoder(OCTETSTRING& input_stream, PCUIF__Sapi& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__rts__req_spare_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__rts__req_spare_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__rts__req_fn_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__rts__req_fn_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__rts__req_arfcn_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__rts__req_arfcn_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__rts__req_trx__nr_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__rts__req_trx__nr_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__rts__req_ts__nr_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__rts__req_ts__nr_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__rts__req_block__nr_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__rts__req_block__nr_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__rts__req_encoder(const PCUIF__rts__req& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__rts__req_decoder(OCTETSTRING& input_stream, PCUIF__rts__req& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__rach__ind_sapi_encoder(const PCUIF__Sapi& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__rach__ind_sapi_decoder(OCTETSTRING& input_stream, PCUIF__Sapi& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__rach__ind_ra_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__rach__ind_ra_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__rach__ind_qta_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__rach__ind_qta_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__rach__ind_fn_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__rach__ind_fn_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__rach__ind_arfcn_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__rach__ind_arfcn_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__rach__ind_is__11bit_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__rach__ind_is__11bit_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__rach__ind_burst__type_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__rach__ind_burst__type_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__rach__ind_encoder(const PCUIF__rach__ind& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__rach__ind_decoder(OCTETSTRING& input_stream, PCUIF__rach__ind& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__InfoTrx_arfcn_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__InfoTrx_arfcn_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__InfoTrx_pdch__mask_encoder(const BITSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__InfoTrx_pdch__mask_decoder(OCTETSTRING& input_stream, BITSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__InfoTrx_spare_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__InfoTrx_spare_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__InfoTrx_tsc_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__InfoTrx_tsc_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__InfoTrx_hLayer1_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__InfoTrx_hLayer1_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__InfoTrx_encoder(const PCUIF__InfoTrx& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__InfoTrx_decoder(OCTETSTRING& input_stream, PCUIF__InfoTrx& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_version_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_version_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_flags_encoder(const PCUIF__Flags& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_flags_decoder(OCTETSTRING& input_stream, PCUIF__Flags& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern boolean operator==(null_type null_value, const PCUIF__info__ind_trx& other_value); +inline boolean operator!=(null_type null_value, const PCUIF__info__ind_trx& other_value) { return !(null_value == other_value); } +extern void PCUIF__info__ind_trx_0_encoder(const PCUIF__InfoTrx& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_trx_0_decoder(OCTETSTRING& input_stream, PCUIF__InfoTrx& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_trx_encoder(const PCUIF__info__ind_trx& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_trx_decoder(OCTETSTRING& input_stream, PCUIF__info__ind_trx& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_bsic_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_bsic_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_mcc_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_mcc_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_mnc_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_mnc_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_mnc__3__digits_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_mnc__3__digits_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_lac_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_lac_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_rac_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_rac_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_nsei_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_nsei_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_nse__timer_0_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_nse__timer_0_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_nse__timer_encoder(const PCUIF__info__ind_nse__timer& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_nse__timer_decoder(OCTETSTRING& input_stream, PCUIF__info__ind_nse__timer& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_cell__timer_0_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_cell__timer_0_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_cell__timer_encoder(const PCUIF__info__ind_cell__timer& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_cell__timer_decoder(OCTETSTRING& input_stream, PCUIF__info__ind_cell__timer& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_cell__id_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_cell__id_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_repeat__time_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_repeat__time_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_repeat__count_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_repeat__count_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_bvci_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_bvci_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_t3142_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_t3142_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_t3169_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_t3169_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_t3191_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_t3191_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_t3193__10ms_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_t3193__10ms_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_t3195_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_t3195_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_t3101_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_t3101_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_t3103_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_t3103_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_t3105_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_t3105_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_cv__countdown_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_cv__countdown_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_dl__tbf__ext_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_dl__tbf__ext_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_ul__tbf__ext_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_ul__tbf__ext_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_initial__cs_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_initial__cs_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_initial__mcs_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_initial__mcs_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_nsvci_0_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_nsvci_0_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_nsvci_encoder(const PCUIF__info__ind_nsvci& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_nsvci_decoder(OCTETSTRING& input_stream, PCUIF__info__ind_nsvci& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_local__pprt_0_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_local__pprt_0_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_local__pprt_encoder(const PCUIF__info__ind_local__pprt& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_local__pprt_decoder(OCTETSTRING& input_stream, PCUIF__info__ind_local__pprt& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_remote__port_0_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_remote__port_0_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_remote__port_encoder(const PCUIF__info__ind_remote__port& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_remote__port_decoder(OCTETSTRING& input_stream, PCUIF__info__ind_remote__port& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_remote__ip_0_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_remote__ip_0_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_remote__ip_encoder(const PCUIF__info__ind_remote__ip& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_remote__ip_decoder(OCTETSTRING& input_stream, PCUIF__info__ind_remote__ip& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__info__ind_encoder(const PCUIF__info__ind& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__info__ind_decoder(OCTETSTRING& input_stream, PCUIF__info__ind& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__act__req_is__activate_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__act__req_is__activate_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__act__req_trx__nr_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__act__req_trx__nr_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__act__req_ts__nr_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__act__req_ts__nr_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__act__req_spare_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__act__req_spare_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__act__req_encoder(const PCUIF__act__req& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__act__req_decoder(OCTETSTRING& input_stream, PCUIF__act__req& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__time__ind_fn_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__time__ind_fn_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__time__ind_encoder(const PCUIF__time__ind& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__time__ind_decoder(OCTETSTRING& input_stream, PCUIF__time__ind& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__pag__req_sapi_encoder(const PCUIF__Sapi& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__pag__req_sapi_decoder(OCTETSTRING& input_stream, PCUIF__Sapi& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__pag__req_chan__needed_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__pag__req_chan__needed_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__pag__req_identity__lv_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__pag__req_identity__lv_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__pag__req_encoder(const PCUIF__pag__req& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__pag__req_decoder(OCTETSTRING& input_stream, PCUIF__pag__req& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__susp__req_tlli_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__susp__req_tlli_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__susp__req_ra__id_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__susp__req_ra__id_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__susp__req_cause_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__susp__req_cause_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__susp__req_encoder(const PCUIF__susp__req& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__susp__req_decoder(OCTETSTRING& input_stream, PCUIF__susp__req& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__MsgUnion_data__req_encoder(const PCUIF__data& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__MsgUnion_data__req_decoder(OCTETSTRING& input_stream, PCUIF__data& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__MsgUnion_data__cnf_encoder(const PCUIF__data& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__MsgUnion_data__cnf_decoder(OCTETSTRING& input_stream, PCUIF__data& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__MsgUnion_data__cnf__dt_encoder(const PCUIF__data__cnf__dt& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__MsgUnion_data__cnf__dt_decoder(OCTETSTRING& input_stream, PCUIF__data__cnf__dt& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__MsgUnion_data__ind_encoder(const PCUIF__data& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__MsgUnion_data__ind_decoder(OCTETSTRING& input_stream, PCUIF__data& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__MsgUnion_susp__req_encoder(const PCUIF__susp__req& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__MsgUnion_susp__req_decoder(OCTETSTRING& input_stream, PCUIF__susp__req& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__MsgUnion_rts__req_encoder(const PCUIF__rts__req& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__MsgUnion_rts__req_decoder(OCTETSTRING& input_stream, PCUIF__rts__req& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__MsgUnion_rach__ind_encoder(const PCUIF__rach__ind& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__MsgUnion_rach__ind_decoder(OCTETSTRING& input_stream, PCUIF__rach__ind& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__MsgUnion_txt__ind_encoder(const PCUIF__txt__ind& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__MsgUnion_txt__ind_decoder(OCTETSTRING& input_stream, PCUIF__txt__ind& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__MsgUnion_info__ind_encoder(const PCUIF__info__ind& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__MsgUnion_info__ind_decoder(OCTETSTRING& input_stream, PCUIF__info__ind& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__MsgUnion_act__req_encoder(const PCUIF__act__req& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__MsgUnion_act__req_decoder(OCTETSTRING& input_stream, PCUIF__act__req& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__MsgUnion_time__ind_encoder(const PCUIF__time__ind& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__MsgUnion_time__ind_decoder(OCTETSTRING& input_stream, PCUIF__time__ind& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__MsgUnion_pag__req_encoder(const PCUIF__pag__req& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__MsgUnion_pag__req_decoder(OCTETSTRING& input_stream, PCUIF__pag__req& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__MsgUnion_encoder(const PCUIF__MsgUnion& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__MsgUnion_decoder(OCTETSTRING& input_stream, PCUIF__MsgUnion& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__Message_msg__type_encoder(const PCUIF__MsgType& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__Message_msg__type_decoder(OCTETSTRING& input_stream, PCUIF__MsgType& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__Message_bts__nr_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__Message_bts__nr_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__Message_spare_encoder(const OCTETSTRING& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__Message_spare_decoder(OCTETSTRING& input_stream, OCTETSTRING& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__Message_u_encoder(const PCUIF__MsgUnion& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__Message_u_decoder(OCTETSTRING& input_stream, PCUIF__MsgUnion& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern void PCUIF__Message_encoder(const PCUIF__Message& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name); +extern INTEGER PCUIF__Message_decoder(OCTETSTRING& input_stream, PCUIF__Message& output_value, const UNIVERSAL_CHARSTRING& coding_name); +extern OCTETSTRING enc__PCUIF__Message(const PCUIF__Message& pdu); +extern PCUIF__Message dec__PCUIF__Message(const OCTETSTRING& stream); +extern PCUIF__Message_template tr__PCUIF__RTS__REQ(const INTEGER_template& bts__nr, const INTEGER_template& trx__nr, const INTEGER_template& ts__nr, const PCUIF__Sapi_template& sapi, const INTEGER_template& fn, const INTEGER_template& block__nr); +extern PCUIF__Message_template ts__PCUIF__TXT__IND(const INTEGER& bts__nr, const PCUIF__TextType& tt, const CHARSTRING& text); +extern PCUIF__Message_template ts__PCUIF__ACT__REQ(const INTEGER& bts__nr, const INTEGER& trx__nr, const INTEGER& ts__nr); +extern PCUIF__Message_template ts__PCUIF__DEACT__REQ(const INTEGER& bts__nr, const INTEGER& trx__nr, const INTEGER& ts__nr); +extern PCUIF__Message_template tr__PCUIF__DATA__IND(const INTEGER_template& bts__nr, const INTEGER_template& trx__nr, const INTEGER_template& ts__nr, const INTEGER_template& block__nr, const PCUIF__Sapi_template& sapi, const OCTETSTRING_template& data); +extern PCUIF__Message_template ts__PCUIF__DATA__REQ(const INTEGER& bts__nr, const INTEGER& trx__nr, const INTEGER& ts__nr, const INTEGER& block__nr, const INTEGER& fn, const PCUIF__Sapi& sapi, const OCTETSTRING& data); +extern PCUIF__Message_template tr__PCUIF__DATA__CNF(const INTEGER_template& bts__nr, const INTEGER_template& trx__nr, const INTEGER_template& ts__nr, const PCUIF__Sapi_template& sapi, const OCTETSTRING_template& data); +extern PCUIF__Message_template tr__PCUIF__RACH__IND(const INTEGER_template& bts__nr, const INTEGER_template& ra, const INTEGER_template& is__11bit, const INTEGER_template& burst__type, const INTEGER_template& fn); +extern PCUIF__Message_template tr__PCUIF__PAG__REQ(const INTEGER_template& bts__nr, const OCTETSTRING_template& id__lv, const INTEGER_template& chan__needed, const PCUIF__Sapi_template& ); +extern PCUIF__Message_template tr__PCUIF__INFO__IND(const INTEGER_template& bts__nr, const PCUIF__Flags_template& flags, const INTEGER_template& version); + +/* Global variable declarations */ + +extern const CHARSTRING& PCU__SOCK__DEFAULT; +extern const INTEGER& PCU__IF__VERSION; +extern const TTCN_RAWdescriptor_t PCUIF__MsgType_raw_; +extern const TTCN_Typedescriptor_t PCUIF__MsgType_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__MsgType_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__Sapi_raw_; +extern const TTCN_Typedescriptor_t PCUIF__Sapi_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__Sapi_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__Flags_bts__active_raw_; +extern const XERdescriptor_t PCUIF__Flags_bts__active_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__Flags_bts__active_json_; +extern const TTCN_OERdescriptor_t PCUIF__Flags_bts__active_oer_; +extern const TTCN_Typedescriptor_t PCUIF__Flags_bts__active_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__Flags_bts__active_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__Flags_sysmo__direct__dsp_raw_; +extern const XERdescriptor_t PCUIF__Flags_sysmo__direct__dsp_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__Flags_sysmo__direct__dsp_json_; +extern const TTCN_OERdescriptor_t PCUIF__Flags_sysmo__direct__dsp_oer_; +extern const TTCN_Typedescriptor_t PCUIF__Flags_sysmo__direct__dsp_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__Flags_sysmo__direct__dsp_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__Flags_spare_raw_; +extern const XERdescriptor_t PCUIF__Flags_spare_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__Flags_spare_json_; +extern const TTCN_OERdescriptor_t PCUIF__Flags_spare_oer_; +extern const TTCN_Typedescriptor_t PCUIF__Flags_spare_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__Flags_spare_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__Flags_cs1_raw_; +extern const XERdescriptor_t PCUIF__Flags_cs1_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__Flags_cs1_json_; +extern const TTCN_OERdescriptor_t PCUIF__Flags_cs1_oer_; +extern const TTCN_Typedescriptor_t PCUIF__Flags_cs1_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__Flags_cs1_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__Flags_cs2_raw_; +extern const XERdescriptor_t PCUIF__Flags_cs2_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__Flags_cs2_json_; +extern const TTCN_OERdescriptor_t PCUIF__Flags_cs2_oer_; +extern const TTCN_Typedescriptor_t PCUIF__Flags_cs2_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__Flags_cs2_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__Flags_cs3_raw_; +extern const XERdescriptor_t PCUIF__Flags_cs3_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__Flags_cs3_json_; +extern const TTCN_OERdescriptor_t PCUIF__Flags_cs3_oer_; +extern const TTCN_Typedescriptor_t PCUIF__Flags_cs3_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__Flags_cs3_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__Flags_cs4_raw_; +extern const XERdescriptor_t PCUIF__Flags_cs4_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__Flags_cs4_json_; +extern const TTCN_OERdescriptor_t PCUIF__Flags_cs4_oer_; +extern const TTCN_Typedescriptor_t PCUIF__Flags_cs4_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__Flags_cs4_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__Flags_mcs1_raw_; +extern const XERdescriptor_t PCUIF__Flags_mcs1_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__Flags_mcs1_json_; +extern const TTCN_OERdescriptor_t PCUIF__Flags_mcs1_oer_; +extern const TTCN_Typedescriptor_t PCUIF__Flags_mcs1_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__Flags_mcs1_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__Flags_mcs2_raw_; +extern const XERdescriptor_t PCUIF__Flags_mcs2_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__Flags_mcs2_json_; +extern const TTCN_OERdescriptor_t PCUIF__Flags_mcs2_oer_; +extern const TTCN_Typedescriptor_t PCUIF__Flags_mcs2_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__Flags_mcs2_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__Flags_mcs3_raw_; +extern const XERdescriptor_t PCUIF__Flags_mcs3_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__Flags_mcs3_json_; +extern const TTCN_OERdescriptor_t PCUIF__Flags_mcs3_oer_; +extern const TTCN_Typedescriptor_t PCUIF__Flags_mcs3_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__Flags_mcs3_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__Flags_mcs4_raw_; +extern const XERdescriptor_t PCUIF__Flags_mcs4_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__Flags_mcs4_json_; +extern const TTCN_OERdescriptor_t PCUIF__Flags_mcs4_oer_; +extern const TTCN_Typedescriptor_t PCUIF__Flags_mcs4_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__Flags_mcs4_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__Flags_mcs5_raw_; +extern const XERdescriptor_t PCUIF__Flags_mcs5_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__Flags_mcs5_json_; +extern const TTCN_OERdescriptor_t PCUIF__Flags_mcs5_oer_; +extern const TTCN_Typedescriptor_t PCUIF__Flags_mcs5_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__Flags_mcs5_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__Flags_mcs6_raw_; +extern const XERdescriptor_t PCUIF__Flags_mcs6_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__Flags_mcs6_json_; +extern const TTCN_OERdescriptor_t PCUIF__Flags_mcs6_oer_; +extern const TTCN_Typedescriptor_t PCUIF__Flags_mcs6_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__Flags_mcs6_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__Flags_mcs7_raw_; +extern const XERdescriptor_t PCUIF__Flags_mcs7_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__Flags_mcs7_json_; +extern const TTCN_OERdescriptor_t PCUIF__Flags_mcs7_oer_; +extern const TTCN_Typedescriptor_t PCUIF__Flags_mcs7_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__Flags_mcs7_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__Flags_mcs8_raw_; +extern const XERdescriptor_t PCUIF__Flags_mcs8_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__Flags_mcs8_json_; +extern const TTCN_OERdescriptor_t PCUIF__Flags_mcs8_oer_; +extern const TTCN_Typedescriptor_t PCUIF__Flags_mcs8_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__Flags_mcs8_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__Flags_mcs9_raw_; +extern const XERdescriptor_t PCUIF__Flags_mcs9_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__Flags_mcs9_json_; +extern const TTCN_OERdescriptor_t PCUIF__Flags_mcs9_oer_; +extern const TTCN_Typedescriptor_t PCUIF__Flags_mcs9_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__Flags_mcs9_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__Flags_spare2_raw_; +extern const XERdescriptor_t PCUIF__Flags_spare2_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__Flags_spare2_json_; +extern const TTCN_OERdescriptor_t PCUIF__Flags_spare2_oer_; +extern const TTCN_Typedescriptor_t PCUIF__Flags_spare2_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__Flags_spare2_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__Flags_raw_; +extern const TTCN_Typedescriptor_t PCUIF__Flags_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__Flags_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__TextType_raw_; +extern const TTCN_Typedescriptor_t PCUIF__TextType_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__TextType_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__Text_raw_; +extern const XERdescriptor_t PCUIF__Text_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__Text_json_; +extern const TTCN_Typedescriptor_t PCUIF__Text_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__Text_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__txt__ind_txt__type_raw_; +extern const TTCN_Typedescriptor_t PCUIF__txt__ind_txt__type_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__txt__ind_txt__type_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__txt__ind_text_raw_; +extern const XERdescriptor_t PCUIF__txt__ind_text_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__txt__ind_text_json_; +extern const TTCN_Typedescriptor_t PCUIF__txt__ind_text_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__txt__ind_text_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__txt__ind_raw_; +extern const TTCN_Typedescriptor_t PCUIF__txt__ind_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__txt__ind_default_coding; +extern const TTCN_RAWdescriptor_t OCT162_raw_; +extern const XERdescriptor_t OCT162_xer_; +extern const TTCN_JSONdescriptor_t OCT162_json_; +extern const TTCN_OERdescriptor_t OCT162_oer_; +extern const TTCN_Typedescriptor_t OCT162_descr_; +extern UNIVERSAL_CHARSTRING OCT162_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__data_sapi_raw_; +extern const TTCN_Typedescriptor_t PCUIF__data_sapi_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__data_sapi_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__data_len_raw_; +extern const XERdescriptor_t PCUIF__data_len_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__data_len_json_; +extern const TTCN_OERdescriptor_t PCUIF__data_len_oer_; +extern const TTCN_Typedescriptor_t PCUIF__data_len_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__data_len_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__data_data_raw_; +extern const XERdescriptor_t PCUIF__data_data_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__data_data_json_; +extern const TTCN_OERdescriptor_t PCUIF__data_data_oer_; +extern const TTCN_Typedescriptor_t PCUIF__data_data_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__data_data_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__data_fn_raw_; +extern const XERdescriptor_t PCUIF__data_fn_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__data_fn_json_; +extern const TTCN_OERdescriptor_t PCUIF__data_fn_oer_; +extern const TTCN_Typedescriptor_t PCUIF__data_fn_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__data_fn_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__data_arfcn_raw_; +extern const XERdescriptor_t PCUIF__data_arfcn_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__data_arfcn_json_; +extern const TTCN_OERdescriptor_t PCUIF__data_arfcn_oer_; +extern const TTCN_Typedescriptor_t PCUIF__data_arfcn_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__data_arfcn_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__data_trx__nr_raw_; +extern const XERdescriptor_t PCUIF__data_trx__nr_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__data_trx__nr_json_; +extern const TTCN_OERdescriptor_t PCUIF__data_trx__nr_oer_; +extern const TTCN_Typedescriptor_t PCUIF__data_trx__nr_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__data_trx__nr_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__data_ts__nr_raw_; +extern const XERdescriptor_t PCUIF__data_ts__nr_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__data_ts__nr_json_; +extern const TTCN_OERdescriptor_t PCUIF__data_ts__nr_oer_; +extern const TTCN_Typedescriptor_t PCUIF__data_ts__nr_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__data_ts__nr_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__data_block__nr_raw_; +extern const XERdescriptor_t PCUIF__data_block__nr_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__data_block__nr_json_; +extern const TTCN_OERdescriptor_t PCUIF__data_block__nr_oer_; +extern const TTCN_Typedescriptor_t PCUIF__data_block__nr_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__data_block__nr_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__data_rssi_raw_; +extern const XERdescriptor_t PCUIF__data_rssi_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__data_rssi_json_; +extern const TTCN_OERdescriptor_t PCUIF__data_rssi_oer_; +extern const TTCN_Typedescriptor_t PCUIF__data_rssi_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__data_rssi_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__data_ber10k_raw_; +extern const XERdescriptor_t PCUIF__data_ber10k_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__data_ber10k_json_; +extern const TTCN_OERdescriptor_t PCUIF__data_ber10k_oer_; +extern const TTCN_Typedescriptor_t PCUIF__data_ber10k_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__data_ber10k_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__data_ta__offs__qbits_raw_; +extern const XERdescriptor_t PCUIF__data_ta__offs__qbits_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__data_ta__offs__qbits_json_; +extern const TTCN_OERdescriptor_t PCUIF__data_ta__offs__qbits_oer_; +extern const TTCN_Typedescriptor_t PCUIF__data_ta__offs__qbits_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__data_ta__offs__qbits_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__data_lqual__cb_raw_; +extern const XERdescriptor_t PCUIF__data_lqual__cb_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__data_lqual__cb_json_; +extern const TTCN_OERdescriptor_t PCUIF__data_lqual__cb_oer_; +extern const TTCN_Typedescriptor_t PCUIF__data_lqual__cb_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__data_lqual__cb_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__data_raw_; +extern const TTCN_Typedescriptor_t PCUIF__data_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__data_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__data__cnf__dt_sapi_raw_; +extern const TTCN_Typedescriptor_t PCUIF__data__cnf__dt_sapi_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__data__cnf__dt_sapi_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__data__cnf__dt_tlli_raw_; +extern const XERdescriptor_t PCUIF__data__cnf__dt_tlli_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__data__cnf__dt_tlli_json_; +extern const TTCN_OERdescriptor_t PCUIF__data__cnf__dt_tlli_oer_; +extern const TTCN_Typedescriptor_t PCUIF__data__cnf__dt_tlli_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__data__cnf__dt_tlli_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__data__cnf__dt_fn_raw_; +extern const XERdescriptor_t PCUIF__data__cnf__dt_fn_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__data__cnf__dt_fn_json_; +extern const TTCN_OERdescriptor_t PCUIF__data__cnf__dt_fn_oer_; +extern const TTCN_Typedescriptor_t PCUIF__data__cnf__dt_fn_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__data__cnf__dt_fn_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__data__cnf__dt_arfcn_raw_; +extern const XERdescriptor_t PCUIF__data__cnf__dt_arfcn_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__data__cnf__dt_arfcn_json_; +extern const TTCN_OERdescriptor_t PCUIF__data__cnf__dt_arfcn_oer_; +extern const TTCN_Typedescriptor_t PCUIF__data__cnf__dt_arfcn_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__data__cnf__dt_arfcn_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__data__cnf__dt_trx__nr_raw_; +extern const XERdescriptor_t PCUIF__data__cnf__dt_trx__nr_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__data__cnf__dt_trx__nr_json_; +extern const TTCN_OERdescriptor_t PCUIF__data__cnf__dt_trx__nr_oer_; +extern const TTCN_Typedescriptor_t PCUIF__data__cnf__dt_trx__nr_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__data__cnf__dt_trx__nr_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__data__cnf__dt_ts__nr_raw_; +extern const XERdescriptor_t PCUIF__data__cnf__dt_ts__nr_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__data__cnf__dt_ts__nr_json_; +extern const TTCN_OERdescriptor_t PCUIF__data__cnf__dt_ts__nr_oer_; +extern const TTCN_Typedescriptor_t PCUIF__data__cnf__dt_ts__nr_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__data__cnf__dt_ts__nr_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__data__cnf__dt_block__nr_raw_; +extern const XERdescriptor_t PCUIF__data__cnf__dt_block__nr_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__data__cnf__dt_block__nr_json_; +extern const TTCN_OERdescriptor_t PCUIF__data__cnf__dt_block__nr_oer_; +extern const TTCN_Typedescriptor_t PCUIF__data__cnf__dt_block__nr_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__data__cnf__dt_block__nr_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__data__cnf__dt_rssi_raw_; +extern const XERdescriptor_t PCUIF__data__cnf__dt_rssi_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__data__cnf__dt_rssi_json_; +extern const TTCN_OERdescriptor_t PCUIF__data__cnf__dt_rssi_oer_; +extern const TTCN_Typedescriptor_t PCUIF__data__cnf__dt_rssi_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__data__cnf__dt_rssi_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__data__cnf__dt_ber10k_raw_; +extern const XERdescriptor_t PCUIF__data__cnf__dt_ber10k_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__data__cnf__dt_ber10k_json_; +extern const TTCN_OERdescriptor_t PCUIF__data__cnf__dt_ber10k_oer_; +extern const TTCN_Typedescriptor_t PCUIF__data__cnf__dt_ber10k_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__data__cnf__dt_ber10k_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__data__cnf__dt_ta__offs__qbits_raw_; +extern const XERdescriptor_t PCUIF__data__cnf__dt_ta__offs__qbits_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__data__cnf__dt_ta__offs__qbits_json_; +extern const TTCN_OERdescriptor_t PCUIF__data__cnf__dt_ta__offs__qbits_oer_; +extern const TTCN_Typedescriptor_t PCUIF__data__cnf__dt_ta__offs__qbits_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__data__cnf__dt_ta__offs__qbits_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__data__cnf__dt_lqual__cb_raw_; +extern const XERdescriptor_t PCUIF__data__cnf__dt_lqual__cb_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__data__cnf__dt_lqual__cb_json_; +extern const TTCN_OERdescriptor_t PCUIF__data__cnf__dt_lqual__cb_oer_; +extern const TTCN_Typedescriptor_t PCUIF__data__cnf__dt_lqual__cb_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__data__cnf__dt_lqual__cb_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__data__cnf__dt_raw_; +extern const TTCN_Typedescriptor_t PCUIF__data__cnf__dt_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__data__cnf__dt_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__rts__req_sapi_raw_; +extern const TTCN_Typedescriptor_t PCUIF__rts__req_sapi_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__rts__req_sapi_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__rts__req_spare_raw_; +extern const XERdescriptor_t PCUIF__rts__req_spare_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__rts__req_spare_json_; +extern const TTCN_OERdescriptor_t PCUIF__rts__req_spare_oer_; +extern const TTCN_Typedescriptor_t PCUIF__rts__req_spare_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__rts__req_spare_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__rts__req_fn_raw_; +extern const XERdescriptor_t PCUIF__rts__req_fn_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__rts__req_fn_json_; +extern const TTCN_OERdescriptor_t PCUIF__rts__req_fn_oer_; +extern const TTCN_Typedescriptor_t PCUIF__rts__req_fn_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__rts__req_fn_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__rts__req_arfcn_raw_; +extern const XERdescriptor_t PCUIF__rts__req_arfcn_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__rts__req_arfcn_json_; +extern const TTCN_OERdescriptor_t PCUIF__rts__req_arfcn_oer_; +extern const TTCN_Typedescriptor_t PCUIF__rts__req_arfcn_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__rts__req_arfcn_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__rts__req_trx__nr_raw_; +extern const XERdescriptor_t PCUIF__rts__req_trx__nr_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__rts__req_trx__nr_json_; +extern const TTCN_OERdescriptor_t PCUIF__rts__req_trx__nr_oer_; +extern const TTCN_Typedescriptor_t PCUIF__rts__req_trx__nr_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__rts__req_trx__nr_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__rts__req_ts__nr_raw_; +extern const XERdescriptor_t PCUIF__rts__req_ts__nr_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__rts__req_ts__nr_json_; +extern const TTCN_OERdescriptor_t PCUIF__rts__req_ts__nr_oer_; +extern const TTCN_Typedescriptor_t PCUIF__rts__req_ts__nr_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__rts__req_ts__nr_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__rts__req_block__nr_raw_; +extern const XERdescriptor_t PCUIF__rts__req_block__nr_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__rts__req_block__nr_json_; +extern const TTCN_OERdescriptor_t PCUIF__rts__req_block__nr_oer_; +extern const TTCN_Typedescriptor_t PCUIF__rts__req_block__nr_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__rts__req_block__nr_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__rts__req_raw_; +extern const TTCN_Typedescriptor_t PCUIF__rts__req_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__rts__req_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__rach__ind_sapi_raw_; +extern const TTCN_Typedescriptor_t PCUIF__rach__ind_sapi_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__rach__ind_sapi_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__rach__ind_ra_raw_; +extern const XERdescriptor_t PCUIF__rach__ind_ra_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__rach__ind_ra_json_; +extern const TTCN_OERdescriptor_t PCUIF__rach__ind_ra_oer_; +extern const TTCN_Typedescriptor_t PCUIF__rach__ind_ra_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__rach__ind_ra_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__rach__ind_qta_raw_; +extern const XERdescriptor_t PCUIF__rach__ind_qta_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__rach__ind_qta_json_; +extern const TTCN_OERdescriptor_t PCUIF__rach__ind_qta_oer_; +extern const TTCN_Typedescriptor_t PCUIF__rach__ind_qta_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__rach__ind_qta_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__rach__ind_fn_raw_; +extern const XERdescriptor_t PCUIF__rach__ind_fn_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__rach__ind_fn_json_; +extern const TTCN_OERdescriptor_t PCUIF__rach__ind_fn_oer_; +extern const TTCN_Typedescriptor_t PCUIF__rach__ind_fn_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__rach__ind_fn_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__rach__ind_arfcn_raw_; +extern const XERdescriptor_t PCUIF__rach__ind_arfcn_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__rach__ind_arfcn_json_; +extern const TTCN_OERdescriptor_t PCUIF__rach__ind_arfcn_oer_; +extern const TTCN_Typedescriptor_t PCUIF__rach__ind_arfcn_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__rach__ind_arfcn_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__rach__ind_is__11bit_raw_; +extern const XERdescriptor_t PCUIF__rach__ind_is__11bit_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__rach__ind_is__11bit_json_; +extern const TTCN_OERdescriptor_t PCUIF__rach__ind_is__11bit_oer_; +extern const TTCN_Typedescriptor_t PCUIF__rach__ind_is__11bit_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__rach__ind_is__11bit_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__rach__ind_burst__type_raw_; +extern const XERdescriptor_t PCUIF__rach__ind_burst__type_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__rach__ind_burst__type_json_; +extern const TTCN_OERdescriptor_t PCUIF__rach__ind_burst__type_oer_; +extern const TTCN_Typedescriptor_t PCUIF__rach__ind_burst__type_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__rach__ind_burst__type_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__rach__ind_raw_; +extern const TTCN_Typedescriptor_t PCUIF__rach__ind_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__rach__ind_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__InfoTrx_arfcn_raw_; +extern const XERdescriptor_t PCUIF__InfoTrx_arfcn_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__InfoTrx_arfcn_json_; +extern const TTCN_OERdescriptor_t PCUIF__InfoTrx_arfcn_oer_; +extern const TTCN_Typedescriptor_t PCUIF__InfoTrx_arfcn_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__InfoTrx_arfcn_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__InfoTrx_pdch__mask_raw_; +extern const XERdescriptor_t PCUIF__InfoTrx_pdch__mask_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__InfoTrx_pdch__mask_json_; +extern const TTCN_OERdescriptor_t PCUIF__InfoTrx_pdch__mask_oer_; +extern const TTCN_Typedescriptor_t PCUIF__InfoTrx_pdch__mask_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__InfoTrx_pdch__mask_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__InfoTrx_spare_raw_; +extern const XERdescriptor_t PCUIF__InfoTrx_spare_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__InfoTrx_spare_json_; +extern const TTCN_OERdescriptor_t PCUIF__InfoTrx_spare_oer_; +extern const TTCN_Typedescriptor_t PCUIF__InfoTrx_spare_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__InfoTrx_spare_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__InfoTrx_tsc_raw_; +extern const XERdescriptor_t PCUIF__InfoTrx_tsc_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__InfoTrx_tsc_json_; +extern const TTCN_OERdescriptor_t PCUIF__InfoTrx_tsc_oer_; +extern const TTCN_Typedescriptor_t PCUIF__InfoTrx_tsc_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__InfoTrx_tsc_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__InfoTrx_hLayer1_raw_; +extern const XERdescriptor_t PCUIF__InfoTrx_hLayer1_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__InfoTrx_hLayer1_json_; +extern const TTCN_OERdescriptor_t PCUIF__InfoTrx_hLayer1_oer_; +extern const TTCN_Typedescriptor_t PCUIF__InfoTrx_hLayer1_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__InfoTrx_hLayer1_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__InfoTrx_raw_; +extern const TTCN_Typedescriptor_t PCUIF__InfoTrx_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__InfoTrx_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_version_raw_; +extern const XERdescriptor_t PCUIF__info__ind_version_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__info__ind_version_json_; +extern const TTCN_OERdescriptor_t PCUIF__info__ind_version_oer_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_version_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_version_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_flags_raw_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_flags_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_flags_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_trx_raw_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_trx_descr_; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_trx_0_raw_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_trx_0_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_trx_0_default_coding; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_trx_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_bsic_raw_; +extern const XERdescriptor_t PCUIF__info__ind_bsic_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__info__ind_bsic_json_; +extern const TTCN_OERdescriptor_t PCUIF__info__ind_bsic_oer_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_bsic_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_bsic_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_mcc_raw_; +extern const XERdescriptor_t PCUIF__info__ind_mcc_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__info__ind_mcc_json_; +extern const TTCN_OERdescriptor_t PCUIF__info__ind_mcc_oer_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_mcc_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_mcc_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_mnc_raw_; +extern const XERdescriptor_t PCUIF__info__ind_mnc_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__info__ind_mnc_json_; +extern const TTCN_OERdescriptor_t PCUIF__info__ind_mnc_oer_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_mnc_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_mnc_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_mnc__3__digits_raw_; +extern const XERdescriptor_t PCUIF__info__ind_mnc__3__digits_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__info__ind_mnc__3__digits_json_; +extern const TTCN_OERdescriptor_t PCUIF__info__ind_mnc__3__digits_oer_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_mnc__3__digits_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_mnc__3__digits_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_lac_raw_; +extern const XERdescriptor_t PCUIF__info__ind_lac_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__info__ind_lac_json_; +extern const TTCN_OERdescriptor_t PCUIF__info__ind_lac_oer_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_lac_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_lac_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_rac_raw_; +extern const XERdescriptor_t PCUIF__info__ind_rac_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__info__ind_rac_json_; +extern const TTCN_OERdescriptor_t PCUIF__info__ind_rac_oer_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_rac_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_rac_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_nsei_raw_; +extern const XERdescriptor_t PCUIF__info__ind_nsei_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__info__ind_nsei_json_; +extern const TTCN_OERdescriptor_t PCUIF__info__ind_nsei_oer_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_nsei_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_nsei_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_nse__timer_raw_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_nse__timer_descr_; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_nse__timer_0_raw_; +extern const XERdescriptor_t PCUIF__info__ind_nse__timer_0_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__info__ind_nse__timer_0_json_; +extern const TTCN_OERdescriptor_t PCUIF__info__ind_nse__timer_0_oer_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_nse__timer_0_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_nse__timer_0_default_coding; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_nse__timer_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_cell__timer_raw_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_cell__timer_descr_; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_cell__timer_0_raw_; +extern const XERdescriptor_t PCUIF__info__ind_cell__timer_0_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__info__ind_cell__timer_0_json_; +extern const TTCN_OERdescriptor_t PCUIF__info__ind_cell__timer_0_oer_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_cell__timer_0_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_cell__timer_0_default_coding; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_cell__timer_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_cell__id_raw_; +extern const XERdescriptor_t PCUIF__info__ind_cell__id_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__info__ind_cell__id_json_; +extern const TTCN_OERdescriptor_t PCUIF__info__ind_cell__id_oer_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_cell__id_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_cell__id_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_repeat__time_raw_; +extern const XERdescriptor_t PCUIF__info__ind_repeat__time_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__info__ind_repeat__time_json_; +extern const TTCN_OERdescriptor_t PCUIF__info__ind_repeat__time_oer_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_repeat__time_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_repeat__time_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_repeat__count_raw_; +extern const XERdescriptor_t PCUIF__info__ind_repeat__count_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__info__ind_repeat__count_json_; +extern const TTCN_OERdescriptor_t PCUIF__info__ind_repeat__count_oer_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_repeat__count_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_repeat__count_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_bvci_raw_; +extern const XERdescriptor_t PCUIF__info__ind_bvci_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__info__ind_bvci_json_; +extern const TTCN_OERdescriptor_t PCUIF__info__ind_bvci_oer_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_bvci_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_bvci_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_t3142_raw_; +extern const XERdescriptor_t PCUIF__info__ind_t3142_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__info__ind_t3142_json_; +extern const TTCN_OERdescriptor_t PCUIF__info__ind_t3142_oer_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_t3142_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_t3142_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_t3169_raw_; +extern const XERdescriptor_t PCUIF__info__ind_t3169_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__info__ind_t3169_json_; +extern const TTCN_OERdescriptor_t PCUIF__info__ind_t3169_oer_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_t3169_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_t3169_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_t3191_raw_; +extern const XERdescriptor_t PCUIF__info__ind_t3191_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__info__ind_t3191_json_; +extern const TTCN_OERdescriptor_t PCUIF__info__ind_t3191_oer_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_t3191_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_t3191_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_t3193__10ms_raw_; +extern const XERdescriptor_t PCUIF__info__ind_t3193__10ms_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__info__ind_t3193__10ms_json_; +extern const TTCN_OERdescriptor_t PCUIF__info__ind_t3193__10ms_oer_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_t3193__10ms_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_t3193__10ms_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_t3195_raw_; +extern const XERdescriptor_t PCUIF__info__ind_t3195_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__info__ind_t3195_json_; +extern const TTCN_OERdescriptor_t PCUIF__info__ind_t3195_oer_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_t3195_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_t3195_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_t3101_raw_; +extern const XERdescriptor_t PCUIF__info__ind_t3101_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__info__ind_t3101_json_; +extern const TTCN_OERdescriptor_t PCUIF__info__ind_t3101_oer_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_t3101_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_t3101_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_t3103_raw_; +extern const XERdescriptor_t PCUIF__info__ind_t3103_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__info__ind_t3103_json_; +extern const TTCN_OERdescriptor_t PCUIF__info__ind_t3103_oer_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_t3103_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_t3103_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_t3105_raw_; +extern const XERdescriptor_t PCUIF__info__ind_t3105_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__info__ind_t3105_json_; +extern const TTCN_OERdescriptor_t PCUIF__info__ind_t3105_oer_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_t3105_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_t3105_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_cv__countdown_raw_; +extern const XERdescriptor_t PCUIF__info__ind_cv__countdown_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__info__ind_cv__countdown_json_; +extern const TTCN_OERdescriptor_t PCUIF__info__ind_cv__countdown_oer_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_cv__countdown_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_cv__countdown_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_dl__tbf__ext_raw_; +extern const XERdescriptor_t PCUIF__info__ind_dl__tbf__ext_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__info__ind_dl__tbf__ext_json_; +extern const TTCN_OERdescriptor_t PCUIF__info__ind_dl__tbf__ext_oer_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_dl__tbf__ext_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_dl__tbf__ext_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_ul__tbf__ext_raw_; +extern const XERdescriptor_t PCUIF__info__ind_ul__tbf__ext_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__info__ind_ul__tbf__ext_json_; +extern const TTCN_OERdescriptor_t PCUIF__info__ind_ul__tbf__ext_oer_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_ul__tbf__ext_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_ul__tbf__ext_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_initial__cs_raw_; +extern const XERdescriptor_t PCUIF__info__ind_initial__cs_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__info__ind_initial__cs_json_; +extern const TTCN_OERdescriptor_t PCUIF__info__ind_initial__cs_oer_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_initial__cs_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_initial__cs_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_initial__mcs_raw_; +extern const XERdescriptor_t PCUIF__info__ind_initial__mcs_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__info__ind_initial__mcs_json_; +extern const TTCN_OERdescriptor_t PCUIF__info__ind_initial__mcs_oer_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_initial__mcs_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_initial__mcs_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_nsvci_raw_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_nsvci_descr_; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_nsvci_0_raw_; +extern const XERdescriptor_t PCUIF__info__ind_nsvci_0_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__info__ind_nsvci_0_json_; +extern const TTCN_OERdescriptor_t PCUIF__info__ind_nsvci_0_oer_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_nsvci_0_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_nsvci_0_default_coding; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_nsvci_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_local__pprt_raw_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_local__pprt_descr_; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_local__pprt_0_raw_; +extern const XERdescriptor_t PCUIF__info__ind_local__pprt_0_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__info__ind_local__pprt_0_json_; +extern const TTCN_OERdescriptor_t PCUIF__info__ind_local__pprt_0_oer_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_local__pprt_0_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_local__pprt_0_default_coding; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_local__pprt_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_remote__port_raw_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_remote__port_descr_; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_remote__port_0_raw_; +extern const XERdescriptor_t PCUIF__info__ind_remote__port_0_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__info__ind_remote__port_0_json_; +extern const TTCN_OERdescriptor_t PCUIF__info__ind_remote__port_0_oer_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_remote__port_0_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_remote__port_0_default_coding; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_remote__port_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_remote__ip_raw_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_remote__ip_descr_; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_remote__ip_0_raw_; +extern const XERdescriptor_t PCUIF__info__ind_remote__ip_0_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__info__ind_remote__ip_0_json_; +extern const TTCN_OERdescriptor_t PCUIF__info__ind_remote__ip_0_oer_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_remote__ip_0_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_remote__ip_0_default_coding; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_remote__ip_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__info__ind_raw_; +extern const TTCN_Typedescriptor_t PCUIF__info__ind_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__info__ind_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__act__req_is__activate_raw_; +extern const XERdescriptor_t PCUIF__act__req_is__activate_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__act__req_is__activate_json_; +extern const TTCN_OERdescriptor_t PCUIF__act__req_is__activate_oer_; +extern const TTCN_Typedescriptor_t PCUIF__act__req_is__activate_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__act__req_is__activate_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__act__req_trx__nr_raw_; +extern const XERdescriptor_t PCUIF__act__req_trx__nr_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__act__req_trx__nr_json_; +extern const TTCN_OERdescriptor_t PCUIF__act__req_trx__nr_oer_; +extern const TTCN_Typedescriptor_t PCUIF__act__req_trx__nr_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__act__req_trx__nr_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__act__req_ts__nr_raw_; +extern const XERdescriptor_t PCUIF__act__req_ts__nr_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__act__req_ts__nr_json_; +extern const TTCN_OERdescriptor_t PCUIF__act__req_ts__nr_oer_; +extern const TTCN_Typedescriptor_t PCUIF__act__req_ts__nr_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__act__req_ts__nr_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__act__req_spare_raw_; +extern const XERdescriptor_t PCUIF__act__req_spare_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__act__req_spare_json_; +extern const TTCN_OERdescriptor_t PCUIF__act__req_spare_oer_; +extern const TTCN_Typedescriptor_t PCUIF__act__req_spare_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__act__req_spare_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__act__req_raw_; +extern const TTCN_Typedescriptor_t PCUIF__act__req_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__act__req_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__time__ind_fn_raw_; +extern const XERdescriptor_t PCUIF__time__ind_fn_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__time__ind_fn_json_; +extern const TTCN_OERdescriptor_t PCUIF__time__ind_fn_oer_; +extern const TTCN_Typedescriptor_t PCUIF__time__ind_fn_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__time__ind_fn_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__time__ind_raw_; +extern const TTCN_Typedescriptor_t PCUIF__time__ind_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__time__ind_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__pag__req_sapi_raw_; +extern const TTCN_Typedescriptor_t PCUIF__pag__req_sapi_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__pag__req_sapi_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__pag__req_chan__needed_raw_; +extern const XERdescriptor_t PCUIF__pag__req_chan__needed_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__pag__req_chan__needed_json_; +extern const TTCN_OERdescriptor_t PCUIF__pag__req_chan__needed_oer_; +extern const TTCN_Typedescriptor_t PCUIF__pag__req_chan__needed_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__pag__req_chan__needed_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__pag__req_identity__lv_raw_; +extern const XERdescriptor_t PCUIF__pag__req_identity__lv_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__pag__req_identity__lv_json_; +extern const TTCN_OERdescriptor_t PCUIF__pag__req_identity__lv_oer_; +extern const TTCN_Typedescriptor_t PCUIF__pag__req_identity__lv_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__pag__req_identity__lv_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__pag__req_raw_; +extern const TTCN_Typedescriptor_t PCUIF__pag__req_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__pag__req_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__susp__req_tlli_raw_; +extern const XERdescriptor_t PCUIF__susp__req_tlli_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__susp__req_tlli_json_; +extern const TTCN_OERdescriptor_t PCUIF__susp__req_tlli_oer_; +extern const TTCN_Typedescriptor_t PCUIF__susp__req_tlli_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__susp__req_tlli_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__susp__req_ra__id_raw_; +extern const XERdescriptor_t PCUIF__susp__req_ra__id_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__susp__req_ra__id_json_; +extern const TTCN_OERdescriptor_t PCUIF__susp__req_ra__id_oer_; +extern const TTCN_Typedescriptor_t PCUIF__susp__req_ra__id_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__susp__req_ra__id_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__susp__req_cause_raw_; +extern const XERdescriptor_t PCUIF__susp__req_cause_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__susp__req_cause_json_; +extern const TTCN_OERdescriptor_t PCUIF__susp__req_cause_oer_; +extern const TTCN_Typedescriptor_t PCUIF__susp__req_cause_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__susp__req_cause_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__susp__req_raw_; +extern const TTCN_Typedescriptor_t PCUIF__susp__req_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__susp__req_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__MsgUnion_raw_; +extern const TTCN_Typedescriptor_t PCUIF__MsgUnion_descr_; +extern const TTCN_RAWdescriptor_t PCUIF__MsgUnion_data__req_raw_; +extern const TTCN_Typedescriptor_t PCUIF__MsgUnion_data__req_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__MsgUnion_data__req_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__MsgUnion_data__cnf_raw_; +extern const TTCN_Typedescriptor_t PCUIF__MsgUnion_data__cnf_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__MsgUnion_data__cnf_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__MsgUnion_data__cnf__dt_raw_; +extern const TTCN_Typedescriptor_t PCUIF__MsgUnion_data__cnf__dt_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__MsgUnion_data__cnf__dt_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__MsgUnion_data__ind_raw_; +extern const TTCN_Typedescriptor_t PCUIF__MsgUnion_data__ind_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__MsgUnion_data__ind_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__MsgUnion_susp__req_raw_; +extern const TTCN_Typedescriptor_t PCUIF__MsgUnion_susp__req_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__MsgUnion_susp__req_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__MsgUnion_rts__req_raw_; +extern const TTCN_Typedescriptor_t PCUIF__MsgUnion_rts__req_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__MsgUnion_rts__req_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__MsgUnion_rach__ind_raw_; +extern const TTCN_Typedescriptor_t PCUIF__MsgUnion_rach__ind_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__MsgUnion_rach__ind_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__MsgUnion_txt__ind_raw_; +extern const TTCN_Typedescriptor_t PCUIF__MsgUnion_txt__ind_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__MsgUnion_txt__ind_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__MsgUnion_info__ind_raw_; +extern const TTCN_Typedescriptor_t PCUIF__MsgUnion_info__ind_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__MsgUnion_info__ind_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__MsgUnion_act__req_raw_; +extern const TTCN_Typedescriptor_t PCUIF__MsgUnion_act__req_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__MsgUnion_act__req_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__MsgUnion_time__ind_raw_; +extern const TTCN_Typedescriptor_t PCUIF__MsgUnion_time__ind_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__MsgUnion_time__ind_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__MsgUnion_pag__req_raw_; +extern const TTCN_Typedescriptor_t PCUIF__MsgUnion_pag__req_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__MsgUnion_pag__req_default_coding; +extern UNIVERSAL_CHARSTRING PCUIF__MsgUnion_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__Message_msg__type_raw_; +extern const TTCN_Typedescriptor_t PCUIF__Message_msg__type_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__Message_msg__type_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__Message_bts__nr_raw_; +extern const XERdescriptor_t PCUIF__Message_bts__nr_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__Message_bts__nr_json_; +extern const TTCN_OERdescriptor_t PCUIF__Message_bts__nr_oer_; +extern const TTCN_Typedescriptor_t PCUIF__Message_bts__nr_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__Message_bts__nr_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__Message_spare_raw_; +extern const XERdescriptor_t PCUIF__Message_spare_xer_; +extern const TTCN_JSONdescriptor_t PCUIF__Message_spare_json_; +extern const TTCN_OERdescriptor_t PCUIF__Message_spare_oer_; +extern const TTCN_Typedescriptor_t PCUIF__Message_spare_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__Message_spare_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__Message_u_raw_; +extern const TTCN_Typedescriptor_t PCUIF__Message_u_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__Message_u_default_coding; +extern const TTCN_RAWdescriptor_t PCUIF__Message_raw_; +extern const TTCN_Typedescriptor_t PCUIF__Message_descr_; +extern UNIVERSAL_CHARSTRING PCUIF__Message_default_coding; +extern const INTEGER_template& tr__PCUIF__RTS__REQ_bts__nr_defval; +extern const INTEGER_template& tr__PCUIF__RTS__REQ_trx__nr_defval; +extern const INTEGER_template& tr__PCUIF__RTS__REQ_ts__nr_defval; +extern const PCUIF__Sapi_template& tr__PCUIF__RTS__REQ_sapi_defval; +extern const INTEGER_template& tr__PCUIF__RTS__REQ_fn_defval; +extern const INTEGER_template& tr__PCUIF__RTS__REQ_block__nr_defval; +extern const INTEGER_template& tr__PCUIF__DATA__IND_bts__nr_defval; +extern const INTEGER_template& tr__PCUIF__DATA__IND_trx__nr_defval; +extern const INTEGER_template& tr__PCUIF__DATA__IND_ts__nr_defval; +extern const INTEGER_template& tr__PCUIF__DATA__IND_block__nr_defval; +extern const PCUIF__Sapi_template& tr__PCUIF__DATA__IND_sapi_defval; +extern const OCTETSTRING_template& tr__PCUIF__DATA__IND_data_defval; +extern const INTEGER_template& tr__PCUIF__DATA__CNF_bts__nr_defval; +extern const INTEGER_template& tr__PCUIF__DATA__CNF_trx__nr_defval; +extern const INTEGER_template& tr__PCUIF__DATA__CNF_ts__nr_defval; +extern const PCUIF__Sapi_template& tr__PCUIF__DATA__CNF_sapi_defval; +extern const OCTETSTRING_template& tr__PCUIF__DATA__CNF_data_defval; +extern const INTEGER_template& tr__PCUIF__RACH__IND_bts__nr_defval; +extern const INTEGER_template& tr__PCUIF__RACH__IND_ra_defval; +extern const INTEGER_template& tr__PCUIF__RACH__IND_is__11bit_defval; +extern const INTEGER_template& tr__PCUIF__RACH__IND_burst__type_defval; +extern const INTEGER_template& tr__PCUIF__RACH__IND_fn_defval; +extern const INTEGER_template& tr__PCUIF__PAG__REQ_bts__nr_defval; +extern const OCTETSTRING_template& tr__PCUIF__PAG__REQ_id__lv_defval; +extern const INTEGER_template& tr__PCUIF__PAG__REQ_chan__needed_defval; +extern const PCUIF__Sapi_template& tr__PCUIF__PAG__REQ_sapi_defval; +extern const INTEGER_template& tr__PCUIF__INFO__IND_bts__nr_defval; +extern const PCUIF__Flags_template& tr__PCUIF__INFO__IND_flags_defval; +extern const INTEGER_template& tr__PCUIF__INFO__IND_version_defval; +extern TTCN_Module module_object; + +} /* end of namespace */ + +#endif diff --git a/titan/hello.cc b/titan/hello.cc new file mode 100644 index 0000000..cd6179b --- /dev/null +++ b/titan/hello.cc @@ -0,0 +1,44 @@ +#include + +extern char *program_invocation_short_name; + +#include +#include "MNCC_Types.hh" +#include "PCUIF_Types.hh" + +using namespace std; + +extern "C" { + +void pcu_dissector(int fd, bool is_out, const char *fn, const uint8_t *data, unsigned int len) +{ + OCTETSTRING oct(len, data); + PCUIF__Types::PCUIF__Message pdu = PCUIF__Types::dec__PCUIF__Message(oct); + TTCN_Logger::begin_event(TTCN_ERROR); + TTCN_Logger::log_event("%s(%d) %s: ", fn, fd, is_out ? "Tx" : "Rx"); + pdu.log(); + TTCN_Logger::end_event(); +} + + +void mncc_dissector(int fd, bool is_out, const char *fn, const uint8_t *data, unsigned int len) +{ + OCTETSTRING oct(len, data); + MNCC__Types::MNCC__PDU pdu = MNCC__Types::dec__MNCC__PDU(oct); + TTCN_Logger::begin_event(TTCN_ERROR); + TTCN_Logger::log_event("%s(%d) %s: ", fn, fd, is_out ? "Tx" : "Rx"); + pdu.log(); + TTCN_Logger::end_event(); +} + +__attribute__ ((constructor)) static void init_mncc(void) +{ + TTCN_Runtime::set_state(TTCN_Runtime::SINGLE_CONTROLPART); + //TTCN_Runtime::install_signal_handlers(); + TTCN_Logger::initialize_logger(); + TTCN_Logger::set_executable_name(program_invocation_short_name); + TTCN_Logger::set_start_time(); + TTCN_Logger::open_file(); +} + +} diff --git a/titan/mncc.h b/titan/mncc.h new file mode 100644 index 0000000..3e00db8 --- /dev/null +++ b/titan/mncc.h @@ -0,0 +1,304 @@ +/* This file contains sections copied from + * libosmocore/include/osmocom/gsm/protocol/gsm_04_08.h, + * libosmocore/include/osmocom/gsm/mncc.h and + * openbsc/include/openbsc/mncc.h + */ + +#include + +/* GSM 04.08 Bearer Capability: Rate Adaption */ +enum gsm48_bcap_ra { + GSM48_BCAP_RA_NONE = 0, + GSM48_BCAP_RA_V110_X30 = 1, + GSM48_BCAP_RA_X31 = 2, + GSM48_BCAP_RA_OTHER = 3, +}; + +/* GSM 04.08 Bearer Capability: Signalling access protocol */ +enum gsm48_bcap_sig_access { + GSM48_BCAP_SA_I440_I450 = 1, + GSM48_BCAP_SA_X21 = 2, + GSM48_BCAP_SA_X28_DP_IN = 3, + GSM48_BCAP_SA_X28_DP_UN = 4, + GSM48_BCAP_SA_X28_NDP = 5, + GSM48_BCAP_SA_X32 = 6, +}; + +/* GSM 04.08 Bearer Capability: User Rate */ +enum gsm48_bcap_user_rate { + GSM48_BCAP_UR_300 = 1, + GSM48_BCAP_UR_1200 = 2, + GSM48_BCAP_UR_2400 = 3, + GSM48_BCAP_UR_4800 = 4, + GSM48_BCAP_UR_9600 = 5, + GSM48_BCAP_UR_12000 = 6, + GSM48_BCAP_UR_1200_75 = 7, +}; + +/* GSM 04.08 Bearer Capability: Parity */ +enum gsm48_bcap_parity { + GSM48_BCAP_PAR_ODD = 0, + GSM48_BCAP_PAR_EVEN = 2, + GSM48_BCAP_PAR_NONE = 3, + GSM48_BCAP_PAR_ZERO = 4, + GSM48_BCAP_PAR_ONE = 5, +}; + +/* GSM 04.08 Bearer Capability: Intermediate Rate */ +enum gsm48_bcap_interm_rate { + GSM48_BCAP_IR_8k = 2, + GSM48_BCAP_IR_16k = 3, +}; + +/* GSM 04.08 Bearer Capability: Transparency */ +enum gsm48_bcap_transp { + GSM48_BCAP_TR_TRANSP = 0, + GSM48_BCAP_TR_RLP = 1, + GSM48_BCAP_TR_TR_PREF = 2, + GSM48_BCAP_TR_RLP_PREF = 3, +}; + +/* GSM 04.08 Bearer Capability: Modem Type */ +enum gsm48_bcap_modem_type { + GSM48_BCAP_MT_NONE = 0, + GSM48_BCAP_MT_V21 = 1, + GSM48_BCAP_MT_V22 = 2, + GSM48_BCAP_MT_V22bis = 3, + GSM48_BCAP_MT_V23 = 4, + GSM48_BCAP_MT_V26ter = 5, + GSM48_BCAP_MT_V32 = 6, + GSM48_BCAP_MT_UNDEF = 7, + GSM48_BCAP_MT_AUTO_1 = 8, +}; + + + +#define GSM_MAX_FACILITY 128 +#define GSM_MAX_SSVERSION 128 +#define GSM_MAX_USERUSER 128 + +/* Expanded fields from GSM TS 04.08, Table 10.5.102 */ +struct gsm_mncc_bearer_cap { + int transfer; /* Information Transfer Capability */ + int mode; /* Transfer Mode */ + int coding; /* Coding Standard */ + int radio; /* Radio Channel Requirement */ + int speech_ctm; /* CTM text telephony indication */ + int speech_ver[8]; /* Speech version indication */ + struct { + enum gsm48_bcap_ra rate_adaption; + enum gsm48_bcap_sig_access sig_access; + int async; + int nr_stop_bits; + int nr_data_bits; + enum gsm48_bcap_user_rate user_rate; + enum gsm48_bcap_parity parity; + enum gsm48_bcap_interm_rate interm_rate; + enum gsm48_bcap_transp transp; + enum gsm48_bcap_modem_type modem_type; + } data; +}; + +struct gsm_mncc_number { + int type; + int plan; + int present; + int screen; + char number[33]; +}; + +struct gsm_mncc_cause { + int location; + int coding; + int rec; + int rec_val; + int value; + int diag_len; + char diag[32]; +}; + +struct gsm_mncc_useruser { + int proto; + char info[GSM_MAX_USERUSER + 1]; /* + termination char */ +}; + +struct gsm_mncc_progress { + int coding; + int location; + int descr; +}; + +struct gsm_mncc_facility { + int len; + char info[GSM_MAX_FACILITY]; +}; + +struct gsm_mncc_ssversion { + int len; + char info[GSM_MAX_SSVERSION]; +}; + +struct gsm_mncc_cccap { + int dtmf; + int pcp; +}; + +enum { + GSM_MNCC_BCAP_SPEECH = 0, + GSM_MNCC_BCAP_UNR_DIG = 1, + GSM_MNCC_BCAP_AUDIO = 2, + GSM_MNCC_BCAP_FAX_G3 = 3, + GSM_MNCC_BCAP_OTHER_ITC = 5, + GSM_MNCC_BCAP_RESERVED = 7, +}; + + +#define MNCC_SETUP_REQ 0x0101 +#define MNCC_SETUP_IND 0x0102 +#define MNCC_SETUP_RSP 0x0103 +#define MNCC_SETUP_CNF 0x0104 +#define MNCC_SETUP_COMPL_REQ 0x0105 +#define MNCC_SETUP_COMPL_IND 0x0106 +/* MNCC_REJ_* is perfomed via MNCC_REL_* */ +#define MNCC_CALL_CONF_IND 0x0107 +#define MNCC_CALL_PROC_REQ 0x0108 +#define MNCC_PROGRESS_REQ 0x0109 +#define MNCC_ALERT_REQ 0x010a +#define MNCC_ALERT_IND 0x010b +#define MNCC_NOTIFY_REQ 0x010c +#define MNCC_NOTIFY_IND 0x010d +#define MNCC_DISC_REQ 0x010e +#define MNCC_DISC_IND 0x010f +#define MNCC_REL_REQ 0x0110 +#define MNCC_REL_IND 0x0111 +#define MNCC_REL_CNF 0x0112 +#define MNCC_FACILITY_REQ 0x0113 +#define MNCC_FACILITY_IND 0x0114 +#define MNCC_START_DTMF_IND 0x0115 +#define MNCC_START_DTMF_RSP 0x0116 +#define MNCC_START_DTMF_REJ 0x0117 +#define MNCC_STOP_DTMF_IND 0x0118 +#define MNCC_STOP_DTMF_RSP 0x0119 +#define MNCC_MODIFY_REQ 0x011a +#define MNCC_MODIFY_IND 0x011b +#define MNCC_MODIFY_RSP 0x011c +#define MNCC_MODIFY_CNF 0x011d +#define MNCC_MODIFY_REJ 0x011e +#define MNCC_HOLD_IND 0x011f +#define MNCC_HOLD_CNF 0x0120 +#define MNCC_HOLD_REJ 0x0121 +#define MNCC_RETRIEVE_IND 0x0122 +#define MNCC_RETRIEVE_CNF 0x0123 +#define MNCC_RETRIEVE_REJ 0x0124 +#define MNCC_USERINFO_REQ 0x0125 +#define MNCC_USERINFO_IND 0x0126 +#define MNCC_REJ_REQ 0x0127 +#define MNCC_REJ_IND 0x0128 + +#define MNCC_BRIDGE 0x0200 +#define MNCC_FRAME_RECV 0x0201 +#define MNCC_FRAME_DROP 0x0202 +#define MNCC_LCHAN_MODIFY 0x0203 +#define MNCC_RTP_CREATE 0x0204 +#define MNCC_RTP_CONNECT 0x0205 +#define MNCC_RTP_FREE 0x0206 + +#define GSM_TCHF_FRAME 0x0300 +#define GSM_TCHF_FRAME_EFR 0x0301 +#define GSM_TCHH_FRAME 0x0302 +#define GSM_TCH_FRAME_AMR 0x0303 +#define GSM_BAD_FRAME 0x03ff + +#define MNCC_SOCKET_HELLO 0x0400 + +#define GSM_MAX_FACILITY 128 +#define GSM_MAX_SSVERSION 128 +#define GSM_MAX_USERUSER 128 + +#define MNCC_F_BEARER_CAP 0x0001 +#define MNCC_F_CALLED 0x0002 +#define MNCC_F_CALLING 0x0004 +#define MNCC_F_REDIRECTING 0x0008 +#define MNCC_F_CONNECTED 0x0010 +#define MNCC_F_CAUSE 0x0020 +#define MNCC_F_USERUSER 0x0040 +#define MNCC_F_PROGRESS 0x0080 +#define MNCC_F_EMERGENCY 0x0100 +#define MNCC_F_FACILITY 0x0200 +#define MNCC_F_SSVERSION 0x0400 +#define MNCC_F_CCCAP 0x0800 +#define MNCC_F_KEYPAD 0x1000 +#define MNCC_F_SIGNAL 0x2000 + +struct gsm_mncc { + /* context based information */ + uint32_t msg_type; + uint32_t callref; + + /* which fields are present */ + uint32_t fields; + + /* data derived informations (MNCC_F_ based) */ + struct gsm_mncc_bearer_cap bearer_cap; + struct gsm_mncc_number called; + struct gsm_mncc_number calling; + struct gsm_mncc_number redirecting; + struct gsm_mncc_number connected; + struct gsm_mncc_cause cause; + struct gsm_mncc_progress progress; + struct gsm_mncc_useruser useruser; + struct gsm_mncc_facility facility; + struct gsm_mncc_cccap cccap; + struct gsm_mncc_ssversion ssversion; + struct { + int sup; + int inv; + } clir; + int signal; + + /* data derived information, not MNCC_F based */ + int keypad; + int more; + int notify; /* 0..127 */ + int emergency; + char imsi[16]; + + unsigned char lchan_type; + unsigned char lchan_mode; +}; + +struct gsm_data_frame { + uint32_t msg_type; + uint32_t callref; + unsigned char data[0]; +}; + +#define MNCC_SOCK_VERSION 5 +struct gsm_mncc_hello { + uint32_t msg_type; + uint32_t version; + + /* send the sizes of the structs */ + uint32_t mncc_size; + uint32_t data_frame_size; + + /* send some offsets */ + uint32_t called_offset; + uint32_t signal_offset; + uint32_t emergency_offset; + uint32_t lchan_type_offset; +}; + +struct gsm_mncc_rtp { + uint32_t msg_type; + uint32_t callref; + uint32_t ip; + uint16_t port; + uint32_t payload_type; + uint32_t payload_msg_type; +}; + +struct gsm_mncc_bridge { + uint32_t msg_type; + uint32_t callref[2]; +}; diff --git a/utils.c b/utils.c index 55499af..4b653f2 100644 --- a/utils.c +++ b/utils.c @@ -9,6 +9,11 @@ #define MAX_UNIX_FDS 32 +#ifdef ENABLE_TITAN +extern void mncc_dissector(int fd, bool is_out, const char *fn, const uint8_t *data, unsigned int len); +extern void pcu_dissector(int fd, bool is_out, const char *fn, const uint8_t *data, unsigned int len); +#endif + /*********************************************************************** * Utility functions ***********************************************************************/ @@ -60,7 +65,13 @@ static struct sock_state unix_fds[MAX_UNIX_FDS]; __attribute__ ((constructor)) static void udtrace_init(void) { int i; - LOG("Unix Domain Socket Trace initialized\n"); + LOG("Unix Domain Socket Trace initialized (TITAN support " +#ifdef ENABLE_TITAN + "enabled" +#else + "DISABLED" +#endif + ")\n"); for (i = 0; i < ARRAY_SIZE(unix_fds); i++) { unix_fds[i] = (struct sock_state) { -1, NULL, NULL }; } @@ -97,8 +108,16 @@ void udtrace_del_fd(int fd) static void udtrace_resolve_dissector(struct sock_state *ss) { - /* FIXME: actual useful dissectors resovled by path */ - ss->dissector = &default_dissector; + /* actual useful dissectors resovled by path */ + if (0) { } +#ifdef ENABLE_TITAN + else if (strstr(ss->path, "mncc")) + ss->dissector = mncc_dissector; + else if (strstr(ss->path, "pcu")) + ss->dissector = pcu_dissector; +#endif + else + ss->dissector = &default_dissector; } /* set the path of a given fd */ -- cgit v1.2.3