// **********************************************************************
//
// Generated by the ORBacus IDL-to-C++ Translator
//
// Copyright (c) 2003
// IONA Technologies, Inc.
// Waltham, MA, USA
//
// All Rights Reserved
//
// **********************************************************************

// Version: 4.1.3

#ifndef __OB_OCITypes_h__
#define __OB_OCITypes_h__

#ifndef OB_IMPORT
#   ifdef OB_DLL
#      define OB_IMPORT __declspec(dllimport)
#   else
#      define OB_IMPORT /**/
#   endif
#endif


#include <OB/IOP.h>
#include <OB/OCIBuffer.h>
#include <OB/Types.h>

#ifndef OB_INTEGER_VERSION
#   error No ORBacus version defined! Is <OB/CORBA.h> included?
#endif

#ifndef OB_NO_VERSION_CHECK
#   if (OB_INTEGER_VERSION != 4010300L)
#       error ORBacus version mismatch!
#   endif
#endif

namespace OCI
{

} // End of namespace OCI

namespace OCI
{

} // End of namespace OCI

namespace OBStubImpl_OCI
{

} // End of namespace OBStubImpl_OCI

namespace OBStubImpl_OCI
{

} // End of namespace OBStubImpl_OCI

//
// IDL:ooc.com/OCI:1.0
//
namespace OCI
{

//
// IDL:ooc.com/OCI/IOR:1.0
//
typedef ::IOP::IOR IOR;
typedef ::IOP::IOR_var IOR_var;
typedef ::IOP::IOR_out IOR_out;
OB_IMPORT extern OB::TypeCodeConst _tc_IOR;

//
// IDL:ooc.com/OCI/ProfileId:1.0
//
typedef ::CORBA::ULong ProfileId;
typedef ::CORBA::ULong_out ProfileId_out;
OB_IMPORT extern OB::TypeCodeConst _tc_ProfileId;

//
// IDL:ooc.com/OCI/ProfileIdSeq:1.0
//
class OBUnique_ProfileIdSeq { };

typedef OB::FixSeq< ::CORBA::ULong, OBUnique_ProfileIdSeq > ProfileIdSeq;
typedef OB::SeqVar< OB::FixSeq< ::CORBA::ULong, OBUnique_ProfileIdSeq > > ProfileIdSeq_var;
typedef OB::SeqOut< OB::FixSeq< ::CORBA::ULong, OBUnique_ProfileIdSeq > > ProfileIdSeq_out;
OB_IMPORT extern OB::TypeCodeConst _tc_ProfileIdSeq;

struct OBInfo_ProfileIdSeq : public OB::ConstructedInfo
{
    OBInfo_ProfileIdSeq() { }

    virtual void free(void* p) const
    {
        delete (ProfileIdSeq*)p;
    }

    virtual void* dup(const void* p) const
    {
        return new ProfileIdSeq(*(const ProfileIdSeq*)p);
    }

    virtual void marshal(const void*, OB::OutputStreamImpl*) const;
    virtual void unmarshal(void*, OB::InputStreamImpl*) const;
};

//
// IDL:ooc.com/OCI/PluginId:1.0
//
typedef char* PluginId;
typedef ::CORBA::String_var PluginId_var;
typedef ::CORBA::String_out PluginId_out;
OB_IMPORT extern OB::TypeCodeConst _tc_PluginId;

//
// IDL:ooc.com/OCI/PluginIdSeq:1.0
//
class OBUnique_PluginIdSeq { };

typedef OB::StrSeq< OBUnique_PluginIdSeq > PluginIdSeq;
typedef OB::SeqVar< OB::StrSeq< OBUnique_PluginIdSeq > > PluginIdSeq_var;
typedef OB::SeqOut< OB::StrSeq< OBUnique_PluginIdSeq > > PluginIdSeq_out;
OB_IMPORT extern OB::TypeCodeConst _tc_PluginIdSeq;

struct OBInfo_PluginIdSeq : public OB::ConstructedInfo
{
    OBInfo_PluginIdSeq() { }

    virtual void free(void* p) const
    {
        delete (PluginIdSeq*)p;
    }

    virtual void* dup(const void* p) const
    {
        return new PluginIdSeq(*(const PluginIdSeq*)p);
    }

    virtual void marshal(const void*, OB::OutputStreamImpl*) const;
    virtual void unmarshal(void*, OB::InputStreamImpl*) const;
};

//
// IDL:ooc.com/OCI/ObjectKey:1.0
//
typedef OB::FixSeq< ::CORBA::Octet, CORBA::OBUnique_OctetSeq > ObjectKey;
typedef OB::SeqVar< OB::FixSeq< ::CORBA::Octet, CORBA::OBUnique_OctetSeq > > ObjectKey_var;
typedef OB::SeqOut< OB::FixSeq< ::CORBA::Octet, CORBA::OBUnique_OctetSeq > > ObjectKey_out;
OB_IMPORT extern OB::TypeCodeConst _tc_ObjectKey;

struct OBInfo_ObjectKey : public OB::ConstructedInfo
{
    OBInfo_ObjectKey() { }

    virtual void free(void* p) const
    {
        delete (ObjectKey*)p;
    }

    virtual void* dup(const void* p) const
    {
        return new ObjectKey(*(const ObjectKey*)p);
    }

    virtual void marshal(const void*, OB::OutputStreamImpl*) const;
    virtual void unmarshal(void*, OB::InputStreamImpl*) const;
};

//
// IDL:ooc.com/OCI/TaggedComponentSeq:1.0
//
typedef OB::VarSeq< ::IOP::TaggedComponent, IOP::OBUnique_TaggedComponentSeq > TaggedComponentSeq;
typedef OB::SeqVar< OB::VarSeq< ::IOP::TaggedComponent, IOP::OBUnique_TaggedComponentSeq > > TaggedComponentSeq_var;
typedef OB::SeqOut< OB::VarSeq< ::IOP::TaggedComponent, IOP::OBUnique_TaggedComponentSeq > > TaggedComponentSeq_out;
OB_IMPORT extern OB::TypeCodeConst _tc_TaggedComponentSeq;

struct OBInfo_TaggedComponentSeq : public OB::ConstructedInfo
{
    OBInfo_TaggedComponentSeq() { }

    virtual void free(void* p) const
    {
        delete (TaggedComponentSeq*)p;
    }

    virtual void* dup(const void* p) const
    {
        return new TaggedComponentSeq(*(const TaggedComponentSeq*)p);
    }

    virtual void marshal(const void*, OB::OutputStreamImpl*) const;
    virtual void unmarshal(void*, OB::InputStreamImpl*) const;
};

//
// IDL:ooc.com/OCI/Handle:1.0
//
typedef ::CORBA::Long Handle;
typedef ::CORBA::Long_out Handle_out;
OB_IMPORT extern OB::TypeCodeConst _tc_Handle;

//
// IDL:ooc.com/OCI/SendReceiveMode:1.0
//
enum SendReceiveMode
{
    SendOnly,
    ReceiveOnly,
    SendReceive
};

typedef SendReceiveMode& SendReceiveMode_out;

OB_IMPORT extern OB::TypeCodeConst _tc_SendReceiveMode;

//
// IDL:ooc.com/OCI/ProfileInfo:1.0
//
struct ProfileInfo;
typedef OB::VarVar< ProfileInfo > ProfileInfo_var;
typedef OB::VarOut< ProfileInfo > ProfileInfo_out;

struct ProfileInfo
{
#ifdef OB_CLEAR_MEM
    ProfileInfo();
#else
    ProfileInfo() { }
#endif
    ProfileInfo(const ProfileInfo&);
    ProfileInfo& operator=(const ProfileInfo&);

    typedef ProfileInfo_var _var_type;

    ObjectKey key;
    ::CORBA::Octet major;
    ::CORBA::Octet minor;
    ProfileId id;
    ::CORBA::ULong index;
    TaggedComponentSeq components;

    void _OB_marshal(OB::OutputStreamImpl*) const;
    static void _OB_unmarshal(ProfileInfo&, OB::InputStreamImpl*);
};

OB_IMPORT extern OB::TypeCodeConst _tc_ProfileInfo;

//
// IDL:ooc.com/OCI/ProfileInfoSeq:1.0
//
class OBUnique_ProfileInfoSeq { };

typedef OB::VarSeq< ProfileInfo, OBUnique_ProfileInfoSeq > ProfileInfoSeq;
typedef OB::SeqVar< OB::VarSeq< ProfileInfo, OBUnique_ProfileInfoSeq > > ProfileInfoSeq_var;
typedef OB::SeqOut< OB::VarSeq< ProfileInfo, OBUnique_ProfileInfoSeq > > ProfileInfoSeq_out;
OB_IMPORT extern OB::TypeCodeConst _tc_ProfileInfoSeq;

struct OBInfo_ProfileInfoSeq : public OB::ConstructedInfo
{
    OBInfo_ProfileInfoSeq() { }

    virtual void free(void* p) const
    {
        delete (ProfileInfoSeq*)p;
    }

    virtual void* dup(const void* p) const
    {
        return new ProfileInfoSeq(*(const ProfileInfoSeq*)p);
    }

    virtual void marshal(const void*, OB::OutputStreamImpl*) const;
    virtual void unmarshal(void*, OB::InputStreamImpl*) const;
};

//
// IDL:ooc.com/OCI/ParamSeq:1.0
//
class OBUnique_ParamSeq { };

typedef OB::StrSeq< OBUnique_ParamSeq > ParamSeq;
typedef OB::SeqVar< OB::StrSeq< OBUnique_ParamSeq > > ParamSeq_var;
typedef OB::SeqOut< OB::StrSeq< OBUnique_ParamSeq > > ParamSeq_out;
OB_IMPORT extern OB::TypeCodeConst _tc_ParamSeq;

struct OBInfo_ParamSeq : public OB::ConstructedInfo
{
    OBInfo_ParamSeq() { }

    virtual void free(void* p) const
    {
        delete (ParamSeq*)p;
    }

    virtual void* dup(const void* p) const
    {
        return new ParamSeq(*(const ParamSeq*)p);
    }

    virtual void marshal(const void*, OB::OutputStreamImpl*) const;
    virtual void unmarshal(void*, OB::InputStreamImpl*) const;
};

} // End of namespace OCI

//
// IDL:ooc.com/OCI:1.0
//
namespace OBProxy_OCI
{

} // End of namespace OBProxy_OCI

//
// IDL:ooc.com/OCI:1.0
//
namespace OBStubImpl_OCI
{

} // End of namespace OBStubImpl_OCI

//
// IDL:ooc.com/OCI:1.0
//
namespace OBMarshalStubImpl_OCI
{

} // End of namespace OBMarshalStubImpl_OCI

//
// IDL:ooc.com/OCI:1.0
//
namespace OBV_OCI
{

} // End of namespace OBV_OCI

//
// IDL:ooc.com/OCI/ProfileIdSeq:1.0
//
void operator<<=(::CORBA::Any&, OCI::ProfileIdSeq*);
void operator<<=(::CORBA::Any&, const OCI::ProfileIdSeq&);
CORBA::Boolean operator>>=(const ::CORBA::Any&, const OCI::ProfileIdSeq*&);

inline void
operator<<=(::CORBA::Any_var& any, OCI::ProfileIdSeq* val)
{
    any.inout() <<= val;
}

inline void
operator<<=(::CORBA::Any_var& any, const OCI::ProfileIdSeq& val)
{
    any.inout() <<= val;
}

inline ::CORBA::Boolean
operator>>=(const ::CORBA::Any_var& any, const OCI::ProfileIdSeq*& val)
{
    return any.in() >>= val;
}

//
// IDL:ooc.com/OCI/PluginIdSeq:1.0
//
void operator<<=(::CORBA::Any&, OCI::PluginIdSeq*);
void operator<<=(::CORBA::Any&, const OCI::PluginIdSeq&);
CORBA::Boolean operator>>=(const ::CORBA::Any&, const OCI::PluginIdSeq*&);

inline void
operator<<=(::CORBA::Any_var& any, OCI::PluginIdSeq* val)
{
    any.inout() <<= val;
}

inline void
operator<<=(::CORBA::Any_var& any, const OCI::PluginIdSeq& val)
{
    any.inout() <<= val;
}

inline ::CORBA::Boolean
operator>>=(const ::CORBA::Any_var& any, const OCI::PluginIdSeq*& val)
{
    return any.in() >>= val;
}

//
// IDL:ooc.com/OCI/SendReceiveMode:1.0
//
void operator<<=(::CORBA::Any&, OCI::SendReceiveMode);
CORBA::Boolean operator>>=(const ::CORBA::Any&, OCI::SendReceiveMode&);

inline void
operator<<=(::CORBA::Any_var& any, OCI::SendReceiveMode val)
{
    any.inout() <<= val;
}

inline ::CORBA::Boolean
operator>>=(const ::CORBA::Any_var& any, OCI::SendReceiveMode& val)
{
    return any.in() >>= val;
}

//
// IDL:ooc.com/OCI/ProfileInfo:1.0
//
void operator<<=(::CORBA::Any&, OCI::ProfileInfo*);
void operator<<=(::CORBA::Any&, const OCI::ProfileInfo&);
CORBA::Boolean operator>>=(const ::CORBA::Any&, const OCI::ProfileInfo*&);

inline void
operator<<=(::CORBA::Any_var& any, OCI::ProfileInfo* val)
{
    any.inout() <<= val;
}

inline void
operator<<=(::CORBA::Any_var& any, const OCI::ProfileInfo& val)
{
    any.inout() <<= val;
}

inline ::CORBA::Boolean
operator>>=(const ::CORBA::Any_var& any, const OCI::ProfileInfo*& val)
{
    return any.in() >>= val;
}

//
// IDL:ooc.com/OCI/ProfileInfoSeq:1.0
//
void operator<<=(::CORBA::Any&, OCI::ProfileInfoSeq*);
void operator<<=(::CORBA::Any&, const OCI::ProfileInfoSeq&);
CORBA::Boolean operator>>=(const ::CORBA::Any&, const OCI::ProfileInfoSeq*&);

inline void
operator<<=(::CORBA::Any_var& any, OCI::ProfileInfoSeq* val)
{
    any.inout() <<= val;
}

inline void
operator<<=(::CORBA::Any_var& any, const OCI::ProfileInfoSeq& val)
{
    any.inout() <<= val;
}

inline ::CORBA::Boolean
operator>>=(const ::CORBA::Any_var& any, const OCI::ProfileInfoSeq*& val)
{
    return any.in() >>= val;
}

//
// IDL:ooc.com/OCI/ParamSeq:1.0
//
void operator<<=(::CORBA::Any&, OCI::ParamSeq*);
void operator<<=(::CORBA::Any&, const OCI::ParamSeq&);
CORBA::Boolean operator>>=(const ::CORBA::Any&, const OCI::ParamSeq*&);

inline void
operator<<=(::CORBA::Any_var& any, OCI::ParamSeq* val)
{
    any.inout() <<= val;
}

inline void
operator<<=(::CORBA::Any_var& any, const OCI::ParamSeq& val)
{
    any.inout() <<= val;
}

inline ::CORBA::Boolean
operator>>=(const ::CORBA::Any_var& any, const OCI::ParamSeq*& val)
{
    return any.in() >>= val;
}

#endif
