nomlib
Loading...
Searching...
No Matches
nom::ResourceCache< ResourceType > Class Template Reference

Resources management. More...

#include <ResourceCache.hpp>

Public Types

typedef ResourceCache self_type
typedef self_type * raw_ptr
typedef std::unique_ptr< self_type > unique_ptr
typedef std::shared_ptr< self_type > shared_ptr
typedef std::function< void(const ResourceFile &, ResourceType &)> callback_type

Public Member Functions

 ResourceCache (void)
 Default constructor.
 ~ResourceCache (void)
 Destructor – free all of the stored resources.
nom::size_type size (void) const
 Get the total number of stored resources.
const ResourceFilefind_resource (const std::string &key) const
 Search the cache for a resource.
void set_resource_handler (const callback_type &delegate)
 Set an optional callback to use in creation of the resource before it is inserted into the cache.
bool append_resource (const ResourceFile &res)
 Add a file-based resource object.
ResourceType * load_resource (const std::string &key)
 Fully initialize a resource.
void clear (void)
 Erase all resource elements in the cache.
void erase (const std::string &key)
 Destroy a resource.
void dump (void)
 Output the stored resource name and file paths.

Private Attributes

std::map< ResourceFile, std::shared_ptr< ResourceType > > resources_
 The available resources list.
callback_type callback_
 Optional delegate that is executed upon the creation of a resource.

Detailed Description

template<typename ResourceType>
class nom::ResourceCache< ResourceType >

Resources management.

Note that pure abstract object types are not supported. The implementation does not support the external use of object pointers, i.e.: nom::ResourceCache<IFont*>. This is handled internally.

See also
FontCacheTest.cpp for a usage example.
http://www.gamedev.net/topic/610582-game-resource-manager-design/#entry4860916
http://www.gamedev.net/page/resources/_/technical/game-programming/a-simple-fast-resource-manager-using-c-and-stl-r2503
http://gamedev.stackexchange.com/questions/17066/designing-a-resourcemanager-class

Definition at line 47 of file ResourceCache.hpp.

Member Typedef Documentation

◆ callback_type

template<typename ResourceType>
typedef std::function<void( const ResourceFile&, ResourceType& )> nom::ResourceCache< ResourceType >::callback_type

Definition at line 56 of file ResourceCache.hpp.

◆ raw_ptr

template<typename ResourceType>
typedef self_type* nom::ResourceCache< ResourceType >::raw_ptr

Definition at line 52 of file ResourceCache.hpp.

◆ self_type

template<typename ResourceType>
typedef ResourceCache nom::ResourceCache< ResourceType >::self_type

Definition at line 50 of file ResourceCache.hpp.

◆ shared_ptr

template<typename ResourceType>
typedef std::shared_ptr<self_type> nom::ResourceCache< ResourceType >::shared_ptr

Definition at line 54 of file ResourceCache.hpp.

◆ unique_ptr

template<typename ResourceType>
typedef std::unique_ptr<self_type> nom::ResourceCache< ResourceType >::unique_ptr

Definition at line 53 of file ResourceCache.hpp.

Constructor & Destructor Documentation

◆ ResourceCache()

template<typename ResourceType>
nom::ResourceCache< ResourceType >::ResourceCache ( void )
inline

Default constructor.

Definition at line 59 of file ResourceCache.hpp.

◆ ~ResourceCache()

template<typename ResourceType>
nom::ResourceCache< ResourceType >::~ResourceCache ( void )
inline

Destructor – free all of the stored resources.

Definition at line 65 of file ResourceCache.hpp.

Member Function Documentation

◆ append_resource()

template<typename ResourceType>
bool nom::ResourceCache< ResourceType >::append_resource ( const ResourceFile & res)
inline

Add a file-based resource object.

Remarks
The resource object is not instantiated until a call to ::load_resource is made.
Note
An attempt to append an existing resource will be discarded.

Definition at line 110 of file ResourceCache.hpp.

◆ clear()

template<typename ResourceType>
void nom::ResourceCache< ResourceType >::clear ( void )
inline

Erase all resource elements in the cache.

Definition at line 200 of file ResourceCache.hpp.

◆ dump()

template<typename ResourceType>
void nom::ResourceCache< ResourceType >::dump ( void )
inline

Output the stored resource name and file paths.

Note
Debugging aid.

Definition at line 216 of file ResourceCache.hpp.

◆ erase()

template<typename ResourceType>
void nom::ResourceCache< ResourceType >::erase ( const std::string & key)
inline

Destroy a resource.

Parameters
keyThe resource descriptor (name) to be destroyed.

Definition at line 208 of file ResourceCache.hpp.

◆ find_resource()

template<typename ResourceType>
const ResourceFile & nom::ResourceCache< ResourceType >::find_resource ( const std::string & key) const
inline

Search the cache for a resource.

Parameters
keyThe resource name for lookup.
Returns
The ResourceFile object reference on success, or ResourceFile::null on failure.

Definition at line 85 of file ResourceCache.hpp.

◆ load_resource()

template<typename ResourceType>
ResourceType * nom::ResourceCache< ResourceType >::load_resource ( const std::string & key)
inline

Fully initialize a resource.

Returns
A non-owned raw pointer to the fully initialized (loaded) resource on success, or NULL on failure.
Remarks
A valid rendering context is required before most resource types can be loaded – meaning nom::RenderWindow must be initialized. Initializing a nom::RenderWindow is the end-user's responsibility.

Definition at line 160 of file ResourceCache.hpp.

◆ set_resource_handler()

template<typename ResourceType>
void nom::ResourceCache< ResourceType >::set_resource_handler ( const callback_type & delegate)
inline

Set an optional callback to use in creation of the resource before it is inserted into the cache.

Definition at line 99 of file ResourceCache.hpp.

◆ size()

template<typename ResourceType>
nom::size_type nom::ResourceCache< ResourceType >::size ( void ) const
inline

Get the total number of stored resources.

Definition at line 74 of file ResourceCache.hpp.

Member Data Documentation

◆ callback_

template<typename ResourceType>
callback_type nom::ResourceCache< ResourceType >::callback_
private

Optional delegate that is executed upon the creation of a resource.

Definition at line 230 of file ResourceCache.hpp.

◆ resources_

template<typename ResourceType>
std::map<ResourceFile, std::shared_ptr<ResourceType> > nom::ResourceCache< ResourceType >::resources_
private

The available resources list.

Definition at line 226 of file ResourceCache.hpp.


The documentation for this class was generated from the following file: