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

# KeosResourceManager.cpp

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
    00022 #include "KeosResourceManager.h"
    00023 #include "KeosLogger.h"
    00024 #include "KeosException.h"
    00025 #include "KeosResource.h"
    00026
    00027 namespace Keos
    00028 {
    00029     //=======================================================================
    00030     // CResourceManager implementation
    00031     //=======================================================================
    00032
    00033     //-----------------------------------------------------------------------
    00034     CResourceManager::CResourceManager()
    00035     {
    00036         ILogger::Log("--> Create ResourceManager");
    00037     }
    00038
    00039     //-----------------------------------------------------------------------
    00040     CResourceManager::~CResourceManager()
    00041     {
    00042         ILogger::Log("<-- Destroy ResourceManager");
    00043         if (!m_Resources.empty())
    00044         {
    00045             ILogger::Log("WARNING - Some resources have not been released :");
    00046
    00047             for (TResourcesMap::const_iterator i = m_Resources.begin(); i != m_Resources.end(); ++i)
    00048             {
    00049                 ILogger::Log(" - %s",i->second->GetName().c_str());
    00050             }
    00051         }
    00052     }
    00053
    00054     //-----------------------------------------------------------------------
    00055     void CResourceManager::Add(const String& strName, IResource* pResource)
    00056     {
    00057         Assert(pResource != NULL);
    00058
    00059         if (m_Resources.find(strName) != m_Resources.end())
    00060             ILogger::Log("WARNING - %s : resource already loaded !", strName.c_str());
    00061
    00062         m_Resources[strName] = pResource;
    00063         pResource->m_strName = strName;
    00064     }
    00065
    00066     //-----------------------------------------------------------------------
    00067     void CResourceManager::Remove(const String& strName)
    00068     {
    00069         TResourcesMap::iterator It = m_Resources.find(strName);
    00070
    00071         if (It == m_Resources.end())
    00072             ILogger::Log("WARNING - %s : resource destroyed but not loaded !", strName.c_str());
    00073
    00074         m_Resources.erase(It);
    00075     }
    00076
    00077 } // namespace Keos