MAGE  v0.171.0
Matthias Advanced Game Engine
mage::ResourcePool< KeyT, ResourceT >::Resource< DerivedResourceT > Class Template Reference
Inheritance diagram for mage::ResourcePool< KeyT, ResourceT >::Resource< DerivedResourceT >:

Public Member Functions

template<typename... ConstructorArgsT>
 Resource (ResourcePool &resource_pool, const KeyT &resource_key, ConstructorArgsT &&... args)
 
 Resource (const Resource &resource)=delete
 
 Resource (Resource &&resource)
 
virtual ~Resource ()
 
Resourceoperator= (const Resource &resource)=delete
 
Resourceoperator= (Resource &&resource)=delete
 

Private Attributes

ResourcePoolm_resource_pool
 
KeyT m_resource_key
 

Detailed Description

template<typename KeyT, typename ResourceT>
template<typename DerivedResourceT>
class mage::ResourcePool< KeyT, ResourceT >::Resource< DerivedResourceT >

A class of resources.

Precondition
DerivedResourceT is a derived class of ResourceT.
Template Parameters
DerivedResourceTThe derived resource type.

Constructor & Destructor Documentation

◆ Resource() [1/3]

template<typename KeyT , typename ResourceT >
template<typename DerivedResourceT >
template<typename... ConstructorArgsT>
mage::ResourcePool< KeyT, ResourceT >::Resource< DerivedResourceT >::Resource ( ResourcePool resource_pool,
const KeyT &  resource_key,
ConstructorArgsT &&...  args 
)

Constructs a resource.

Template Parameters
ConstructorArgsTThe argument types for creating a new resource of type DerivedResourceT.
Parameters
[in,out]resource_poolA reference to the resource pool.
[in]resource_keyA reference to the key of the resource in the given resource pool.
[in]argsThe arguments for creating a new resource of type DerivedResourceT.

◆ Resource() [2/3]

template<typename KeyT , typename ResourceT >
template<typename DerivedResourceT >
mage::ResourcePool< KeyT, ResourceT >::Resource< DerivedResourceT >::Resource ( const Resource< DerivedResourceT > &  resource)
delete

Constructs a resource from the given resource.

Parameters
[in]resourceA reference to the resource to copy.

◆ Resource() [3/3]

template<typename KeyT , typename ResourceT >
template<typename DerivedResourceT >
mage::ResourcePool< KeyT, ResourceT >::Resource< DerivedResourceT >::Resource ( Resource< DerivedResourceT > &&  resource)

Constructs a resource by moving the given resource poolentry .

Parameters
[in]resourceA reference to the resource to move.

◆ ~Resource()

template<typename KeyT , typename ResourceT >
template<typename DerivedResourceT >
virtual mage::ResourcePool< KeyT, ResourceT >::Resource< DerivedResourceT >::~Resource ( )
virtual

Destructs this resource.

Member Function Documentation

◆ operator=() [1/2]

template<typename KeyT , typename ResourceT >
template<typename DerivedResourceT >
Resource& mage::ResourcePool< KeyT, ResourceT >::Resource< DerivedResourceT >::operator= ( const Resource< DerivedResourceT > &  resource)
delete

Copies the given resource to this resource.

Parameters
[in]resourceA reference to the resource to copy.
Returns
A reference to the copy of the given resource (i.e. this resource).

◆ operator=() [2/2]

template<typename KeyT , typename ResourceT >
template<typename DerivedResourceT >
Resource& mage::ResourcePool< KeyT, ResourceT >::Resource< DerivedResourceT >::operator= ( Resource< DerivedResourceT > &&  resource)
delete

Moves the given resource to this resource.

Parameters
[in]resourceA reference to the resource to move.
Returns
A reference to the moved resource (i.e. this resource).

Member Data Documentation

◆ m_resource_key

template<typename KeyT , typename ResourceT >
template<typename DerivedResourceT >
KeyT mage::ResourcePool< KeyT, ResourceT >::Resource< DerivedResourceT >::m_resource_key
private

The key of this resource in the resource pool map containing this resource.

◆ m_resource_pool

template<typename KeyT , typename ResourceT >
template<typename DerivedResourceT >
ResourcePool& mage::ResourcePool< KeyT, ResourceT >::Resource< DerivedResourceT >::m_resource_pool
private

A reference to the resource pool map containing this resource.