Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members

# KeosResourceManager.h

Go to the documentation of this file.

    00001 /*
    00002  * This source file is part of KEOS (Free 3D Engine)
    00003  * For the latest info, see http://www.keosengine.org/
    00004  * E-mails : thierry.vouriot@keosengine.org, yeri@keosengine.org
    00005  *
    00006  * This program is free software; you can redistribute it and/or modify it under
    00007  * the terms of the GNU Lesser General Public License as published by the Free Software
    00008  * Foundation; either version 2 of the License, or (at your option) any later
    00009  * version.
    00010  *
    00011  * This program is distributed in the hope that it will be useful, but WITHOUT
    00012  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
    00013  * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
    00014  *
    00015  * You should have received a copy of the GNU Lesser General Public License along with
    00016  * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
    00017  * Place - Suite 330, Boston, MA 02111-1307, USA, or go to
    00018  * http://www.gnu.org/copyleft/lesser.txt.
    00019  *
    00020  */
    00021 #ifndef KEOS_RESOURCEMANAGER_H
    00022 #define KEOS_RESOURCEMANAGER_H
    00023
    00024 #include "KeosPrerequisites.h"
    00025 #include "KeosSingleton.h"
    00026
    00027 namespace Keos
    00028 {
    00029     //-----------------------------------------------------------------------
    00033     class KEOS_EXPORT CResourceManager : public CSingleton<CResourceManager>
    00034     {
    00035     friend CSingleton<CResourceManager>;
    00036
    00037     public :
    00038
    00043         template <class T> T* Get(const String& strName) const;
    00044
    00049         void Add(const String& strName, IResource* pResource);
    00050
    00054         void Remove(const String& strName);
    00055
    00056     private :
    00057
    00060         CResourceManager();
    00061
    00064         ~CResourceManager();
    00065
    00066         typedef std::map<String, IResource*> TResourcesMap;
    00067
    00069         TResourcesMap m_Resources;
    00070     };
    00071
    00072     //=======================================================================
    00073     // CResourceManager inline functions
    00074     //=======================================================================
    00075
    00076     //-----------------------------------------------------------------------
    00077     template <class T>
    00078     inline T* CResourceManager::Get(const String& strName) const
    00079     {
    00080         TResourcesMap::const_iterator It = m_Resources.find(strName);
    00081
    00082         if (It != m_Resources.end())
    00083         {
    00084             It->second->AddRef();
    00085             return static_cast<T*>(It->second);
    00086         }
    00087         else
    00088         {
    00089             return NULL;
    00090         }
    00091     }
    00092
    00093 } // namespace Keos
    00094
    00095 #endif // KEOS_RESOURCEMANAGER_H