// **********************************************************************
//
// 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_OCIClient_IIOP_h__
#define __OB_OCIClient_IIOP_h__

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


#include <OB/OCIClient.h>
#include <OB/OCIClient_IIOP_fwd.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 OBStubImpl_OCI
{

namespace IIOP
{

} // End of namespace IIOP

} // End of namespace OBStubImpl_OCI

namespace OBStubImpl_OCI
{

namespace IIOP
{

} // End of namespace IIOP

} // End of namespace OBStubImpl_OCI

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

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

//
// IDL:ooc.com/OCI/IIOP/PLUGIN_ID:1.0
//
const char* const PLUGIN_ID = "iiop";

//
// IDL:ooc.com/OCI/IIOP/InetAddr:1.0
//
class OBUnique_InetAddr { };

typedef ::CORBA::Octet InetAddr[4];
typedef ::CORBA::Octet InetAddr_slice;
typedef OB::FixArrayVar< ::CORBA::Octet, ::CORBA::Octet, 4 > InetAddr_var;
typedef ::CORBA::Octet InetAddr_out[4];

inline InetAddr_slice*
InetAddr_alloc()
{
    return new ::CORBA::Octet[4];
}

inline InetAddr_slice*
InetAddr_dup(const InetAddr_slice* s)
{
    InetAddr_slice* to = new ::CORBA::Octet[4];
    memcpy(to, s, 4 * sizeof(::CORBA::Octet));
    return to;
}

inline void
InetAddr_copy(InetAddr_slice* to, const InetAddr_slice* from)
{
    memcpy(to, from, 4 * sizeof(::CORBA::Octet));
}

inline void
InetAddr_free(InetAddr_slice* s)
{
    delete [] (::CORBA::Octet*)s;
}

#ifdef HAVE_VCPLUSPLUS_BUGS

inline InetAddr_slice*
InetAddr_dup(InetAddr_slice* s)
{
    return InetAddr_dup((const InetAddr_slice*)s);
}

inline void
InetAddr_copy(InetAddr_slice* to, InetAddr_slice* from)
{
    InetAddr_copy(to, (const InetAddr_slice*)from);
}

#endif

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

protected:

    static OB_IMPORT const char* ids_[];

public:

    TransportInfo() { }
    virtual ~TransportInfo() { }

    typedef TransportInfo_ptr _ptr_type;
    typedef TransportInfo_var _var_type;

    static inline TransportInfo_ptr
    _duplicate(TransportInfo_ptr p)
    {
        if(p)
            p -> _add_ref();
        return p;
    }

    static inline TransportInfo_ptr
    _nil()
    {
        return 0;
    }

    static TransportInfo_ptr _narrow(::CORBA::Object_ptr);

    static TransportInfo_ptr _narrow(::CORBA::AbstractBase_ptr);


    //
    // IDL:ooc.com/OCI/IIOP/TransportInfo/addr:1.0
    //
    virtual 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 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 ConnectorInfo : virtual public ::OCI::ConnectorInfo
{
    ConnectorInfo(const ConnectorInfo&);
    void operator=(const ConnectorInfo&);

protected:

    static OB_IMPORT const char* ids_[];

public:

    ConnectorInfo() { }
    virtual ~ConnectorInfo() { }

    typedef ConnectorInfo_ptr _ptr_type;
    typedef ConnectorInfo_var _var_type;

    static inline ConnectorInfo_ptr
    _duplicate(ConnectorInfo_ptr p)
    {
        if(p)
            p -> _add_ref();
        return p;
    }

    static inline ConnectorInfo_ptr
    _nil()
    {
        return 0;
    }

    static ConnectorInfo_ptr _narrow(::CORBA::Object_ptr);

    static ConnectorInfo_ptr _narrow(::CORBA::AbstractBase_ptr);


    //
    // IDL:ooc.com/OCI/IIOP/ConnectorInfo/remote_addr:1.0
    //
    virtual 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/ConFactoryInfo:1.0
//
class ConFactoryInfo : virtual public ::OCI::ConFactoryInfo
{
    ConFactoryInfo(const ConFactoryInfo&);
    void operator=(const ConFactoryInfo&);

protected:

    static OB_IMPORT const char* ids_[];

public:

    ConFactoryInfo() { }
    virtual ~ConFactoryInfo() { }

    typedef ConFactoryInfo_ptr _ptr_type;
    typedef ConFactoryInfo_var _var_type;

    static inline ConFactoryInfo_ptr
    _duplicate(ConFactoryInfo_ptr p)
    {
        if(p)
            p -> _add_ref();
        return p;
    }

    static inline ConFactoryInfo_ptr
    _nil()
    {
        return 0;
    }

    static ConFactoryInfo_ptr _narrow(::CORBA::Object_ptr);

    static ConFactoryInfo_ptr _narrow(::CORBA::AbstractBase_ptr);

};

} // End of namespace IIOP

} // End of namespace OCI

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

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

} // End of namespace IIOP

} // End of namespace OBProxy_OCI

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

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

} // End of namespace IIOP

} // End of namespace OBStubImpl_OCI

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

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

} // End of namespace IIOP

} // End of namespace OBMarshalStubImpl_OCI

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

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

} // End of namespace IIOP

} // End of namespace OBV_OCI

//
// IDL:ooc.com/OCI/IIOP/TransportInfo:1.0
//
namespace CORBA
{

inline void
release(::OCI::IIOP::TransportInfo_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::OCI::IIOP::TransportInfo_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

//
// IDL:ooc.com/OCI/IIOP/ConnectorInfo:1.0
//
namespace CORBA
{

inline void
release(::OCI::IIOP::ConnectorInfo_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::OCI::IIOP::ConnectorInfo_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

//
// IDL:ooc.com/OCI/IIOP/ConFactoryInfo:1.0
//
namespace CORBA
{

inline void
release(::OCI::IIOP::ConFactoryInfo_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::OCI::IIOP::ConFactoryInfo_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

#endif
