<html> <head> <title>OgreResourceManager.h Source File - OGRE Documentation</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <link type="text/css" rel="stylesheet" href="style.css"> </head> <body> <!-- Generated by Doxygen 1.3.6 --> <div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a> | <a class="qindex" href="pages.html">Related Pages</a></div> <h1>OgreResourceManager.h</h1><a href="OgreResourceManager_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/*</span> 00002 <span class="comment">-----------------------------------------------------------------------------</span> 00003 <span class="comment">This source file is part of OGRE</span> 00004 <span class="comment"> (Object-oriented Graphics Rendering Engine)</span> 00005 <span class="comment">For the latest info, see http://www.ogre3d.org/</span> 00006 <span class="comment"></span> 00007 <span class="comment">Copyright (c) 2000-2005 The OGRE Team</span> 00008 <span class="comment">Also see acknowledgements in Readme.html</span> 00009 <span class="comment"></span> 00010 <span class="comment">This program is free software; you can redistribute it and/or modify it under</span> 00011 <span class="comment">the terms of the GNU Lesser General Public License as published by the Free Software</span> 00012 <span class="comment">Foundation; either version 2 of the License, or (at your option) any later</span> 00013 <span class="comment">version.</span> 00014 <span class="comment"></span> 00015 <span class="comment">This program is distributed in the hope that it will be useful, but WITHOUT</span> 00016 <span class="comment">ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS</span> 00017 <span class="comment">FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.</span> 00018 <span class="comment"></span> 00019 <span class="comment">You should have received a copy of the GNU Lesser General Public License along with</span> 00020 <span class="comment">this program; if not, write to the Free Software Foundation, Inc., 59 Temple</span> 00021 <span class="comment">Place - Suite 330, Boston, MA 02111-1307, USA, or go to</span> 00022 <span class="comment">http://www.gnu.org/copyleft/lesser.txt.</span> 00023 <span class="comment">-----------------------------------------------------------------------------</span> 00024 <span class="comment">*/</span> 00025 <span class="preprocessor">#ifndef _ResourceManager_H__</span> 00026 <span class="preprocessor"></span><span class="preprocessor">#define _ResourceManager_H__</span> 00027 <span class="preprocessor"></span> 00028 <span class="preprocessor">#include "<a class="code" href="OgrePrerequisites_8h.html">OgrePrerequisites.h</a>"</span> 00029 00030 <span class="preprocessor">#include "<a class="code" href="OgreResource_8h.html">OgreResource.h</a>"</span> 00031 <span class="preprocessor">#include "<a class="code" href="OgreResourceGroupManager_8h.html">OgreResourceGroupManager.h</a>"</span> 00032 <span class="preprocessor">#include "<a class="code" href="OgreIteratorWrappers_8h.html">OgreIteratorWrappers.h</a>"</span> 00033 <span class="preprocessor">#include "<a class="code" href="OgreCommon_8h.html">OgreCommon.h</a>"</span> 00034 <span class="preprocessor">#include "<a class="code" href="OgreDataStream_8h.html">OgreDataStream.h</a>"</span> 00035 <span class="preprocessor">#include "<a class="code" href="OgreStringVector_8h.html">OgreStringVector.h</a>"</span> 00036 <span class="preprocessor">#include "<a class="code" href="OgreScriptLoader_8h.html">OgreScriptLoader.h</a>"</span> 00037 00038 <span class="keyword">namespace </span>Ogre { 00039 <a name="l00064"></a><a class="code" href="classOgre_1_1ResourceManager.html">00064</a> <span class="keyword">class </span><a class="code" href="OgrePlatform_8h.html#a13">_OgreExport</a> ResourceManager : <span class="keyword">public</span> <a class="code" href="classOgre_1_1ScriptLoader.html">ScriptLoader</a> 00065 { 00066 <span class="keyword">public</span>: 00067 <a class="code" href="OgrePrerequisites_8h.html#a11">OGRE_AUTO_MUTEX</a> <span class="comment">// public to allow external locking</span> 00068 ResourceManager(); 00069 <span class="keyword">virtual</span> ~ResourceManager(); 00070 00090 <span class="keyword">virtual</span> <a class="code" href="classOgre_1_1SharedPtr.html">ResourcePtr</a> create(<span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& name, <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& group, 00091 <span class="keywordtype">bool</span> isManual = <span class="keyword">false</span>, <a class="code" href="classOgre_1_1ManualResourceLoader.html">ManualResourceLoader</a>* loader = 0, 00092 <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a62">NameValuePairList</a>* createParams = 0); 00100 <span class="keyword">virtual</span> <span class="keywordtype">void</span> setMemoryBudget( size_t bytes); 00101 00104 <span class="keyword">virtual</span> size_t getMemoryBudget(<span class="keywordtype">void</span>) <span class="keyword">const</span>; 00105 00112 <span class="keyword">virtual</span> <span class="keywordtype">void</span> unload(<span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& name); 00113 00120 <span class="keyword">virtual</span> <span class="keywordtype">void</span> unload(<a class="code" href="namespaceOgre.html#a485">ResourceHandle</a> handle); 00121 00128 <span class="keyword">virtual</span> <span class="keywordtype">void</span> unloadAll(<span class="keywordtype">void</span>); 00134 <span class="keyword">virtual</span> <span class="keywordtype">void</span> reloadAll(<span class="keywordtype">void</span>); 00135 00153 <span class="keyword">virtual</span> <span class="keywordtype">void</span> remove(<a class="code" href="classOgre_1_1SharedPtr.html">ResourcePtr</a>& r); 00154 00172 <span class="keyword">virtual</span> <span class="keywordtype">void</span> remove(<span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& name); 00173 00191 <span class="keyword">virtual</span> <span class="keywordtype">void</span> remove(<a class="code" href="namespaceOgre.html#a485">ResourceHandle</a> handle); 00206 <span class="keyword">virtual</span> <span class="keywordtype">void</span> removeAll(<span class="keywordtype">void</span>); 00207 00210 <span class="keyword">virtual</span> <a class="code" href="classOgre_1_1SharedPtr.html">ResourcePtr</a> getByName(<span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& name); 00213 <span class="keyword">virtual</span> <a class="code" href="classOgre_1_1SharedPtr.html">ResourcePtr</a> getByHandle(<a class="code" href="namespaceOgre.html#a485">ResourceHandle</a> handle); 00214 <a name="l00216"></a><a class="code" href="classOgre_1_1ResourceManager.html#Ogre_1_1TextureManagera23">00216</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> resourceExists(<span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& name) 00217 { 00218 <span class="keywordflow">return</span> getByName(name).<a class="code" href="classOgre_1_1SharedPtr.html#Ogre_1_1SharedPtra13">isNull</a>(); 00219 } <a name="l00221"></a><a class="code" href="classOgre_1_1ResourceManager.html#Ogre_1_1TextureManagera24">00221</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> resourceExists(<a class="code" href="namespaceOgre.html#a485">ResourceHandle</a> handle) 00222 { 00223 <span class="keywordflow">return</span> getByHandle(handle).<a class="code" href="classOgre_1_1SharedPtr.html#Ogre_1_1SharedPtra13">isNull</a>(); 00224 } 00225 00229 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _notifyResourceTouched(<a class="code" href="classOgre_1_1Resource.html">Resource</a>* res); 00230 00234 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _notifyResourceLoaded(<a class="code" href="classOgre_1_1Resource.html">Resource</a>* res); 00235 00239 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _notifyResourceUnloaded(<a class="code" href="classOgre_1_1Resource.html">Resource</a>* res); 00240 00254 <span class="keyword">virtual</span> <a class="code" href="classOgre_1_1SharedPtr.html">ResourcePtr</a> load(<span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& name, 00255 <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& group, <span class="keywordtype">bool</span> isManual = <span class="keyword">false</span>, 00256 <a class="code" href="classOgre_1_1ManualResourceLoader.html">ManualResourceLoader</a>* loader = 0, <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a62">NameValuePairList</a>* loadParams = 0); 00257 <a name="l00273"></a><a class="code" href="classOgre_1_1ResourceManager.html#Ogre_1_1TextureManagera29">00273</a> <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a534">StringVector</a>& getScriptPatterns(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mScriptPatterns; } 00274 <a name="l00288"></a><a class="code" href="classOgre_1_1ResourceManager.html#Ogre_1_1TextureManagera30">00288</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> parseScript(<a class="code" href="classOgre_1_1SharedPtr.html">DataStreamPtr</a>& stream, <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& groupName) {} 00289 <a name="l00296"></a><a class="code" href="classOgre_1_1ResourceManager.html#Ogre_1_1TextureManagera31">00296</a> <span class="keyword">virtual</span> <a class="code" href="namespaceOgre.html#a420">Real</a> getLoadingOrder(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mLoadOrder; } 00297 <a name="l00299"></a><a class="code" href="classOgre_1_1ResourceManager.html#Ogre_1_1TextureManagera32">00299</a> <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& getResourceType(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mResourceType; } 00300 00301 <span class="keyword">protected</span>: 00302 00304 <a class="code" href="namespaceOgre.html#a485">ResourceHandle</a> getNextHandle(<span class="keywordtype">void</span>); 00305 00327 <span class="keyword">virtual</span> <a class="code" href="classOgre_1_1Resource.html">Resource</a>* createImpl(<span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& name, <a class="code" href="namespaceOgre.html#a485">ResourceHandle</a> handle, 00328 <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& group, <span class="keywordtype">bool</span> isManual, <a class="code" href="classOgre_1_1ManualResourceLoader.html">ManualResourceLoader</a>* loader, 00329 <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a62">NameValuePairList</a>* createParams) = 0; 00331 <span class="keyword">virtual</span> <span class="keywordtype">void</span> addImpl( <a class="code" href="classOgre_1_1SharedPtr.html">ResourcePtr</a>& res ); 00333 <span class="keyword">virtual</span> <span class="keywordtype">void</span> removeImpl( <a class="code" href="classOgre_1_1SharedPtr.html">ResourcePtr</a>& res ); 00336 <span class="keyword">virtual</span> <span class="keywordtype">void</span> checkUsage(<span class="keywordtype">void</span>); <a name="l00338"></a><a class="code" href="classOgre_1_1ResourceManager.html#Ogre_1_1TextureManagerb5">00338</a> <span class="keyword">virtual</span> size_t getMemoryUsage(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mMemoryUsage; } 00339 00340 00341 <span class="keyword">public</span>: <a name="l00342"></a><a class="code" href="classOgre_1_1ResourceManager.html#Ogre_1_1TextureManagerw0">00342</a> <span class="keyword">typedef</span> HashMap< String, ResourcePtr > <a class="code" href="classOgre_1_1ResourceManager.html#Ogre_1_1TextureManagerw0">ResourceMap</a>; <a name="l00343"></a><a class="code" href="classOgre_1_1ResourceManager.html#Ogre_1_1TextureManagerw1">00343</a> <span class="keyword">typedef</span> std::map<ResourceHandle, ResourcePtr> <a class="code" href="classOgre_1_1ResourceManager.html#Ogre_1_1TextureManagerw1">ResourceHandleMap</a>; 00344 <span class="keyword">protected</span>: <a name="l00345"></a><a class="code" href="classOgre_1_1ResourceManager.html#Ogre_1_1TextureManagerp2">00345</a> <a class="code" href="classOgre_1_1ResourceManager.html#Ogre_1_1TextureManagerw1">ResourceHandleMap</a> mResourcesByHandle; <a name="l00346"></a><a class="code" href="classOgre_1_1ResourceManager.html#Ogre_1_1TextureManagerp3">00346</a> <a class="code" href="classOgre_1_1ResourceManager.html#Ogre_1_1TextureManagerw0">ResourceMap</a> mResources; <a name="l00347"></a><a class="code" href="classOgre_1_1ResourceManager.html#Ogre_1_1TextureManagerp4">00347</a> <a class="code" href="namespaceOgre.html#a485">ResourceHandle</a> mNextHandle; <a name="l00348"></a><a class="code" href="classOgre_1_1ResourceManager.html#Ogre_1_1TextureManagerp5">00348</a> size_t mMemoryBudget; <span class="comment">// In bytes</span> <a name="l00349"></a><a class="code" href="classOgre_1_1ResourceManager.html#Ogre_1_1TextureManagerp6">00349</a> size_t mMemoryUsage; <span class="comment">// In bytes</span> 00350 00351 <span class="comment">// IMPORTANT - all subclasses must populate the fields below</span> 00352 <a name="l00354"></a><a class="code" href="classOgre_1_1ResourceManager.html#Ogre_1_1TextureManagerp7">00354</a> <a class="code" href="namespaceOgre.html#a534">StringVector</a> mScriptPatterns; <a name="l00356"></a><a class="code" href="classOgre_1_1ResourceManager.html#Ogre_1_1TextureManagerp8">00356</a> <a class="code" href="namespaceOgre.html#a420">Real</a> mLoadOrder; <a name="l00358"></a><a class="code" href="classOgre_1_1ResourceManager.html#Ogre_1_1TextureManagerp9">00358</a> <a class="code" href="namespaceOgre.html#a426">String</a> mResourceType; 00359 00360 <span class="keyword">public</span>: <a name="l00361"></a><a class="code" href="classOgre_1_1ResourceManager.html#Ogre_1_1TextureManagerw2">00361</a> <span class="keyword">typedef</span> <a class="code" href="classOgre_1_1MapIterator.html">MapIterator<ResourceHandleMap></a> <a class="code" href="classOgre_1_1MapIterator.html">ResourceMapIterator</a>; <a name="l00366"></a><a class="code" href="classOgre_1_1ResourceManager.html#Ogre_1_1TextureManagera33">00366</a> <a class="code" href="classOgre_1_1MapIterator.html">ResourceMapIterator</a> getResourceIterator(<span class="keywordtype">void</span>) 00367 { 00368 <span class="keywordflow">return</span> <a class="code" href="classOgre_1_1MapIterator.html">ResourceMapIterator</a>(mResourcesByHandle.begin(), mResourcesByHandle.end()); 00369 } 00370 00371 00372 00373 }; 00374 00375 } 00376 00377 <span class="preprocessor">#endif</span> </pre></div><p> Copyright © 2000-2005 by The OGRE Team<br /> Last modified Wed Feb 23 00:19:12 2005 </p> </body> </html>