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

// Version: 3.2.1
// License: non-commercial

#ifndef __Policy_h__
#define __Policy_h__

#ifndef OB_INTEGER_VERSION
#   error No ORBacus version defined!
#endif

#ifndef OB_NO_VERSION_CHECK
#   if (OB_INTEGER_VERSION != 3020100L)
#       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/CORBA/PolicyType:1.0
//
typedef CORBA_ULong CORBA_PolicyType;

//
// IDL:omg.org/CORBA/PolicyTypeSeq:1.0
//
typedef OBFixSeq< CORBA_PolicyType > CORBA_PolicyTypeSeq;
typedef OBSeqVar< OBFixSeq< CORBA_PolicyType > > CORBA_PolicyTypeSeq_var;

//
// IDL:omg.org/CORBA/Policy:1.0
//
class CORBA_Policy : virtual public CORBA_Object
{
    CORBA_Policy(const CORBA_Policy&);
    void operator=(const CORBA_Policy&);

public:

    CORBA_Policy() { }

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

    static inline CORBA_Policy_ptr
    _nil()
    {
        return 0;
    }

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

    //
    // IDL:omg.org/CORBA/Policy/policy_type:1.0
    //
    virtual CORBA_PolicyType policy_type() = 0;

    //
    // IDL:omg.org/CORBA/Policy/copy:1.0
    //
    virtual CORBA_Policy_ptr copy() = 0;

    //
    // IDL:omg.org/CORBA/Policy/destroy:1.0
    //
    virtual void destroy() = 0;
};

//
// IDL:omg.org/CORBA/PolicyList:1.0
//
typedef OBObjSeq< CORBA_Policy > CORBA_PolicyList;
typedef OBSeqVar< OBObjSeq< CORBA_Policy > > CORBA_PolicyList_var;

//
// IDL:omg.org/CORBA/Policy:1.0
//
inline void
CORBA_release(CORBA_Policy_ptr p)
{
    if(p)
        p -> _OB_decRef();
}

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

//
// OBObjSeq< CORBA_Policy >
//
#ifndef OB_use_OBObjSeq_CORBA__Policy
#define OB_use_OBObjSeq_CORBA__Policy
#define OB_use_OBObjSeq_CORBA__Policy_from_Policy_h

#endif

#endif
