// **********************************************************************
//
// 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_PIIOR_h__
#define __OB_PIIOR_h__

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


#include <OB/Policy.h>
#include <OB/IOP.h>
#include <OB/PICommon.h>
#include <OB/PIORT.h>
#include <OB/PIIOR_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_PortableInterceptor
{

} // End of namespace OBStubImpl_PortableInterceptor

namespace OBStubImpl_PortableInterceptor
{

} // End of namespace OBStubImpl_PortableInterceptor

//
// IDL:omg.org/PortableInterceptor:1.0
//
namespace PortableInterceptor
{

//
// IDL:omg.org/PortableInterceptor/IORInfo:1.0
//
class IORInfo : virtual public ::CORBA::Object
{
    IORInfo(const IORInfo&);
    void operator=(const IORInfo&);

protected:

    static OB_IMPORT const char* ids_[];

public:

    IORInfo() { }
    virtual ~IORInfo() { }

    typedef IORInfo_ptr _ptr_type;
    typedef IORInfo_var _var_type;

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

    static inline IORInfo_ptr
    _nil()
    {
        return 0;
    }

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

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


    //
    // IDL:omg.org/PortableInterceptor/IORInfo/get_effective_policy:1.0
    //
    virtual ::CORBA::Policy_ptr get_effective_policy(::CORBA::PolicyType type) = 0;

    //
    // IDL:omg.org/PortableInterceptor/IORInfo/add_ior_component:1.0
    //
    virtual void add_ior_component(const ::IOP::TaggedComponent& component) = 0;

    //
    // IDL:omg.org/PortableInterceptor/IORInfo/add_ior_component_to_profile:1.0
    //
    virtual void add_ior_component_to_profile(const ::IOP::TaggedComponent& component,
                                              ::IOP::ProfileId id) = 0;

    //
    // IDL:omg.org/PortableInterceptor/IORInfo/adapter_template:1.0
    //
    virtual ObjectReferenceTemplate* adapter_template() = 0;

    //
    // IDL:omg.org/PortableInterceptor/IORInfo/current_factory:1.0
    //
    virtual ObjectReferenceFactory* current_factory() = 0;
    virtual void current_factory(ObjectReferenceFactory*) = 0;

    //
    // IDL:omg.org/PortableInterceptor/IORInfo/manager_id:1.0
    //
    virtual AdapterManagerId manager_id() = 0;

    //
    // IDL:omg.org/PortableInterceptor/IORInfo/state:1.0
    //
    virtual AdapterState state() = 0;
};

//
// IDL:omg.org/PortableInterceptor/IORInterceptor:1.0
//
class IORInterceptor : virtual public ::PortableInterceptor::Interceptor
{
    IORInterceptor(const IORInterceptor&);
    void operator=(const IORInterceptor&);

protected:

    static OB_IMPORT const char* ids_[];

public:

    IORInterceptor() { }
    virtual ~IORInterceptor() { }

    typedef IORInterceptor_ptr _ptr_type;
    typedef IORInterceptor_var _var_type;

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

    static inline IORInterceptor_ptr
    _nil()
    {
        return 0;
    }

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

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


    //
    // IDL:omg.org/PortableInterceptor/IORInterceptor/establish_components:1.0
    //
    virtual void establish_components(IORInfo_ptr info) = 0;
};

//
// IDL:omg.org/PortableInterceptor/IORInterceptor_3_0:1.0
//
class IORInterceptor_3_0 : virtual public ::PortableInterceptor::IORInterceptor
{
    IORInterceptor_3_0(const IORInterceptor_3_0&);
    void operator=(const IORInterceptor_3_0&);

protected:

    static OB_IMPORT const char* ids_[];

public:

    IORInterceptor_3_0() { }
    virtual ~IORInterceptor_3_0() { }

    typedef IORInterceptor_3_0_ptr _ptr_type;
    typedef IORInterceptor_3_0_var _var_type;

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

    static inline IORInterceptor_3_0_ptr
    _nil()
    {
        return 0;
    }

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

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


    //
    // IDL:omg.org/PortableInterceptor/IORInterceptor_3_0/components_established:1.0
    //
    virtual void components_established(IORInfo_ptr info) = 0;

    //
    // IDL:omg.org/PortableInterceptor/IORInterceptor_3_0/adapter_manager_state_change:1.0
    //
    virtual void adapter_manager_state_change(AdapterManagerId id,
                                              AdapterState state) = 0;

    //
    // IDL:omg.org/PortableInterceptor/IORInterceptor_3_0/adapter_state_change:1.0
    //
    virtual void adapter_state_change(const ObjectReferenceTemplateSeq& templates,
                                      AdapterState state) = 0;
};

} // End of namespace PortableInterceptor

//
// IDL:omg.org/PortableInterceptor:1.0
//
namespace OBProxy_PortableInterceptor
{

} // End of namespace OBProxy_PortableInterceptor

//
// IDL:omg.org/PortableInterceptor:1.0
//
namespace OBStubImpl_PortableInterceptor
{

} // End of namespace OBStubImpl_PortableInterceptor

//
// IDL:omg.org/PortableInterceptor:1.0
//
namespace OBMarshalStubImpl_PortableInterceptor
{

} // End of namespace OBMarshalStubImpl_PortableInterceptor

//
// IDL:omg.org/PortableInterceptor:1.0
//
namespace OBV_PortableInterceptor
{

} // End of namespace OBV_PortableInterceptor

//
// IDL:omg.org/PortableInterceptor/IORInfo:1.0
//
namespace CORBA
{

inline void
release(::PortableInterceptor::IORInfo_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::PortableInterceptor::IORInfo_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

void operator<<=(::CORBA::Any&, PortableInterceptor::IORInfo_ptr*);
void operator<<=(::CORBA::Any&, PortableInterceptor::IORInfo_ptr);
CORBA::Boolean operator>>=(const ::CORBA::Any&, PortableInterceptor::IORInfo_ptr&);

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

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

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

//
// IDL:omg.org/PortableInterceptor/IORInterceptor:1.0
//
namespace CORBA
{

inline void
release(::PortableInterceptor::IORInterceptor_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::PortableInterceptor::IORInterceptor_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

void operator<<=(::CORBA::Any&, PortableInterceptor::IORInterceptor_ptr*);
void operator<<=(::CORBA::Any&, PortableInterceptor::IORInterceptor_ptr);
CORBA::Boolean operator>>=(const ::CORBA::Any&, PortableInterceptor::IORInterceptor_ptr&);

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

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

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

//
// IDL:omg.org/PortableInterceptor/IORInterceptor_3_0:1.0
//
namespace CORBA
{

inline void
release(::PortableInterceptor::IORInterceptor_3_0_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::PortableInterceptor::IORInterceptor_3_0_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

void operator<<=(::CORBA::Any&, PortableInterceptor::IORInterceptor_3_0_ptr*);
void operator<<=(::CORBA::Any&, PortableInterceptor::IORInterceptor_3_0_ptr);
CORBA::Boolean operator>>=(const ::CORBA::Any&, PortableInterceptor::IORInterceptor_3_0_ptr&);

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

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

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

#endif
