// **********************************************************************
//
// Generated by the ORBacus IDL-to-C++ Translator
//
// Copyright (c) 1998
// Object-Oriented Concepts, Inc.
// Billerica, MA, USA
//
// Copyright (c) 1998
// Object-Oriented Concepts GmbH
// Ettlingen, Germany
//
// All Rights Reserved
//
// **********************************************************************

// Version: 3.0
// License: non-commercial

#ifndef __IOP_h__
#define __IOP_h__

//
// IDL:omg.org/IOP:1.0
//

//
// IDL:omg.org/IOP/ProfileId:1.0
//
typedef CORBA_ULong IOP_ProfileId;

//
// IDL:omg.org/IOP/TAG_INTERNET_IOP:1.0
//
OB_IMPORT extern const IOP_ProfileId IOP_TAG_INTERNET_IOP;

//
// IDL:omg.org/IOP/TAG_MULTIPLE_COMPONENTS:1.0
//
OB_IMPORT extern const IOP_ProfileId IOP_TAG_MULTIPLE_COMPONENTS;

//
// IDL:omg.org/IOP/TaggedProfile:1.0
//
struct IOP_TaggedProfile
{
#ifdef OB_CLEAR_MEM
    IOP_TaggedProfile();
#else
    IOP_TaggedProfile() { }
#endif
    IOP_TaggedProfile(const IOP_TaggedProfile&);
    ~IOP_TaggedProfile() { }
    IOP_TaggedProfile& operator=(const IOP_TaggedProfile&);

    IOP_ProfileId tag;
    OBFixSeq< CORBA_Octet > profile_data;
};

typedef OBVarVar< IOP_TaggedProfile > IOP_TaggedProfile_var;

//
// IDL:omg.org/IOP/IOR:1.0
//
struct IOP_IOR
{
    IOP_IOR() { }
    IOP_IOR(const IOP_IOR&);
    ~IOP_IOR() { }
    IOP_IOR& operator=(const IOP_IOR&);

    CORBA_String_var type_id;
    OBVarSeq< IOP_TaggedProfile > profiles;
};

typedef OBVarVar< IOP_IOR > IOP_IOR_var;

//
// IDL:omg.org/IOP/ComponentId:1.0
//
typedef CORBA_ULong IOP_ComponentId;

//
// IDL:omg.org/IOP/TaggedComponent:1.0
//
struct IOP_TaggedComponent
{
#ifdef OB_CLEAR_MEM
    IOP_TaggedComponent();
#else
    IOP_TaggedComponent() { }
#endif
    IOP_TaggedComponent(const IOP_TaggedComponent&);
    ~IOP_TaggedComponent() { }
    IOP_TaggedComponent& operator=(const IOP_TaggedComponent&);

    IOP_ComponentId tag;
    OBFixSeq< CORBA_Octet > component_data;
};

typedef OBVarVar< IOP_TaggedComponent > IOP_TaggedComponent_var;

//
// IDL:omg.org/IOP/MultipleComponentProfile:1.0
//
typedef OBVarSeq< IOP_TaggedComponent > IOP_MultipleComponentProfile;
typedef OBSeqVar< OBVarSeq< IOP_TaggedComponent > > IOP_MultipleComponentProfile_var;

//
// IDL:omg.org/IOP/ServiceId:1.0
//
typedef CORBA_ULong IOP_ServiceId;

//
// IDL:omg.org/IOP/ServiceContext:1.0
//
struct IOP_ServiceContext
{
#ifdef OB_CLEAR_MEM
    IOP_ServiceContext();
#else
    IOP_ServiceContext() { }
#endif
    IOP_ServiceContext(const IOP_ServiceContext&);
    ~IOP_ServiceContext() { }
    IOP_ServiceContext& operator=(const IOP_ServiceContext&);

    IOP_ServiceId context_id;
    OBFixSeq< CORBA_Octet > context_data;
};

typedef OBVarVar< IOP_ServiceContext > IOP_ServiceContext_var;

//
// IDL:omg.org/IOP/ServiceContextList:1.0
//
typedef OBVarSeq< IOP_ServiceContext > IOP_ServiceContextList;
typedef OBSeqVar< OBVarSeq< IOP_ServiceContext > > IOP_ServiceContextList_var;

//
// IDL:omg.org/IOP/TransactionService:1.0
//
OB_IMPORT extern const IOP_ServiceId IOP_TransactionService;

//
// IDL:omg.org/IOP/CodeSets:1.0
//
OB_IMPORT extern const IOP_ServiceId IOP_CodeSets;

//
// IDL:omg.org/IOP/TaggedProfile:1.0
//
void OBMarshal(const IOP_TaggedProfile&, CORBA_Octet*&);
void OBMarshalCount(const IOP_TaggedProfile&, CORBA_ULong&);
void OBUnmarshal(IOP_TaggedProfile&, const CORBA_Octet*&, bool);

//
// IDL:omg.org/IOP/IOR:1.0
//
void OBMarshal(const IOP_IOR&, CORBA_Octet*&);
void OBMarshalCount(const IOP_IOR&, CORBA_ULong&);
void OBUnmarshal(IOP_IOR&, const CORBA_Octet*&, bool);

//
// IDL:omg.org/IOP/TaggedComponent:1.0
//
void OBMarshal(const IOP_TaggedComponent&, CORBA_Octet*&);
void OBMarshalCount(const IOP_TaggedComponent&, CORBA_ULong&);
void OBUnmarshal(IOP_TaggedComponent&, const CORBA_Octet*&, bool);

//
// IDL:omg.org/IOP/ServiceContext:1.0
//
void OBMarshal(const IOP_ServiceContext&, CORBA_Octet*&);
void OBMarshalCount(const IOP_ServiceContext&, CORBA_ULong&);
void OBUnmarshal(IOP_ServiceContext&, const CORBA_Octet*&, bool);

//
// OBVarSeq< IOP_TaggedProfile >
//
#ifndef OB_use_OBVarSeq_IOP__TaggedProfile
#define OB_use_OBVarSeq_IOP__TaggedProfile
#define OB_use_OBVarSeq_IOP__TaggedProfile_from_IOP_h

void OBMarshal(const OBVarSeq< IOP_TaggedProfile >&, CORBA_Octet*&);
void OBMarshalCount(const OBVarSeq< IOP_TaggedProfile >&, CORBA_ULong&);
void OBUnmarshal(OBVarSeq< IOP_TaggedProfile >&, const CORBA_Octet*&, bool);

#endif

//
// OBVarSeq< IOP_TaggedComponent >
//
#ifndef OB_use_OBVarSeq_IOP__TaggedComponent
#define OB_use_OBVarSeq_IOP__TaggedComponent
#define OB_use_OBVarSeq_IOP__TaggedComponent_from_IOP_h

void OBMarshal(const OBVarSeq< IOP_TaggedComponent >&, CORBA_Octet*&);
void OBMarshalCount(const OBVarSeq< IOP_TaggedComponent >&, CORBA_ULong&);
void OBUnmarshal(OBVarSeq< IOP_TaggedComponent >&, const CORBA_Octet*&, bool);

#endif

//
// OBVarSeq< IOP_ServiceContext >
//
#ifndef OB_use_OBVarSeq_IOP__ServiceContext
#define OB_use_OBVarSeq_IOP__ServiceContext
#define OB_use_OBVarSeq_IOP__ServiceContext_from_IOP_h

void OBMarshal(const OBVarSeq< IOP_ServiceContext >&, CORBA_Octet*&);
void OBMarshalCount(const OBVarSeq< IOP_ServiceContext >&, CORBA_ULong&);
void OBUnmarshal(OBVarSeq< IOP_ServiceContext >&, const CORBA_Octet*&, bool);

#endif

#endif
