PGE API 0.4
PR00F's Game Engine full documentation
Loading...
Searching...
No Matches
PgePooledObject Class Reference

Only classes derived from PgePooledObject can be stored in PgeObjectPool. More...

Detailed Description

Only classes derived from PgePooledObject can be stored in PgeObjectPool.

Rules for making such derived class:

  • must have an init() function that can be used anytime to re-initialize the object with proper values. This init() is invoked by PgeObjectPool::create(), forwarding the given parameters to it. Therefore, the init() function should not do performance-extensive operations as the primary aim of this whole pooled approach is to have blazing-fast real-time create and remove operations.

See PgeObjectPoolTest or the PRooFPS-dd project for real examples.

Definition at line 57 of file PgeObjectPool.h.

#include <PgeObjectPool.h>

+ Inheritance diagram for PgePooledObject:

Public Member Functions

virtual ~PgePooledObject ()=default
 
 PgePooledObject (const PgePooledObject &)=default
 
PgePooledObjectoperator= (const PgePooledObject &)=default
 
 PgePooledObject (PgePooledObject &&)=default
 
PgePooledObjectoperator= (PgePooledObject &&)=default
 
PgeObjectPoolBasegetParentPool ()
 
const PgeObjectPoolBasegetParentPool () const
 
const bool & used () const
 
virtual void onSetUsed ()
 Gets invoked by setUsed().
 
const PgePooledObjectnext () const
 
PgePooledObjectnext ()
 
void remove ()
 Convenience function.
 

Protected Member Functions

 PgePooledObject (PgeObjectPoolBase &parentPool)
 

Private Member Functions

void setUsed (const bool &state)
 
void setNext (PgePooledObject *ptr)
 

Private Attributes

PgeObjectPoolBasem_parentPool
 
bool m_isUsed {false}
 
PgePooledObjectm_pNext {nullptr}
 

Friends

template<typename T >
class PgeObjectPool
 Only PgeObjectPool should instantiate such pooled object, passing itself to this instance.
 

Constructor & Destructor Documentation

◆ ~PgePooledObject()

virtual PgePooledObject::~PgePooledObject ( )
virtualdefault

◆ PgePooledObject() [1/3]

PgePooledObject::PgePooledObject ( const PgePooledObject & )
default

◆ PgePooledObject() [2/3]

PgePooledObject::PgePooledObject ( PgePooledObject && )
default

◆ PgePooledObject() [3/3]

PgePooledObject::PgePooledObject ( PgeObjectPoolBase & parentPool)
inlineprotected

Definition at line 125 of file PgeObjectPool.h.

Member Function Documentation

◆ getParentPool() [1/2]

PgeObjectPoolBase & PgePooledObject::getParentPool ( )
inline
Returns
The object pool that created and manages this pooled object.

Definition at line 71 of file PgeObjectPool.h.

◆ getParentPool() [2/2]

const PgeObjectPoolBase & PgePooledObject::getParentPool ( ) const
inline
Returns
The object pool that created and manages this pooled object.

Definition at line 79 of file PgeObjectPool.h.

◆ next() [1/2]

PgePooledObject * PgePooledObject::next ( )
inline

Definition at line 104 of file PgeObjectPool.h.

◆ next() [2/2]

const PgePooledObject * PgePooledObject::next ( ) const
inline

Definition at line 99 of file PgeObjectPool.h.

◆ onSetUsed()

virtual void PgePooledObject::onSetUsed ( )
inlinevirtual

Gets invoked by setUsed().

Derived class can override this to take action whenever the object's used state changes.

Reimplemented in PooledBullet.

Definition at line 96 of file PgeObjectPool.h.

◆ operator=() [1/2]

PgePooledObject & PgePooledObject::operator= ( const PgePooledObject & )
default

◆ operator=() [2/2]

PgePooledObject & PgePooledObject::operator= ( PgePooledObject && )
default

◆ remove()

void PgePooledObject::remove ( )
inline

Convenience function.

Equivalent to: PgeObjectPool.remove(*this) .

Definition at line 112 of file PgeObjectPool.h.

◆ setNext()

void PgePooledObject::setNext ( PgePooledObject * ptr)
inlineprivate

Definition at line 141 of file PgeObjectPool.h.

◆ setUsed()

void PgePooledObject::setUsed ( const bool & state)
inlineprivate

Definition at line 135 of file PgeObjectPool.h.

◆ used()

const bool & PgePooledObject::used ( ) const
inline
Returns
True if this pooled object is flagged as used, false if it is free and available to be reused.

Definition at line 87 of file PgeObjectPool.h.

Friends And Related Symbol Documentation

◆ PgeObjectPool

template<typename T >
friend class PgeObjectPool
friend

Only PgeObjectPool should instantiate such pooled object, passing itself to this instance.

Obviously not private so we allow user to derive from this class.

Definition at line 123 of file PgeObjectPool.h.

Member Data Documentation

◆ m_isUsed

bool PgePooledObject::m_isUsed {false}
private

Definition at line 130 of file PgeObjectPool.h.

◆ m_parentPool

PgeObjectPoolBase& PgePooledObject::m_parentPool
private

Definition at line 129 of file PgeObjectPool.h.

◆ m_pNext

PgePooledObject* PgePooledObject::m_pNext {nullptr}
private

Definition at line 131 of file PgeObjectPool.h.


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