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

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

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

#ifndef TCCEncoding__Functions_HH
#define TCCEncoding__Functions_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 <TTCN3.hh>

#if TTCN3_VERSION != 110100
#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 TCCEncoding__Functions_HH
#endif

namespace TCCEncoding__Functions {

/* Forward declarations of classes */

class NumberPlan;
class NumberPlan_template;
class ISUP__NatureOfAddress;
class ISUP__NatureOfAddress_template;
class ISUP__NumberingIncompleteIndicator;
class ISUP__NumberingIncompleteIndicator_template;
class ISUP__Called__Party__Number;
class ISUP__Called__Party__Number_template;
class ISUP__ScreeningIndicator;
class ISUP__ScreeningIndicator_template;
class ISUP__AddressPresentationRestrictedIndicator;
class ISUP__AddressPresentationRestrictedIndicator_template;
class ISUP__Calling__Party__Number;
class ISUP__Calling__Party__Number_template;
class MobileL3__TypeOfNumber;
class MobileL3__TypeOfNumber_template;
class MobileL3__CalledPartyBCDNumber;
class MobileL3__CalledPartyBCDNumber_template;
typedef PreGenRecordOf::PREGEN__RECORD__OF__BITSTRING BitstringList;
typedef PreGenRecordOf::PREGEN__RECORD__OF__BITSTRING_template BitstringList_template;
typedef PreGenRecordOf::PREGEN__RECORD__OF__UNIVERSAL__CHARSTRING Extension__List;
typedef PreGenRecordOf::PREGEN__RECORD__OF__UNIVERSAL__CHARSTRING_template Extension__List_template;
typedef PreGenRecordOf::PREGEN__RECORD__OF__UNIVERSAL__CHARSTRING UnicharList;
typedef PreGenRecordOf::PREGEN__RECORD__OF__UNIVERSAL__CHARSTRING_template UnicharList_template;

} /* end of namespace */

#ifndef TCCEncoding__Functions_HH
#define TCCEncoding__Functions_HH

namespace TCCEncoding__Functions {

/* Class definitions */

class NumberPlan : public Base_Type { // enum
friend class NumberPlan_template;
public:
enum enum_type { unknownSpare = 0, ISDN__E__164 = 1, spare1 = 2, data = 3, telex = 4, reserved1 = 5, reserved2 = 6, spare2 = 7, national = 8, private__ = 9, reservedCTS = 11, reservedExtension = 15, UNKNOWN_VALUE = 10, UNBOUND_VALUE = 12 };
private:
enum_type enum_value;

public:
NumberPlan();
NumberPlan(int other_value);
NumberPlan(enum_type other_value);
NumberPlan(const NumberPlan& other_value);

NumberPlan& operator=(int other_value);
NumberPlan& operator=(enum_type other_value);
NumberPlan& operator=(const NumberPlan& other_value);

boolean operator==(int other_value) const;
boolean operator==(enum_type other_value) const;
boolean operator==(const NumberPlan& other_value) const;
inline boolean operator!=(int other_value) const { return !(*this == other_value); }
inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
inline boolean operator!=(const NumberPlan& other_value) const { return !(*this == other_value); }
boolean operator<(int other_value) const;
boolean operator<(enum_type other_value) const;
boolean operator<(const NumberPlan& other_value) const;
boolean operator>(int other_value) const;
boolean operator>(enum_type other_value) const;
boolean operator>(const NumberPlan& other_value) const;
inline boolean operator<=(int other_value) const { return !(*this > other_value); }
inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
inline boolean operator<=(const NumberPlan& other_value) const { return !(*this > other_value); }
inline boolean operator>=(int other_value) const { return !(*this < other_value); }
inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
inline boolean operator>=(const NumberPlan& 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, const int* int_par = NULL, const int* int_par2 = NULL);
static boolean is_valid_enum(int int_par);

static int enum2int(enum_type enum_par);
static int enum2int(const NumberPlan& 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);
};

class NumberPlan_template : public Base_Template {
union {
NumberPlan::enum_type single_value;
struct {
unsigned int n_values;
NumberPlan_template *list_value;
} value_list;
struct {
NumberPlan_template* precondition;
NumberPlan_template* implied_template;
} implication_;
dynmatch_struct<NumberPlan>* dyn_match;
};

void copy_template(const NumberPlan_template& other_value);

public:
NumberPlan_template();
NumberPlan_template(template_sel other_value);
NumberPlan_template(int other_value);
NumberPlan_template(NumberPlan::enum_type other_value);
NumberPlan_template(const NumberPlan& other_value);
NumberPlan_template(const OPTIONAL<NumberPlan>& other_value);
NumberPlan_template(NumberPlan_template* p_precondition, NumberPlan_template* p_implied_template);
NumberPlan_template(Dynamic_Match_Interface<NumberPlan>* p_dyn_match);
NumberPlan_template(const NumberPlan_template& other_value);
~NumberPlan_template();

boolean is_bound() const;
boolean is_value() const;
void clean_up();
NumberPlan_template& operator=(template_sel other_value);
NumberPlan_template& operator=(int other_value);
NumberPlan_template& operator=(NumberPlan::enum_type other_value);
NumberPlan_template& operator=(const NumberPlan& other_value);
NumberPlan_template& operator=(const OPTIONAL<NumberPlan>& other_value);
NumberPlan_template& operator=(const NumberPlan_template& other_value);

boolean match(NumberPlan::enum_type other_value, boolean legacy = FALSE) const;
boolean match(const NumberPlan& other_value, boolean legacy = FALSE) const;
NumberPlan::enum_type valueof() const;
void set_type(template_sel template_type, unsigned int list_length = 0);
NumberPlan_template& list_item(unsigned int list_index);
void log() const;
void log_match(const NumberPlan& 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 ISUP__NatureOfAddress : public Base_Type { // enum
friend class ISUP__NatureOfAddress_template;
public:
enum enum_type { spare = 0, subscriberNumber = 1, unknown = 2, nationalNumber = 3, internationalNumber = 4, networkRoutingNumber = 5, networkRoutingNumberNationalNrFormat = 6, networkRoutingNumberNetworkSpecificNrFormat = 7, networkRoutingNumberConcatenatedWith__CDN = 8, UNKNOWN_VALUE = 9, UNBOUND_VALUE = 10 };
private:
enum_type enum_value;

public:
ISUP__NatureOfAddress();
ISUP__NatureOfAddress(int other_value);
ISUP__NatureOfAddress(enum_type other_value);
ISUP__NatureOfAddress(const ISUP__NatureOfAddress& other_value);

ISUP__NatureOfAddress& operator=(int other_value);
ISUP__NatureOfAddress& operator=(enum_type other_value);
ISUP__NatureOfAddress& operator=(const ISUP__NatureOfAddress& other_value);

boolean operator==(int other_value) const;
boolean operator==(enum_type other_value) const;
boolean operator==(const ISUP__NatureOfAddress& other_value) const;
inline boolean operator!=(int other_value) const { return !(*this == other_value); }
inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
inline boolean operator!=(const ISUP__NatureOfAddress& other_value) const { return !(*this == other_value); }
boolean operator<(int other_value) const;
boolean operator<(enum_type other_value) const;
boolean operator<(const ISUP__NatureOfAddress& other_value) const;
boolean operator>(int other_value) const;
boolean operator>(enum_type other_value) const;
boolean operator>(const ISUP__NatureOfAddress& other_value) const;
inline boolean operator<=(int other_value) const { return !(*this > other_value); }
inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
inline boolean operator<=(const ISUP__NatureOfAddress& other_value) const { return !(*this > other_value); }
inline boolean operator>=(int other_value) const { return !(*this < other_value); }
inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
inline boolean operator>=(const ISUP__NatureOfAddress& 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, const int* int_par = NULL, const int* int_par2 = NULL);
static boolean is_valid_enum(int int_par);

static int enum2int(enum_type enum_par);
static int enum2int(const ISUP__NatureOfAddress& 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);
};

class ISUP__NatureOfAddress_template : public Base_Template {
union {
ISUP__NatureOfAddress::enum_type single_value;
struct {
unsigned int n_values;
ISUP__NatureOfAddress_template *list_value;
} value_list;
struct {
ISUP__NatureOfAddress_template* precondition;
ISUP__NatureOfAddress_template* implied_template;
} implication_;
dynmatch_struct<ISUP__NatureOfAddress>* dyn_match;
};

void copy_template(const ISUP__NatureOfAddress_template& other_value);

public:
ISUP__NatureOfAddress_template();
ISUP__NatureOfAddress_template(template_sel other_value);
ISUP__NatureOfAddress_template(int other_value);
ISUP__NatureOfAddress_template(ISUP__NatureOfAddress::enum_type other_value);
ISUP__NatureOfAddress_template(const ISUP__NatureOfAddress& other_value);
ISUP__NatureOfAddress_template(const OPTIONAL<ISUP__NatureOfAddress>& other_value);
ISUP__NatureOfAddress_template(ISUP__NatureOfAddress_template* p_precondition, ISUP__NatureOfAddress_template* p_implied_template);
ISUP__NatureOfAddress_template(Dynamic_Match_Interface<ISUP__NatureOfAddress>* p_dyn_match);
ISUP__NatureOfAddress_template(const ISUP__NatureOfAddress_template& other_value);
~ISUP__NatureOfAddress_template();

boolean is_bound() const;
boolean is_value() const;
void clean_up();
ISUP__NatureOfAddress_template& operator=(template_sel other_value);
ISUP__NatureOfAddress_template& operator=(int other_value);
ISUP__NatureOfAddress_template& operator=(ISUP__NatureOfAddress::enum_type other_value);
ISUP__NatureOfAddress_template& operator=(const ISUP__NatureOfAddress& other_value);
ISUP__NatureOfAddress_template& operator=(const OPTIONAL<ISUP__NatureOfAddress>& other_value);
ISUP__NatureOfAddress_template& operator=(const ISUP__NatureOfAddress_template& other_value);

boolean match(ISUP__NatureOfAddress::enum_type other_value, boolean legacy = FALSE) const;
boolean match(const ISUP__NatureOfAddress& other_value, boolean legacy = FALSE) const;
ISUP__NatureOfAddress::enum_type valueof() const;
void set_type(template_sel template_type, unsigned int list_length = 0);
ISUP__NatureOfAddress_template& list_item(unsigned int list_index);
void log() const;
void log_match(const ISUP__NatureOfAddress& 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 ISUP__NumberingIncompleteIndicator : public Base_Type { // enum
friend class ISUP__NumberingIncompleteIndicator_template;
public:
enum enum_type { numberComplete = 0, numberIncomplete = 1, UNKNOWN_VALUE = 2, UNBOUND_VALUE = 3 };
private:
enum_type enum_value;

public:
ISUP__NumberingIncompleteIndicator();
ISUP__NumberingIncompleteIndicator(int other_value);
ISUP__NumberingIncompleteIndicator(enum_type other_value);
ISUP__NumberingIncompleteIndicator(const ISUP__NumberingIncompleteIndicator& other_value);

ISUP__NumberingIncompleteIndicator& operator=(int other_value);
ISUP__NumberingIncompleteIndicator& operator=(enum_type other_value);
ISUP__NumberingIncompleteIndicator& operator=(const ISUP__NumberingIncompleteIndicator& other_value);

boolean operator==(int other_value) const;
boolean operator==(enum_type other_value) const;
boolean operator==(const ISUP__NumberingIncompleteIndicator& other_value) const;
inline boolean operator!=(int other_value) const { return !(*this == other_value); }
inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
inline boolean operator!=(const ISUP__NumberingIncompleteIndicator& other_value) const { return !(*this == other_value); }
boolean operator<(int other_value) const;
boolean operator<(enum_type other_value) const;
boolean operator<(const ISUP__NumberingIncompleteIndicator& other_value) const;
boolean operator>(int other_value) const;
boolean operator>(enum_type other_value) const;
boolean operator>(const ISUP__NumberingIncompleteIndicator& other_value) const;
inline boolean operator<=(int other_value) const { return !(*this > other_value); }
inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
inline boolean operator<=(const ISUP__NumberingIncompleteIndicator& other_value) const { return !(*this > other_value); }
inline boolean operator>=(int other_value) const { return !(*this < other_value); }
inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
inline boolean operator>=(const ISUP__NumberingIncompleteIndicator& 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, const int* int_par = NULL, const int* int_par2 = NULL);
static boolean is_valid_enum(int int_par);

static int enum2int(enum_type enum_par);
static int enum2int(const ISUP__NumberingIncompleteIndicator& 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);
};

class ISUP__NumberingIncompleteIndicator_template : public Base_Template {
union {
ISUP__NumberingIncompleteIndicator::enum_type single_value;
struct {
unsigned int n_values;
ISUP__NumberingIncompleteIndicator_template *list_value;
} value_list;
struct {
ISUP__NumberingIncompleteIndicator_template* precondition;
ISUP__NumberingIncompleteIndicator_template* implied_template;
} implication_;
dynmatch_struct<ISUP__NumberingIncompleteIndicator>* dyn_match;
};

void copy_template(const ISUP__NumberingIncompleteIndicator_template& other_value);

public:
ISUP__NumberingIncompleteIndicator_template();
ISUP__NumberingIncompleteIndicator_template(template_sel other_value);
ISUP__NumberingIncompleteIndicator_template(int other_value);
ISUP__NumberingIncompleteIndicator_template(ISUP__NumberingIncompleteIndicator::enum_type other_value);
ISUP__NumberingIncompleteIndicator_template(const ISUP__NumberingIncompleteIndicator& other_value);
ISUP__NumberingIncompleteIndicator_template(const OPTIONAL<ISUP__NumberingIncompleteIndicator>& other_value);
ISUP__NumberingIncompleteIndicator_template(ISUP__NumberingIncompleteIndicator_template* p_precondition, ISUP__NumberingIncompleteIndicator_template* p_implied_template);
ISUP__NumberingIncompleteIndicator_template(Dynamic_Match_Interface<ISUP__NumberingIncompleteIndicator>* p_dyn_match);
ISUP__NumberingIncompleteIndicator_template(const ISUP__NumberingIncompleteIndicator_template& other_value);
~ISUP__NumberingIncompleteIndicator_template();

boolean is_bound() const;
boolean is_value() const;
void clean_up();
ISUP__NumberingIncompleteIndicator_template& operator=(template_sel other_value);
ISUP__NumberingIncompleteIndicator_template& operator=(int other_value);
ISUP__NumberingIncompleteIndicator_template& operator=(ISUP__NumberingIncompleteIndicator::enum_type other_value);
ISUP__NumberingIncompleteIndicator_template& operator=(const ISUP__NumberingIncompleteIndicator& other_value);
ISUP__NumberingIncompleteIndicator_template& operator=(const OPTIONAL<ISUP__NumberingIncompleteIndicator>& other_value);
ISUP__NumberingIncompleteIndicator_template& operator=(const ISUP__NumberingIncompleteIndicator_template& other_value);

boolean match(ISUP__NumberingIncompleteIndicator::enum_type other_value, boolean legacy = FALSE) const;
boolean match(const ISUP__NumberingIncompleteIndicator& other_value, boolean legacy = FALSE) const;
ISUP__NumberingIncompleteIndicator::enum_type valueof() const;
void set_type(template_sel template_type, unsigned int list_length = 0);
ISUP__NumberingIncompleteIndicator_template& list_item(unsigned int list_index);
void log() const;
void log_match(const ISUP__NumberingIncompleteIndicator& 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 ISUP__Called__Party__Number {
  ISUP__NatureOfAddress field_natureOfAddressIndicator;
  NumberPlan field_numberingPlanIndicator;
  ISUP__NumberingIncompleteIndicator field_iNN;
  HEXSTRING field_addressSignalDigits;
public:
  ISUP__Called__Party__Number();
  ISUP__Called__Party__Number(const ISUP__NatureOfAddress& par_natureOfAddressIndicator,
    const NumberPlan& par_numberingPlanIndicator,
    const ISUP__NumberingIncompleteIndicator& par_iNN,
    const HEXSTRING& par_addressSignalDigits);
  ISUP__Called__Party__Number(const ISUP__Called__Party__Number& other_value);
  inline boolean is_component() { return FALSE; }
  void clean_up();
const TTCN_Typedescriptor_t* get_descriptor() const;
  ISUP__Called__Party__Number& operator=(const ISUP__Called__Party__Number& other_value);
  boolean operator==(const ISUP__Called__Party__Number& other_value) const;
  inline boolean operator!=(const ISUP__Called__Party__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 ISUP__NatureOfAddress& natureOfAddressIndicator()
    {return field_natureOfAddressIndicator;}
  inline const ISUP__NatureOfAddress& natureOfAddressIndicator() const
    {return field_natureOfAddressIndicator;}
  inline NumberPlan& numberingPlanIndicator()
    {return field_numberingPlanIndicator;}
  inline const NumberPlan& numberingPlanIndicator() const
    {return field_numberingPlanIndicator;}
  inline ISUP__NumberingIncompleteIndicator& iNN()
    {return field_iNN;}
  inline const ISUP__NumberingIncompleteIndicator& iNN() const
    {return field_iNN;}
  inline HEXSTRING& addressSignalDigits()
    {return field_addressSignalDigits;}
  inline const HEXSTRING& addressSignalDigits() const
    {return field_addressSignalDigits;}
  inline int size_of() const
    {return 4;}
  void log() const;
  void set_implicit_omit();
  void set_param(Module_Param& param);
  void encode_text(Text_Buf& text_buf) const;
  void decode_text(Text_Buf& text_buf);
};

class ISUP__Called__Party__Number_template : public Base_Template {
struct single_value_struct;
union {
single_value_struct *single_value;
struct {
unsigned int n_values;
ISUP__Called__Party__Number_template *list_value;
} value_list;
struct {
ISUP__Called__Party__Number_template* precondition;
ISUP__Called__Party__Number_template* implied_template;
} implication_;
dynmatch_struct<ISUP__Called__Party__Number>* dyn_match;
};

void set_specific();
void copy_value(const ISUP__Called__Party__Number& other_value);
void copy_template(const ISUP__Called__Party__Number_template& other_value);

public:
ISUP__Called__Party__Number_template();
ISUP__Called__Party__Number_template(template_sel other_value);
ISUP__Called__Party__Number_template(const ISUP__Called__Party__Number& other_value);
ISUP__Called__Party__Number_template(const OPTIONAL<ISUP__Called__Party__Number>& other_value);
ISUP__Called__Party__Number_template(ISUP__Called__Party__Number_template* p_precondition, ISUP__Called__Party__Number_template* p_implied_template);
ISUP__Called__Party__Number_template(Dynamic_Match_Interface<ISUP__Called__Party__Number>* p_dyn_match);
ISUP__Called__Party__Number_template(const ISUP__Called__Party__Number_template& other_value);
~ISUP__Called__Party__Number_template();
ISUP__Called__Party__Number_template& operator=(template_sel other_value);
ISUP__Called__Party__Number_template& operator=(const ISUP__Called__Party__Number& other_value);
ISUP__Called__Party__Number_template& operator=(const OPTIONAL<ISUP__Called__Party__Number>& other_value);
ISUP__Called__Party__Number_template& operator=(const ISUP__Called__Party__Number_template& other_value);
boolean match(const ISUP__Called__Party__Number& other_value, boolean legacy = FALSE) const;
boolean is_bound() const;
boolean is_value() const;
void clean_up();
ISUP__Called__Party__Number valueof() const;
void set_type(template_sel template_type, unsigned int list_length);
ISUP__Called__Party__Number_template& list_item(unsigned int list_index) const;
ISUP__NatureOfAddress_template& natureOfAddressIndicator();
const ISUP__NatureOfAddress_template& natureOfAddressIndicator() const;
NumberPlan_template& numberingPlanIndicator();
const NumberPlan_template& numberingPlanIndicator() const;
ISUP__NumberingIncompleteIndicator_template& iNN();
const ISUP__NumberingIncompleteIndicator_template& iNN() const;
HEXSTRING_template& addressSignalDigits();
const HEXSTRING_template& addressSignalDigits() const;
int size_of() const;
void log() const;
void log_match(const ISUP__Called__Party__Number& match_value, boolean legacy = FALSE) const;
  void set_implicit_omit();
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 ISUP__ScreeningIndicator : public Base_Type { // enum
friend class ISUP__ScreeningIndicator_template;
public:
enum enum_type { user__provided__not__verified = 0, user__provided__verified__passed = 1, user__provided__verified__failed = 2, network__provided = 3, UNKNOWN_VALUE = 4, UNBOUND_VALUE = 5 };
private:
enum_type enum_value;

public:
ISUP__ScreeningIndicator();
ISUP__ScreeningIndicator(int other_value);
ISUP__ScreeningIndicator(enum_type other_value);
ISUP__ScreeningIndicator(const ISUP__ScreeningIndicator& other_value);

ISUP__ScreeningIndicator& operator=(int other_value);
ISUP__ScreeningIndicator& operator=(enum_type other_value);
ISUP__ScreeningIndicator& operator=(const ISUP__ScreeningIndicator& other_value);

boolean operator==(int other_value) const;
boolean operator==(enum_type other_value) const;
boolean operator==(const ISUP__ScreeningIndicator& other_value) const;
inline boolean operator!=(int other_value) const { return !(*this == other_value); }
inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
inline boolean operator!=(const ISUP__ScreeningIndicator& other_value) const { return !(*this == other_value); }
boolean operator<(int other_value) const;
boolean operator<(enum_type other_value) const;
boolean operator<(const ISUP__ScreeningIndicator& other_value) const;
boolean operator>(int other_value) const;
boolean operator>(enum_type other_value) const;
boolean operator>(const ISUP__ScreeningIndicator& other_value) const;
inline boolean operator<=(int other_value) const { return !(*this > other_value); }
inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
inline boolean operator<=(const ISUP__ScreeningIndicator& other_value) const { return !(*this > other_value); }
inline boolean operator>=(int other_value) const { return !(*this < other_value); }
inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
inline boolean operator>=(const ISUP__ScreeningIndicator& 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, const int* int_par = NULL, const int* int_par2 = NULL);
static boolean is_valid_enum(int int_par);

static int enum2int(enum_type enum_par);
static int enum2int(const ISUP__ScreeningIndicator& 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);
};

class ISUP__ScreeningIndicator_template : public Base_Template {
union {
ISUP__ScreeningIndicator::enum_type single_value;
struct {
unsigned int n_values;
ISUP__ScreeningIndicator_template *list_value;
} value_list;
struct {
ISUP__ScreeningIndicator_template* precondition;
ISUP__ScreeningIndicator_template* implied_template;
} implication_;
dynmatch_struct<ISUP__ScreeningIndicator>* dyn_match;
};

void copy_template(const ISUP__ScreeningIndicator_template& other_value);

public:
ISUP__ScreeningIndicator_template();
ISUP__ScreeningIndicator_template(template_sel other_value);
ISUP__ScreeningIndicator_template(int other_value);
ISUP__ScreeningIndicator_template(ISUP__ScreeningIndicator::enum_type other_value);
ISUP__ScreeningIndicator_template(const ISUP__ScreeningIndicator& other_value);
ISUP__ScreeningIndicator_template(const OPTIONAL<ISUP__ScreeningIndicator>& other_value);
ISUP__ScreeningIndicator_template(ISUP__ScreeningIndicator_template* p_precondition, ISUP__ScreeningIndicator_template* p_implied_template);
ISUP__ScreeningIndicator_template(Dynamic_Match_Interface<ISUP__ScreeningIndicator>* p_dyn_match);
ISUP__ScreeningIndicator_template(const ISUP__ScreeningIndicator_template& other_value);
~ISUP__ScreeningIndicator_template();

boolean is_bound() const;
boolean is_value() const;
void clean_up();
ISUP__ScreeningIndicator_template& operator=(template_sel other_value);
ISUP__ScreeningIndicator_template& operator=(int other_value);
ISUP__ScreeningIndicator_template& operator=(ISUP__ScreeningIndicator::enum_type other_value);
ISUP__ScreeningIndicator_template& operator=(const ISUP__ScreeningIndicator& other_value);
ISUP__ScreeningIndicator_template& operator=(const OPTIONAL<ISUP__ScreeningIndicator>& other_value);
ISUP__ScreeningIndicator_template& operator=(const ISUP__ScreeningIndicator_template& other_value);

boolean match(ISUP__ScreeningIndicator::enum_type other_value, boolean legacy = FALSE) const;
boolean match(const ISUP__ScreeningIndicator& other_value, boolean legacy = FALSE) const;
ISUP__ScreeningIndicator::enum_type valueof() const;
void set_type(template_sel template_type, unsigned int list_length = 0);
ISUP__ScreeningIndicator_template& list_item(unsigned int list_index);
void log() const;
void log_match(const ISUP__ScreeningIndicator& 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 ISUP__AddressPresentationRestrictedIndicator : public Base_Type { // enum
friend class ISUP__AddressPresentationRestrictedIndicator_template;
public:
enum enum_type { presentation__allowed = 0, presentation__restricted = 1, address__not__available = 2, reserved = 3, UNKNOWN_VALUE = 4, UNBOUND_VALUE = 5 };
private:
enum_type enum_value;

public:
ISUP__AddressPresentationRestrictedIndicator();
ISUP__AddressPresentationRestrictedIndicator(int other_value);
ISUP__AddressPresentationRestrictedIndicator(enum_type other_value);
ISUP__AddressPresentationRestrictedIndicator(const ISUP__AddressPresentationRestrictedIndicator& other_value);

ISUP__AddressPresentationRestrictedIndicator& operator=(int other_value);
ISUP__AddressPresentationRestrictedIndicator& operator=(enum_type other_value);
ISUP__AddressPresentationRestrictedIndicator& operator=(const ISUP__AddressPresentationRestrictedIndicator& other_value);

boolean operator==(int other_value) const;
boolean operator==(enum_type other_value) const;
boolean operator==(const ISUP__AddressPresentationRestrictedIndicator& other_value) const;
inline boolean operator!=(int other_value) const { return !(*this == other_value); }
inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
inline boolean operator!=(const ISUP__AddressPresentationRestrictedIndicator& other_value) const { return !(*this == other_value); }
boolean operator<(int other_value) const;
boolean operator<(enum_type other_value) const;
boolean operator<(const ISUP__AddressPresentationRestrictedIndicator& other_value) const;
boolean operator>(int other_value) const;
boolean operator>(enum_type other_value) const;
boolean operator>(const ISUP__AddressPresentationRestrictedIndicator& other_value) const;
inline boolean operator<=(int other_value) const { return !(*this > other_value); }
inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
inline boolean operator<=(const ISUP__AddressPresentationRestrictedIndicator& other_value) const { return !(*this > other_value); }
inline boolean operator>=(int other_value) const { return !(*this < other_value); }
inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
inline boolean operator>=(const ISUP__AddressPresentationRestrictedIndicator& 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, const int* int_par = NULL, const int* int_par2 = NULL);
static boolean is_valid_enum(int int_par);

static int enum2int(enum_type enum_par);
static int enum2int(const ISUP__AddressPresentationRestrictedIndicator& 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);
};

class ISUP__AddressPresentationRestrictedIndicator_template : public Base_Template {
union {
ISUP__AddressPresentationRestrictedIndicator::enum_type single_value;
struct {
unsigned int n_values;
ISUP__AddressPresentationRestrictedIndicator_template *list_value;
} value_list;
struct {
ISUP__AddressPresentationRestrictedIndicator_template* precondition;
ISUP__AddressPresentationRestrictedIndicator_template* implied_template;
} implication_;
dynmatch_struct<ISUP__AddressPresentationRestrictedIndicator>* dyn_match;
};

void copy_template(const ISUP__AddressPresentationRestrictedIndicator_template& other_value);

public:
ISUP__AddressPresentationRestrictedIndicator_template();
ISUP__AddressPresentationRestrictedIndicator_template(template_sel other_value);
ISUP__AddressPresentationRestrictedIndicator_template(int other_value);
ISUP__AddressPresentationRestrictedIndicator_template(ISUP__AddressPresentationRestrictedIndicator::enum_type other_value);
ISUP__AddressPresentationRestrictedIndicator_template(const ISUP__AddressPresentationRestrictedIndicator& other_value);
ISUP__AddressPresentationRestrictedIndicator_template(const OPTIONAL<ISUP__AddressPresentationRestrictedIndicator>& other_value);
ISUP__AddressPresentationRestrictedIndicator_template(ISUP__AddressPresentationRestrictedIndicator_template* p_precondition, ISUP__AddressPresentationRestrictedIndicator_template* p_implied_template);
ISUP__AddressPresentationRestrictedIndicator_template(Dynamic_Match_Interface<ISUP__AddressPresentationRestrictedIndicator>* p_dyn_match);
ISUP__AddressPresentationRestrictedIndicator_template(const ISUP__AddressPresentationRestrictedIndicator_template& other_value);
~ISUP__AddressPresentationRestrictedIndicator_template();

boolean is_bound() const;
boolean is_value() const;
void clean_up();
ISUP__AddressPresentationRestrictedIndicator_template& operator=(template_sel other_value);
ISUP__AddressPresentationRestrictedIndicator_template& operator=(int other_value);
ISUP__AddressPresentationRestrictedIndicator_template& operator=(ISUP__AddressPresentationRestrictedIndicator::enum_type other_value);
ISUP__AddressPresentationRestrictedIndicator_template& operator=(const ISUP__AddressPresentationRestrictedIndicator& other_value);
ISUP__AddressPresentationRestrictedIndicator_template& operator=(const OPTIONAL<ISUP__AddressPresentationRestrictedIndicator>& other_value);
ISUP__AddressPresentationRestrictedIndicator_template& operator=(const ISUP__AddressPresentationRestrictedIndicator_template& other_value);

boolean match(ISUP__AddressPresentationRestrictedIndicator::enum_type other_value, boolean legacy = FALSE) const;
boolean match(const ISUP__AddressPresentationRestrictedIndicator& other_value, boolean legacy = FALSE) const;
ISUP__AddressPresentationRestrictedIndicator::enum_type valueof() const;
void set_type(template_sel template_type, unsigned int list_length = 0);
ISUP__AddressPresentationRestrictedIndicator_template& list_item(unsigned int list_index);
void log() const;
void log_match(const ISUP__AddressPresentationRestrictedIndicator& 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 ISUP__Calling__Party__Number {
  ISUP__NatureOfAddress field_natureOfAddressIndicator;
  ISUP__ScreeningIndicator field_screening__indicator;
  ISUP__AddressPresentationRestrictedIndicator field_address__presentation__restricted__indicator;
  NumberPlan field_numberingPlanIndicator;
  ISUP__NumberingIncompleteIndicator field_iNN;
  HEXSTRING field_addressSignalDigits;
public:
  ISUP__Calling__Party__Number();
  ISUP__Calling__Party__Number(const ISUP__NatureOfAddress& par_natureOfAddressIndicator,
    const ISUP__ScreeningIndicator& par_screening__indicator,
    const ISUP__AddressPresentationRestrictedIndicator& par_address__presentation__restricted__indicator,
    const NumberPlan& par_numberingPlanIndicator,
    const ISUP__NumberingIncompleteIndicator& par_iNN,
    const HEXSTRING& par_addressSignalDigits);
  ISUP__Calling__Party__Number(const ISUP__Calling__Party__Number& other_value);
  inline boolean is_component() { return FALSE; }
  void clean_up();
const TTCN_Typedescriptor_t* get_descriptor() const;
  ISUP__Calling__Party__Number& operator=(const ISUP__Calling__Party__Number& other_value);
  boolean operator==(const ISUP__Calling__Party__Number& other_value) const;
  inline boolean operator!=(const ISUP__Calling__Party__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 ISUP__NatureOfAddress& natureOfAddressIndicator()
    {return field_natureOfAddressIndicator;}
  inline const ISUP__NatureOfAddress& natureOfAddressIndicator() const
    {return field_natureOfAddressIndicator;}
  inline ISUP__ScreeningIndicator& screening__indicator()
    {return field_screening__indicator;}
  inline const ISUP__ScreeningIndicator& screening__indicator() const
    {return field_screening__indicator;}
  inline ISUP__AddressPresentationRestrictedIndicator& address__presentation__restricted__indicator()
    {return field_address__presentation__restricted__indicator;}
  inline const ISUP__AddressPresentationRestrictedIndicator& address__presentation__restricted__indicator() const
    {return field_address__presentation__restricted__indicator;}
  inline NumberPlan& numberingPlanIndicator()
    {return field_numberingPlanIndicator;}
  inline const NumberPlan& numberingPlanIndicator() const
    {return field_numberingPlanIndicator;}
  inline ISUP__NumberingIncompleteIndicator& iNN()
    {return field_iNN;}
  inline const ISUP__NumberingIncompleteIndicator& iNN() const
    {return field_iNN;}
  inline HEXSTRING& addressSignalDigits()
    {return field_addressSignalDigits;}
  inline const HEXSTRING& addressSignalDigits() const
    {return field_addressSignalDigits;}
  inline int size_of() const
    {return 6;}
  void log() const;
  void set_implicit_omit();
  void set_param(Module_Param& param);
  void encode_text(Text_Buf& text_buf) const;
  void decode_text(Text_Buf& text_buf);
};

class ISUP__Calling__Party__Number_template : public Base_Template {
struct single_value_struct;
union {
single_value_struct *single_value;
struct {
unsigned int n_values;
ISUP__Calling__Party__Number_template *list_value;
} value_list;
struct {
ISUP__Calling__Party__Number_template* precondition;
ISUP__Calling__Party__Number_template* implied_template;
} implication_;
dynmatch_struct<ISUP__Calling__Party__Number>* dyn_match;
};

void set_specific();
void copy_value(const ISUP__Calling__Party__Number& other_value);
void copy_template(const ISUP__Calling__Party__Number_template& other_value);

public:
ISUP__Calling__Party__Number_template();
ISUP__Calling__Party__Number_template(template_sel other_value);
ISUP__Calling__Party__Number_template(const ISUP__Calling__Party__Number& other_value);
ISUP__Calling__Party__Number_template(const OPTIONAL<ISUP__Calling__Party__Number>& other_value);
ISUP__Calling__Party__Number_template(ISUP__Calling__Party__Number_template* p_precondition, ISUP__Calling__Party__Number_template* p_implied_template);
ISUP__Calling__Party__Number_template(Dynamic_Match_Interface<ISUP__Calling__Party__Number>* p_dyn_match);
ISUP__Calling__Party__Number_template(const ISUP__Calling__Party__Number_template& other_value);
~ISUP__Calling__Party__Number_template();
ISUP__Calling__Party__Number_template& operator=(template_sel other_value);
ISUP__Calling__Party__Number_template& operator=(const ISUP__Calling__Party__Number& other_value);
ISUP__Calling__Party__Number_template& operator=(const OPTIONAL<ISUP__Calling__Party__Number>& other_value);
ISUP__Calling__Party__Number_template& operator=(const ISUP__Calling__Party__Number_template& other_value);
boolean match(const ISUP__Calling__Party__Number& other_value, boolean legacy = FALSE) const;
boolean is_bound() const;
boolean is_value() const;
void clean_up();
ISUP__Calling__Party__Number valueof() const;
void set_type(template_sel template_type, unsigned int list_length);
ISUP__Calling__Party__Number_template& list_item(unsigned int list_index) const;
ISUP__NatureOfAddress_template& natureOfAddressIndicator();
const ISUP__NatureOfAddress_template& natureOfAddressIndicator() const;
ISUP__ScreeningIndicator_template& screening__indicator();
const ISUP__ScreeningIndicator_template& screening__indicator() const;
ISUP__AddressPresentationRestrictedIndicator_template& address__presentation__restricted__indicator();
const ISUP__AddressPresentationRestrictedIndicator_template& address__presentation__restricted__indicator() const;
NumberPlan_template& numberingPlanIndicator();
const NumberPlan_template& numberingPlanIndicator() const;
ISUP__NumberingIncompleteIndicator_template& iNN();
const ISUP__NumberingIncompleteIndicator_template& iNN() const;
HEXSTRING_template& addressSignalDigits();
const HEXSTRING_template& addressSignalDigits() const;
int size_of() const;
void log() const;
void log_match(const ISUP__Calling__Party__Number& match_value, boolean legacy = FALSE) const;
  void set_implicit_omit();
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 MobileL3__TypeOfNumber : public Base_Type { // enum
friend class MobileL3__TypeOfNumber_template;
public:
enum enum_type { unknown = 0, internationalNumber = 1, nationalNumber = 2, networkSpecificNumber = 3, dedicatedAccess = 4, reserved1 = 5, reserved2 = 6, reservedForExtension = 7, UNKNOWN_VALUE = 8, UNBOUND_VALUE = 9 };
private:
enum_type enum_value;

public:
MobileL3__TypeOfNumber();
MobileL3__TypeOfNumber(int other_value);
MobileL3__TypeOfNumber(enum_type other_value);
MobileL3__TypeOfNumber(const MobileL3__TypeOfNumber& other_value);

MobileL3__TypeOfNumber& operator=(int other_value);
MobileL3__TypeOfNumber& operator=(enum_type other_value);
MobileL3__TypeOfNumber& operator=(const MobileL3__TypeOfNumber& other_value);

boolean operator==(int other_value) const;
boolean operator==(enum_type other_value) const;
boolean operator==(const MobileL3__TypeOfNumber& other_value) const;
inline boolean operator!=(int other_value) const { return !(*this == other_value); }
inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
inline boolean operator!=(const MobileL3__TypeOfNumber& other_value) const { return !(*this == other_value); }
boolean operator<(int other_value) const;
boolean operator<(enum_type other_value) const;
boolean operator<(const MobileL3__TypeOfNumber& other_value) const;
boolean operator>(int other_value) const;
boolean operator>(enum_type other_value) const;
boolean operator>(const MobileL3__TypeOfNumber& other_value) const;
inline boolean operator<=(int other_value) const { return !(*this > other_value); }
inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
inline boolean operator<=(const MobileL3__TypeOfNumber& other_value) const { return !(*this > other_value); }
inline boolean operator>=(int other_value) const { return !(*this < other_value); }
inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
inline boolean operator>=(const MobileL3__TypeOfNumber& 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, const int* int_par = NULL, const int* int_par2 = NULL);
static boolean is_valid_enum(int int_par);

static int enum2int(enum_type enum_par);
static int enum2int(const MobileL3__TypeOfNumber& 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);
};

class MobileL3__TypeOfNumber_template : public Base_Template {
union {
MobileL3__TypeOfNumber::enum_type single_value;
struct {
unsigned int n_values;
MobileL3__TypeOfNumber_template *list_value;
} value_list;
struct {
MobileL3__TypeOfNumber_template* precondition;
MobileL3__TypeOfNumber_template* implied_template;
} implication_;
dynmatch_struct<MobileL3__TypeOfNumber>* dyn_match;
};

void copy_template(const MobileL3__TypeOfNumber_template& other_value);

public:
MobileL3__TypeOfNumber_template();
MobileL3__TypeOfNumber_template(template_sel other_value);
MobileL3__TypeOfNumber_template(int other_value);
MobileL3__TypeOfNumber_template(MobileL3__TypeOfNumber::enum_type other_value);
MobileL3__TypeOfNumber_template(const MobileL3__TypeOfNumber& other_value);
MobileL3__TypeOfNumber_template(const OPTIONAL<MobileL3__TypeOfNumber>& other_value);
MobileL3__TypeOfNumber_template(MobileL3__TypeOfNumber_template* p_precondition, MobileL3__TypeOfNumber_template* p_implied_template);
MobileL3__TypeOfNumber_template(Dynamic_Match_Interface<MobileL3__TypeOfNumber>* p_dyn_match);
MobileL3__TypeOfNumber_template(const MobileL3__TypeOfNumber_template& other_value);
~MobileL3__TypeOfNumber_template();

boolean is_bound() const;
boolean is_value() const;
void clean_up();
MobileL3__TypeOfNumber_template& operator=(template_sel other_value);
MobileL3__TypeOfNumber_template& operator=(int other_value);
MobileL3__TypeOfNumber_template& operator=(MobileL3__TypeOfNumber::enum_type other_value);
MobileL3__TypeOfNumber_template& operator=(const MobileL3__TypeOfNumber& other_value);
MobileL3__TypeOfNumber_template& operator=(const OPTIONAL<MobileL3__TypeOfNumber>& other_value);
MobileL3__TypeOfNumber_template& operator=(const MobileL3__TypeOfNumber_template& other_value);

boolean match(MobileL3__TypeOfNumber::enum_type other_value, boolean legacy = FALSE) const;
boolean match(const MobileL3__TypeOfNumber& other_value, boolean legacy = FALSE) const;
MobileL3__TypeOfNumber::enum_type valueof() const;
void set_type(template_sel template_type, unsigned int list_length = 0);
MobileL3__TypeOfNumber_template& list_item(unsigned int list_index);
void log() const;
void log_match(const MobileL3__TypeOfNumber& 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 MobileL3__CalledPartyBCDNumber {
  NumberPlan field_numberingPlanIdentification;
  MobileL3__TypeOfNumber field_typeOfNumber;
  HEXSTRING field_numberDigits;
public:
  MobileL3__CalledPartyBCDNumber();
  MobileL3__CalledPartyBCDNumber(const NumberPlan& par_numberingPlanIdentification,
    const MobileL3__TypeOfNumber& par_typeOfNumber,
    const HEXSTRING& par_numberDigits);
  MobileL3__CalledPartyBCDNumber(const MobileL3__CalledPartyBCDNumber& other_value);
  inline boolean is_component() { return FALSE; }
  void clean_up();
const TTCN_Typedescriptor_t* get_descriptor() const;
  MobileL3__CalledPartyBCDNumber& operator=(const MobileL3__CalledPartyBCDNumber& other_value);
  boolean operator==(const MobileL3__CalledPartyBCDNumber& other_value) const;
  inline boolean operator!=(const MobileL3__CalledPartyBCDNumber& other_value) const
    { return !(*this == other_value); }

  boolean is_bound() const;

inline boolean is_present() const { return is_bound(); }
  boolean is_value() const;

  inline NumberPlan& numberingPlanIdentification()
    {return field_numberingPlanIdentification;}
  inline const NumberPlan& numberingPlanIdentification() const
    {return field_numberingPlanIdentification;}
  inline MobileL3__TypeOfNumber& typeOfNumber()
    {return field_typeOfNumber;}
  inline const MobileL3__TypeOfNumber& typeOfNumber() const
    {return field_typeOfNumber;}
  inline HEXSTRING& numberDigits()
    {return field_numberDigits;}
  inline const HEXSTRING& numberDigits() const
    {return field_numberDigits;}
  inline int size_of() const
    {return 3;}
  void log() const;
  void set_implicit_omit();
  void set_param(Module_Param& param);
  void encode_text(Text_Buf& text_buf) const;
  void decode_text(Text_Buf& text_buf);
};

class MobileL3__CalledPartyBCDNumber_template : public Base_Template {
struct single_value_struct;
union {
single_value_struct *single_value;
struct {
unsigned int n_values;
MobileL3__CalledPartyBCDNumber_template *list_value;
} value_list;
struct {
MobileL3__CalledPartyBCDNumber_template* precondition;
MobileL3__CalledPartyBCDNumber_template* implied_template;
} implication_;
dynmatch_struct<MobileL3__CalledPartyBCDNumber>* dyn_match;
};

void set_specific();
void copy_value(const MobileL3__CalledPartyBCDNumber& other_value);
void copy_template(const MobileL3__CalledPartyBCDNumber_template& other_value);

public:
MobileL3__CalledPartyBCDNumber_template();
MobileL3__CalledPartyBCDNumber_template(template_sel other_value);
MobileL3__CalledPartyBCDNumber_template(const MobileL3__CalledPartyBCDNumber& other_value);
MobileL3__CalledPartyBCDNumber_template(const OPTIONAL<MobileL3__CalledPartyBCDNumber>& other_value);
MobileL3__CalledPartyBCDNumber_template(MobileL3__CalledPartyBCDNumber_template* p_precondition, MobileL3__CalledPartyBCDNumber_template* p_implied_template);
MobileL3__CalledPartyBCDNumber_template(Dynamic_Match_Interface<MobileL3__CalledPartyBCDNumber>* p_dyn_match);
MobileL3__CalledPartyBCDNumber_template(const MobileL3__CalledPartyBCDNumber_template& other_value);
~MobileL3__CalledPartyBCDNumber_template();
MobileL3__CalledPartyBCDNumber_template& operator=(template_sel other_value);
MobileL3__CalledPartyBCDNumber_template& operator=(const MobileL3__CalledPartyBCDNumber& other_value);
MobileL3__CalledPartyBCDNumber_template& operator=(const OPTIONAL<MobileL3__CalledPartyBCDNumber>& other_value);
MobileL3__CalledPartyBCDNumber_template& operator=(const MobileL3__CalledPartyBCDNumber_template& other_value);
boolean match(const MobileL3__CalledPartyBCDNumber& other_value, boolean legacy = FALSE) const;
boolean is_bound() const;
boolean is_value() const;
void clean_up();
MobileL3__CalledPartyBCDNumber valueof() const;
void set_type(template_sel template_type, unsigned int list_length);
MobileL3__CalledPartyBCDNumber_template& list_item(unsigned int list_index) const;
NumberPlan_template& numberingPlanIdentification();
const NumberPlan_template& numberingPlanIdentification() const;
MobileL3__TypeOfNumber_template& typeOfNumber();
const MobileL3__TypeOfNumber_template& typeOfNumber() const;
HEXSTRING_template& numberDigits();
const HEXSTRING_template& numberDigits() const;
int size_of() const;
void log() const;
void log_match(const MobileL3__CalledPartyBCDNumber& match_value, boolean legacy = FALSE) const;
  void set_implicit_omit();
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 OCTETSTRING f__encode__ISUP__Called__Party__Number(const ISUP__Called__Party__Number& pl__ISUP__Called__Party__Number);
extern OCTETSTRING f__encode__ISUP__Calling__Party__Number(const ISUP__Calling__Party__Number& pl__ISUP__Calling__Party__Number);
extern OCTETSTRING f__encode__MobileL3__CalledPartyBCDNumber(const MobileL3__CalledPartyBCDNumber& pl__MobileL3__CalledPartyBCDNumber);
extern CHARSTRING enc__MIME__Base64(const OCTETSTRING& p__msg);
extern OCTETSTRING dec__MIME__Base64(const CHARSTRING& p__b64);
extern CHARSTRING enc__LDIF__Base64(const OCTETSTRING& p__msg);
extern OCTETSTRING dec__LDIF__Base64(const CHARSTRING& p__b64);
extern OCTETSTRING f__encGSM7bit(const UNIVERSAL_CHARSTRING& pl__str);
extern UNIVERSAL_CHARSTRING f__decGSM7bit(const OCTETSTRING& pl__gsm7bit);
extern BOOLEAN f__is__TBCD(const CHARSTRING& pl__number);
extern OCTETSTRING f__enc__TBCD(const CHARSTRING& pl__char);
extern CHARSTRING f__dec__TBCD(const OCTETSTRING& pl__oct);
extern OCTETSTRING f__enc__TBCD__hex(const HEXSTRING& pl__hex);
extern void pre_init_module();

/* Global variable declarations */

extern const TTCN_Typedescriptor_t NumberPlan_descr_;
extern const TTCN_Typedescriptor_t ISUP__NatureOfAddress_descr_;
extern const TTCN_Typedescriptor_t ISUP__NumberingIncompleteIndicator_descr_;
extern const XERdescriptor_t ISUP__Called__Party__Number_addressSignalDigits_xer_;
extern const TTCN_Typedescriptor_t ISUP__Called__Party__Number_addressSignalDigits_descr_;
extern const TTCN_Typedescriptor_t ISUP__Called__Party__Number_descr_;
extern const TTCN_Typedescriptor_t ISUP__ScreeningIndicator_descr_;
extern const TTCN_Typedescriptor_t ISUP__AddressPresentationRestrictedIndicator_descr_;
extern const XERdescriptor_t ISUP__Calling__Party__Number_addressSignalDigits_xer_;
extern const TTCN_Typedescriptor_t ISUP__Calling__Party__Number_addressSignalDigits_descr_;
extern const TTCN_Typedescriptor_t ISUP__Calling__Party__Number_descr_;
extern const TTCN_Typedescriptor_t MobileL3__TypeOfNumber_descr_;
extern const XERdescriptor_t MobileL3__CalledPartyBCDNumber_numberDigits_xer_;
extern const TTCN_Typedescriptor_t MobileL3__CalledPartyBCDNumber_numberDigits_descr_;
extern const TTCN_Typedescriptor_t MobileL3__CalledPartyBCDNumber_descr_;
extern const TTCN_Typedescriptor_t BitstringList_descr_;
extern const XERdescriptor_t BitstringList_0_xer_;
extern const TTCN_Typedescriptor_t BitstringList_0_descr_;
extern const BitstringList& c__GSM__7__bit__Default__Alphabet__Encoder;
extern BitstringList const_c__GSM__7__bit__Default__Alphabet__Encoder;
extern const BitstringList& c__GSM__7__bit__Greek__Encoder;
extern BitstringList const_c__GSM__7__bit__Greek__Encoder;
extern const TTCN_Typedescriptor_t Extension__List_descr_;
extern const XERdescriptor_t Extension__List_0_xer_;
extern const TTCN_Typedescriptor_t Extension__List_0_descr_;
extern const Extension__List& c__GSM__7__bit__Default__Alphabet__Extensions__Decoder;
extern Extension__List const_c__GSM__7__bit__Default__Alphabet__Extensions__Decoder;
extern const TTCN_Typedescriptor_t UnicharList_descr_;
extern const XERdescriptor_t UnicharList_0_xer_;
extern const TTCN_Typedescriptor_t UnicharList_0_descr_;
extern const UnicharList& c__GSM__7__bit__Default__Alphabet__Decoder;
extern UnicharList const_c__GSM__7__bit__Default__Alphabet__Decoder;
extern const BITSTRING bs_3,
bs_0,
bs_2,
bs_40,
bs_4,
bs_107,
bs_131,
bs_56,
bs_24,
bs_87,
bs_125,
bs_48,
bs_16,
bs_79,
bs_136,
bs_64,
bs_32,
bs_95,
bs_102,
bs_44,
bs_104,
bs_75,
bs_133,
bs_60,
bs_28,
bs_91,
bs_127,
bs_52,
bs_20,
bs_83,
bs_110,
bs_114,
bs_36,
bs_126,
bs_12,
bs_42,
bs_10,
bs_73,
bs_137,
bs_58,
bs_26,
bs_89,
bs_7,
bs_50,
bs_18,
bs_81,
bs_134,
bs_66,
bs_34,
bs_97,
bs_128,
bs_46,
bs_14,
bs_77,
bs_135,
bs_62,
bs_30,
bs_93,
bs_109,
bs_54,
bs_22,
bs_85,
bs_117,
bs_116,
bs_38,
bs_129,
bs_1,
bs_103,
bs_41,
bs_9,
bs_72,
bs_71,
bs_57,
bs_25,
bs_88,
bs_111,
bs_49,
bs_17,
bs_80,
bs_132,
bs_65,
bs_33,
bs_96,
bs_122,
bs_45,
bs_13,
bs_76,
bs_139,
bs_61,
bs_29,
bs_92,
bs_6,
bs_53,
bs_21,
bs_84,
bs_121,
bs_113,
bs_37,
bs_124,
bs_105,
bs_43,
bs_11,
bs_74,
bs_130,
bs_59,
bs_27,
bs_90,
bs_115,
bs_51,
bs_19,
bs_82,
bs_99,
bs_98,
bs_70,
bs_67,
bs_8,
bs_69,
bs_100,
bs_5,
bs_101,
bs_68,
bs_108,
bs_35,
bs_119,
bs_123,
bs_47,
bs_15,
bs_78,
bs_138,
bs_63,
bs_31,
bs_94,
bs_120,
bs_55,
bs_23,
bs_86,
bs_112,
bs_106,
bs_39,
bs_118;
extern const HEXSTRING hs_0,
hs_1;
extern const OCTETSTRING os_0;
extern const CHARSTRING cs_0,
cs_13,
cs_2,
cs_14,
cs_1,
cs_17,
cs_18,
cs_19,
cs_12,
cs_20,
cs_21,
cs_22,
cs_23,
cs_24,
cs_25,
cs_26,
cs_27,
cs_28,
cs_29,
cs_30,
cs_31,
cs_32,
cs_33,
cs_16,
cs_34,
cs_35,
cs_36,
cs_37,
cs_38,
cs_39,
cs_40,
cs_41,
cs_42,
cs_43,
cs_44,
cs_45,
cs_46,
cs_11,
cs_47,
cs_48,
cs_49,
cs_50,
cs_51,
cs_52,
cs_53,
cs_54,
cs_55,
cs_56,
cs_57,
cs_58,
cs_59,
cs_60,
cs_61,
cs_62,
cs_63,
cs_64,
cs_65,
cs_66,
cs_67,
cs_68,
cs_69,
cs_70,
cs_71,
cs_72,
cs_7,
cs_6,
cs_9,
cs_3,
cs_15,
cs_73,
cs_74,
cs_75,
cs_76,
cs_77,
cs_78,
cs_79,
cs_80,
cs_81,
cs_82,
cs_83,
cs_84,
cs_85,
cs_86,
cs_87,
cs_88,
cs_89,
cs_90,
cs_91,
cs_92,
cs_93,
cs_94,
cs_95,
cs_96,
cs_97,
cs_98,
cs_4,
cs_10,
cs_5,
cs_8;
extern const UNIVERSAL_CHARSTRING us_28,
us_1,
us_27,
us_2,
us_33,
us_34,
us_29,
us_11,
us_23,
us_8,
us_26,
us_31,
us_30,
us_9,
us_32,
us_25,
us_39,
us_35,
us_12,
us_24,
us_3,
us_4,
us_6,
us_37,
us_7,
us_36,
us_10,
us_5,
us_38,
us_15,
us_13,
us_21,
us_16,
us_22,
us_18,
us_20,
us_14,
us_19,
us_17,
us_0;
extern const unsigned char module_checksum[];
extern TTCN_Module module_object;
extern const RuntimeVersionChecker ver_checker;

} /* end of namespace */

#endif
