Cogs.Core
Public Types | Public Member Functions | Static Public Member Functions | Private Attributes | List of all members
Cogs::PoolStoragePolicy< HandleType, ResourceType > Struct Template Reference

Storage policy storing all resources in a pool, reusing resource memory when possible. More...

#include <ResourcePolicies.h>

Public Types

typedef PoolIterator< ResourceType > iterator
 
typedef ResourceWrapper< ResourceType > WrapperType
 

Public Member Functions

 PoolStoragePolicy (MemBlockType memType=MemBlockType::Rendering)
 
 PoolStoragePolicy (size_t capacity, size_t pageSize, Memory::Allocator *allocator, MemBlockType memType=MemBlockType::Rendering)
 
HandleType allocate (ResourceType &&resource, bool persistent)
 
HandleType allocate (const ResourceType &resource, bool persistent)
 
void deallocate (const HandleType &handle)
 
bool hasResource (const HandleType &handle) const
 
ResourceType & operator[] (const HandleType &handle)
 
void clear (bool force=false)
 
void pin (const HandleType &handle)
 
bool pinned (const HandleType &handle) const
 
iterator begin ()
 
iterator end ()
 
size_t size () const
 
HandleType getHandle (const ResourceType &r)
 

Static Public Member Functions

static constexpr bool SafeDereference ()
 
static WrapperTypegetWrapperPointer (const ResourceType &r)
 

Private Attributes

Collections::Pool< WrapperTypepool
 
WrapperTypeallocatedHead = nullptr
 
size_t count = 0
 

Detailed Description

template<typename HandleType, typename ResourceType>
struct Cogs::PoolStoragePolicy< HandleType, ResourceType >

Storage policy storing all resources in a pool, reusing resource memory when possible.

Definition at line 86 of file ResourcePolicies.h.

Member Typedef Documentation

◆ iterator

template<typename HandleType , typename ResourceType >
typedef PoolIterator<ResourceType> Cogs::PoolStoragePolicy< HandleType, ResourceType >::iterator

Definition at line 88 of file ResourcePolicies.h.

◆ WrapperType

template<typename HandleType , typename ResourceType >
typedef ResourceWrapper<ResourceType> Cogs::PoolStoragePolicy< HandleType, ResourceType >::WrapperType

Definition at line 89 of file ResourcePolicies.h.

Constructor & Destructor Documentation

◆ PoolStoragePolicy() [1/2]

template<typename HandleType , typename ResourceType >
Cogs::PoolStoragePolicy< HandleType, ResourceType >::PoolStoragePolicy ( MemBlockType  memType = MemBlockType::Rendering)
inline

Definition at line 93 of file ResourcePolicies.h.

◆ PoolStoragePolicy() [2/2]

template<typename HandleType , typename ResourceType >
Cogs::PoolStoragePolicy< HandleType, ResourceType >::PoolStoragePolicy ( size_t  capacity,
size_t  pageSize,
Memory::Allocator allocator,
MemBlockType  memType = MemBlockType::Rendering 
)
inline

Definition at line 95 of file ResourcePolicies.h.

Member Function Documentation

◆ allocate() [1/2]

template<typename HandleType , typename ResourceType >
HandleType Cogs::PoolStoragePolicy< HandleType, ResourceType >::allocate ( const ResourceType &  resource,
bool  persistent 
)
inline

Definition at line 124 of file ResourcePolicies.h.

◆ allocate() [2/2]

template<typename HandleType , typename ResourceType >
HandleType Cogs::PoolStoragePolicy< HandleType, ResourceType >::allocate ( ResourceType &&  resource,
bool  persistent 
)
inline

Definition at line 99 of file ResourcePolicies.h.

◆ begin()

template<typename HandleType , typename ResourceType >
iterator Cogs::PoolStoragePolicy< HandleType, ResourceType >::begin ( )
inline

Definition at line 203 of file ResourcePolicies.h.

◆ clear()

template<typename HandleType , typename ResourceType >
void Cogs::PoolStoragePolicy< HandleType, ResourceType >::clear ( bool  force = false)
inline

Definition at line 181 of file ResourcePolicies.h.

◆ deallocate()

template<typename HandleType , typename ResourceType >
void Cogs::PoolStoragePolicy< HandleType, ResourceType >::deallocate ( const HandleType &  handle)
inline

Definition at line 149 of file ResourcePolicies.h.

◆ end()

template<typename HandleType , typename ResourceType >
iterator Cogs::PoolStoragePolicy< HandleType, ResourceType >::end ( )
inline

Definition at line 204 of file ResourcePolicies.h.

◆ getHandle()

template<typename HandleType , typename ResourceType >
HandleType Cogs::PoolStoragePolicy< HandleType, ResourceType >::getHandle ( const ResourceType &  r)
inline

Definition at line 208 of file ResourcePolicies.h.

◆ getWrapperPointer()

template<typename HandleType , typename ResourceType >
static WrapperType * Cogs::PoolStoragePolicy< HandleType, ResourceType >::getWrapperPointer ( const ResourceType &  r)
inlinestatic

Definition at line 210 of file ResourcePolicies.h.

◆ hasResource()

template<typename HandleType , typename ResourceType >
bool Cogs::PoolStoragePolicy< HandleType, ResourceType >::hasResource ( const HandleType &  handle) const
inline

Definition at line 169 of file ResourcePolicies.h.

◆ operator[]()

template<typename HandleType , typename ResourceType >
ResourceType & Cogs::PoolStoragePolicy< HandleType, ResourceType >::operator[] ( const HandleType &  handle)
inline

Definition at line 174 of file ResourcePolicies.h.

◆ pin()

template<typename HandleType , typename ResourceType >
void Cogs::PoolStoragePolicy< HandleType, ResourceType >::pin ( const HandleType &  handle)
inline

Definition at line 194 of file ResourcePolicies.h.

◆ pinned()

template<typename HandleType , typename ResourceType >
bool Cogs::PoolStoragePolicy< HandleType, ResourceType >::pinned ( const HandleType &  handle) const
inline

Definition at line 201 of file ResourcePolicies.h.

◆ SafeDereference()

template<typename HandleType , typename ResourceType >
static constexpr bool Cogs::PoolStoragePolicy< HandleType, ResourceType >::SafeDereference ( )
inlinestaticconstexpr

Definition at line 91 of file ResourcePolicies.h.

◆ size()

template<typename HandleType , typename ResourceType >
size_t Cogs::PoolStoragePolicy< HandleType, ResourceType >::size ( ) const
inline

Definition at line 206 of file ResourcePolicies.h.

Member Data Documentation

◆ allocatedHead

template<typename HandleType , typename ResourceType >
WrapperType* Cogs::PoolStoragePolicy< HandleType, ResourceType >::allocatedHead = nullptr
private

Definition at line 214 of file ResourcePolicies.h.

◆ count

template<typename HandleType , typename ResourceType >
size_t Cogs::PoolStoragePolicy< HandleType, ResourceType >::count = 0
private

Definition at line 216 of file ResourcePolicies.h.

◆ pool

template<typename HandleType , typename ResourceType >
Collections::Pool<WrapperType> Cogs::PoolStoragePolicy< HandleType, ResourceType >::pool
private

Definition at line 213 of file ResourcePolicies.h.


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