// src/backend/policy_manager.hh - Copyright 2005, 2006, University // of Padova, dept. of Pure and Applied // Mathematics // // This file is part of SGPEMv2. // // This is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // SGPEMv2 is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with SGPEMv2; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #ifndef POLICY_MANAGER_HH #define POLICY_MANAGER_HH 1 #include "config.h" #include "policy.hh" namespace sgpem { class PolicyManager; /** PolicyManager is the Abstract Factory for \ref Policy objects. */ class SG_DLLEXPORT PolicyManager { public: /** \brief PolicyManager constructor * * Saves ``this'' pointer into the _registered attribute, so it can access * it when requested. This is done so that concrete subclasses can be defined * even if they are found in external dynamic modules not known at compile time. * * For the moment, just an instance of PolicyManager can be saved. This will * be expanded in next milestones. */ PolicyManager(); virtual ~PolicyManager() = 0; /** Gets THE policy (the only today) used. Next versions will implement some other kind. \return A reference to the policy. */ virtual Policy& get_policy() = 0; /** Init (or reset if yet initialized) the manager. */ virtual void init() = 0; /** \brief Get the registered manager instance * * \return The registered policy manager instance. */ static PolicyManager& get_registered_manager(); private: /** A pointer to the registered instance */ static PolicyManager* _registered; }; } //~ namespace sgpem #endif