// 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 MobileL3__SS__Types_HH
#define MobileL3__SS__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 <TTCN3.hh>
#include "MobileL3_CommonIE_Types.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 MobileL3__SS__Types_HH
#endif

namespace MobileL3__SS__Types {

/* Forward declarations of classes */

class PDU__ML3__SS__Facility;
class PDU__ML3__SS__Facility_template;
class PDU__ML3__SS__Register__NW__MS;
class PDU__ML3__SS__Register__NW__MS_template;
class PDU__ML3__SS__Register__MS__NW;
class PDU__ML3__SS__Register__MS__NW_template;
class PDU__ML3__SS__ReleaseComplete;
class PDU__ML3__SS__ReleaseComplete_template;
class PDU__ML3__SS__MS__NW;
class PDU__ML3__SS__MS__NW_template;
class PDU__ML3__SS__NW__MS;
class PDU__ML3__SS__NW__MS_template;

} /* end of namespace */

#ifndef MobileL3__SS__Types_HH
#define MobileL3__SS__Types_HH

namespace MobileL3__SS__Types {

/* Class definitions */

class PDU__ML3__SS__Facility : public Base_Type {
  BITSTRING field_messageType;
  BITSTRING field_nsd;
  MobileL3__CommonIE__Types::Facility__LV field_facility;
public:
  PDU__ML3__SS__Facility();
  PDU__ML3__SS__Facility(const BITSTRING& par_messageType,
    const BITSTRING& par_nsd,
    const MobileL3__CommonIE__Types::Facility__LV& par_facility);
  PDU__ML3__SS__Facility(const PDU__ML3__SS__Facility& other_value);
  inline boolean is_component() { return FALSE; }
  void clean_up();
const TTCN_Typedescriptor_t* get_descriptor() const;
  PDU__ML3__SS__Facility& operator=(const PDU__ML3__SS__Facility& other_value);
  boolean operator==(const PDU__ML3__SS__Facility& other_value) const;
  inline boolean operator!=(const PDU__ML3__SS__Facility& other_value) const
    { return !(*this == other_value); }

  boolean is_bound() const;

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

  inline BITSTRING& messageType()
    {return field_messageType;}
  inline const BITSTRING& messageType() const
    {return field_messageType;}
  inline BITSTRING& nsd()
    {return field_nsd;}
  inline const BITSTRING& nsd() const
    {return field_nsd;}
  inline MobileL3__CommonIE__Types::Facility__LV& facility()
    {return field_facility;}
  inline const MobileL3__CommonIE__Types::Facility__LV& facility() const
    {return field_facility;}
  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);
void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, ...) const;
void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, ...);
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, const RAW_Force_Omit* force_omit = NULL);
};

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

void set_specific();
void copy_value(const PDU__ML3__SS__Facility& other_value);
void copy_template(const PDU__ML3__SS__Facility_template& other_value);

public:
PDU__ML3__SS__Facility_template();
PDU__ML3__SS__Facility_template(template_sel other_value);
PDU__ML3__SS__Facility_template(const PDU__ML3__SS__Facility& other_value);
PDU__ML3__SS__Facility_template(const OPTIONAL<PDU__ML3__SS__Facility>& other_value);
PDU__ML3__SS__Facility_template(PDU__ML3__SS__Facility_template* p_precondition, PDU__ML3__SS__Facility_template* p_implied_template);
PDU__ML3__SS__Facility_template(Dynamic_Match_Interface<PDU__ML3__SS__Facility>* p_dyn_match);
PDU__ML3__SS__Facility_template(const PDU__ML3__SS__Facility_template& other_value);
~PDU__ML3__SS__Facility_template();
PDU__ML3__SS__Facility_template& operator=(template_sel other_value);
PDU__ML3__SS__Facility_template& operator=(const PDU__ML3__SS__Facility& other_value);
PDU__ML3__SS__Facility_template& operator=(const OPTIONAL<PDU__ML3__SS__Facility>& other_value);
PDU__ML3__SS__Facility_template& operator=(const PDU__ML3__SS__Facility_template& other_value);
boolean match(const PDU__ML3__SS__Facility& other_value, boolean legacy = FALSE) const;
boolean is_bound() const;
boolean is_value() const;
void clean_up();
PDU__ML3__SS__Facility valueof() const;
void set_type(template_sel template_type, unsigned int list_length);
PDU__ML3__SS__Facility_template& list_item(unsigned int list_index) const;
BITSTRING_template& messageType();
const BITSTRING_template& messageType() const;
BITSTRING_template& nsd();
const BITSTRING_template& nsd() const;
MobileL3__CommonIE__Types::Facility__LV_template& facility();
const MobileL3__CommonIE__Types::Facility__LV_template& facility() const;
int size_of() const;
void log() const;
void log_match(const PDU__ML3__SS__Facility& 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 PDU__ML3__SS__Register__NW__MS : public Base_Type {
  BITSTRING field_messageType;
  BITSTRING field_nsd;
  MobileL3__CommonIE__Types::Facility__TLV field_facility;
public:
  PDU__ML3__SS__Register__NW__MS();
  PDU__ML3__SS__Register__NW__MS(const BITSTRING& par_messageType,
    const BITSTRING& par_nsd,
    const MobileL3__CommonIE__Types::Facility__TLV& par_facility);
  PDU__ML3__SS__Register__NW__MS(const PDU__ML3__SS__Register__NW__MS& other_value);
  inline boolean is_component() { return FALSE; }
  void clean_up();
const TTCN_Typedescriptor_t* get_descriptor() const;
  PDU__ML3__SS__Register__NW__MS& operator=(const PDU__ML3__SS__Register__NW__MS& other_value);
  boolean operator==(const PDU__ML3__SS__Register__NW__MS& other_value) const;
  inline boolean operator!=(const PDU__ML3__SS__Register__NW__MS& other_value) const
    { return !(*this == other_value); }

  boolean is_bound() const;

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

  inline BITSTRING& messageType()
    {return field_messageType;}
  inline const BITSTRING& messageType() const
    {return field_messageType;}
  inline BITSTRING& nsd()
    {return field_nsd;}
  inline const BITSTRING& nsd() const
    {return field_nsd;}
  inline MobileL3__CommonIE__Types::Facility__TLV& facility()
    {return field_facility;}
  inline const MobileL3__CommonIE__Types::Facility__TLV& facility() const
    {return field_facility;}
  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);
void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, ...) const;
void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, ...);
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, const RAW_Force_Omit* force_omit = NULL);
};

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

void set_specific();
void copy_value(const PDU__ML3__SS__Register__NW__MS& other_value);
void copy_template(const PDU__ML3__SS__Register__NW__MS_template& other_value);

public:
PDU__ML3__SS__Register__NW__MS_template();
PDU__ML3__SS__Register__NW__MS_template(template_sel other_value);
PDU__ML3__SS__Register__NW__MS_template(const PDU__ML3__SS__Register__NW__MS& other_value);
PDU__ML3__SS__Register__NW__MS_template(const OPTIONAL<PDU__ML3__SS__Register__NW__MS>& other_value);
PDU__ML3__SS__Register__NW__MS_template(PDU__ML3__SS__Register__NW__MS_template* p_precondition, PDU__ML3__SS__Register__NW__MS_template* p_implied_template);
PDU__ML3__SS__Register__NW__MS_template(Dynamic_Match_Interface<PDU__ML3__SS__Register__NW__MS>* p_dyn_match);
PDU__ML3__SS__Register__NW__MS_template(const PDU__ML3__SS__Register__NW__MS_template& other_value);
~PDU__ML3__SS__Register__NW__MS_template();
PDU__ML3__SS__Register__NW__MS_template& operator=(template_sel other_value);
PDU__ML3__SS__Register__NW__MS_template& operator=(const PDU__ML3__SS__Register__NW__MS& other_value);
PDU__ML3__SS__Register__NW__MS_template& operator=(const OPTIONAL<PDU__ML3__SS__Register__NW__MS>& other_value);
PDU__ML3__SS__Register__NW__MS_template& operator=(const PDU__ML3__SS__Register__NW__MS_template& other_value);
boolean match(const PDU__ML3__SS__Register__NW__MS& other_value, boolean legacy = FALSE) const;
boolean is_bound() const;
boolean is_value() const;
void clean_up();
PDU__ML3__SS__Register__NW__MS valueof() const;
void set_type(template_sel template_type, unsigned int list_length);
PDU__ML3__SS__Register__NW__MS_template& list_item(unsigned int list_index) const;
BITSTRING_template& messageType();
const BITSTRING_template& messageType() const;
BITSTRING_template& nsd();
const BITSTRING_template& nsd() const;
MobileL3__CommonIE__Types::Facility__TLV_template& facility();
const MobileL3__CommonIE__Types::Facility__TLV_template& facility() const;
int size_of() const;
void log() const;
void log_match(const PDU__ML3__SS__Register__NW__MS& 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 PDU__ML3__SS__Register__MS__NW : public Base_Type {
  BITSTRING field_messageType;
  BITSTRING field_nsd;
  MobileL3__CommonIE__Types::Facility__TLV field_facility;
  OPTIONAL< MobileL3__CommonIE__Types::SS__VersionIndicator > field_ss__version;
public:
  PDU__ML3__SS__Register__MS__NW();
  PDU__ML3__SS__Register__MS__NW(const BITSTRING& par_messageType,
    const BITSTRING& par_nsd,
    const MobileL3__CommonIE__Types::Facility__TLV& par_facility,
    const OPTIONAL< MobileL3__CommonIE__Types::SS__VersionIndicator >& par_ss__version);
  PDU__ML3__SS__Register__MS__NW(const PDU__ML3__SS__Register__MS__NW& other_value);
  inline boolean is_component() { return FALSE; }
  void clean_up();
const TTCN_Typedescriptor_t* get_descriptor() const;
  PDU__ML3__SS__Register__MS__NW& operator=(const PDU__ML3__SS__Register__MS__NW& other_value);
  boolean operator==(const PDU__ML3__SS__Register__MS__NW& other_value) const;
  inline boolean operator!=(const PDU__ML3__SS__Register__MS__NW& other_value) const
    { return !(*this == other_value); }

  boolean is_bound() const;

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

  inline BITSTRING& messageType()
    {return field_messageType;}
  inline const BITSTRING& messageType() const
    {return field_messageType;}
  inline BITSTRING& nsd()
    {return field_nsd;}
  inline const BITSTRING& nsd() const
    {return field_nsd;}
  inline MobileL3__CommonIE__Types::Facility__TLV& facility()
    {return field_facility;}
  inline const MobileL3__CommonIE__Types::Facility__TLV& facility() const
    {return field_facility;}
  inline OPTIONAL< MobileL3__CommonIE__Types::SS__VersionIndicator >& ss__version()
    {return field_ss__version;}
  inline const OPTIONAL< MobileL3__CommonIE__Types::SS__VersionIndicator >& ss__version() const
    {return field_ss__version;}
  int size_of() const;
  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);
void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, ...) const;
void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, ...);
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, const RAW_Force_Omit* force_omit = NULL);
};

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

void set_specific();
void copy_value(const PDU__ML3__SS__Register__MS__NW& other_value);
void copy_template(const PDU__ML3__SS__Register__MS__NW_template& other_value);

public:
PDU__ML3__SS__Register__MS__NW_template();
PDU__ML3__SS__Register__MS__NW_template(template_sel other_value);
PDU__ML3__SS__Register__MS__NW_template(const PDU__ML3__SS__Register__MS__NW& other_value);
PDU__ML3__SS__Register__MS__NW_template(const OPTIONAL<PDU__ML3__SS__Register__MS__NW>& other_value);
PDU__ML3__SS__Register__MS__NW_template(PDU__ML3__SS__Register__MS__NW_template* p_precondition, PDU__ML3__SS__Register__MS__NW_template* p_implied_template);
PDU__ML3__SS__Register__MS__NW_template(Dynamic_Match_Interface<PDU__ML3__SS__Register__MS__NW>* p_dyn_match);
PDU__ML3__SS__Register__MS__NW_template(const PDU__ML3__SS__Register__MS__NW_template& other_value);
~PDU__ML3__SS__Register__MS__NW_template();
PDU__ML3__SS__Register__MS__NW_template& operator=(template_sel other_value);
PDU__ML3__SS__Register__MS__NW_template& operator=(const PDU__ML3__SS__Register__MS__NW& other_value);
PDU__ML3__SS__Register__MS__NW_template& operator=(const OPTIONAL<PDU__ML3__SS__Register__MS__NW>& other_value);
PDU__ML3__SS__Register__MS__NW_template& operator=(const PDU__ML3__SS__Register__MS__NW_template& other_value);
boolean match(const PDU__ML3__SS__Register__MS__NW& other_value, boolean legacy = FALSE) const;
boolean is_bound() const;
boolean is_value() const;
void clean_up();
PDU__ML3__SS__Register__MS__NW valueof() const;
void set_type(template_sel template_type, unsigned int list_length);
PDU__ML3__SS__Register__MS__NW_template& list_item(unsigned int list_index) const;
BITSTRING_template& messageType();
const BITSTRING_template& messageType() const;
BITSTRING_template& nsd();
const BITSTRING_template& nsd() const;
MobileL3__CommonIE__Types::Facility__TLV_template& facility();
const MobileL3__CommonIE__Types::Facility__TLV_template& facility() const;
MobileL3__CommonIE__Types::SS__VersionIndicator_template& ss__version();
const MobileL3__CommonIE__Types::SS__VersionIndicator_template& ss__version() const;
int size_of() const;
void log() const;
void log_match(const PDU__ML3__SS__Register__MS__NW& 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 PDU__ML3__SS__ReleaseComplete : public Base_Type {
  BITSTRING field_messageType;
  BITSTRING field_nsd;
  OPTIONAL< MobileL3__CommonIE__Types::ML3__Cause__TLV > field_cause;
  OPTIONAL< MobileL3__CommonIE__Types::Facility__TLV > field_facility;
public:
  PDU__ML3__SS__ReleaseComplete();
  PDU__ML3__SS__ReleaseComplete(const BITSTRING& par_messageType,
    const BITSTRING& par_nsd,
    const OPTIONAL< MobileL3__CommonIE__Types::ML3__Cause__TLV >& par_cause,
    const OPTIONAL< MobileL3__CommonIE__Types::Facility__TLV >& par_facility);
  PDU__ML3__SS__ReleaseComplete(const PDU__ML3__SS__ReleaseComplete& other_value);
  inline boolean is_component() { return FALSE; }
  void clean_up();
const TTCN_Typedescriptor_t* get_descriptor() const;
  PDU__ML3__SS__ReleaseComplete& operator=(const PDU__ML3__SS__ReleaseComplete& other_value);
  boolean operator==(const PDU__ML3__SS__ReleaseComplete& other_value) const;
  inline boolean operator!=(const PDU__ML3__SS__ReleaseComplete& other_value) const
    { return !(*this == other_value); }

  boolean is_bound() const;

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

  inline BITSTRING& messageType()
    {return field_messageType;}
  inline const BITSTRING& messageType() const
    {return field_messageType;}
  inline BITSTRING& nsd()
    {return field_nsd;}
  inline const BITSTRING& nsd() const
    {return field_nsd;}
  inline OPTIONAL< MobileL3__CommonIE__Types::ML3__Cause__TLV >& cause()
    {return field_cause;}
  inline const OPTIONAL< MobileL3__CommonIE__Types::ML3__Cause__TLV >& cause() const
    {return field_cause;}
  inline OPTIONAL< MobileL3__CommonIE__Types::Facility__TLV >& facility()
    {return field_facility;}
  inline const OPTIONAL< MobileL3__CommonIE__Types::Facility__TLV >& facility() const
    {return field_facility;}
  int size_of() const;
  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);
void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, ...) const;
void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, ...);
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, const RAW_Force_Omit* force_omit = NULL);
};

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

void set_specific();
void copy_value(const PDU__ML3__SS__ReleaseComplete& other_value);
void copy_template(const PDU__ML3__SS__ReleaseComplete_template& other_value);

public:
PDU__ML3__SS__ReleaseComplete_template();
PDU__ML3__SS__ReleaseComplete_template(template_sel other_value);
PDU__ML3__SS__ReleaseComplete_template(const PDU__ML3__SS__ReleaseComplete& other_value);
PDU__ML3__SS__ReleaseComplete_template(const OPTIONAL<PDU__ML3__SS__ReleaseComplete>& other_value);
PDU__ML3__SS__ReleaseComplete_template(PDU__ML3__SS__ReleaseComplete_template* p_precondition, PDU__ML3__SS__ReleaseComplete_template* p_implied_template);
PDU__ML3__SS__ReleaseComplete_template(Dynamic_Match_Interface<PDU__ML3__SS__ReleaseComplete>* p_dyn_match);
PDU__ML3__SS__ReleaseComplete_template(const PDU__ML3__SS__ReleaseComplete_template& other_value);
~PDU__ML3__SS__ReleaseComplete_template();
PDU__ML3__SS__ReleaseComplete_template& operator=(template_sel other_value);
PDU__ML3__SS__ReleaseComplete_template& operator=(const PDU__ML3__SS__ReleaseComplete& other_value);
PDU__ML3__SS__ReleaseComplete_template& operator=(const OPTIONAL<PDU__ML3__SS__ReleaseComplete>& other_value);
PDU__ML3__SS__ReleaseComplete_template& operator=(const PDU__ML3__SS__ReleaseComplete_template& other_value);
boolean match(const PDU__ML3__SS__ReleaseComplete& other_value, boolean legacy = FALSE) const;
boolean is_bound() const;
boolean is_value() const;
void clean_up();
PDU__ML3__SS__ReleaseComplete valueof() const;
void set_type(template_sel template_type, unsigned int list_length);
PDU__ML3__SS__ReleaseComplete_template& list_item(unsigned int list_index) const;
BITSTRING_template& messageType();
const BITSTRING_template& messageType() const;
BITSTRING_template& nsd();
const BITSTRING_template& nsd() const;
MobileL3__CommonIE__Types::ML3__Cause__TLV_template& cause();
const MobileL3__CommonIE__Types::ML3__Cause__TLV_template& cause() const;
MobileL3__CommonIE__Types::Facility__TLV_template& facility();
const MobileL3__CommonIE__Types::Facility__TLV_template& facility() const;
int size_of() const;
void log() const;
void log_match(const PDU__ML3__SS__ReleaseComplete& 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 PDU__ML3__SS__MS__NW : public Base_Type {
public:
enum union_selection_type { UNBOUND_VALUE = 0, ALT_facility = 1, ALT_register_ = 2, ALT_releaseComplete__MS__NW = 3 };
private:
union_selection_type union_selection;
union {
PDU__ML3__SS__Facility *field_facility;
PDU__ML3__SS__Register__MS__NW *field_register_;
PDU__ML3__SS__ReleaseComplete *field_releaseComplete__MS__NW;
};
void copy_value(const PDU__ML3__SS__MS__NW& other_value);

public:
PDU__ML3__SS__MS__NW();
PDU__ML3__SS__MS__NW(const PDU__ML3__SS__MS__NW& other_value);
~PDU__ML3__SS__MS__NW();
PDU__ML3__SS__MS__NW& operator=(const PDU__ML3__SS__MS__NW& other_value);
boolean operator==(const PDU__ML3__SS__MS__NW& other_value) const;
inline boolean operator!=(const PDU__ML3__SS__MS__NW& other_value) const { return !(*this == other_value); }
PDU__ML3__SS__Facility& facility();
const PDU__ML3__SS__Facility& facility() const;
PDU__ML3__SS__Register__MS__NW& register_();
const PDU__ML3__SS__Register__MS__NW& register_() const;
PDU__ML3__SS__ReleaseComplete& releaseComplete__MS__NW();
const PDU__ML3__SS__ReleaseComplete& releaseComplete__MS__NW() 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&, int, ...) const;
void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, ...);
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, const RAW_Force_Omit* force_omit = NULL);
};

class PDU__ML3__SS__MS__NW_template : public Base_Template {
union {
struct {
PDU__ML3__SS__MS__NW::union_selection_type union_selection;
union {
PDU__ML3__SS__Facility_template *field_facility;
PDU__ML3__SS__Register__MS__NW_template *field_register_;
PDU__ML3__SS__ReleaseComplete_template *field_releaseComplete__MS__NW;
};
} single_value;
struct {
unsigned int n_values;
PDU__ML3__SS__MS__NW_template *list_value;
} value_list;
struct {
PDU__ML3__SS__MS__NW_template* precondition;
PDU__ML3__SS__MS__NW_template* implied_template;
} implication_;
dynmatch_struct<PDU__ML3__SS__MS__NW>* dyn_match;
};
void copy_value(const PDU__ML3__SS__MS__NW& other_value);

void copy_template(const PDU__ML3__SS__MS__NW_template& other_value);

public:
PDU__ML3__SS__MS__NW_template();
PDU__ML3__SS__MS__NW_template(template_sel other_value);
PDU__ML3__SS__MS__NW_template(const PDU__ML3__SS__MS__NW& other_value);
PDU__ML3__SS__MS__NW_template(const OPTIONAL<PDU__ML3__SS__MS__NW>& other_value);
PDU__ML3__SS__MS__NW_template(PDU__ML3__SS__MS__NW_template* p_precondition, PDU__ML3__SS__MS__NW_template* p_implied_template);
PDU__ML3__SS__MS__NW_template(Dynamic_Match_Interface<PDU__ML3__SS__MS__NW>* p_dyn_match);
PDU__ML3__SS__MS__NW_template(const PDU__ML3__SS__MS__NW_template& other_value);
~PDU__ML3__SS__MS__NW_template();
void clean_up();
PDU__ML3__SS__MS__NW_template& operator=(template_sel other_value);
PDU__ML3__SS__MS__NW_template& operator=(const PDU__ML3__SS__MS__NW& other_value);
PDU__ML3__SS__MS__NW_template& operator=(const OPTIONAL<PDU__ML3__SS__MS__NW>& other_value);
PDU__ML3__SS__MS__NW_template& operator=(const PDU__ML3__SS__MS__NW_template& other_value);
boolean match(const PDU__ML3__SS__MS__NW& other_value, boolean legacy = FALSE) const;
boolean is_value() const;PDU__ML3__SS__MS__NW valueof() const;
PDU__ML3__SS__MS__NW_template& list_item(unsigned int list_index) const;
void set_type(template_sel template_type, unsigned int list_length);
PDU__ML3__SS__Facility_template& facility();
const PDU__ML3__SS__Facility_template& facility() const;
PDU__ML3__SS__Register__MS__NW_template& register_();
const PDU__ML3__SS__Register__MS__NW_template& register_() const;
PDU__ML3__SS__ReleaseComplete_template& releaseComplete__MS__NW();
const PDU__ML3__SS__ReleaseComplete_template& releaseComplete__MS__NW() const;
boolean ischosen(PDU__ML3__SS__MS__NW::union_selection_type checked_selection) const;
void log() const;
void log_match(const PDU__ML3__SS__MS__NW& 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);
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 PDU__ML3__SS__NW__MS : public Base_Type {
public:
enum union_selection_type { UNBOUND_VALUE = 0, ALT_facility = 1, ALT_register_ = 2, ALT_releaseComplete__NW__MS = 3 };
private:
union_selection_type union_selection;
union {
PDU__ML3__SS__Facility *field_facility;
PDU__ML3__SS__Register__NW__MS *field_register_;
PDU__ML3__SS__ReleaseComplete *field_releaseComplete__NW__MS;
};
void copy_value(const PDU__ML3__SS__NW__MS& other_value);

public:
PDU__ML3__SS__NW__MS();
PDU__ML3__SS__NW__MS(const PDU__ML3__SS__NW__MS& other_value);
~PDU__ML3__SS__NW__MS();
PDU__ML3__SS__NW__MS& operator=(const PDU__ML3__SS__NW__MS& other_value);
boolean operator==(const PDU__ML3__SS__NW__MS& other_value) const;
inline boolean operator!=(const PDU__ML3__SS__NW__MS& other_value) const { return !(*this == other_value); }
PDU__ML3__SS__Facility& facility();
const PDU__ML3__SS__Facility& facility() const;
PDU__ML3__SS__Register__NW__MS& register_();
const PDU__ML3__SS__Register__NW__MS& register_() const;
PDU__ML3__SS__ReleaseComplete& releaseComplete__NW__MS();
const PDU__ML3__SS__ReleaseComplete& releaseComplete__NW__MS() 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&, int, ...) const;
void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, ...);
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, const RAW_Force_Omit* force_omit = NULL);
};

class PDU__ML3__SS__NW__MS_template : public Base_Template {
union {
struct {
PDU__ML3__SS__NW__MS::union_selection_type union_selection;
union {
PDU__ML3__SS__Facility_template *field_facility;
PDU__ML3__SS__Register__NW__MS_template *field_register_;
PDU__ML3__SS__ReleaseComplete_template *field_releaseComplete__NW__MS;
};
} single_value;
struct {
unsigned int n_values;
PDU__ML3__SS__NW__MS_template *list_value;
} value_list;
struct {
PDU__ML3__SS__NW__MS_template* precondition;
PDU__ML3__SS__NW__MS_template* implied_template;
} implication_;
dynmatch_struct<PDU__ML3__SS__NW__MS>* dyn_match;
};
void copy_value(const PDU__ML3__SS__NW__MS& other_value);

void copy_template(const PDU__ML3__SS__NW__MS_template& other_value);

public:
PDU__ML3__SS__NW__MS_template();
PDU__ML3__SS__NW__MS_template(template_sel other_value);
PDU__ML3__SS__NW__MS_template(const PDU__ML3__SS__NW__MS& other_value);
PDU__ML3__SS__NW__MS_template(const OPTIONAL<PDU__ML3__SS__NW__MS>& other_value);
PDU__ML3__SS__NW__MS_template(PDU__ML3__SS__NW__MS_template* p_precondition, PDU__ML3__SS__NW__MS_template* p_implied_template);
PDU__ML3__SS__NW__MS_template(Dynamic_Match_Interface<PDU__ML3__SS__NW__MS>* p_dyn_match);
PDU__ML3__SS__NW__MS_template(const PDU__ML3__SS__NW__MS_template& other_value);
~PDU__ML3__SS__NW__MS_template();
void clean_up();
PDU__ML3__SS__NW__MS_template& operator=(template_sel other_value);
PDU__ML3__SS__NW__MS_template& operator=(const PDU__ML3__SS__NW__MS& other_value);
PDU__ML3__SS__NW__MS_template& operator=(const OPTIONAL<PDU__ML3__SS__NW__MS>& other_value);
PDU__ML3__SS__NW__MS_template& operator=(const PDU__ML3__SS__NW__MS_template& other_value);
boolean match(const PDU__ML3__SS__NW__MS& other_value, boolean legacy = FALSE) const;
boolean is_value() const;PDU__ML3__SS__NW__MS valueof() const;
PDU__ML3__SS__NW__MS_template& list_item(unsigned int list_index) const;
void set_type(template_sel template_type, unsigned int list_length);
PDU__ML3__SS__Facility_template& facility();
const PDU__ML3__SS__Facility_template& facility() const;
PDU__ML3__SS__Register__NW__MS_template& register_();
const PDU__ML3__SS__Register__NW__MS_template& register_() const;
PDU__ML3__SS__ReleaseComplete_template& releaseComplete__NW__MS();
const PDU__ML3__SS__ReleaseComplete_template& releaseComplete__NW__MS() const;
boolean ischosen(PDU__ML3__SS__NW__MS::union_selection_type checked_selection) const;
void log() const;
void log_match(const PDU__ML3__SS__NW__MS& 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);
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;
};


/* Function prototypes */

extern void PDU__ML3__SS__Facility_encoder(const PDU__ML3__SS__Facility& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name);
extern INTEGER PDU__ML3__SS__Facility_decoder(OCTETSTRING& input_stream, PDU__ML3__SS__Facility& output_value, const UNIVERSAL_CHARSTRING& coding_name);
extern void PDU__ML3__SS__Register__NW__MS_encoder(const PDU__ML3__SS__Register__NW__MS& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name);
extern INTEGER PDU__ML3__SS__Register__NW__MS_decoder(OCTETSTRING& input_stream, PDU__ML3__SS__Register__NW__MS& output_value, const UNIVERSAL_CHARSTRING& coding_name);
extern void PDU__ML3__SS__Register__MS__NW_encoder(const PDU__ML3__SS__Register__MS__NW& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name);
extern INTEGER PDU__ML3__SS__Register__MS__NW_decoder(OCTETSTRING& input_stream, PDU__ML3__SS__Register__MS__NW& output_value, const UNIVERSAL_CHARSTRING& coding_name);
extern void PDU__ML3__SS__ReleaseComplete_encoder(const PDU__ML3__SS__ReleaseComplete& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name);
extern INTEGER PDU__ML3__SS__ReleaseComplete_decoder(OCTETSTRING& input_stream, PDU__ML3__SS__ReleaseComplete& output_value, const UNIVERSAL_CHARSTRING& coding_name);
extern void PDU__ML3__SS__MS__NW_encoder(const PDU__ML3__SS__MS__NW& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name);
extern INTEGER PDU__ML3__SS__MS__NW_decoder(OCTETSTRING& input_stream, PDU__ML3__SS__MS__NW& output_value, const UNIVERSAL_CHARSTRING& coding_name);
extern void PDU__ML3__SS__NW__MS_encoder(const PDU__ML3__SS__NW__MS& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name);
extern INTEGER PDU__ML3__SS__NW__MS_decoder(OCTETSTRING& input_stream, PDU__ML3__SS__NW__MS& output_value, const UNIVERSAL_CHARSTRING& coding_name);
extern void pre_init_module();
extern void post_init_module();

/* Global variable declarations */

extern const XERdescriptor_t PDU__ML3__SS__Facility_messageType_xer_;
extern const TTCN_OERdescriptor_t PDU__ML3__SS__Facility_messageType_oer_;
extern const TTCN_Typedescriptor_t PDU__ML3__SS__Facility_messageType_descr_;
extern UNIVERSAL_CHARSTRING PDU__ML3__SS__Facility_messageType_default_coding;
extern const XERdescriptor_t PDU__ML3__SS__Facility_nsd_xer_;
extern const TTCN_OERdescriptor_t PDU__ML3__SS__Facility_nsd_oer_;
extern const TTCN_Typedescriptor_t PDU__ML3__SS__Facility_nsd_descr_;
extern UNIVERSAL_CHARSTRING PDU__ML3__SS__Facility_nsd_default_coding;
extern UNIVERSAL_CHARSTRING PDU__ML3__SS__Facility_facility_default_coding;
extern const TTCN_RAWdescriptor_t PDU__ML3__SS__Facility_raw_;
extern const TTCN_Typedescriptor_t PDU__ML3__SS__Facility_descr_;
extern UNIVERSAL_CHARSTRING PDU__ML3__SS__Facility_default_coding;
extern const XERdescriptor_t PDU__ML3__SS__Register__NW__MS_messageType_xer_;
extern const TTCN_OERdescriptor_t PDU__ML3__SS__Register__NW__MS_messageType_oer_;
extern const TTCN_Typedescriptor_t PDU__ML3__SS__Register__NW__MS_messageType_descr_;
extern UNIVERSAL_CHARSTRING PDU__ML3__SS__Register__NW__MS_messageType_default_coding;
extern const XERdescriptor_t PDU__ML3__SS__Register__NW__MS_nsd_xer_;
extern const TTCN_OERdescriptor_t PDU__ML3__SS__Register__NW__MS_nsd_oer_;
extern const TTCN_Typedescriptor_t PDU__ML3__SS__Register__NW__MS_nsd_descr_;
extern UNIVERSAL_CHARSTRING PDU__ML3__SS__Register__NW__MS_nsd_default_coding;
extern UNIVERSAL_CHARSTRING PDU__ML3__SS__Register__NW__MS_facility_default_coding;
extern const TTCN_RAWdescriptor_t PDU__ML3__SS__Register__NW__MS_raw_;
extern const TTCN_Typedescriptor_t PDU__ML3__SS__Register__NW__MS_descr_;
extern UNIVERSAL_CHARSTRING PDU__ML3__SS__Register__NW__MS_default_coding;
extern const XERdescriptor_t PDU__ML3__SS__Register__MS__NW_messageType_xer_;
extern const TTCN_OERdescriptor_t PDU__ML3__SS__Register__MS__NW_messageType_oer_;
extern const TTCN_Typedescriptor_t PDU__ML3__SS__Register__MS__NW_messageType_descr_;
extern UNIVERSAL_CHARSTRING PDU__ML3__SS__Register__MS__NW_messageType_default_coding;
extern const XERdescriptor_t PDU__ML3__SS__Register__MS__NW_nsd_xer_;
extern const TTCN_OERdescriptor_t PDU__ML3__SS__Register__MS__NW_nsd_oer_;
extern const TTCN_Typedescriptor_t PDU__ML3__SS__Register__MS__NW_nsd_descr_;
extern UNIVERSAL_CHARSTRING PDU__ML3__SS__Register__MS__NW_nsd_default_coding;
extern UNIVERSAL_CHARSTRING PDU__ML3__SS__Register__MS__NW_facility_default_coding;
extern const TTCN_RAWdescriptor_t PDU__ML3__SS__Register__MS__NW_raw_;
extern const TTCN_Typedescriptor_t PDU__ML3__SS__Register__MS__NW_descr_;
extern UNIVERSAL_CHARSTRING PDU__ML3__SS__Register__MS__NW_ss__version_default_coding;
extern UNIVERSAL_CHARSTRING PDU__ML3__SS__Register__MS__NW_default_coding;
extern const XERdescriptor_t PDU__ML3__SS__ReleaseComplete_messageType_xer_;
extern const TTCN_OERdescriptor_t PDU__ML3__SS__ReleaseComplete_messageType_oer_;
extern const TTCN_Typedescriptor_t PDU__ML3__SS__ReleaseComplete_messageType_descr_;
extern UNIVERSAL_CHARSTRING PDU__ML3__SS__ReleaseComplete_messageType_default_coding;
extern const XERdescriptor_t PDU__ML3__SS__ReleaseComplete_nsd_xer_;
extern const TTCN_OERdescriptor_t PDU__ML3__SS__ReleaseComplete_nsd_oer_;
extern const TTCN_Typedescriptor_t PDU__ML3__SS__ReleaseComplete_nsd_descr_;
extern UNIVERSAL_CHARSTRING PDU__ML3__SS__ReleaseComplete_nsd_default_coding;
extern const TTCN_RAWdescriptor_t PDU__ML3__SS__ReleaseComplete_raw_;
extern const TTCN_Typedescriptor_t PDU__ML3__SS__ReleaseComplete_descr_;
extern UNIVERSAL_CHARSTRING PDU__ML3__SS__ReleaseComplete_cause_default_coding;
extern UNIVERSAL_CHARSTRING PDU__ML3__SS__ReleaseComplete_facility_default_coding;
extern UNIVERSAL_CHARSTRING PDU__ML3__SS__ReleaseComplete_default_coding;
extern const TTCN_RAWdescriptor_t PDU__ML3__SS__MS__NW_raw_;
extern const TTCN_Typedescriptor_t PDU__ML3__SS__MS__NW_descr_;
extern UNIVERSAL_CHARSTRING PDU__ML3__SS__MS__NW_facility_default_coding;
extern UNIVERSAL_CHARSTRING PDU__ML3__SS__MS__NW_register__default_coding;
extern UNIVERSAL_CHARSTRING PDU__ML3__SS__MS__NW_releaseComplete__MS__NW_default_coding;
extern UNIVERSAL_CHARSTRING PDU__ML3__SS__MS__NW_default_coding;
extern const TTCN_RAWdescriptor_t PDU__ML3__SS__NW__MS_raw_;
extern const TTCN_Typedescriptor_t PDU__ML3__SS__NW__MS_descr_;
extern UNIVERSAL_CHARSTRING PDU__ML3__SS__NW__MS_facility_default_coding;
extern UNIVERSAL_CHARSTRING PDU__ML3__SS__NW__MS_register__default_coding;
extern UNIVERSAL_CHARSTRING PDU__ML3__SS__NW__MS_releaseComplete__NW__MS_default_coding;
extern UNIVERSAL_CHARSTRING PDU__ML3__SS__NW__MS_default_coding;
extern const BITSTRING bs_2,
bs_0,
bs_1;
extern const OCTETSTRING os_1,
os_2,
os_0;
extern const unsigned char module_checksum[];
extern TTCN_Module module_object;
extern const RuntimeVersionChecker ver_checker;

} /* end of namespace */

#endif
