// 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 M3UA__Emulation_HH
#define M3UA__Emulation_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 "M3UA_Types.hh"
#include "SCTPasp_PortType.hh"
#include "MTP3asp_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 M3UA__Emulation_HH
#endif

namespace M3UA__Emulation {

/* Forward declarations of classes */

class TRANSFERreq__Buffer;
class TRANSFERreq__Buffer_template;
class SCTP__Association__Address;
class SCTP__Association__Address_template;
class M3UA__Entity;
class M3UA__Entity_template;
class M3UA__CommStatus;
class M3UA__CommStatus_template;
class MTP3asp__SP__PT__Int;

} /* end of namespace */

#ifndef M3UA__Emulation_HH
#define M3UA__Emulation_HH

namespace M3UA__Emulation {

/* Type definitions */

typedef COMPONENT M3UA__CT;
typedef COMPONENT_template M3UA__CT_template;

/* Class definitions */

class TRANSFERreq__Buffer : public Base_Type {
struct recordof_setof_struct {
int ref_count;
int n_elements;
MTP3asp__Types::ASP__MTP3__TRANSFERreq **value_elements;
} *val_ptr;

static const MTP3asp__Types::ASP__MTP3__TRANSFERreq UNBOUND_ELEM;
private:
friend boolean operator==(null_type null_value, const TRANSFERreq__Buffer& other_value);

public:
  typedef MTP3asp__Types::ASP__MTP3__TRANSFERreq of_type;
TRANSFERreq__Buffer();
TRANSFERreq__Buffer(null_type other_value);
TRANSFERreq__Buffer(const TRANSFERreq__Buffer& other_value);
~TRANSFERreq__Buffer();

void clean_up();
TRANSFERreq__Buffer& operator=(null_type other_value);
TRANSFERreq__Buffer& operator=(const TRANSFERreq__Buffer& other_value);

boolean operator==(null_type other_value) const;
boolean operator==(const TRANSFERreq__Buffer& other_value) const;
inline boolean operator!=(null_type other_value) const { return !(*this == other_value); }
inline boolean operator!=(const TRANSFERreq__Buffer& other_value) const { return !(*this == other_value); }

MTP3asp__Types::ASP__MTP3__TRANSFERreq& operator[](int index_value);
MTP3asp__Types::ASP__MTP3__TRANSFERreq& operator[](const INTEGER& index_value);
const MTP3asp__Types::ASP__MTP3__TRANSFERreq& operator[](int index_value) const;
const MTP3asp__Types::ASP__MTP3__TRANSFERreq& operator[](const INTEGER& index_value) const;

TRANSFERreq__Buffer operator<<=(int rotate_count) const;
TRANSFERreq__Buffer operator<<=(const INTEGER& rotate_count) const;
TRANSFERreq__Buffer operator>>=(int rotate_count) const;
TRANSFERreq__Buffer operator>>=(const INTEGER& rotate_count) const;

TRANSFERreq__Buffer operator+(const TRANSFERreq__Buffer& other_value) const;

TRANSFERreq__Buffer substr(int index, int returncount) const;

TRANSFERreq__Buffer replace(int index, int len, const TRANSFERreq__Buffer& repl) const;

TRANSFERreq__Buffer replace(int index, int len, const TRANSFERreq__Buffer_template& repl) const;

void set_size(int new_size);
inline boolean is_bound() const {return val_ptr != NULL; }
inline boolean is_present() const { return is_bound(); }
boolean is_value() const;
int size_of() const;
int n_elem() const { return size_of(); }
int lengthof() const;
void log() const;
  void set_implicit_omit();
void set_param(Module_Param& param);
void encode_text(Text_Buf& text_buf) const;
void decode_text(Text_Buf& text_buf);
};

class TRANSFERreq__Buffer_template : public Base_Record_Of_Template {
union {
struct {
int n_elements;
MTP3asp__Types::ASP__MTP3__TRANSFERreq_template **value_elements;
} single_value;
struct {
unsigned int n_values;
TRANSFERreq__Buffer_template *list_value;
} value_list;
struct {
TRANSFERreq__Buffer_template* precondition;
TRANSFERreq__Buffer_template* implied_template;
} implication_;
dynmatch_struct<TRANSFERreq__Buffer>* dyn_match;
};
void copy_value(const TRANSFERreq__Buffer& other_value);
void copy_template(const TRANSFERreq__Buffer_template& other_value);
static boolean match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy);

public:
TRANSFERreq__Buffer_template();
TRANSFERreq__Buffer_template(template_sel other_value);
TRANSFERreq__Buffer_template(null_type other_value);
TRANSFERreq__Buffer_template(const TRANSFERreq__Buffer& other_value);
TRANSFERreq__Buffer_template(const OPTIONAL<TRANSFERreq__Buffer>& other_value);
TRANSFERreq__Buffer_template(TRANSFERreq__Buffer_template* p_precondition, TRANSFERreq__Buffer_template* p_implied_template);
TRANSFERreq__Buffer_template(Dynamic_Match_Interface<TRANSFERreq__Buffer>* p_dyn_match);
TRANSFERreq__Buffer_template(const TRANSFERreq__Buffer_template& other_value);
~TRANSFERreq__Buffer_template();

void clean_up();
TRANSFERreq__Buffer_template& operator=(template_sel other_value);
TRANSFERreq__Buffer_template& operator=(null_type other_value);
TRANSFERreq__Buffer_template& operator=(const TRANSFERreq__Buffer& other_value);
TRANSFERreq__Buffer_template& operator=(const OPTIONAL<TRANSFERreq__Buffer>& other_value);
TRANSFERreq__Buffer_template& operator=(const TRANSFERreq__Buffer_template& other_value);

MTP3asp__Types::ASP__MTP3__TRANSFERreq_template& operator[](int index_value);
MTP3asp__Types::ASP__MTP3__TRANSFERreq_template& operator[](const INTEGER& index_value);
const MTP3asp__Types::ASP__MTP3__TRANSFERreq_template& operator[](int index_value) const;
const MTP3asp__Types::ASP__MTP3__TRANSFERreq_template& operator[](const INTEGER& index_value) const;

void set_size(int new_size);
int n_elem() const;
int size_of(boolean is_size) const;
inline int size_of() const { return size_of(TRUE); }
inline int lengthof() const { return size_of(FALSE); }
boolean match(const TRANSFERreq__Buffer& other_value, boolean legacy = FALSE) const;
inline boolean is_bound() const 
  {return template_selection != UNINITIALIZED_TEMPLATE; }
boolean is_value() const;
TRANSFERreq__Buffer valueof() const;
TRANSFERreq__Buffer substr(int index, int returncount) const;

TRANSFERreq__Buffer replace(int index, int len, const TRANSFERreq__Buffer_template& repl) const;

TRANSFERreq__Buffer replace(int index, int len, const TRANSFERreq__Buffer& repl) const;

void set_type(template_sel template_type, unsigned int list_length);
TRANSFERreq__Buffer_template& list_item(unsigned int list_index);
void log() const;
void log_match(const TRANSFERreq__Buffer& 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_implicit_omit();
void set_param(Module_Param& param);
void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
boolean get_istemplate_kind(const char* type) const;
};

class SCTP__Association__Address {
  INTEGER field_local__sctp__port;
  CHARSTRING field_local__ip__addr;
  INTEGER field_remote__sctp__port;
  CHARSTRING field_remote__ip__addr;
public:
  SCTP__Association__Address();
  SCTP__Association__Address(const INTEGER& par_local__sctp__port,
    const CHARSTRING& par_local__ip__addr,
    const INTEGER& par_remote__sctp__port,
    const CHARSTRING& par_remote__ip__addr);
  SCTP__Association__Address(const SCTP__Association__Address& other_value);
  inline boolean is_component() { return FALSE; }
  void clean_up();
const TTCN_Typedescriptor_t* get_descriptor() const;
  SCTP__Association__Address& operator=(const SCTP__Association__Address& other_value);
  boolean operator==(const SCTP__Association__Address& other_value) const;
  inline boolean operator!=(const SCTP__Association__Address& other_value) const
    { return !(*this == other_value); }

  boolean is_bound() const;

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

  inline INTEGER& local__sctp__port()
    {return field_local__sctp__port;}
  inline const INTEGER& local__sctp__port() const
    {return field_local__sctp__port;}
  inline CHARSTRING& local__ip__addr()
    {return field_local__ip__addr;}
  inline const CHARSTRING& local__ip__addr() const
    {return field_local__ip__addr;}
  inline INTEGER& remote__sctp__port()
    {return field_remote__sctp__port;}
  inline const INTEGER& remote__sctp__port() const
    {return field_remote__sctp__port;}
  inline CHARSTRING& remote__ip__addr()
    {return field_remote__ip__addr;}
  inline const CHARSTRING& remote__ip__addr() const
    {return field_remote__ip__addr;}
  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 SCTP__Association__Address_template : public Base_Template {
struct single_value_struct;
union {
single_value_struct *single_value;
struct {
unsigned int n_values;
SCTP__Association__Address_template *list_value;
} value_list;
struct {
SCTP__Association__Address_template* precondition;
SCTP__Association__Address_template* implied_template;
} implication_;
dynmatch_struct<SCTP__Association__Address>* dyn_match;
};

void set_specific();
void copy_value(const SCTP__Association__Address& other_value);
void copy_template(const SCTP__Association__Address_template& other_value);

public:
SCTP__Association__Address_template();
SCTP__Association__Address_template(template_sel other_value);
SCTP__Association__Address_template(const SCTP__Association__Address& other_value);
SCTP__Association__Address_template(const OPTIONAL<SCTP__Association__Address>& other_value);
SCTP__Association__Address_template(SCTP__Association__Address_template* p_precondition, SCTP__Association__Address_template* p_implied_template);
SCTP__Association__Address_template(Dynamic_Match_Interface<SCTP__Association__Address>* p_dyn_match);
SCTP__Association__Address_template(const SCTP__Association__Address_template& other_value);
~SCTP__Association__Address_template();
SCTP__Association__Address_template& operator=(template_sel other_value);
SCTP__Association__Address_template& operator=(const SCTP__Association__Address& other_value);
SCTP__Association__Address_template& operator=(const OPTIONAL<SCTP__Association__Address>& other_value);
SCTP__Association__Address_template& operator=(const SCTP__Association__Address_template& other_value);
boolean match(const SCTP__Association__Address& other_value, boolean legacy = FALSE) const;
boolean is_bound() const;
boolean is_value() const;
void clean_up();
SCTP__Association__Address valueof() const;
void set_type(template_sel template_type, unsigned int list_length);
SCTP__Association__Address_template& list_item(unsigned int list_index) const;
INTEGER_template& local__sctp__port();
const INTEGER_template& local__sctp__port() const;
CHARSTRING_template& local__ip__addr();
const CHARSTRING_template& local__ip__addr() const;
INTEGER_template& remote__sctp__port();
const INTEGER_template& remote__sctp__port() const;
CHARSTRING_template& remote__ip__addr();
const CHARSTRING_template& remote__ip__addr() const;
int size_of() const;
void log() const;
void log_match(const SCTP__Association__Address& 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 M3UA__Entity {
  OPTIONAL< M3UA__CommStatus > field_commStatus;
  OPTIONAL< INTEGER > field_sCTP__Assoc__ID;
  OPTIONAL< M3UA__Types::M3UA__Routing__Context > field_rctx;
  SCTP__Association__Address field_assoc;
public:
  M3UA__Entity();
  M3UA__Entity(const OPTIONAL< M3UA__CommStatus >& par_commStatus,
    const OPTIONAL< INTEGER >& par_sCTP__Assoc__ID,
    const OPTIONAL< M3UA__Types::M3UA__Routing__Context >& par_rctx,
    const SCTP__Association__Address& par_assoc);
  M3UA__Entity(const M3UA__Entity& other_value);
  inline boolean is_component() { return FALSE; }
  void clean_up();
const TTCN_Typedescriptor_t* get_descriptor() const;
  M3UA__Entity& operator=(const M3UA__Entity& other_value);
  boolean operator==(const M3UA__Entity& other_value) const;
  inline boolean operator!=(const M3UA__Entity& other_value) const
    { return !(*this == other_value); }

  boolean is_bound() const;

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

  inline OPTIONAL< M3UA__CommStatus >& commStatus()
    {return field_commStatus;}
  inline const OPTIONAL< M3UA__CommStatus >& commStatus() const
    {return field_commStatus;}
  inline OPTIONAL< INTEGER >& sCTP__Assoc__ID()
    {return field_sCTP__Assoc__ID;}
  inline const OPTIONAL< INTEGER >& sCTP__Assoc__ID() const
    {return field_sCTP__Assoc__ID;}
  inline OPTIONAL< M3UA__Types::M3UA__Routing__Context >& rctx()
    {return field_rctx;}
  inline const OPTIONAL< M3UA__Types::M3UA__Routing__Context >& rctx() const
    {return field_rctx;}
  inline SCTP__Association__Address& assoc()
    {return field_assoc;}
  inline const SCTP__Association__Address& assoc() const
    {return field_assoc;}
  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);
};

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

void set_specific();
void copy_value(const M3UA__Entity& other_value);
void copy_template(const M3UA__Entity_template& other_value);

public:
M3UA__Entity_template();
M3UA__Entity_template(template_sel other_value);
M3UA__Entity_template(const M3UA__Entity& other_value);
M3UA__Entity_template(const OPTIONAL<M3UA__Entity>& other_value);
M3UA__Entity_template(M3UA__Entity_template* p_precondition, M3UA__Entity_template* p_implied_template);
M3UA__Entity_template(Dynamic_Match_Interface<M3UA__Entity>* p_dyn_match);
M3UA__Entity_template(const M3UA__Entity_template& other_value);
~M3UA__Entity_template();
M3UA__Entity_template& operator=(template_sel other_value);
M3UA__Entity_template& operator=(const M3UA__Entity& other_value);
M3UA__Entity_template& operator=(const OPTIONAL<M3UA__Entity>& other_value);
M3UA__Entity_template& operator=(const M3UA__Entity_template& other_value);
boolean match(const M3UA__Entity& other_value, boolean legacy = FALSE) const;
boolean is_bound() const;
boolean is_value() const;
void clean_up();
M3UA__Entity valueof() const;
void set_type(template_sel template_type, unsigned int list_length);
M3UA__Entity_template& list_item(unsigned int list_index) const;
M3UA__CommStatus_template& commStatus();
const M3UA__CommStatus_template& commStatus() const;
INTEGER_template& sCTP__Assoc__ID();
const INTEGER_template& sCTP__Assoc__ID() const;
M3UA__Types::M3UA__Routing__Context_template& rctx();
const M3UA__Types::M3UA__Routing__Context_template& rctx() const;
SCTP__Association__Address_template& assoc();
const SCTP__Association__Address_template& assoc() const;
int size_of() const;
void log() const;
void log_match(const M3UA__Entity& 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 M3UA__CommStatus : public Base_Type { // enum
friend class M3UA__CommStatus_template;
public:
enum enum_type { aSP__Down__initial__State = 0, aSP__Down__sCTP__Initialize__Done = 1, aSP__Down__sCTP__Associate__done = 2, aSP__Down__commUP__Received = 3, aSP__Down__ASPUP__Sent = 4, aSP__Inactive = 5, aSP__Inact__ASPAC__Sent = 6, aSP__Active = 7, UNKNOWN_VALUE = 8, UNBOUND_VALUE = 9 };
private:
enum_type enum_value;

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

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

boolean operator==(int other_value) const;
boolean operator==(enum_type other_value) const;
boolean operator==(const M3UA__CommStatus& 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 M3UA__CommStatus& other_value) const { return !(*this == other_value); }
boolean operator<(int other_value) const;
boolean operator<(enum_type other_value) const;
boolean operator<(const M3UA__CommStatus& other_value) const;
boolean operator>(int other_value) const;
boolean operator>(enum_type other_value) const;
boolean operator>(const M3UA__CommStatus& 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 M3UA__CommStatus& 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 M3UA__CommStatus& 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 M3UA__CommStatus& 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 M3UA__CommStatus_template : public Base_Template {
union {
M3UA__CommStatus::enum_type single_value;
struct {
unsigned int n_values;
M3UA__CommStatus_template *list_value;
} value_list;
struct {
M3UA__CommStatus_template* precondition;
M3UA__CommStatus_template* implied_template;
} implication_;
dynmatch_struct<M3UA__CommStatus>* dyn_match;
};

void copy_template(const M3UA__CommStatus_template& other_value);

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

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

boolean match(M3UA__CommStatus::enum_type other_value, boolean legacy = FALSE) const;
boolean match(const M3UA__CommStatus& other_value, boolean legacy = FALSE) const;
M3UA__CommStatus::enum_type valueof() const;
void set_type(template_sel template_type, unsigned int list_length = 0);
M3UA__CommStatus_template& list_item(unsigned int list_index);
void log() const;
void log_match(const M3UA__CommStatus& 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 MTP3asp__SP__PT__Int : public PORT {
enum msg_selection { MESSAGE_0 };
struct msg_queue_item : public msg_queue_item_base {
msg_selection item_selection;
union {
MTP3asp__Types::ASP__MTP3__TRANSFERreq *message_0;
};
component sender_component;
};

void remove_msg_queue_head();
protected:
void clear_queue();
public:
MTP3asp__SP__PT__Int(const char *par_port_name = NULL);
~MTP3asp__SP__PT__Int();
void send(const MTP3asp__Types::ASP__MTP3__TRANSFERind& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const MTP3asp__Types::ASP__MTP3__TRANSFERind& send_par, size_t nof_components, const COMPONENT* destination_components, FLOAT* timestamp_redirect = NULL);
void send(const MTP3asp__Types::ASP__MTP3__TRANSFERind& send_par, boolean broadcast = FALSE, FLOAT* timestamp_redirect = NULL);
void send(const MTP3asp__Types::ASP__MTP3__TRANSFERind_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const MTP3asp__Types::ASP__MTP3__TRANSFERind_template& send_par, size_t nof_components, const COMPONENT* destination_components, FLOAT* timestamp_redirect = NULL);
void send(const MTP3asp__Types::ASP__MTP3__TRANSFERind_template& send_par, boolean broadcast = FALSE, FLOAT* timestamp_redirect = NULL);
void send(const MTP3asp__Types::ASP__MTP3__PAUSE& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const MTP3asp__Types::ASP__MTP3__PAUSE& send_par, size_t nof_components, const COMPONENT* destination_components, FLOAT* timestamp_redirect = NULL);
void send(const MTP3asp__Types::ASP__MTP3__PAUSE& send_par, boolean broadcast = FALSE, FLOAT* timestamp_redirect = NULL);
void send(const MTP3asp__Types::ASP__MTP3__PAUSE_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const MTP3asp__Types::ASP__MTP3__PAUSE_template& send_par, size_t nof_components, const COMPONENT* destination_components, FLOAT* timestamp_redirect = NULL);
void send(const MTP3asp__Types::ASP__MTP3__PAUSE_template& send_par, boolean broadcast = FALSE, FLOAT* timestamp_redirect = NULL);
void send(const MTP3asp__Types::ASP__MTP3__RESUME& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const MTP3asp__Types::ASP__MTP3__RESUME& send_par, size_t nof_components, const COMPONENT* destination_components, FLOAT* timestamp_redirect = NULL);
void send(const MTP3asp__Types::ASP__MTP3__RESUME& send_par, boolean broadcast = FALSE, FLOAT* timestamp_redirect = NULL);
void send(const MTP3asp__Types::ASP__MTP3__RESUME_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const MTP3asp__Types::ASP__MTP3__RESUME_template& send_par, size_t nof_components, const COMPONENT* destination_components, FLOAT* timestamp_redirect = NULL);
void send(const MTP3asp__Types::ASP__MTP3__RESUME_template& send_par, boolean broadcast = FALSE, FLOAT* timestamp_redirect = NULL);
void send(const MTP3asp__Types::ASP__MTP3__STATUS& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const MTP3asp__Types::ASP__MTP3__STATUS& send_par, size_t nof_components, const COMPONENT* destination_components, FLOAT* timestamp_redirect = NULL);
void send(const MTP3asp__Types::ASP__MTP3__STATUS& send_par, boolean broadcast = FALSE, FLOAT* timestamp_redirect = NULL);
void send(const MTP3asp__Types::ASP__MTP3__STATUS_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const MTP3asp__Types::ASP__MTP3__STATUS_template& send_par, size_t nof_components, const COMPONENT* destination_components, FLOAT* timestamp_redirect = NULL);
void send(const MTP3asp__Types::ASP__MTP3__STATUS_template& send_par, boolean broadcast = FALSE, FLOAT* timestamp_redirect = NULL);
public:
alt_status receive(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status receive(const MTP3asp__Types::ASP__MTP3__TRANSFERreq_template& value_template, MTP3asp__Types::ASP__MTP3__TRANSFERreq *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const MTP3asp__Types::ASP__MTP3__TRANSFERreq_template& value_template, MTP3asp__Types::ASP__MTP3__TRANSFERreq *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const MTP3asp__Types::ASP__MTP3__TRANSFERreq_template& value_template, MTP3asp__Types::ASP__MTP3__TRANSFERreq *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
private:
void incoming_message(const MTP3asp__Types::ASP__MTP3__TRANSFERreq& incoming_par, component sender_component);
protected:
boolean process_message(const char *message_type, Text_Buf& incoming_buf, component sender_component, OCTETSTRING& slider);
};

class as__SCTP__CommunicationUp_Default : public Default_Base {
public:
as__SCTP__CommunicationUp_Default();
alt_status call_altstep(boolean first_alt_run);
};

class as__SCTP__DataArrive_Default : public Default_Base {
public:
as__SCTP__DataArrive_Default();
alt_status call_altstep(boolean first_alt_run);
};

class as__SCTP__Connected_Default : public Default_Base {
public:
as__SCTP__Connected_Default();
alt_status call_altstep(boolean first_alt_run);
};

class as__Unexpected__SCTP__Events_Default : public Default_Base {
public:
as__Unexpected__SCTP__Events_Default();
alt_status call_altstep(boolean first_alt_run);
};

class as__handleM3UA__timers_Default : public Default_Base {
public:
as__handleM3UA__timers_Default();
alt_status call_altstep(boolean first_alt_run);
};

class as__handleSCTP__timers_Default : public Default_Base {
public:
as__handleSCTP__timers_Default();
alt_status call_altstep(boolean first_alt_run);
};


/* Function prototypes */

extern boolean operator==(null_type null_value, const TRANSFERreq__Buffer& other_value);
inline boolean operator!=(null_type null_value, const TRANSFERreq__Buffer& other_value) { return !(null_value == other_value); }
extern SCTPasp__Types::ASP__SCTP_template t__S__SCTP__Send(const INTEGER_template& pl__associationID, const INTEGER_template& pl__streamID, const OCTETSTRING_template& pl__userData, const INTEGER_template& pl__protocolID);
extern SCTPasp__Types::ASP__SCTP__SEND__FAILED_template t__ASP__SCTP__SEND__FAILED(const INTEGER_template& pl__streamID);
extern SCTPasp__Types::ASP__SCTP__Listen_template t__ASP__SCTP__Listen(const CHARSTRING_template& pl__local__hostname, const INTEGER_template& pl__local__portnumber);
extern SCTPasp__Types::ASP__SCTP__Connected_template tr__ASP__SCTP__Connected(const INTEGER_template& pl__client__id, const CHARSTRING_template& pl__local__hostname, const INTEGER_template& pl__local__portnumber, const CHARSTRING_template& pl__peer__hostname, const INTEGER_template& pl__peer__portnumber);
extern SCTPasp__Types::ASP__SCTP__ConnectFrom_template t__ASP__SCTP__ConnectFrom(const CHARSTRING_template& pl__local__hostname, const INTEGER_template& pl__local__portnumber, const CHARSTRING_template& pl__peer__hostname, const INTEGER_template& pl__peer__portnumber);
extern SCTPasp__Types::ASP__SCTP__RESULT_template t__ASP__SCTP__RESULT(const INTEGER_template& pl__client__id, const BOOLEAN_template& pl__error__status, const CHARSTRING_template& pl__error__message);
extern SCTPasp__Types::ASP__SCTP__ASSOC__CHANGE_template tr__S__SCTP__CommunicationUp(const INTEGER_template& pl__associationID);
extern SCTPasp__Types::ASP__SCTP__ASSOC__CHANGE_template tr__S__SCTP__CommunicationLost(const INTEGER_template& pl__associationID);
extern SCTPasp__Types::ASP__SCTP__ASSOC__CHANGE_template tr__S__SCTP__ShutdownComplete(const INTEGER_template& pl__associationID);
extern SCTPasp__Types::ASP__SCTP__SHUTDOWN__EVENT_template tr__S__SCTP__ShutdownEvent(const INTEGER_template& pl__associationID);
extern SCTPasp__Types::ASP__SCTP__ASSOC__CHANGE_template tr__S__SCTP__Restart(const INTEGER_template& pl__associationID);
extern SCTPasp__Types::ASP__SCTP__ASSOC__CHANGE_template tr__S__SCTP__CANT__STR__ASSOC(const INTEGER_template& pl__associationID);
extern SCTPasp__Types::ASP__SCTP_template tr__S__SCTP__DataArrive(const INTEGER_template& pl__associationID, const INTEGER_template& pl__streamID, const INTEGER_template& pl__protocolID, const OCTETSTRING_template& pl__data);
extern SCTPasp__Types::ASP__SCTP__Close_template t__ASP__SCTP__Close(const INTEGER_template& pl__associationID);
extern M3UA__Types::PDU__M3UA_template t__PDU__M3UA__ASPUP(const M3UA__Types::M3UA__ASP__Identifier_template& pl__aSP__Identifier, const M3UA__Types::M3UA__Info__String_template& pl__info__String);
extern M3UA__Types::PDU__M3UA_template t__PDU__M3UA__ASPAC(const M3UA__Types::M3UA__Traffic__Mode__Type_template& pl__traffic__Mode__Type, const M3UA__Types::M3UA__Routing__Context_template& pl__routing__Context, const M3UA__Types::M3UA__Info__String_template& pl__info__String);
extern M3UA__Types::PDU__M3UA_template t__PDU__M3UA__ASPAC__Ack(const M3UA__Types::M3UA__Traffic__Mode__Type_template& pl__traffic__mode__type, const M3UA__Types::M3UA__Routing__Context_template& pl__routing__Context);
extern M3UA__Types::PDU__M3UA_template t__PDU__M3UA__ASPIA(const M3UA__Types::M3UA__Routing__Context_template& pl__routing__Context, const M3UA__Types::M3UA__Info__String_template& pl__info__String);
extern M3UA__Types::PDU__M3UA_template t__PDU__M3UA__ASPIA__Ack(const M3UA__Types::M3UA__Routing__Context_template& pl__routing__Context);
extern M3UA__Types::PDU__M3UA_template t__PDU__M3UA__Heartbeat(const M3UA__Types::M3UA__Heartbeat__Data_template& pl__heartbeat__Data);
extern M3UA__Types::PDU__M3UA_template t__PDU__M3UA__Beat__Ack(const M3UA__Types::M3UA__Heartbeat__Data_template& pl__heartbeat__Data);
extern M3UA__Types::PDU__M3UA_template t__PDU__M3UA__NOTIFY(const M3UA__Types::M3UA__Status_template& pl__status, const M3UA__Types::M3UA__ASP__Identifier_template& pl__aSP__Identifier, const M3UA__Types::M3UA__Routing__Context_template& pl__routing__Context, const M3UA__Types::M3UA__Info__String_template& pl__info__String);
extern M3UA__Types::PDU__M3UA_template t__PDU__M3UA__DATA(const M3UA__Types::M3UA__Network__Appearance_template& pl__network__Appearance, const M3UA__Types::M3UA__Routing__Context_template& pl__routing__Context, const M3UA__Types::M3UA__Protocol__Data_template& pl__protocol__Data, const M3UA__Types::M3UA__Correlation__ID_template& pl__correlation__ID);
extern M3UA__Types::PDU__M3UA_template t__PDU__M3UA__DAVA(const M3UA__Types::M3UA__Network__Appearance_template& pl__network__Appearance, const M3UA__Types::M3UA__Routing__Context_template& pl__routing__Context, const M3UA__Types::M3UA__Affected__Point__Codes_template& pl__affected__Point__Codes, const M3UA__Types::M3UA__Info__String_template& pl__info__String);
extern M3UA__Types::M3UA__Protocol__Data_template t__M3UA__Protocol__Data(const OCTETSTRING_template& pl__oPC, const OCTETSTRING_template& pl__dPC, const OCTETSTRING_template& pl__sI, const OCTETSTRING_template& pl__nI, const OCTETSTRING_template& pl__mP, const OCTETSTRING_template& pl__sLS, const OCTETSTRING_template& pl__userProtocolData);
extern M3UA__Types::M3UA__Routing__Context_template t__RoutingContext(const OCTETSTRING& rctx);
extern M3UA__Types::M3UA__Status_template t__Status(const OCTETSTRING& status__type, const OCTETSTRING& status__info);
extern void f__M3UA__Emulation(const SCTP__Association__Address& pl__Boot, const INTEGER_template& rctx);
extern void start_f__M3UA__Emulation(const COMPONENT& component_reference, const SCTP__Association__Address& pl__Boot, const INTEGER_template& rctx);
extern void f__Initialize__SCTP();
extern void start_f__Initialize__SCTP(const COMPONENT& component_reference);
extern void f__Associate();
extern void start_f__Associate(const COMPONENT& component_reference);
extern void f__M3UA__ScanEvents();
extern void start_f__M3UA__ScanEvents(const COMPONENT& component_reference);
extern void f__Send__MTP3__TRANSFERreq(const MTP3asp__Types::ASP__MTP3__TRANSFERreq& pl__ASP__MTP3__TRANSFERreq);
extern void start_f__Send__MTP3__TRANSFERreq(const COMPONENT& component_reference, const MTP3asp__Types::ASP__MTP3__TRANSFERreq& pl__ASP__MTP3__TRANSFERreq);
extern alt_status as__SCTP__CommunicationUp_instance(boolean first_alt_run);
extern void as__SCTP__CommunicationUp(boolean nodefault_modifier);
extern Default_Base *activate_as__SCTP__CommunicationUp();
extern alt_status as__SCTP__DataArrive_instance(boolean first_alt_run);
extern void as__SCTP__DataArrive(boolean nodefault_modifier);
extern Default_Base *activate_as__SCTP__DataArrive();
extern alt_status as__SCTP__Connected_instance(boolean first_alt_run);
extern void as__SCTP__Connected(boolean nodefault_modifier);
extern Default_Base *activate_as__SCTP__Connected();
extern alt_status as__Unexpected__SCTP__Events_instance(boolean first_alt_run);
extern void as__Unexpected__SCTP__Events(boolean nodefault_modifier);
extern Default_Base *activate_as__Unexpected__SCTP__Events();
extern alt_status as__handleM3UA__timers_instance(boolean first_alt_run);
extern void as__handleM3UA__timers(boolean nodefault_modifier);
extern Default_Base *activate_as__handleM3UA__timers();
extern alt_status as__handleSCTP__timers_instance(boolean first_alt_run);
extern void as__handleSCTP__timers(boolean nodefault_modifier);
extern Default_Base *activate_as__handleSCTP__timers();
extern void f__ASPUP__Sending();
extern void start_f__ASPUP__Sending(const COMPONENT& component_reference);
extern BOOLEAN f__Assoc__Exists(const INTEGER& pl__assocID);
extern void start_f__Assoc__Exists(const COMPONENT& component_reference, const INTEGER& pl__assocID);
extern void f__handle__M3UA__msg(const M3UA__Types::PDU__M3UA& pl__PDU__M3UA);
extern void start_f__handle__M3UA__msg(const COMPONENT& component_reference, const M3UA__Types::PDU__M3UA& pl__PDU__M3UA);
extern void f__handle__nonM3UA__msg(const OCTETSTRING& pl__PDU);
extern void start_f__handle__nonM3UA__msg(const COMPONENT& component_reference, const OCTETSTRING& pl__PDU);
extern void pre_init_module();
extern void post_init_module();
extern boolean set_module_param(Module_Param& param);
extern void log_module_param();
extern boolean init_comp_type(const char *component_type, boolean init_base_comps);
extern boolean init_system_port(const char* component_type, const char* port_name);
extern boolean start_ptc_function(const char *function_name, Text_Buf& function_arguments);

/* Global variable declarations */

extern const BOOLEAN& tsp__logVerbose;
extern BOOLEAN modulepar_tsp__logVerbose;
extern const FLOAT& tsp__Timer;
extern FLOAT modulepar_tsp__Timer;
extern const FLOAT& tsp__ASPUP__Resend__Timer;
extern FLOAT modulepar_tsp__ASPUP__Resend__Timer;
extern const FLOAT& tsp__ASPAC__Resend__Timer;
extern FLOAT modulepar_tsp__ASPAC__Resend__Timer;
extern const FLOAT& tsp__Assoc__Restart__Timer;
extern FLOAT modulepar_tsp__Assoc__Restart__Timer;
extern const FLOAT& tsp__Heartbeat__Timer;
extern FLOAT modulepar_tsp__Heartbeat__Timer;
extern const INTEGER& tsp__SCTP__PayloadProtocolID;
extern INTEGER modulepar_tsp__SCTP__PayloadProtocolID;
extern const BOOLEAN& tsp__Enable__M3UA__Heartbeat;
extern BOOLEAN modulepar_tsp__Enable__M3UA__Heartbeat;
extern const BOOLEAN& tsp__SCTP__Server__Mode;
extern BOOLEAN modulepar_tsp__SCTP__Server__Mode;
extern const BOOLEAN& tsp__M3UA__Server__Mode;
extern BOOLEAN modulepar_tsp__M3UA__Server__Mode;
extern const TTCN_Typedescriptor_t TRANSFERreq__Buffer_descr_;
extern UNIVERSAL_CHARSTRING TRANSFERreq__Buffer_0_default_coding;
extern const XERdescriptor_t SCTP__Association__Address_local__sctp__port_xer_;
extern const TTCN_Typedescriptor_t SCTP__Association__Address_local__sctp__port_descr_;
extern const XERdescriptor_t SCTP__Association__Address_local__ip__addr_xer_;
extern const TTCN_Typedescriptor_t SCTP__Association__Address_local__ip__addr_descr_;
extern const XERdescriptor_t SCTP__Association__Address_remote__sctp__port_xer_;
extern const TTCN_Typedescriptor_t SCTP__Association__Address_remote__sctp__port_descr_;
extern const XERdescriptor_t SCTP__Association__Address_remote__ip__addr_xer_;
extern const TTCN_Typedescriptor_t SCTP__Association__Address_remote__ip__addr_descr_;
extern const TTCN_Typedescriptor_t SCTP__Association__Address_descr_;
extern const TTCN_Typedescriptor_t M3UA__Entity_descr_;
extern const TTCN_Typedescriptor_t M3UA__CommStatus_descr_;
extern const XERdescriptor_t M3UA__Entity_sCTP__Assoc__ID_xer_;
extern const TTCN_Typedescriptor_t M3UA__Entity_sCTP__Assoc__ID_descr_;
extern UNIVERSAL_CHARSTRING M3UA__Entity_rctx_default_coding;
extern const TTCN_Typedescriptor_t& M3UA__CT_descr_;
extern M3UA__Entity M3UA__CT_component_v__Entity;
extern TRANSFERreq__Buffer M3UA__CT_component_v__TRANSFERreq__Buffer;
extern SCTPasp__Types::ASP__SCTP M3UA__CT_component_v__ASP__SCTP;
extern SCTPasp__Types::ASP__SCTP__SEND__FAILED M3UA__CT_component_v__ASP__SCTP__SEND__FAILED;
extern SCTPasp__Types::ASP__SCTP__RESULT M3UA__CT_component_v__ASP__SCTP__RESULT;
extern SCTPasp__Types::ASP__SCTP__Connected M3UA__CT_component_v__ASP__SCTP__Connected;
extern SCTPasp__Types::ASP__SCTP__ASSOC__CHANGE M3UA__CT_component_v__ASP__SCTP__ASSOC__CHANGE;
extern SCTPasp__Types::ASP__SCTP__SHUTDOWN__EVENT M3UA__CT_component_v__ASP__SCTP__SHUTDOWN__EVENT;
extern M3UA__Types::PDU__M3UA M3UA__CT_component_v__PDU__M3UA;
extern TIMER M3UA__CT_component_T__Timer;
extern TIMER M3UA__CT_component_T__ASPUP__resend;
extern TIMER M3UA__CT_component_T__ASPAC__resend;
extern TIMER M3UA__CT_component_T__Heartbeat;
extern TIMER M3UA__CT_component_T__Assoc__restart;
extern MTP3asp__SP__PT__Int M3UA__CT_component_MTP3__SP__PORT;
extern SCTPasp__PortType::SCTPasp__PT M3UA__CT_component_SCTP__PORT;
extern const M3UA__Types::PDU__M3UA_template& t__PDU__M3UA__ASPUP__Ack;
extern M3UA__Types::PDU__M3UA_template template_t__PDU__M3UA__ASPUP__Ack;
extern const M3UA__Types::PDU__M3UA_template& t__PDU__M3UA__ASPDN;
extern M3UA__Types::PDU__M3UA_template template_t__PDU__M3UA__ASPDN;
extern const M3UA__Types::PDU__M3UA_template& t__PDU__M3UA__ASPDN__Ack;
extern M3UA__Types::PDU__M3UA_template template_t__PDU__M3UA__ASPDN__Ack;
extern const INTEGER_template& f__M3UA__Emulation_rctx_defval;
extern INTEGER_template template_f__M3UA__Emulation_rctx_defval;
extern const BITSTRING bs_2,
bs_0,
bs_1;
extern const OCTETSTRING os_1,
os_12,
os_18,
os_16,
os_17,
os_0,
os_13,
os_14,
os_15,
os_2,
os_4,
os_10,
os_3,
os_5,
os_11,
os_6,
os_8,
os_7,
os_9;
extern const CHARSTRING cs_0;
extern const unsigned char module_checksum[];
extern TTCN_Module module_object;
extern const RuntimeVersionChecker ver_checker;

} /* end of namespace */

#endif
