// **********************************************************************
//
// 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_OBPOAPolicies_h__
#define __OB_OBPOAPolicies_h__

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


#include <OB/Policy.h>
#include <OB/Dispatch.h>
#include <OB/OBPOAPolicies_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_OBPortableServer
{

} // End of namespace OBStubImpl_OBPortableServer

namespace OBStubImpl_OBPortableServer
{

} // End of namespace OBStubImpl_OBPortableServer

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

//
// IDL:ooc.com/OBPortableServer/SYNCHRONIZATION_POLICY_ID:1.0
//
const ::CORBA::PolicyType SYNCHRONIZATION_POLICY_ID = 1330577665U;

//
// IDL:ooc.com/OBPortableServer/SynchronizationPolicyValue:1.0
//
enum SynchronizationPolicyValue
{
    NO_SYNCHRONIZATION,
    SYNCHRONIZE_ON_POA,
    SYNCHRONIZE_ON_ORB
};

typedef SynchronizationPolicyValue& SynchronizationPolicyValue_out;

OB_IMPORT extern OB::TypeCodeConst _tc_SynchronizationPolicyValue;

//
// IDL:ooc.com/OBPortableServer/SynchronizationPolicy:1.0
//
class SynchronizationPolicy : virtual public ::CORBA::Policy
{
    SynchronizationPolicy(const SynchronizationPolicy&);
    void operator=(const SynchronizationPolicy&);

protected:

    static OB_IMPORT const char* ids_[];

public:

    SynchronizationPolicy() { }
    virtual ~SynchronizationPolicy() { }

    typedef SynchronizationPolicy_ptr _ptr_type;
    typedef SynchronizationPolicy_var _var_type;

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

    static inline SynchronizationPolicy_ptr
    _nil()
    {
        return 0;
    }

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

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


    //
    // IDL:ooc.com/OBPortableServer/SynchronizationPolicy/value:1.0
    //
    virtual SynchronizationPolicyValue value() = 0;
};

//
// IDL:ooc.com/OBPortableServer/DISPATCH_STRATEGY_POLICY_ID:1.0
//
const ::CORBA::PolicyType DISPATCH_STRATEGY_POLICY_ID = 1330577666U;

//
// IDL:ooc.com/OBPortableServer/DispatchStrategyPolicy:1.0
//
class DispatchStrategyPolicy : virtual public ::CORBA::Policy
{
    DispatchStrategyPolicy(const DispatchStrategyPolicy&);
    void operator=(const DispatchStrategyPolicy&);

protected:

    static OB_IMPORT const char* ids_[];

public:

    DispatchStrategyPolicy() { }
    virtual ~DispatchStrategyPolicy() { }

    typedef DispatchStrategyPolicy_ptr _ptr_type;
    typedef DispatchStrategyPolicy_var _var_type;

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

    static inline DispatchStrategyPolicy_ptr
    _nil()
    {
        return 0;
    }

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

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


    //
    // IDL:ooc.com/OBPortableServer/DispatchStrategyPolicy/value:1.0
    //
    virtual ::OB::DispatchStrategy_ptr value() = 0;
};

//
// IDL:ooc.com/OBPortableServer/INTERCEPTOR_CALL_POLICY_ID:1.0
//
const ::CORBA::PolicyType INTERCEPTOR_CALL_POLICY_ID = 1330577667U;

//
// IDL:ooc.com/OBPortableServer/InterceptorCallPolicy:1.0
//
class InterceptorCallPolicy : virtual public ::CORBA::Policy
{
    InterceptorCallPolicy(const InterceptorCallPolicy&);
    void operator=(const InterceptorCallPolicy&);

protected:

    static OB_IMPORT const char* ids_[];

public:

    InterceptorCallPolicy() { }
    virtual ~InterceptorCallPolicy() { }

    typedef InterceptorCallPolicy_ptr _ptr_type;
    typedef InterceptorCallPolicy_var _var_type;

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

    static inline InterceptorCallPolicy_ptr
    _nil()
    {
        return 0;
    }

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

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


    //
    // IDL:ooc.com/OBPortableServer/InterceptorCallPolicy/value:1.0
    //
    virtual ::CORBA::Boolean value() = 0;
};

} // End of namespace OBPortableServer

//
// IDL:ooc.com/OBPortableServer:1.0
//
namespace OBProxy_OBPortableServer
{

} // End of namespace OBProxy_OBPortableServer

//
// IDL:ooc.com/OBPortableServer:1.0
//
namespace OBStubImpl_OBPortableServer
{

} // End of namespace OBStubImpl_OBPortableServer

//
// IDL:ooc.com/OBPortableServer:1.0
//
namespace OBMarshalStubImpl_OBPortableServer
{

} // End of namespace OBMarshalStubImpl_OBPortableServer

//
// IDL:ooc.com/OBPortableServer:1.0
//
namespace OBV_OBPortableServer
{

} // End of namespace OBV_OBPortableServer

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

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

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

//
// IDL:ooc.com/OBPortableServer/SynchronizationPolicy:1.0
//
namespace CORBA
{

inline void
release(::OBPortableServer::SynchronizationPolicy_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::OBPortableServer::SynchronizationPolicy_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

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

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

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

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

//
// IDL:ooc.com/OBPortableServer/DispatchStrategyPolicy:1.0
//
namespace CORBA
{

inline void
release(::OBPortableServer::DispatchStrategyPolicy_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::OBPortableServer::DispatchStrategyPolicy_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

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

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

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

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

//
// IDL:ooc.com/OBPortableServer/InterceptorCallPolicy:1.0
//
namespace CORBA
{

inline void
release(::OBPortableServer::InterceptorCallPolicy_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::OBPortableServer::InterceptorCallPolicy_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

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

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

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

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

#endif
