Lysa  0.0
Lysa 3D Engine
ResourcesManager< T > Class Template Reference

Detailed Description

template<typename T>
class lysa::ResourcesManager< T >

Generic object/resources manager using ID-based access.

Manages a contiguous pool (vector) of resources of type T addressed by a small integral unique identifier (unique_id). Instances are created into available slots and retrieved via their ID. Destruction returns the slot to a free list for reuse.

The manager does not perform dynamic growth; capacity is fixed at construction. All accessors are O(1) by direct indexing. This class is intended to be used as a base for concrete resource managers (e.g., textures, meshes, materials).

Template Parameters
TResource type stored by the manager. T is expected to contain a public field named 'id' of type unique_id that will be assigned upon creation.

Public Member Functions

template<typename... Args>
T & create (Args &&...args)
 
T & operator[] (const unique_id id)
 
const T & operator[] (const unique_id id) const
 
virtual ~ResourcesManager ()
 
 ResourcesManager (ResourcesManager &) = delete
 
ResourcesManager & operator= (ResourcesManager &) = delete
 
virtual bool destroy (const unique_id id)
 
virtual bool destroy (const T &res)
 
void use (const unique_id id)
 
bool have (const unique_id id) const
 
unique_id getCapacity () const
 

Protected Member Functions

 ResourcesManager (const size_t capacity, const std::string &name)
 
T & allocate (std::unique_ptr< T > instance)
 
bool isFull () const
 

Protected Attributes

std::vector< std::unique_ptr< T > > resources
 

Constructor & Destructor Documentation

virtual ~ResourcesManager ( )
inlinevirtual
ResourcesManager ( ResourcesManager< T > &  )
delete
ResourcesManager ( const size_t  capacity,
const std::string &  name 
)
inlineprotected

Member Function Documentation

T& allocate ( std::unique_ptr< T >  instance)
inlineprotected
T& create ( Args &&...  args)
inline

Create a new unique resource

virtual bool destroy ( const T &  res)
inlinevirtual
virtual bool destroy ( const unique_id  id)
inlinevirtual
unique_id getCapacity ( ) const
inline
bool have ( const unique_id  id) const
inline
bool isFull ( ) const
inlineprotected
ResourcesManager& operator= ( ResourcesManager< T > &  )
delete
T& operator[] ( const unique_id  id)
inline

Bracket operator for mutable access without bounds checking.

Parameters
idThe unique identifier of the resource.
Returns
T& Reference to the resource.
const T& operator[] ( const unique_id  id) const
inline

Bracket operator for const access without bounds checking.

Parameters
idThe unique identifier of the resource.
Returns
const T& Const reference to the resource.
void use ( const unique_id  id)
inline

Member Data Documentation

std::vector<std::unique_ptr<T> > resources
protected