Hummingbird Framework
 All Classes Functions Variables Modules Pages
hb::ResourceManager< ManagerType, ResourceType, ResourceId, Hash > Class Template Reference

Class for efficiently managing loaded resources. More...

#include <ResourceManager.h>

Public Member Functions

 ResourceManager ()
 Class constructor.
 
 ~ResourceManager ()
 Class destructor.
 
int addResource (const ResourceId &resource_id, const ResourceType &resource)
 Add resource to manager. More...
 
virtual void release (int id)
 Release a resource with identifier id. More...
 
void releaseAll (int id)
 Release all resources with identifier id. More...
 
const ResourceType & get (int id) const
 Get resource with identifier id. More...
 
ResourceType & get (int id)
 Get resource with identifier id. More...
 
const ResourceId & getId (int id) const
 Get ResourceId of resource with identifier id. More...
 
bool isLoaded (int id) const
 Returns wether the resource with identifier id is loaded. More...
 
bool isLoaded (const ResourceId &resource_id) const
 Returns wether the resource with ResourceId resource_id is loaded. More...
 
bool isLoaded (const ResourceId &resource_id, int &id) const
 Returns wether the resource with ResourceId resource_id is loaded and if it is loaded, puts the ResourceManager id in id. More...
 
int countResourceUsage (int id) const
 Returns number of active requests for resource id. More...
 
int size () const
 Returns number of resources currently loaded. More...
 
int resourceCount () const
 Returns number of all resources ever loaded. More...
 
void clear ()
 Release all resources.
 

Static Public Member Functions

static ManagerType * instance ()
 Get the singleton instance. More...
 

Detailed Description

template<typename ManagerType, typename ResourceType, typename ResourceId, typename Hash = std::hash<ResourceId>>
class hb::ResourceManager< ManagerType, ResourceType, ResourceId, Hash >

Class for efficiently managing loaded resources.

Template Parameters
ManagerTypeType of the ResourceManager.
ResourceTypeType of the resource being managed.
ResourceIdType of the unique id of the resource being managed.
HashHash method for the ResourceId.

Member Function Documentation

template<typename ManagerType, typename ResourceType, typename ResourceId, typename Hash = std::hash<ResourceId>>
int hb::ResourceManager< ManagerType, ResourceType, ResourceId, Hash >::addResource ( const ResourceId &  resource_id,
const ResourceType &  resource 
)
inline

Add resource to manager.

Parameters
resource_idUnique id of the resource being added.
resourceThe resource being added.
Returns
ResourceManager identifier for the resource.

If a resource with the same resource_id is already registered, its usage count will be incremented and the resource won't be stored again.

template<typename ManagerType, typename ResourceType, typename ResourceId, typename Hash = std::hash<ResourceId>>
int hb::ResourceManager< ManagerType, ResourceType, ResourceId, Hash >::countResourceUsage ( int  id) const
inline

Returns number of active requests for resource id.

Parameters
idIdentifier of the resource in the ResourceManager.
Returns
Usage count of the resource.
template<typename ManagerType, typename ResourceType, typename ResourceId, typename Hash = std::hash<ResourceId>>
const ResourceType& hb::ResourceManager< ManagerType, ResourceType, ResourceId, Hash >::get ( int  id) const
inline

Get resource with identifier id.

Parameters
idIdentifier of the resource in the ResourceManager.
Returns
Constant reference to the resource.
template<typename ManagerType, typename ResourceType, typename ResourceId, typename Hash = std::hash<ResourceId>>
ResourceType& hb::ResourceManager< ManagerType, ResourceType, ResourceId, Hash >::get ( int  id)
inline

Get resource with identifier id.

Parameters
idIdentifier of the resource in the ResourceManager.
Returns
Reference to the resource.
template<typename ManagerType, typename ResourceType, typename ResourceId, typename Hash = std::hash<ResourceId>>
const ResourceId& hb::ResourceManager< ManagerType, ResourceType, ResourceId, Hash >::getId ( int  id) const
inline

Get ResourceId of resource with identifier id.

Parameters
idIdentifier of the resource in the ResourceManager.
Returns
ResourceId of the resource with identifier id.
template<typename ManagerType, typename ResourceType, typename ResourceId, typename Hash = std::hash<ResourceId>>
static ManagerType* hb::ResourceManager< ManagerType, ResourceType, ResourceId, Hash >::instance ( )
inlinestatic

Get the singleton instance.

Returns
ManagerType singleton instance.
template<typename ManagerType, typename ResourceType, typename ResourceId, typename Hash = std::hash<ResourceId>>
bool hb::ResourceManager< ManagerType, ResourceType, ResourceId, Hash >::isLoaded ( int  id) const
inline

Returns wether the resource with identifier id is loaded.

Parameters
idIdentifier of the resource in the ResourceManager.
Returns
Is resource with identifier id loaded.
template<typename ManagerType, typename ResourceType, typename ResourceId, typename Hash = std::hash<ResourceId>>
bool hb::ResourceManager< ManagerType, ResourceType, ResourceId, Hash >::isLoaded ( const ResourceId &  resource_id) const
inline

Returns wether the resource with ResourceId resource_id is loaded.

Parameters
resource_idUnique id of the resource.
Returns
Is resource with ResourceId resource_id loaded.
template<typename ManagerType, typename ResourceType, typename ResourceId, typename Hash = std::hash<ResourceId>>
bool hb::ResourceManager< ManagerType, ResourceType, ResourceId, Hash >::isLoaded ( const ResourceId &  resource_id,
int &  id 
) const
inline

Returns wether the resource with ResourceId resource_id is loaded and if it is loaded, puts the ResourceManager id in id.

Parameters
resource_idUnique id of the resource.
Returns
Is resource with ResourceId resource_id loaded.
template<typename ManagerType, typename ResourceType, typename ResourceId, typename Hash = std::hash<ResourceId>>
virtual void hb::ResourceManager< ManagerType, ResourceType, ResourceId, Hash >::release ( int  id)
inlinevirtual

Release a resource with identifier id.

Parameters
idIdentifier of the resource in the ResourceManager.

If there is registered more than one usage of the resource, its counter will be decresed and the resource won't be deleted until its usage count reaches 0.

Reimplemented in hb::TextureManager.

template<typename ManagerType, typename ResourceType, typename ResourceId, typename Hash = std::hash<ResourceId>>
void hb::ResourceManager< ManagerType, ResourceType, ResourceId, Hash >::releaseAll ( int  id)
inline

Release all resources with identifier id.

Parameters
idIdentifier of the resource in the ResourceManager.

Removes the resource with identifier id, ignoring if it has more usages.

template<typename ManagerType, typename ResourceType, typename ResourceId, typename Hash = std::hash<ResourceId>>
int hb::ResourceManager< ManagerType, ResourceType, ResourceId, Hash >::resourceCount ( ) const
inline

Returns number of all resources ever loaded.

Returns
Number of all resources ever loaded (Not counting usages).
template<typename ManagerType, typename ResourceType, typename ResourceId, typename Hash = std::hash<ResourceId>>
int hb::ResourceManager< ManagerType, ResourceType, ResourceId, Hash >::size ( ) const
inline

Returns number of resources currently loaded.

Returns
Number of resources currently loaded (Not counting usages).

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