// **********************************************************************
//
// Generated by the ORBacus IDL-to-C++ Translator
//
// Copyright (c) 1998
// Object-Oriented Concepts, Inc.
// Billerica, MA, USA
//
// Copyright (c) 1998
// Object-Oriented Concepts GmbH
// Ettlingen, Germany
//
// All Rights Reserved
//
// **********************************************************************

// Version: 3.0
// License: non-commercial

#ifndef __OBPolicies_h__
#define __OBPolicies_h__

#include <OB/Policy.h>

//
// 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: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 : virtual 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/connect_policy:1.0
    //
    virtual SSL_ConnectPolicyType connect_policy() = 0;
};

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

//
// 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/CONNECTION_REUSE:1.0
//
OB_IMPORT extern const CORBA_PolicyType OB_CONNECTION_REUSE;

//
// IDL:ooc.com/OB/ConnectionReusePolicy:1.0
//
class OB_ConnectionReusePolicy : virtual 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/reuseConnection:1.0
    //
    virtual CORBA_Boolean reuseConnection() = 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/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;
}

#endif
