📄 warfileengine.cpp
字号:
#include "StdAfx.h"#include "WarFileEngine.h" // class implemented#ifndef WAR_AUTO_LOCK_H# include "WarAutoLock.h"#endif#ifndef WAR_LOG_H# include "WarLog.h"#endifusing namespace std;/////////////////////////////// PUBLIC ///////////////////////////////////////WarFileEngine *WarFileEngine::mspMe;#define AUTO_LOCK WarAutoLock my_lock(mLock);//============================= LIFECYCLE ====================================WarFileEngine::WarFileEngine() throw(WarException){ if (mspMe) WarThrow(WarError(WAR_ERR_OBJECT_EXIST), NULL); mspMe = this;}// WarFileEngineWarFileEngine::~WarFileEngine(){ if (mspMe == this) mspMe = NULL;}// ~WarFileEngine//============================= OPERATORS ====================================//============================= OPERATIONS ===================================void WarFileEngine::AttachDriver(WarFileDriver *pDriver) throw(WarException){ WarLog debug_log(WARLOG_FILES, "WarFileEngine::AttachDriver()"); debug_log << "Adding driver: '" << pDriver->GetName() << "'" << war_endl; AUTO_LOCK WarFileDriver::driver_ptr_t driver_ref(pDriver); pair<driver_list_t::iterator, bool> result = mDrivers.insert(pDriver); if (!result.second) { WarLog err_log(WARLOG_ERROR, "WarFileEngine::AttachDriver()"); err_log << "The driver '" << pDriver->GetName() << "' was already installed!" << WarError(WAR_ERR_OBJECT_EXIST) << war_endl; WarThrow(WarError(WAR_ERR_OBJECT_EXIST), NULL); }}void WarFileEngine::DetachDriver(war_ccstr_t driverName) throw(WarException){ AUTO_LOCK driver_list_t::iterator P = Lookup(driverName); mDrivers.erase(P);}WarFileDriver::driver_ptr_t WarFileEngine::GetDriver(war_ccstr_t driverName) throw(WarException){ AUTO_LOCK driver_list_t::iterator P = Lookup(driverName); return (*P);}//============================= ACCESS ===================================//============================= INQUIRY ===================================/////////////////////////////// PROTECTED ///////////////////////////////////bool WarFileEngine::IsDriverInstalled(war_ccstr_t driverName){ AUTO_LOCK#if WAR_CATCH_ALL try#endif { Lookup(driverName); return true; }#if WAR_CATCH_ALL catch(...) { }#endif return false;}/////////////////////////////// PRIVATE ///////////////////////////////////WarFileEngine::driver_list_t::iterator WarFileEngine::Lookup(war_ccstr_t driverName) throw(WarException){ WarFileDriver *pkey_driver = new WarFileDriver(driverName); driver_list_t::iterator P = mDrivers.find(pkey_driver); if (P == mDrivers.end()) WarThrow(WarError(WAR_ERR_OBJECT_NOT_FOUND), NULL); return P;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -