// **********************************************************************
//
// Copyright (c) 1999
// Object Oriented Concepts, Inc.
// Billerica, MA, USA
//
// All Rights Reserved
//
// **********************************************************************

#ifndef OB_ORBPOLICYMANAGER_IMPL_H
#define OB_ORBPOLICYMANAGER_IMPL_H

class ORBPolicyManager_impl : public CORBA_PolicyManager
{
    //
    // Hide copy-constructor and assignment operator
    //
    ORBPolicyManager_impl(const ORBPolicyManager_impl&);
    void operator=(const ORBPolicyManager_impl&);

    CORBA_PolicyList& policies_;

    ORBPolicyManager_impl(CORBA_PolicyList&);
    friend class CORBA_ORB; // ORBs may create ORBPolicyManagers

public:

    ~ORBPolicyManager_impl();

    virtual CORBA_Policy_ptr get_policy_override(CORBA_PolicyType);

    virtual CORBA_PolicyList*
    get_specific_policy_overrides(const CORBA_PolicyTypeSeq&);

    virtual CORBA_PolicyList* get_all_policy_overrides();

    virtual void add_policy_overrides(const CORBA_PolicyList&);

    virtual void remove_policy_overrides(const CORBA_PolicyTypeSeq&);

    virtual void replace_all_policy_overrides(const CORBA_PolicyList&);
};

#endif
