// **********************************************************************
//
// 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_h__
#define __OCI_h__

#include <OB/IOP.h>
#include <OB/Policy.h>
#include <OB/Current.h>
#include <OB/OCIBuffer.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/IOR:1.0
//
typedef IOP_IOR OCI_IOR;
typedef IOP_IOR_var OCI_IOR_var;

//
// IDL:ooc.com/OCI/ProfileId:1.0
//
typedef IOP_ProfileId OCI_ProfileId;

//
// IDL:ooc.com/OCI/ProfileIdSeq:1.0
//
typedef OBFixSeq< OCI_ProfileId > OCI_ProfileIdSeq;
typedef OBSeqVar< OBFixSeq< OCI_ProfileId > > OCI_ProfileIdSeq_var;

//
// IDL:ooc.com/OCI/ObjectKey:1.0
//
typedef OBFixSeq< CORBA_Octet > OCI_ObjectKey;
typedef OBSeqVar< OBFixSeq< CORBA_Octet > > OCI_ObjectKey_var;

//
// IDL:ooc.com/OCI/Handle:1.0
//
typedef CORBA_Long OCI_Handle;

//
// IDL:ooc.com/OCI/Transport:1.0
//
class OCI_Transport : public CORBA_Object
{
    OCI_Transport(const OCI_Transport&);
    void operator=(const OCI_Transport&);

public:

    OCI_Transport() { }

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

    static inline OCI_Transport_ptr
    _nil()
    {
        return 0;
    }

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

    //
    // IDL:ooc.com/OCI/Transport/tag:1.0
    //
    virtual OCI_ProfileId tag() = 0;

    //
    // IDL:ooc.com/OCI/Transport/handle:1.0
    //
    virtual OCI_Handle handle() = 0;

    //
    // IDL:ooc.com/OCI/Transport/fragmentation:1.0
    //
    virtual CORBA_ULong fragmentation() = 0;

    //
    // IDL:ooc.com/OCI/Transport/close:1.0
    //
    virtual void close(CORBA_Boolean discard) = 0;

    //
    // IDL:ooc.com/OCI/Transport/unblock_threads:1.0
    //
    virtual void unblock_threads(CORBA_Boolean discard) = 0;

    //
    // IDL:ooc.com/OCI/Transport/receive:1.0
    //
    virtual void receive(OCI_Buffer_ptr buf,
                         CORBA_Boolean block) = 0;

    //
    // IDL:ooc.com/OCI/Transport/receive_detect:1.0
    //
    virtual CORBA_Boolean receive_detect(OCI_Buffer_ptr buf,
                                         CORBA_Boolean block) = 0;

    //
    // IDL:ooc.com/OCI/Transport/receive_timeout:1.0
    //
    virtual void receive_timeout(OCI_Buffer_ptr buf,
                                 CORBA_ULong timeout) = 0;

    //
    // IDL:ooc.com/OCI/Transport/send:1.0
    //
    virtual void send(OCI_Buffer_ptr buf,
                      CORBA_Boolean block) = 0;

    //
    // IDL:ooc.com/OCI/Transport/send_detect:1.0
    //
    virtual CORBA_Boolean send_detect(OCI_Buffer_ptr buf,
                                      CORBA_Boolean block) = 0;

    //
    // IDL:ooc.com/OCI/Transport/send_timeout:1.0
    //
    virtual void send_timeout(OCI_Buffer_ptr buf,
                              CORBA_ULong timeout) = 0;

    //
    // IDL:ooc.com/OCI/Transport/get_info:1.0
    //
    virtual OCI_TransportInfo_ptr get_info() = 0;
};

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

public:

    OCI_TransportInfo() { }

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

    static inline OCI_TransportInfo_ptr
    _nil()
    {
        return 0;
    }

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

    //
    // IDL:ooc.com/OCI/TransportInfo/tag:1.0
    //
    virtual OCI_ProfileId tag() = 0;

    //
    // IDL:ooc.com/OCI/TransportInfo/connector_info:1.0
    //
    virtual OCI_ConnectorInfo_ptr connector_info() = 0;

    //
    // IDL:ooc.com/OCI/TransportInfo/acceptor_info:1.0
    //
    virtual OCI_AcceptorInfo_ptr acceptor_info() = 0;

    //
    // IDL:ooc.com/OCI/TransportInfo/add_close_cb:1.0
    //
    virtual void add_close_cb(OCI_CloseCB_ptr cb) = 0;

    //
    // IDL:ooc.com/OCI/TransportInfo/remove_close_cb:1.0
    //
    virtual void remove_close_cb(OCI_CloseCB_ptr cb) = 0;
};

//
// IDL:ooc.com/OCI/CloseCB:1.0
//
class OCI_CloseCB : public CORBA_Object
{
    OCI_CloseCB(const OCI_CloseCB&);
    void operator=(const OCI_CloseCB&);

public:

    OCI_CloseCB() { }

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

    static inline OCI_CloseCB_ptr
    _nil()
    {
        return 0;
    }

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

    //
    // IDL:ooc.com/OCI/CloseCB/close_cb:1.0
    //
    virtual void close_cb(OCI_TransportInfo_ptr transport_info) = 0;
};

//
// IDL:ooc.com/OCI/CloseCBSeq:1.0
//
typedef OBObjSeq< OCI_CloseCB > OCI_CloseCBSeq;
typedef OBSeqVar< OBObjSeq< OCI_CloseCB > > OCI_CloseCBSeq_var;

//
// IDL:ooc.com/OCI/Connector:1.0
//
class OCI_Connector : public CORBA_Object
{
    OCI_Connector(const OCI_Connector&);
    void operator=(const OCI_Connector&);

public:

    OCI_Connector() { }

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

    static inline OCI_Connector_ptr
    _nil()
    {
        return 0;
    }

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

    //
    // IDL:ooc.com/OCI/Connector/tag:1.0
    //
    virtual OCI_ProfileId tag() = 0;

    //
    // IDL:ooc.com/OCI/Connector/connect:1.0
    //
    virtual OCI_Transport_ptr connect() = 0;

    //
    // IDL:ooc.com/OCI/Connector/connect_timeout:1.0
    //
    virtual OCI_Transport_ptr connect_timeout(CORBA_ULong timeout) = 0;

    //
    // IDL:ooc.com/OCI/Connector/is_usable:1.0
    //
    virtual OCI_ObjectKey* is_usable(const OCI_IOR& ior) = 0;

    //
    // IDL:ooc.com/OCI/Connector/is_usable_with_policies:1.0
    //
    virtual OCI_ObjectKey* is_usable_with_policies(const OCI_IOR& ior,
                                                   const CORBA_PolicyList& policies) = 0;

    //
    // IDL:ooc.com/OCI/Connector/get_info:1.0
    //
    virtual OCI_ConnectorInfo_ptr get_info() = 0;
};

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

public:

    OCI_ConnectorInfo() { }

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

    static inline OCI_ConnectorInfo_ptr
    _nil()
    {
        return 0;
    }

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

    //
    // IDL:ooc.com/OCI/ConnectorInfo/tag:1.0
    //
    virtual OCI_ProfileId tag() = 0;

    //
    // IDL:ooc.com/OCI/ConnectorInfo/add_connect_cb:1.0
    //
    virtual void add_connect_cb(OCI_ConnectCB_ptr cb) = 0;

    //
    // IDL:ooc.com/OCI/ConnectorInfo/remove_connect_cb:1.0
    //
    virtual void remove_connect_cb(OCI_ConnectCB_ptr cb) = 0;
};

//
// IDL:ooc.com/OCI/ConnectCB:1.0
//
class OCI_ConnectCB : public CORBA_Object
{
    OCI_ConnectCB(const OCI_ConnectCB&);
    void operator=(const OCI_ConnectCB&);

public:

    OCI_ConnectCB() { }

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

    static inline OCI_ConnectCB_ptr
    _nil()
    {
        return 0;
    }

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

    //
    // IDL:ooc.com/OCI/ConnectCB/connect_cb:1.0
    //
    virtual void connect_cb(OCI_TransportInfo_ptr transport_info) = 0;
};

//
// IDL:ooc.com/OCI/ConnectCBSeq:1.0
//
typedef OBObjSeq< OCI_ConnectCB > OCI_ConnectCBSeq;
typedef OBSeqVar< OBObjSeq< OCI_ConnectCB > > OCI_ConnectCBSeq_var;

//
// IDL:ooc.com/OCI/Acceptor:1.0
//
class OCI_Acceptor : public CORBA_Object
{
    OCI_Acceptor(const OCI_Acceptor&);
    void operator=(const OCI_Acceptor&);

public:

    OCI_Acceptor() { }

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

    static inline OCI_Acceptor_ptr
    _nil()
    {
        return 0;
    }

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

    //
    // IDL:ooc.com/OCI/Acceptor/tag:1.0
    //
    virtual OCI_ProfileId tag() = 0;

    //
    // IDL:ooc.com/OCI/Acceptor/handle:1.0
    //
    virtual OCI_Handle handle() = 0;

    //
    // IDL:ooc.com/OCI/Acceptor/close:1.0
    //
    virtual void close() = 0;

    //
    // IDL:ooc.com/OCI/Acceptor/unblock_threads:1.0
    //
    virtual void unblock_threads() = 0;

    //
    // IDL:ooc.com/OCI/Acceptor/listen:1.0
    //
    virtual void listen() = 0;

    //
    // IDL:ooc.com/OCI/Acceptor/accept:1.0
    //
    virtual OCI_Transport_ptr accept() = 0;

    //
    // IDL:ooc.com/OCI/Acceptor/add_profile:1.0
    //
    virtual void add_profile(const OCI_ObjectKey& key,
                             OCI_IOR& ior) = 0;

    //
    // IDL:ooc.com/OCI/Acceptor/is_local:1.0
    //
    virtual OCI_ObjectKey* is_local(const OCI_IOR& ior) = 0;

    //
    // IDL:ooc.com/OCI/Acceptor/get_info:1.0
    //
    virtual OCI_AcceptorInfo_ptr get_info() = 0;
};

//
// IDL:ooc.com/OCI/AcceptorSeq:1.0
//
typedef OBObjSeq< OCI_Acceptor > OCI_AcceptorSeq;
typedef OBSeqVar< OBObjSeq< OCI_Acceptor > > OCI_AcceptorSeq_var;

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

public:

    OCI_AcceptorInfo() { }

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

    static inline OCI_AcceptorInfo_ptr
    _nil()
    {
        return 0;
    }

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

    //
    // IDL:ooc.com/OCI/AcceptorInfo/tag:1.0
    //
    virtual OCI_ProfileId tag() = 0;

    //
    // IDL:ooc.com/OCI/AcceptorInfo/add_accept_cb:1.0
    //
    virtual void add_accept_cb(OCI_AcceptCB_ptr cb) = 0;

    //
    // IDL:ooc.com/OCI/AcceptorInfo/remove_accept_cb:1.0
    //
    virtual void remove_accept_cb(OCI_AcceptCB_ptr cb) = 0;
};

//
// IDL:ooc.com/OCI/AcceptCB:1.0
//
class OCI_AcceptCB : public CORBA_Object
{
    OCI_AcceptCB(const OCI_AcceptCB&);
    void operator=(const OCI_AcceptCB&);

public:

    OCI_AcceptCB() { }

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

    static inline OCI_AcceptCB_ptr
    _nil()
    {
        return 0;
    }

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

    //
    // IDL:ooc.com/OCI/AcceptCB/accept_cb:1.0
    //
    virtual void accept_cb(OCI_TransportInfo_ptr transport_info) = 0;
};

//
// IDL:ooc.com/OCI/AcceptCBSeq:1.0
//
typedef OBObjSeq< OCI_AcceptCB > OCI_AcceptCBSeq;
typedef OBSeqVar< OBObjSeq< OCI_AcceptCB > > OCI_AcceptCBSeq_var;

//
// IDL:ooc.com/OCI/ConFactory:1.0
//
class OCI_ConFactory : public CORBA_Object
{
    OCI_ConFactory(const OCI_ConFactory&);
    void operator=(const OCI_ConFactory&);

public:

    OCI_ConFactory() { }

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

    static inline OCI_ConFactory_ptr
    _nil()
    {
        return 0;
    }

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

    //
    // IDL:ooc.com/OCI/ConFactory/tag:1.0
    //
    virtual OCI_ProfileId tag() = 0;

    //
    // IDL:ooc.com/OCI/ConFactory/create:1.0
    //
    virtual OCI_Connector_ptr create(const OCI_IOR& ior) = 0;

    //
    // IDL:ooc.com/OCI/ConFactory/create_with_policies:1.0
    //
    virtual OCI_Connector_ptr create_with_policies(const OCI_IOR& ior,
                                                   const CORBA_PolicyList& policies) = 0;

    //
    // IDL:ooc.com/OCI/ConFactory/consider_with_policies:1.0
    //
    virtual CORBA_Boolean consider_with_policies(const OCI_IOR& ior,
                                                 const CORBA_PolicyList& policies) = 0;

    //
    // IDL:ooc.com/OCI/ConFactory/equivalent:1.0
    //
    virtual CORBA_Boolean equivalent(const OCI_IOR& ior1,
                                     const OCI_IOR& ior2) = 0;

    //
    // IDL:ooc.com/OCI/ConFactory/hash:1.0
    //
    virtual CORBA_ULong hash(const OCI_IOR& ior,
                             CORBA_ULong maximum) = 0;

    //
    // IDL:ooc.com/OCI/ConFactory/get_info:1.0
    //
    virtual OCI_ConFactoryInfo_ptr get_info() = 0;
};

//
// IDL:ooc.com/OCI/ConFactorySeq:1.0
//
typedef OBObjSeq< OCI_ConFactory > OCI_ConFactorySeq;
typedef OBSeqVar< OBObjSeq< OCI_ConFactory > > OCI_ConFactorySeq_var;

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

public:

    OCI_ConFactoryInfo() { }

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

    static inline OCI_ConFactoryInfo_ptr
    _nil()
    {
        return 0;
    }

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

    //
    // IDL:ooc.com/OCI/ConFactoryInfo/tag:1.0
    //
    virtual OCI_ProfileId tag() = 0;

    //
    // IDL:ooc.com/OCI/ConFactoryInfo/add_connect_cb:1.0
    //
    virtual void add_connect_cb(OCI_ConnectCB_ptr cb) = 0;

    //
    // IDL:ooc.com/OCI/ConFactoryInfo/remove_connect_cb:1.0
    //
    virtual void remove_connect_cb(OCI_ConnectCB_ptr cb) = 0;
};

//
// IDL:ooc.com/OCI/ConFactoryRegistry:1.0
//
class OCI_ConFactoryRegistry : public CORBA_Object
{
    OCI_ConFactoryRegistry(const OCI_ConFactoryRegistry&);
    void operator=(const OCI_ConFactoryRegistry&);

public:

    OCI_ConFactoryRegistry() { }

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

    static inline OCI_ConFactoryRegistry_ptr
    _nil()
    {
        return 0;
    }

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

    //
    // IDL:ooc.com/OCI/ConFactoryRegistry/add_factory:1.0
    //
    virtual void add_factory(OCI_ConFactory_ptr factory) = 0;

    //
    // IDL:ooc.com/OCI/ConFactoryRegistry/get_factory:1.0
    //
    virtual OCI_ConFactory_ptr get_factory(const OCI_IOR& ior) = 0;

    //
    // IDL:ooc.com/OCI/ConFactoryRegistry/get_factory_with_policies:1.0
    //
    virtual OCI_ConFactory_ptr get_factory_with_policies(const OCI_IOR& ior,
                                                         const CORBA_PolicyList& policies) = 0;

    //
    // IDL:ooc.com/OCI/ConFactoryRegistry/get_factories:1.0
    //
    virtual OCI_ConFactorySeq* get_factories() = 0;

    //
    // IDL:ooc.com/OCI/ConFactoryRegistry/equivalent:1.0
    //
    virtual CORBA_Boolean equivalent(const OCI_IOR& ior1,
                                     const OCI_IOR& ior2) = 0;

    //
    // IDL:ooc.com/OCI/ConFactoryRegistry/hash:1.0
    //
    virtual CORBA_ULong hash(const OCI_IOR& ior,
                             CORBA_ULong maximum) = 0;
};

//
// IDL:ooc.com/OCI/AccRegistry:1.0
//
class OCI_AccRegistry : public CORBA_Object
{
    OCI_AccRegistry(const OCI_AccRegistry&);
    void operator=(const OCI_AccRegistry&);

public:

    OCI_AccRegistry() { }

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

    static inline OCI_AccRegistry_ptr
    _nil()
    {
        return 0;
    }

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

    //
    // IDL:ooc.com/OCI/AccRegistry/add_acceptor:1.0
    //
    virtual void add_acceptor(OCI_Acceptor_ptr Acceptor) = 0;

    //
    // IDL:ooc.com/OCI/AccRegistry/get_acceptors:1.0
    //
    virtual OCI_AcceptorSeq* get_acceptors() = 0;

    //
    // IDL:ooc.com/OCI/AccRegistry/add_profiles:1.0
    //
    virtual void add_profiles(const OCI_ObjectKey& key,
                              OCI_IOR& ior) = 0;

    //
    // IDL:ooc.com/OCI/AccRegistry/is_local:1.0
    //
    virtual OCI_ObjectKey* is_local(const OCI_IOR& ior) = 0;
};

//
// IDL:ooc.com/OCI/Current:1.0
//
class OCI_Current : public CORBA_Current
{
    OCI_Current(const OCI_Current&);
    void operator=(const OCI_Current&);

public:

    OCI_Current() { }

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

    static inline OCI_Current_ptr
    _nil()
    {
        return 0;
    }

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

    //
    // IDL:ooc.com/OCI/Current/get_oci_transport_info:1.0
    //
    virtual OCI_TransportInfo_ptr get_oci_transport_info() = 0;

    //
    // IDL:ooc.com/OCI/Current/get_oci_acceptor_info:1.0
    //
    virtual OCI_AcceptorInfo_ptr get_oci_acceptor_info() = 0;
};

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

//
// OBObjSeq< OCI_CloseCB >
//
#ifndef OB_use_OBObjSeq_OCI__CloseCB
#define OB_use_OBObjSeq_OCI__CloseCB
#define OB_use_OBObjSeq_OCI__CloseCB_from_OCI_h

#endif

//
// OBObjSeq< CORBA_Policy >
//
#ifndef OB_use_OBObjSeq_CORBA__Policy
#define OB_use_OBObjSeq_CORBA__Policy
#define OB_use_OBObjSeq_CORBA__Policy_from_OCI_h

#endif

//
// OBObjSeq< OCI_ConnectCB >
//
#ifndef OB_use_OBObjSeq_OCI__ConnectCB
#define OB_use_OBObjSeq_OCI__ConnectCB
#define OB_use_OBObjSeq_OCI__ConnectCB_from_OCI_h

#endif

//
// OBObjSeq< OCI_Acceptor >
//
#ifndef OB_use_OBObjSeq_OCI__Acceptor
#define OB_use_OBObjSeq_OCI__Acceptor
#define OB_use_OBObjSeq_OCI__Acceptor_from_OCI_h

#endif

//
// OBObjSeq< OCI_AcceptCB >
//
#ifndef OB_use_OBObjSeq_OCI__AcceptCB
#define OB_use_OBObjSeq_OCI__AcceptCB
#define OB_use_OBObjSeq_OCI__AcceptCB_from_OCI_h

#endif

//
// OBObjSeq< OCI_ConFactory >
//
#ifndef OB_use_OBObjSeq_OCI__ConFactory
#define OB_use_OBObjSeq_OCI__ConFactory
#define OB_use_OBObjSeq_OCI__ConFactory_from_OCI_h

#endif

#endif
