// 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 HTTP__Adapter_HH
#define HTTP__Adapter_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 "HTTPmsg_PortType.hh"
#include "Native_Functions.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 HTTP__Adapter_HH
#endif

namespace HTTP__Adapter {

/* Forward declarations of classes */

class HTTP__Adapter__Params;
class HTTP__Adapter__Params_template;

} /* end of namespace */

#ifndef HTTP__Adapter_HH
#define HTTP__Adapter_HH

namespace HTTP__Adapter {

/* Type definitions */

typedef COMPONENT http__CT;
typedef COMPONENT_template http__CT_template;

/* Class definitions */

class HTTP__Adapter__Params {
  CHARSTRING field_http__host;
  INTEGER field_http__port;
  BOOLEAN field_use__ssl;
public:
  HTTP__Adapter__Params();
  HTTP__Adapter__Params(const CHARSTRING& par_http__host,
    const INTEGER& par_http__port,
    const BOOLEAN& par_use__ssl);
  HTTP__Adapter__Params(const HTTP__Adapter__Params& other_value);
  inline boolean is_component() { return FALSE; }
  void clean_up();
const TTCN_Typedescriptor_t* get_descriptor() const;
  HTTP__Adapter__Params& operator=(const HTTP__Adapter__Params& other_value);
  boolean operator==(const HTTP__Adapter__Params& other_value) const;
  inline boolean operator!=(const HTTP__Adapter__Params& other_value) const
    { return !(*this == other_value); }

  boolean is_bound() const;

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

  inline CHARSTRING& http__host()
    {return field_http__host;}
  inline const CHARSTRING& http__host() const
    {return field_http__host;}
  inline INTEGER& http__port()
    {return field_http__port;}
  inline const INTEGER& http__port() const
    {return field_http__port;}
  inline BOOLEAN& use__ssl()
    {return field_use__ssl;}
  inline const BOOLEAN& use__ssl() const
    {return field_use__ssl;}
  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 HTTP__Adapter__Params_template : public Base_Template {
struct single_value_struct;
union {
single_value_struct *single_value;
struct {
unsigned int n_values;
HTTP__Adapter__Params_template *list_value;
} value_list;
struct {
HTTP__Adapter__Params_template* precondition;
HTTP__Adapter__Params_template* implied_template;
} implication_;
dynmatch_struct<HTTP__Adapter__Params>* dyn_match;
};

void set_specific();
void copy_value(const HTTP__Adapter__Params& other_value);
void copy_template(const HTTP__Adapter__Params_template& other_value);

public:
HTTP__Adapter__Params_template();
HTTP__Adapter__Params_template(template_sel other_value);
HTTP__Adapter__Params_template(const HTTP__Adapter__Params& other_value);
HTTP__Adapter__Params_template(const OPTIONAL<HTTP__Adapter__Params>& other_value);
HTTP__Adapter__Params_template(HTTP__Adapter__Params_template* p_precondition, HTTP__Adapter__Params_template* p_implied_template);
HTTP__Adapter__Params_template(Dynamic_Match_Interface<HTTP__Adapter__Params>* p_dyn_match);
HTTP__Adapter__Params_template(const HTTP__Adapter__Params_template& other_value);
~HTTP__Adapter__Params_template();
HTTP__Adapter__Params_template& operator=(template_sel other_value);
HTTP__Adapter__Params_template& operator=(const HTTP__Adapter__Params& other_value);
HTTP__Adapter__Params_template& operator=(const OPTIONAL<HTTP__Adapter__Params>& other_value);
HTTP__Adapter__Params_template& operator=(const HTTP__Adapter__Params_template& other_value);
boolean match(const HTTP__Adapter__Params& other_value, boolean legacy = FALSE) const;
boolean is_bound() const;
boolean is_value() const;
void clean_up();
HTTP__Adapter__Params valueof() const;
void set_type(template_sel template_type, unsigned int list_length);
HTTP__Adapter__Params_template& list_item(unsigned int list_index) const;
CHARSTRING_template& http__host();
const CHARSTRING_template& http__host() const;
INTEGER_template& http__port();
const INTEGER_template& http__port() const;
BOOLEAN_template& use__ssl();
const BOOLEAN_template& use__ssl() const;
int size_of() const;
void log() const;
void log_match(const HTTP__Adapter__Params& 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 void f__http__init(const HTTP__Adapter__Params_template& http__pars);
extern void start_f__http__init(const COMPONENT& component_reference, const HTTP__Adapter__Params_template& http__pars);
extern HTTPmsg__Types::Connect_template ts__HTTP__Connect(const CHARSTRING_template& hostname, const INTEGER_template& http__port, const BOOLEAN_template& use__ssl);
extern HTTPmsg__Types::Close_template ts__HTTP__Close(const INTEGER_template& client__id);
extern HTTPmsg__Types::HeaderLines_template f__overlay__HTTP__Header(const HTTPmsg__Types::HeaderLines& hdr, const HTTPmsg__Types::HeaderLines& additional__hdr);
extern HTTPmsg__Types::HeaderLine_template ts__HeaderLine(const CHARSTRING& header__name, const CHARSTRING& header__value);
extern HTTPmsg__Types::HeaderLines_template f__ts__HTTP__Header(const CHARSTRING_template& body, const OCTETSTRING_template& binary__body, const CHARSTRING_template& content__type, const CHARSTRING_template& host, const HTTPmsg__Types::HeaderLines& custom__hdr);
extern CHARSTRING_template f__ts__body__or__empty(const CHARSTRING_template& body);
extern HTTPmsg__Types::HTTPMessage_template ts__HTTP__Req(const CHARSTRING& url, const CHARSTRING& method, const CHARSTRING_template& body, const CHARSTRING_template& content__type, const INTEGER& v__maj, const INTEGER& v__min, const CHARSTRING& host, const HTTPmsg__Types::HeaderLines& custom__hdr, const INTEGER_template& client__id);
extern OCTETSTRING_template f__ts__body__or__empty__bin(const OCTETSTRING_template& body);
extern HTTPmsg__Types::HTTPMessage_template ts__HTTP__Req__Bin(const CHARSTRING& url, const CHARSTRING& method, const OCTETSTRING_template& body, const CHARSTRING_template& content__type, const INTEGER& v__maj, const INTEGER& v__min, const CHARSTRING& host, const HTTPmsg__Types::HeaderLines& custom__hdr, const INTEGER_template& client__id);
extern HTTPmsg__Types::HTTPMessage_template tr__HTTP__Resp(const INTEGER_template& sts);
extern HTTPmsg__Types::HTTPMessage_template tr__HTTP__Resp__Bin(const INTEGER_template& sts);
extern void f__http__tx__request(const CHARSTRING& url, const CHARSTRING& method, const CHARSTRING_template& body, const OCTETSTRING_template& binary__body, const CHARSTRING& content__type, const HTTPmsg__Types::HeaderLines& custom__hdr, const FLOAT& tout, const INTEGER_template& client__id, const HTTP__Adapter__Params_template& http__pars);
extern void start_f__http__tx__request(const COMPONENT& component_reference, const CHARSTRING& url, const CHARSTRING& method, const CHARSTRING_template& body, const OCTETSTRING_template& binary__body, const CHARSTRING& content__type, const HTTPmsg__Types::HeaderLines& custom__hdr, const FLOAT& tout, const INTEGER_template& client__id, const HTTP__Adapter__Params_template& http__pars);
extern HTTPmsg__Types::HTTPMessage f__http__rx__response(const HTTPmsg__Types::HTTPMessage_template& exp, const FLOAT& tout, const INTEGER_template& client__id, const BOOLEAN& keep__connection);
extern void start_f__http__rx__response(const COMPONENT& component_reference, const HTTPmsg__Types::HTTPMessage_template& exp, const FLOAT& tout, const INTEGER_template& client__id, const BOOLEAN& keep__connection);
extern HTTPmsg__Types::HTTPMessage f__http__transact(const CHARSTRING& url, const CHARSTRING& method, const CHARSTRING_template& body, const OCTETSTRING_template& binary__body, const CHARSTRING& content__type, const HTTPmsg__Types::HTTPMessage_template& exp, const FLOAT& tout, const HTTPmsg__Types::HeaderLines& custom__hdr, const INTEGER_template& client__id, const BOOLEAN& keep__connection, const HTTP__Adapter__Params_template& http__pars);
extern void start_f__http__transact(const COMPONENT& component_reference, const CHARSTRING& url, const CHARSTRING& method, const CHARSTRING_template& body, const OCTETSTRING_template& binary__body, const CHARSTRING& content__type, const HTTPmsg__Types::HTTPMessage_template& exp, const FLOAT& tout, const HTTPmsg__Types::HeaderLines& custom__hdr, const INTEGER_template& client__id, const BOOLEAN& keep__connection, const HTTP__Adapter__Params_template& http__pars);
extern INTEGER_template f__http__client__id__from__http__response(const HTTPmsg__Types::HTTPMessage_template& response__http);
extern void pre_init_module();
extern void post_init_module();
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 TTCN_Typedescriptor_t& http__CT_descr_;
extern HTTPmsg__PortType::HTTPmsg__PT http__CT_component_HTTP;
extern const XERdescriptor_t HTTP__Adapter__Params_http__host_xer_;
extern const TTCN_Typedescriptor_t HTTP__Adapter__Params_http__host_descr_;
extern const XERdescriptor_t HTTP__Adapter__Params_http__port_xer_;
extern const TTCN_Typedescriptor_t HTTP__Adapter__Params_http__port_descr_;
extern const XERdescriptor_t HTTP__Adapter__Params_use__ssl_xer_;
extern const TTCN_OERdescriptor_t HTTP__Adapter__Params_use__ssl_oer_;
extern const TTCN_Typedescriptor_t HTTP__Adapter__Params_use__ssl_descr_;
extern const TTCN_Typedescriptor_t HTTP__Adapter__Params_descr_;
extern HTTP__Adapter__Params_template http__CT_component_g__http__pars;
extern const HTTP__Adapter__Params_template& f__http__init_http__pars_defval;
extern HTTP__Adapter__Params_template template_f__http__init_http__pars_defval;
extern const INTEGER_template& ts__HTTP__Connect_http__port_defval;
extern INTEGER_template template_ts__HTTP__Connect_http__port_defval;
extern const BOOLEAN_template& ts__HTTP__Connect_use__ssl_defval;
extern BOOLEAN_template template_ts__HTTP__Connect_use__ssl_defval;
extern const INTEGER_template& ts__HTTP__Close_client__id_defval;
extern INTEGER_template template_ts__HTTP__Close_client__id_defval;
extern const CHARSTRING_template& f__ts__HTTP__Header_body_defval;
extern CHARSTRING_template template_f__ts__HTTP__Header_body_defval;
extern const OCTETSTRING_template& f__ts__HTTP__Header_binary__body_defval;
extern OCTETSTRING_template template_f__ts__HTTP__Header_binary__body_defval;
extern const CHARSTRING_template& f__ts__HTTP__Header_content__type_defval;
extern CHARSTRING_template template_f__ts__HTTP__Header_content__type_defval;
extern const CHARSTRING_template& f__ts__HTTP__Header_host_defval;
extern CHARSTRING_template template_f__ts__HTTP__Header_host_defval;
extern const HTTPmsg__Types::HeaderLines& f__ts__HTTP__Header_custom__hdr_defval;
extern HTTPmsg__Types::HeaderLines const_f__ts__HTTP__Header_custom__hdr_defval;
extern const CHARSTRING& ts__HTTP__Req_method_defval;
extern CHARSTRING const_ts__HTTP__Req_method_defval;
extern const CHARSTRING_template& ts__HTTP__Req_body_defval;
extern CHARSTRING_template template_ts__HTTP__Req_body_defval;
extern const CHARSTRING_template& ts__HTTP__Req_content__type_defval;
extern CHARSTRING_template template_ts__HTTP__Req_content__type_defval;
extern const INTEGER& ts__HTTP__Req_v__maj_defval;
extern INTEGER const_ts__HTTP__Req_v__maj_defval;
extern const INTEGER& ts__HTTP__Req_v__min_defval;
extern INTEGER const_ts__HTTP__Req_v__min_defval;
extern const HTTPmsg__Types::HeaderLines& ts__HTTP__Req_custom__hdr_defval;
extern HTTPmsg__Types::HeaderLines const_ts__HTTP__Req_custom__hdr_defval;
extern const INTEGER_template& ts__HTTP__Req_client__id_defval;
extern INTEGER_template template_ts__HTTP__Req_client__id_defval;
extern const CHARSTRING& ts__HTTP__Req__Bin_method_defval;
extern CHARSTRING const_ts__HTTP__Req__Bin_method_defval;
extern const OCTETSTRING_template& ts__HTTP__Req__Bin_body_defval;
extern OCTETSTRING_template template_ts__HTTP__Req__Bin_body_defval;
extern const CHARSTRING_template& ts__HTTP__Req__Bin_content__type_defval;
extern CHARSTRING_template template_ts__HTTP__Req__Bin_content__type_defval;
extern const INTEGER& ts__HTTP__Req__Bin_v__maj_defval;
extern INTEGER const_ts__HTTP__Req__Bin_v__maj_defval;
extern const INTEGER& ts__HTTP__Req__Bin_v__min_defval;
extern INTEGER const_ts__HTTP__Req__Bin_v__min_defval;
extern const HTTPmsg__Types::HeaderLines& ts__HTTP__Req__Bin_custom__hdr_defval;
extern HTTPmsg__Types::HeaderLines const_ts__HTTP__Req__Bin_custom__hdr_defval;
extern const INTEGER_template& ts__HTTP__Req__Bin_client__id_defval;
extern INTEGER_template template_ts__HTTP__Req__Bin_client__id_defval;
extern const INTEGER_template& tr__HTTP__Resp_sts_defval;
extern INTEGER_template template_tr__HTTP__Resp_sts_defval;
extern const INTEGER_template& tr__HTTP__Resp__Bin_sts_defval;
extern INTEGER_template template_tr__HTTP__Resp__Bin_sts_defval;
extern const HTTPmsg__Types::HTTPMessage_template& tr__HTTP__Resp2xx;
extern HTTPmsg__Types::HTTPMessage_template template_tr__HTTP__Resp2xx;
extern const CHARSTRING& f__http__tx__request_method_defval;
extern CHARSTRING const_f__http__tx__request_method_defval;
extern const CHARSTRING_template& f__http__tx__request_body_defval;
extern CHARSTRING_template template_f__http__tx__request_body_defval;
extern const OCTETSTRING_template& f__http__tx__request_binary__body_defval;
extern OCTETSTRING_template template_f__http__tx__request_binary__body_defval;
extern const CHARSTRING& f__http__tx__request_content__type_defval;
extern CHARSTRING const_f__http__tx__request_content__type_defval;
extern const HTTPmsg__Types::HeaderLines& f__http__tx__request_custom__hdr_defval;
extern HTTPmsg__Types::HeaderLines const_f__http__tx__request_custom__hdr_defval;
extern const FLOAT& f__http__tx__request_tout_defval;
extern FLOAT const_f__http__tx__request_tout_defval;
extern const INTEGER_template& f__http__tx__request_client__id_defval;
extern INTEGER_template template_f__http__tx__request_client__id_defval;
extern const HTTP__Adapter__Params_template& f__http__tx__request_http__pars_defval;
extern HTTP__Adapter__Params_template template_f__http__tx__request_http__pars_defval;
extern const HTTPmsg__Types::HTTPMessage_template& f__http__rx__response_exp_defval;
extern HTTPmsg__Types::HTTPMessage_template template_f__http__rx__response_exp_defval;
extern const FLOAT& f__http__rx__response_tout_defval;
extern FLOAT const_f__http__rx__response_tout_defval;
extern const INTEGER_template& f__http__rx__response_client__id_defval;
extern INTEGER_template template_f__http__rx__response_client__id_defval;
extern const BOOLEAN& f__http__rx__response_keep__connection_defval;
extern BOOLEAN const_f__http__rx__response_keep__connection_defval;
extern const CHARSTRING& f__http__transact_method_defval;
extern CHARSTRING const_f__http__transact_method_defval;
extern const CHARSTRING_template& f__http__transact_body_defval;
extern CHARSTRING_template template_f__http__transact_body_defval;
extern const OCTETSTRING_template& f__http__transact_binary__body_defval;
extern OCTETSTRING_template template_f__http__transact_binary__body_defval;
extern const CHARSTRING& f__http__transact_content__type_defval;
extern CHARSTRING const_f__http__transact_content__type_defval;
extern const HTTPmsg__Types::HTTPMessage_template& f__http__transact_exp_defval;
extern HTTPmsg__Types::HTTPMessage_template template_f__http__transact_exp_defval;
extern const FLOAT& f__http__transact_tout_defval;
extern FLOAT const_f__http__transact_tout_defval;
extern const HTTPmsg__Types::HeaderLines& f__http__transact_custom__hdr_defval;
extern HTTPmsg__Types::HeaderLines const_f__http__transact_custom__hdr_defval;
extern const INTEGER_template& f__http__transact_client__id_defval;
extern INTEGER_template template_f__http__transact_client__id_defval;
extern const BOOLEAN& f__http__transact_keep__connection_defval;
extern BOOLEAN const_f__http__transact_keep__connection_defval;
extern const HTTP__Adapter__Params_template& f__http__transact_http__pars_defval;
extern HTTP__Adapter__Params_template template_f__http__transact_http__pars_defval;
extern const OCTETSTRING os_0;
extern const CHARSTRING cs_4,
cs_7,
cs_3,
cs_2,
cs_5,
cs_1,
cs_6,
cs_0;
extern const unsigned char module_checksum[];
extern TTCN_Module module_object;
extern const RuntimeVersionChecker ver_checker;

} /* end of namespace */

#endif
