/*
 *  MICO --- an Open Source CORBA implementation
 *  Copyright (c) 1997-2001 by The Mico Team
 *
 *  This file was automatically generated. DO NOT EDIT!
 */

#include <CORBA.h>

#ifndef __IOPTYPES_H__
#define __IOPTYPES_H__





namespace IOP {


typedef CORBA::ULong ServiceID;
typedef ServiceID& ServiceID_out;
struct ServiceContext;
typedef TVarVar<ServiceContext> ServiceContext_var;
typedef TVarOut<ServiceContext> ServiceContext_out;


struct ServiceContext {
  #ifdef HAVE_TYPEDEF_OVERLOAD
  typedef ServiceContext_var _var_type;
  #endif
  #ifdef HAVE_EXPLICIT_STRUCT_OPS
  ServiceContext();
  ~ServiceContext();
  ServiceContext( const ServiceContext& s );
  ServiceContext& operator=( const ServiceContext& s );
  #endif //HAVE_EXPLICIT_STRUCT_OPS

  ServiceID context_id;
  typedef SequenceTmpl<CORBA::Octet,MICO_TID_OCTET> _context_data_seq;
  _context_data_seq context_data;
};

typedef SequenceTmpl<ServiceContext,MICO_TID_DEF> ServiceContextList;
#ifdef _WINDOWS
static ServiceContextList _dummy_ServiceContextList;
#endif
typedef TSeqVar<SequenceTmpl<ServiceContext,MICO_TID_DEF> > ServiceContextList_var;
typedef TSeqOut<SequenceTmpl<ServiceContext,MICO_TID_DEF> > ServiceContextList_out;

MICO_EXPORT_CONST_DECL const ServiceID TransactionService;
MICO_EXPORT_CONST_DECL const ServiceID CodeSets;
MICO_EXPORT_CONST_DECL const ServiceID BI_DIR_IIOP;
typedef CORBA::ULong ComponentId;
typedef ComponentId& ComponentId_out;
struct TaggedComponent;
typedef TVarVar<TaggedComponent> TaggedComponent_var;
typedef TVarOut<TaggedComponent> TaggedComponent_out;


struct TaggedComponent {
  #ifdef HAVE_TYPEDEF_OVERLOAD
  typedef TaggedComponent_var _var_type;
  #endif
  #ifdef HAVE_EXPLICIT_STRUCT_OPS
  TaggedComponent();
  ~TaggedComponent();
  TaggedComponent( const TaggedComponent& s );
  TaggedComponent& operator=( const TaggedComponent& s );
  #endif //HAVE_EXPLICIT_STRUCT_OPS

  ComponentId tag;
  typedef SequenceTmpl<CORBA::Octet,MICO_TID_OCTET> _component_data_seq;
  _component_data_seq component_data;
};

typedef SequenceTmpl<TaggedComponent,MICO_TID_DEF> MultipleComponentProfile;
#ifdef _WINDOWS
static MultipleComponentProfile _dummy_MultipleComponentProfile;
#endif
typedef TSeqVar<SequenceTmpl<TaggedComponent,MICO_TID_DEF> > MultipleComponentProfile_var;
typedef TSeqOut<SequenceTmpl<TaggedComponent,MICO_TID_DEF> > MultipleComponentProfile_out;

}


namespace GIOP {


enum MsgType_1_1 {
  Request = 0,
  Reply,
  CancelRequest,
  LocateRequest,
  LocateReply,
  CloseConnection,
  MessageError,
  Fragment
};

typedef MsgType_1_1& MsgType_1_1_out;

typedef MsgType_1_1 MsgType;
typedef MsgType& MsgType_out;
enum ReplyStatusType_1_2 {
  NO_EXCEPTION = 0,
  USER_EXCEPTION,
  SYSTEM_EXCEPTION,
  LOCATION_FORWARD,
  LOCATION_FORWARD_PERM,
  NEEDS_ADDRESSING_MODE
};

typedef ReplyStatusType_1_2& ReplyStatusType_1_2_out;

typedef ReplyStatusType_1_2 ReplyStatusType;
typedef ReplyStatusType& ReplyStatusType_out;
enum LocateStatusType_1_2 {
  UNKNOWN_OBJECT = 0,
  OBJECT_HERE,
  OBJECT_FORWARD,
  OBJECT_FORWARD_PERM,
  LOC_SYSTEM_EXCEPTION,
  LOC_NEEDS_ADDRESSING_MODE
};

typedef LocateStatusType_1_2& LocateStatusType_1_2_out;

typedef LocateStatusType_1_2 LocateStatusType;
typedef LocateStatusType& LocateStatusType_out;
typedef CORBA::Short AddressingDisposition;
typedef AddressingDisposition& AddressingDisposition_out;
MICO_EXPORT_CONST_DECL const AddressingDisposition KeyAddr;
MICO_EXPORT_CONST_DECL const AddressingDisposition ProfileAddr;
MICO_EXPORT_CONST_DECL const AddressingDisposition ReferenceAddr;
}


namespace IIOP {


struct Version;
typedef TFixVar<Version> Version_var;
typedef Version& Version_out;


struct Version {
  #ifdef HAVE_TYPEDEF_OVERLOAD
  typedef Version_var _var_type;
  #endif
  #ifdef HAVE_EXPLICIT_STRUCT_OPS
  Version();
  ~Version();
  Version( const Version& s );
  Version& operator=( const Version& s );
  #endif //HAVE_EXPLICIT_STRUCT_OPS

  CORBA::Char major;
  CORBA::Char minor;
};

}


#ifndef MICO_CONF_NO_POA

#endif // MICO_CONF_NO_POA

#endif
