[Sphere-axis-commits] CVS: Axis/S_ScriptsBase ScriptCache.cpp,NONE,1.1 ScriptCache.h,NONE,1.1 S_Scri
Brought to you by:
pesterle
From: Philip E. <pes...@us...> - 2003-08-05 20:43:08
|
Update of /cvsroot/sphere-axis/Axis/S_ScriptsBase In directory sc8-pr-cvs1:/tmp/cvs-serv24790/S_ScriptsBase Modified Files: S_ScriptsBase.vcproj ScriptArray.h Added Files: ScriptCache.cpp ScriptCache.h Log Message: Base items loaded as part of the CWorldItem::LoadBase() method are now cached. --- NEW FILE: ScriptCache.cpp --- #include "StdAfx.h" #include "scriptcache.h" --- NEW FILE: ScriptCache.h --- #pragma once #include "scriptarray.h" template <class ScriptPtrType> class __declspec(dllexport) CScriptCache : public CScriptArray<ScriptPtrType> { public: CScriptCache(void) { } ~CScriptCache(void) { } int MaxEntries() { return m_iMaxEntries; } void MaxEntries(int i) { m_iMaxEntries = i; } int Entries() { return m_vCacheLinks.size(); } void Promote(ScriptPtrType pObj) { for ( vector<void*>::iterator i = m_vCacheLinks.begin(); i < m_vCacheLinks.end(); i++ ) { if ( *i == ((void*) pObj) ) { m_vCacheLinks.erase(i); m_vCacheLinks.push_back((void*)pObj); break; } } // Didn't find it! Add it to the cache Cache(pObj); } void Cache(ScriptPtrType pObj) { // Add to the cache array Add(pObj); // Add to the list of cached objects void * ptr = (void*) pObj; m_vCacheLinks.push_back(ptr); // Remove the oldest cached object if we have exceeded our limit while ( m_vCacheLinks.size() > (size_t) m_iMaxEntries ) { vector<void*>::iterator i = m_vCacheLinks.begin(); ScriptPtrType pObj = (ScriptPtrType) *i; Remove(pObj); m_vCacheLinks.erase(i); } return; } protected: vector<void*> m_vCacheLinks; int m_iMaxEntries; }; Index: S_ScriptsBase.vcproj =================================================================== RCS file: /cvsroot/sphere-axis/Axis/S_ScriptsBase/S_ScriptsBase.vcproj,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -r1.12 -r1.13 *** S_ScriptsBase.vcproj 9 Jul 2003 19:57:26 -0000 1.12 --- S_ScriptsBase.vcproj 5 Aug 2003 20:43:05 -0000 1.13 *************** *** 151,154 **** --- 151,157 ---- </File> <File + RelativePath="ScriptCache.cpp"> + </File> + <File RelativePath="StringBlock.cpp"> </File> *************** *** 234,237 **** --- 237,243 ---- <File RelativePath="ScriptBase.h"> + </File> + <File + RelativePath="ScriptCache.h"> </File> <File Index: ScriptArray.h =================================================================== RCS file: /cvsroot/sphere-axis/Axis/S_ScriptsBase/ScriptArray.h,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -r1.7 -r1.8 *** ScriptArray.h 24 Jul 2003 20:12:44 -0000 1.7 --- ScriptArray.h 5 Aug 2003 20:43:05 -0000 1.8 *************** *** 113,117 **** void Remove(ScriptPtrType pScript) { ! vector<ScriptPtrType>::iterator p = m_members.find(m_members.begin(), m_members.end(), pScript); if ( p != m_members.end() ) { --- 113,117 ---- void Remove(ScriptPtrType pScript) { ! vector<ScriptPtrType>::iterator p = find(m_members.begin(), m_members.end(), pScript); if ( p != m_members.end() ) { |