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 "KeosDynLibManager.h" 00023 #include "KeosDynLib.h" 00024 #include "KeosException.h" 00025 00026 namespace Keos 00027 { 00028 //======================================================================= 00029 // CDynLibManager implementation 00030 //======================================================================= 00031 00032 //----------------------------------------------------------------------- 00033 CDynLibManager::CDynLibManager() 00034 {} 00035 00036 //----------------------------------------------------------------------- 00037 CDynLib* CDynLibManager::Load( const String& filename) 00038 { 00039 CDynLib* pLib = new CDynLib(filename); 00040 try 00041 { 00042 pLib->Load(); 00043 } 00044 catch (const CDynLibError& E) 00045 { 00046 delete pLib; 00047 throw E; 00048 } 00049 m_LibList[filename] = pLib; 00050 return pLib; 00051 } 00052 00053 //----------------------------------------------------------------------- 00054 void CDynLibManager::Unload(CDynLib* lib) 00055 { 00056 DynLibList::iterator i = m_LibList.find(lib->GetName()); 00057 if (i != m_LibList.end()) 00058 { 00059 m_LibList.erase(i); 00060 } 00061 lib->Unload(); 00062 delete lib; 00063 } 00064 00065 //----------------------------------------------------------------------- 00066 CDynLibManager::~CDynLibManager() 00067 { 00068 // Unload & delete resources in turn 00069 for ( DynLibList::iterator it = m_LibList.begin(); it != m_LibList.end(); ++it ) 00070 { 00071 it->second->Unload(); 00072 delete it->second; 00073 } 00074 00075 // Empty the list 00076 m_LibList.clear(); 00077 } 00078 } // namespace Keos
1.5.1-p1