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

// Version: 3.2
// License: non-commercial

#ifndef __OCI_IIOP_h__
#define __OCI_IIOP_h__

#include <OB/OCI.h>
#include <OB/GIOP.h>

#ifndef OB_INTEGER_VERSION
#   error No ORBacus version defined!
#endif

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

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

//
// IDL:omg.org/CORBA:1.0
//

//
// IDL:omg.org/CORBA/Policy:1.0
//
class CORBA_Policy;
typedef CORBA_Policy* CORBA_Policy_ptr;
typedef CORBA_Policy* CORBA_PolicyRef;
void OBDuplicate(CORBA_Policy_ptr);
void OBRelease(CORBA_Policy_ptr);
typedef OBObjVar< CORBA_Policy > CORBA_Policy_var;

//
// IDL:omg.org/CORBA/Current:1.0
//
class CORBA_Current;
typedef CORBA_Current* CORBA_Current_ptr;
typedef CORBA_Current* CORBA_CurrentRef;
void OBDuplicate(CORBA_Current_ptr);
void OBRelease(CORBA_Current_ptr);
typedef OBObjVar< CORBA_Current > CORBA_Current_var;

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

//
// IDL:ooc.com/OCI/Buffer:1.0
//
class OCI_Buffer;
typedef OCI_Buffer* OCI_Buffer_ptr;
typedef OCI_Buffer* OCI_BufferRef;
void OBDuplicate(OCI_Buffer_ptr);
void OBRelease(OCI_Buffer_ptr);
typedef OBObjVar< OCI_Buffer > OCI_Buffer_var;

//
// IDL:ooc.com/OCI/Transport:1.0
//
class OCI_Transport;
typedef OCI_Transport* OCI_Transport_ptr;
typedef OCI_Transport* OCI_TransportRef;
void OBDuplicate(OCI_Transport_ptr);
void OBRelease(OCI_Transport_ptr);
typedef OBObjVar< OCI_Transport > OCI_Transport_var;

//
// IDL:ooc.com/OCI/TransportInfo:1.0
//
class OCI_TransportInfo;
typedef OCI_TransportInfo* OCI_TransportInfo_ptr;
typedef OCI_TransportInfo* OCI_TransportInfoRef;
void OBDuplicate(OCI_TransportInfo_ptr);
void OBRelease(OCI_TransportInfo_ptr);
typedef OBObjVar< OCI_TransportInfo > OCI_TransportInfo_var;

//
// IDL:ooc.com/OCI/CloseCB:1.0
//
class OCI_CloseCB;
typedef OCI_CloseCB* OCI_CloseCB_ptr;
typedef OCI_CloseCB* OCI_CloseCBRef;
void OBDuplicate(OCI_CloseCB_ptr);
void OBRelease(OCI_CloseCB_ptr);
typedef OBObjVar< OCI_CloseCB > OCI_CloseCB_var;

//
// IDL:ooc.com/OCI/Connector:1.0
//
class OCI_Connector;
typedef OCI_Connector* OCI_Connector_ptr;
typedef OCI_Connector* OCI_ConnectorRef;
void OBDuplicate(OCI_Connector_ptr);
void OBRelease(OCI_Connector_ptr);
typedef OBObjVar< OCI_Connector > OCI_Connector_var;

//
// IDL:ooc.com/OCI/ConnectorInfo:1.0
//
class OCI_ConnectorInfo;
typedef OCI_ConnectorInfo* OCI_ConnectorInfo_ptr;
typedef OCI_ConnectorInfo* OCI_ConnectorInfoRef;
void OBDuplicate(OCI_ConnectorInfo_ptr);
void OBRelease(OCI_ConnectorInfo_ptr);
typedef OBObjVar< OCI_ConnectorInfo > OCI_ConnectorInfo_var;

//
// IDL:ooc.com/OCI/ConnectCB:1.0
//
class OCI_ConnectCB;
typedef OCI_ConnectCB* OCI_ConnectCB_ptr;
typedef OCI_ConnectCB* OCI_ConnectCBRef;
void OBDuplicate(OCI_ConnectCB_ptr);
void OBRelease(OCI_ConnectCB_ptr);
typedef OBObjVar< OCI_ConnectCB > OCI_ConnectCB_var;

//
// IDL:ooc.com/OCI/Acceptor:1.0
//
class OCI_Acceptor;
typedef OCI_Acceptor* OCI_Acceptor_ptr;
typedef OCI_Acceptor* OCI_AcceptorRef;
void OBDuplicate(OCI_Acceptor_ptr);
void OBRelease(OCI_Acceptor_ptr);
typedef OBObjVar< OCI_Acceptor > OCI_Acceptor_var;

//
// IDL:ooc.com/OCI/AcceptorInfo:1.0
//
class OCI_AcceptorInfo;
typedef OCI_AcceptorInfo* OCI_AcceptorInfo_ptr;
typedef OCI_AcceptorInfo* OCI_AcceptorInfoRef;
void OBDuplicate(OCI_AcceptorInfo_ptr);
void OBRelease(OCI_AcceptorInfo_ptr);
typedef OBObjVar< OCI_AcceptorInfo > OCI_AcceptorInfo_var;

//
// IDL:ooc.com/OCI/AcceptCB:1.0
//
class OCI_AcceptCB;
typedef OCI_AcceptCB* OCI_AcceptCB_ptr;
typedef OCI_AcceptCB* OCI_AcceptCBRef;
void OBDuplicate(OCI_AcceptCB_ptr);
void OBRelease(OCI_AcceptCB_ptr);
typedef OBObjVar< OCI_AcceptCB > OCI_AcceptCB_var;

//
// IDL:ooc.com/OCI/ConFactory:1.0
//
class OCI_ConFactory;
typedef OCI_ConFactory* OCI_ConFactory_ptr;
typedef OCI_ConFactory* OCI_ConFactoryRef;
void OBDuplicate(OCI_ConFactory_ptr);
void OBRelease(OCI_ConFactory_ptr);
typedef OBObjVar< OCI_ConFactory > OCI_ConFactory_var;

//
// IDL:ooc.com/OCI/ConFactoryInfo:1.0
//
class OCI_ConFactoryInfo;
typedef OCI_ConFactoryInfo* OCI_ConFactoryInfo_ptr;
typedef OCI_ConFactoryInfo* OCI_ConFactoryInfoRef;
void OBDuplicate(OCI_ConFactoryInfo_ptr);
void OBRelease(OCI_ConFactoryInfo_ptr);
typedef OBObjVar< OCI_ConFactoryInfo > OCI_ConFactoryInfo_var;

//
// IDL:ooc.com/OCI/ConFactoryRegistry:1.0
//
class OCI_ConFactoryRegistry;
typedef OCI_ConFactoryRegistry* OCI_ConFactoryRegistry_ptr;
typedef OCI_ConFactoryRegistry* OCI_ConFactoryRegistryRef;
void OBDuplicate(OCI_ConFactoryRegistry_ptr);
void OBRelease(OCI_ConFactoryRegistry_ptr);
typedef OBObjVar< OCI_ConFactoryRegistry > OCI_ConFactoryRegistry_var;

//
// IDL:ooc.com/OCI/AccRegistry:1.0
//
class OCI_AccRegistry;
typedef OCI_AccRegistry* OCI_AccRegistry_ptr;
typedef OCI_AccRegistry* OCI_AccRegistryRef;
void OBDuplicate(OCI_AccRegistry_ptr);
void OBRelease(OCI_AccRegistry_ptr);
typedef OBObjVar< OCI_AccRegistry > OCI_AccRegistry_var;

//
// IDL:ooc.com/OCI/Current:1.0
//
class OCI_Current;
typedef OCI_Current* OCI_Current_ptr;
typedef OCI_Current* OCI_CurrentRef;
void OBDuplicate(OCI_Current_ptr);
void OBRelease(OCI_Current_ptr);
typedef OBObjVar< OCI_Current > OCI_Current_var;

//
// IDL:ooc.com/OCI/IIOP:1.0
//

//
// IDL:ooc.com/OCI/IIOP/TransportInfo:1.0
//
class OCI_IIOP_TransportInfo;
typedef OCI_IIOP_TransportInfo* OCI_IIOP_TransportInfo_ptr;
typedef OCI_IIOP_TransportInfo* OCI_IIOP_TransportInfoRef;
void OBDuplicate(OCI_IIOP_TransportInfo_ptr);
void OBRelease(OCI_IIOP_TransportInfo_ptr);
typedef OBObjVar< OCI_IIOP_TransportInfo > OCI_IIOP_TransportInfo_var;

//
// IDL:ooc.com/OCI/IIOP/ConnectorInfo:1.0
//
class OCI_IIOP_ConnectorInfo;
typedef OCI_IIOP_ConnectorInfo* OCI_IIOP_ConnectorInfo_ptr;
typedef OCI_IIOP_ConnectorInfo* OCI_IIOP_ConnectorInfoRef;
void OBDuplicate(OCI_IIOP_ConnectorInfo_ptr);
void OBRelease(OCI_IIOP_ConnectorInfo_ptr);
typedef OBObjVar< OCI_IIOP_ConnectorInfo > OCI_IIOP_ConnectorInfo_var;

//
// IDL:ooc.com/OCI/IIOP/AcceptorInfo:1.0
//
class OCI_IIOP_AcceptorInfo;
typedef OCI_IIOP_AcceptorInfo* OCI_IIOP_AcceptorInfo_ptr;
typedef OCI_IIOP_AcceptorInfo* OCI_IIOP_AcceptorInfoRef;
void OBDuplicate(OCI_IIOP_AcceptorInfo_ptr);
void OBRelease(OCI_IIOP_AcceptorInfo_ptr);
typedef OBObjVar< OCI_IIOP_AcceptorInfo > OCI_IIOP_AcceptorInfo_var;

//
// IDL:ooc.com/OCI/IIOP/ConFactoryInfo:1.0
//
class OCI_IIOP_ConFactoryInfo;
typedef OCI_IIOP_ConFactoryInfo* OCI_IIOP_ConFactoryInfo_ptr;
typedef OCI_IIOP_ConFactoryInfo* OCI_IIOP_ConFactoryInfoRef;
void OBDuplicate(OCI_IIOP_ConFactoryInfo_ptr);
void OBRelease(OCI_IIOP_ConFactoryInfo_ptr);
typedef OBObjVar< OCI_IIOP_ConFactoryInfo > OCI_IIOP_ConFactoryInfo_var;

//
// IDL:ooc.com/OCI/IIOP/InetAddr:1.0
//
typedef CORBA_Octet OCI_IIOP_InetAddr[4];
typedef CORBA_Octet OCI_IIOP_InetAddr_slice;
typedef OBFixArrayVar< CORBA_Octet, CORBA_Octet, 4 > OCI_IIOP_InetAddr_var;
typedef OBFixArrayForAny< CORBA_Octet, CORBA_Octet, 4 > OCI_IIOP_InetAddr_forany;

inline OCI_IIOP_InetAddr_slice*
OCI_IIOP_InetAddr_alloc()
{
    return new OBUnsignedChar[4];
}

inline OCI_IIOP_InetAddr_slice*
OCI_IIOP_InetAddr_dup(const OCI_IIOP_InetAddr_slice* s)
{
    OCI_IIOP_InetAddr_slice* to = new OBUnsignedChar[4];
    memcpy(to, s, 4 * sizeof(OBUnsignedChar));
    return to;
}

inline void
OCI_IIOP_InetAddr_copy(const OCI_IIOP_InetAddr_slice* s, OCI_IIOP_InetAddr_slice* to)
{
    memcpy(to, s, 4 * sizeof(OBUnsignedChar));
}

inline void
OCI_IIOP_InetAddr_free(OCI_IIOP_InetAddr_slice* s)
{
    delete [] s;
}

#ifdef HAVE_VCPLUSPLUS_BUGS

inline OCI_IIOP_InetAddr_slice*
OCI_IIOP_InetAddr_dup(OCI_IIOP_InetAddr_slice* s)
{
    return OCI_IIOP_InetAddr_dup((const OCI_IIOP_InetAddr_slice*) s);
}

inline void
OCI_IIOP_InetAddr_copy(OCI_IIOP_InetAddr_slice* s, OCI_IIOP_InetAddr_slice* to)
{
    OCI_IIOP_InetAddr_copy((const OCI_IIOP_InetAddr_slice*) s, to);
}

#endif

//
// IDL:ooc.com/OCI/IIOP/TransportInfo:1.0
//
class OCI_IIOP_TransportInfo : public OCI_TransportInfo
{
    OCI_IIOP_TransportInfo(const OCI_IIOP_TransportInfo&);
    void operator=(const OCI_IIOP_TransportInfo&);

public:

    OCI_IIOP_TransportInfo() { }

    static inline OCI_IIOP_TransportInfo_ptr
    _duplicate(OCI_IIOP_TransportInfo_ptr p)
    {
        if(p)
            p -> _OB_incRef();
        return p;
    }

    static inline OCI_IIOP_TransportInfo_ptr
    _nil()
    {
        return 0;
    }

    static OCI_IIOP_TransportInfo_ptr _narrow(CORBA_Object_ptr);
    virtual void* _OB_narrowHelp(const char*) const;
    virtual const char* _OB_typeId() const;

    //
    // IDL:ooc.com/OCI/IIOP/TransportInfo/addr:1.0
    //
    virtual OCI_IIOP_InetAddr_slice* addr() = 0;

    //
    // IDL:ooc.com/OCI/IIOP/TransportInfo/port:1.0
    //
    virtual CORBA_UShort port() = 0;

    //
    // IDL:ooc.com/OCI/IIOP/TransportInfo/remote_addr:1.0
    //
    virtual OCI_IIOP_InetAddr_slice* remote_addr() = 0;

    //
    // IDL:ooc.com/OCI/IIOP/TransportInfo/remote_port:1.0
    //
    virtual CORBA_UShort remote_port() = 0;
};

//
// IDL:ooc.com/OCI/IIOP/ConnectorInfo:1.0
//
class OCI_IIOP_ConnectorInfo : public OCI_ConnectorInfo
{
    OCI_IIOP_ConnectorInfo(const OCI_IIOP_ConnectorInfo&);
    void operator=(const OCI_IIOP_ConnectorInfo&);

public:

    OCI_IIOP_ConnectorInfo() { }

    static inline OCI_IIOP_ConnectorInfo_ptr
    _duplicate(OCI_IIOP_ConnectorInfo_ptr p)
    {
        if(p)
            p -> _OB_incRef();
        return p;
    }

    static inline OCI_IIOP_ConnectorInfo_ptr
    _nil()
    {
        return 0;
    }

    static OCI_IIOP_ConnectorInfo_ptr _narrow(CORBA_Object_ptr);
    virtual void* _OB_narrowHelp(const char*) const;
    virtual const char* _OB_typeId() const;

    //
    // IDL:ooc.com/OCI/IIOP/ConnectorInfo/remote_addr:1.0
    //
    virtual OCI_IIOP_InetAddr_slice* remote_addr() = 0;

    //
    // IDL:ooc.com/OCI/IIOP/ConnectorInfo/remote_port:1.0
    //
    virtual CORBA_UShort remote_port() = 0;
};

//
// IDL:ooc.com/OCI/IIOP/AcceptorInfo:1.0
//
class OCI_IIOP_AcceptorInfo : public OCI_AcceptorInfo
{
    OCI_IIOP_AcceptorInfo(const OCI_IIOP_AcceptorInfo&);
    void operator=(const OCI_IIOP_AcceptorInfo&);

public:

    OCI_IIOP_AcceptorInfo() { }

    static inline OCI_IIOP_AcceptorInfo_ptr
    _duplicate(OCI_IIOP_AcceptorInfo_ptr p)
    {
        if(p)
            p -> _OB_incRef();
        return p;
    }

    static inline OCI_IIOP_AcceptorInfo_ptr
    _nil()
    {
        return 0;
    }

    static OCI_IIOP_AcceptorInfo_ptr _narrow(CORBA_Object_ptr);
    virtual void* _OB_narrowHelp(const char*) const;
    virtual const char* _OB_typeId() const;

    //
    // IDL:ooc.com/OCI/IIOP/AcceptorInfo/host:1.0
    //
    virtual char* host() = 0;

    //
    // IDL:ooc.com/OCI/IIOP/AcceptorInfo/addr:1.0
    //
    virtual OCI_IIOP_InetAddr_slice* addr() = 0;

    //
    // IDL:ooc.com/OCI/IIOP/AcceptorInfo/port:1.0
    //
    virtual CORBA_UShort port() = 0;
};

//
// IDL:ooc.com/OCI/IIOP/ConFactoryInfo:1.0
//
class OCI_IIOP_ConFactoryInfo : public OCI_ConFactoryInfo
{
    OCI_IIOP_ConFactoryInfo(const OCI_IIOP_ConFactoryInfo&);
    void operator=(const OCI_IIOP_ConFactoryInfo&);

public:

    OCI_IIOP_ConFactoryInfo() { }

    static inline OCI_IIOP_ConFactoryInfo_ptr
    _duplicate(OCI_IIOP_ConFactoryInfo_ptr p)
    {
        if(p)
            p -> _OB_incRef();
        return p;
    }

    static inline OCI_IIOP_ConFactoryInfo_ptr
    _nil()
    {
        return 0;
    }

    static OCI_IIOP_ConFactoryInfo_ptr _narrow(CORBA_Object_ptr);
    virtual void* _OB_narrowHelp(const char*) const;
    virtual const char* _OB_typeId() const;
};

//
// IDL:omg.org/GIOP:1.0
//

//
// IDL:ooc.com/OCI/IIOP/TransportInfo:1.0
//
inline void
CORBA_release(OCI_IIOP_TransportInfo_ptr p)
{
    if(p)
        p -> _OB_decRef();
}

inline CORBA_Boolean
CORBA_is_nil(OCI_IIOP_TransportInfo_ptr p)
{
    return p == 0;
}

//
// IDL:ooc.com/OCI/IIOP/ConnectorInfo:1.0
//
inline void
CORBA_release(OCI_IIOP_ConnectorInfo_ptr p)
{
    if(p)
        p -> _OB_decRef();
}

inline CORBA_Boolean
CORBA_is_nil(OCI_IIOP_ConnectorInfo_ptr p)
{
    return p == 0;
}

//
// IDL:ooc.com/OCI/IIOP/AcceptorInfo:1.0
//
inline void
CORBA_release(OCI_IIOP_AcceptorInfo_ptr p)
{
    if(p)
        p -> _OB_decRef();
}

inline CORBA_Boolean
CORBA_is_nil(OCI_IIOP_AcceptorInfo_ptr p)
{
    return p == 0;
}

//
// IDL:ooc.com/OCI/IIOP/ConFactoryInfo:1.0
//
inline void
CORBA_release(OCI_IIOP_ConFactoryInfo_ptr p)
{
    if(p)
        p -> _OB_decRef();
}

inline CORBA_Boolean
CORBA_is_nil(OCI_IIOP_ConFactoryInfo_ptr p)
{
    return p == 0;
}

//
// OBUnsignedChar[4]
//
#ifndef OB_use_OBUnsignedChar_4
#define OB_use_OBUnsignedChar_4
#define OB_use_OBUnsignedChar_4_from_OCI_IIOP_h

typedef OBUnsignedChar OBSlice_OBUnsignedChar_4;

OBSlice_OBUnsignedChar_4* OBAlloc_OBUnsignedChar_4();
OBSlice_OBUnsignedChar_4* OBDup_OBUnsignedChar_4(const OBSlice_OBUnsignedChar_4*);
void OBCopy_OBUnsignedChar_4(const OBSlice_OBUnsignedChar_4*, OBSlice_OBUnsignedChar_4*);
void OBFree_OBUnsignedChar_4(OBSlice_OBUnsignedChar_4*);

#ifdef HAVE_VCPLUSPLUS_BUGS

inline OBSlice_OBUnsignedChar_4*
OBDup_OBUnsignedChar_4(OBSlice_OBUnsignedChar_4* s)
{
    return OBDup_OBUnsignedChar_4((const OBSlice_OBUnsignedChar_4*) s);
}

inline void
OBCopy_OBUnsignedChar_4(OBSlice_OBUnsignedChar_4* s, OBSlice_OBUnsignedChar_4* to)
{
    OBCopy_OBUnsignedChar_4((const OBSlice_OBUnsignedChar_4*) s, to);
}

#endif

#endif

#endif
