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

ResourceManager< T > Class Template Reference

#include <resmanager.h>

List of all members.

Public Types

typedef T::ResourceType ResourceType

Public Member Functions

ResourceTypefind (ResourceHandle h)
ResourceHandle getHandle (const T &info)
const T * getResourceInfo (ResourceHandle h)
 ResourceManager (std::string _baseDir)
 ResourceManager ()
 ~ResourceManager ()

Private Types

typedef std::map< std::string,
ResourceType * > 
NameMap
typedef NameMap::value_type NameMapValue
typedef std::map< T, ResourceHandleResourceHandleMap
typedef ResourceHandleMap::value_type ResourceHandleMapValue
typedef std::vector< T > ResourceTable

Private Attributes

std::string baseDir
ResourceHandleMap handles
NameMap loadedResources
ResourceTable resources

template<class T>
class ResourceManager< T >


Member Typedef Documentation

template<class T>
typedef std::map<std::string, ResourceType*> ResourceManager< T >::NameMap [private]
 

Definition at line 57 of file resmanager.h.

template<class T>
typedef NameMap::value_type ResourceManager< T >::NameMapValue [private]
 

Definition at line 60 of file resmanager.h.

template<class T>
typedef std::map<T, ResourceHandle> ResourceManager< T >::ResourceHandleMap [private]
 

Definition at line 56 of file resmanager.h.

template<class T>
typedef ResourceHandleMap::value_type ResourceManager< T >::ResourceHandleMapValue [private]
 

Definition at line 59 of file resmanager.h.

template<class T>
typedef std::vector<T> ResourceManager< T >::ResourceTable [private]
 

Definition at line 55 of file resmanager.h.

template<class T>
typedef T::ResourceType ResourceManager< T >::ResourceType
 

Definition at line 52 of file resmanager.h.


Constructor & Destructor Documentation

template<class T>
ResourceManager< T >::ResourceManager  ) 
 

template<class T>
ResourceManager< T >::ResourceManager std::string  _baseDir  )  [inline]
 

Definition at line 49 of file resmanager.h.

References ResourceManager< T >::baseDir.

00049 : baseDir(_baseDir) {};

template<class T>
ResourceManager< T >::~ResourceManager  ) 
 


Member Function Documentation

template<class T>
ResourceType* ResourceManager< T >::find ResourceHandle  h  )  [inline]
 

Definition at line 83 of file resmanager.h.

References ResourceManager< T >::baseDir, ResourceManager< T >::handles, ResourceManager< T >::loadedResources, ResourceLoaded, ResourceLoadingFailed, ResourceNotLoaded, and ResourceManager< T >::resources.

Referenced by Body::computeLocations(), CreateOrbit(), ExactPlanetPickTraversal(), MultiResTexture::find(), GLSL_RenderContext::makeCurrent(), FixedFunctionRenderContext::makeCurrent(), Nebula::render(), Mesh3DS::render(), and Renderer::renderObject().

00084     {
00085         if (h >= (int) handles.size() || h < 0)
00086         {
00087             return NULL;
00088         }
00089         else
00090         {
00091             if (resources[h].state == ResourceNotLoaded)
00092             {
00093                 resources[h].resolvedName = resources[h].resolve(baseDir);
00094                 typename NameMap::iterator iter =
00095                     loadedResources.find(resources[h].resolvedName);
00096                 if (iter != loadedResources.end())
00097                 {
00098                     resources[h].resource = iter->second;
00099                     resources[h].state = ResourceLoaded;
00100                 }
00101                 else
00102                 {
00103                     resources[h].resource = resources[h].load(resources[h].resolvedName);
00104                     if (resources[h].resource == NULL)
00105                     {
00106                         resources[h].state = ResourceLoadingFailed;
00107                     }
00108                     else
00109                     {
00110                         resources[h].state = ResourceLoaded;
00111                         loadedResources.insert(NameMapValue(resources[h].resolvedName, resources[h].resource));
00112                     }
00113                 }
00114             }
00115 
00116             if (resources[h].state == ResourceLoaded)
00117                 return resources[h].resource;
00118             else
00119                 return NULL;
00120         }
00121     }

template<class T>
ResourceHandle ResourceManager< T >::getHandle const T &  info  )  [inline]
 

Definition at line 67 of file resmanager.h.

References ResourceManager< T >::handles, and ResourceManager< T >::resources.

Referenced by Convert3DSMesh(), ConvertToVertexList(), convertToVertexList(), createBumpMap(), CreateOrbit(), CreatePlanet(), StarDatabase::createStar(), createTexture(), StarDetails::InitializeStarTextures(), Nebula::load(), BinaryModelLoader::loadMaterial(), AsciiModelLoader::loadMaterial(), and MultiResTexture::setTexture().

00068     {
00069         typename ResourceHandleMap::iterator iter = handles.find(info);
00070         if (iter != handles.end())
00071         {
00072             return iter->second;
00073         }
00074         else
00075         {
00076             ResourceHandle h = handles.size();
00077             resources.insert(resources.end(), info);
00078             handles.insert(ResourceHandleMapValue(info, h));
00079             return h;
00080         }
00081     }

template<class T>
const T* ResourceManager< T >::getResourceInfo ResourceHandle  h  )  [inline]
 

Definition at line 123 of file resmanager.h.

References ResourceManager< T >::handles, and ResourceManager< T >::resources.

Referenced by BinaryModelWriter::writeMaterial(), and AsciiModelWriter::writeMaterial().

00124     {
00125         if (h >= (int) handles.size() || h < 0)
00126             return NULL;
00127         else
00128             return &resources[h];
00129     }


Member Data Documentation

template<class T>
std::string ResourceManager< T >::baseDir [private]
 

Definition at line 45 of file resmanager.h.

Referenced by ResourceManager< T >::find(), and ResourceManager< T >::ResourceManager().

template<class T>
ResourceHandleMap ResourceManager< T >::handles [private]
 

Definition at line 63 of file resmanager.h.

Referenced by ResourceManager< T >::find(), ResourceManager< T >::getHandle(), and ResourceManager< T >::getResourceInfo().

template<class T>
NameMap ResourceManager< T >::loadedResources [private]
 

Definition at line 64 of file resmanager.h.

Referenced by ResourceManager< T >::find().

template<class T>
ResourceTable ResourceManager< T >::resources [private]
 

Definition at line 62 of file resmanager.h.

Referenced by ResourceManager< T >::find(), ResourceManager< T >::getHandle(), and ResourceManager< T >::getResourceInfo().


The documentation for this class was generated from the following file:
Generated on Sat Jan 14 22:33:34 2006 for Celestia by  doxygen 1.4.1