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

#include <OB/Policy.h>
#include <OB/IOP.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/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/IOP:1.0
//

//
// IDL:ooc.com/SSL:1.0
//

//
// IDL:ooc.com/SSL/ConnectPolicy:1.0
//
class SSL_ConnectPolicy;
typedef SSL_ConnectPolicy* SSL_ConnectPolicy_ptr;
typedef SSL_ConnectPolicy* SSL_ConnectPolicyRef;
void OBDuplicate(SSL_ConnectPolicy_ptr);
void OBRelease(SSL_ConnectPolicy_ptr);
typedef OBObjVar< SSL_ConnectPolicy > SSL_ConnectPolicy_var;

//
// IDL:ooc.com/SSL/ConnectPolicyType:1.0
//
enum SSL_ConnectPolicyType
{
    SSL_ConnectSecure,
    SSL_ConnectInsecure
};

//
// IDL:ooc.com/SSL/CONNECT_POLICY:1.0
//
OB_IMPORT extern const CORBA_PolicyType SSL_CONNECT_POLICY;

//
// IDL:ooc.com/SSL/ConnectPolicy:1.0
//
class SSL_ConnectPolicy : public CORBA_Policy
{
    SSL_ConnectPolicy(const SSL_ConnectPolicy&);
    void operator=(const SSL_ConnectPolicy&);

public:

    SSL_ConnectPolicy() { }

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

    static inline SSL_ConnectPolicy_ptr
    _nil()
    {
        return 0;
    }

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

    //
    // IDL:ooc.com/SSL/ConnectPolicy/value:1.0
    //
    virtual SSL_ConnectPolicyType value() = 0;
};

//
// IDL:ooc.com/OB:1.0
//

//
// IDL:ooc.com/OB/ProtocolPolicy:1.0
//
class OB_ProtocolPolicy;
typedef OB_ProtocolPolicy* OB_ProtocolPolicy_ptr;
typedef OB_ProtocolPolicy* OB_ProtocolPolicyRef;
void OBDuplicate(OB_ProtocolPolicy_ptr);
void OBRelease(OB_ProtocolPolicy_ptr);
typedef OBObjVar< OB_ProtocolPolicy > OB_ProtocolPolicy_var;

//
// IDL:ooc.com/OB/ConnectionReusePolicy:1.0
//
class OB_ConnectionReusePolicy;
typedef OB_ConnectionReusePolicy* OB_ConnectionReusePolicy_ptr;
typedef OB_ConnectionReusePolicy* OB_ConnectionReusePolicyRef;
void OBDuplicate(OB_ConnectionReusePolicy_ptr);
void OBRelease(OB_ConnectionReusePolicy_ptr);
typedef OBObjVar< OB_ConnectionReusePolicy > OB_ConnectionReusePolicy_var;

//
// IDL:ooc.com/OB/ReconnectPolicy:1.0
//
class OB_ReconnectPolicy;
typedef OB_ReconnectPolicy* OB_ReconnectPolicy_ptr;
typedef OB_ReconnectPolicy* OB_ReconnectPolicyRef;
void OBDuplicate(OB_ReconnectPolicy_ptr);
void OBRelease(OB_ReconnectPolicy_ptr);
typedef OBObjVar< OB_ReconnectPolicy > OB_ReconnectPolicy_var;

//
// IDL:ooc.com/OB/TimeoutPolicy:1.0
//
class OB_TimeoutPolicy;
typedef OB_TimeoutPolicy* OB_TimeoutPolicy_ptr;
typedef OB_TimeoutPolicy* OB_TimeoutPolicyRef;
void OBDuplicate(OB_TimeoutPolicy_ptr);
void OBRelease(OB_TimeoutPolicy_ptr);
typedef OBObjVar< OB_TimeoutPolicy > OB_TimeoutPolicy_var;

//
// IDL:ooc.com/OB/PROTOCOL_POLICY:1.0
//
OB_IMPORT extern const CORBA_PolicyType OB_PROTOCOL_POLICY;

//
// IDL:ooc.com/OB/ProtocolPolicy:1.0
//
class OB_ProtocolPolicy : public CORBA_Policy
{
    OB_ProtocolPolicy(const OB_ProtocolPolicy&);
    void operator=(const OB_ProtocolPolicy&);

public:

    OB_ProtocolPolicy() { }

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

    static inline OB_ProtocolPolicy_ptr
    _nil()
    {
        return 0;
    }

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

    //
    // IDL:ooc.com/OB/ProtocolPolicy/value:1.0
    //
    virtual IOP_ProfileId value() = 0;
};

//
// IDL:ooc.com/OB/CONNECTION_REUSE_POLICY:1.0
//
OB_IMPORT extern const CORBA_PolicyType OB_CONNECTION_REUSE_POLICY;

//
// IDL:ooc.com/OB/ConnectionReusePolicy:1.0
//
class OB_ConnectionReusePolicy : public CORBA_Policy
{
    OB_ConnectionReusePolicy(const OB_ConnectionReusePolicy&);
    void operator=(const OB_ConnectionReusePolicy&);

public:

    OB_ConnectionReusePolicy() { }

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

    static inline OB_ConnectionReusePolicy_ptr
    _nil()
    {
        return 0;
    }

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

    //
    // IDL:ooc.com/OB/ConnectionReusePolicy/value:1.0
    //
    virtual CORBA_Boolean value() = 0;
};

//
// IDL:ooc.com/OB/RECONNECT_POLICY:1.0
//
OB_IMPORT extern const CORBA_PolicyType OB_RECONNECT_POLICY;

//
// IDL:ooc.com/OB/ReconnectPolicy:1.0
//
class OB_ReconnectPolicy : public CORBA_Policy
{
    OB_ReconnectPolicy(const OB_ReconnectPolicy&);
    void operator=(const OB_ReconnectPolicy&);

public:

    OB_ReconnectPolicy() { }

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

    static inline OB_ReconnectPolicy_ptr
    _nil()
    {
        return 0;
    }

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

    //
    // IDL:ooc.com/OB/ReconnectPolicy/value:1.0
    //
    virtual CORBA_Boolean value() = 0;
};

//
// IDL:ooc.com/OB/TIMEOUT_POLICY:1.0
//
OB_IMPORT extern const CORBA_PolicyType OB_TIMEOUT_POLICY;

//
// IDL:ooc.com/OB/TimeoutPolicy:1.0
//
class OB_TimeoutPolicy : public CORBA_Policy
{
    OB_TimeoutPolicy(const OB_TimeoutPolicy&);
    void operator=(const OB_TimeoutPolicy&);

public:

    OB_TimeoutPolicy() { }

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

    static inline OB_TimeoutPolicy_ptr
    _nil()
    {
        return 0;
    }

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

    //
    // IDL:ooc.com/OB/TimeoutPolicy/value:1.0
    //
    virtual CORBA_ULong value() = 0;
};

//
// IDL:ooc.com/SSL/ConnectPolicyType:1.0
//

//
// IDL:ooc.com/SSL/ConnectPolicy:1.0
//
inline void
CORBA_release(SSL_ConnectPolicy_ptr p)
{
    if(p)
        p -> _OB_decRef();
}

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

//
// IDL:ooc.com/OB/ProtocolPolicy:1.0
//
inline void
CORBA_release(OB_ProtocolPolicy_ptr p)
{
    if(p)
        p -> _OB_decRef();
}

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

//
// IDL:ooc.com/OB/ConnectionReusePolicy:1.0
//
inline void
CORBA_release(OB_ConnectionReusePolicy_ptr p)
{
    if(p)
        p -> _OB_decRef();
}

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

//
// IDL:ooc.com/OB/ReconnectPolicy:1.0
//
inline void
CORBA_release(OB_ReconnectPolicy_ptr p)
{
    if(p)
        p -> _OB_decRef();
}

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

//
// IDL:ooc.com/OB/TimeoutPolicy:1.0
//
inline void
CORBA_release(OB_TimeoutPolicy_ptr p)
{
    if(p)
        p -> _OB_decRef();
}

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

#endif
