Cogs.Core
Public Member Functions | List of all members
Cogs::ComponentModel::ComponentPoolBase Class Reference

Untyped Component pool base. More...

#include <ComponentPool.h>

Inheritance diagram for Cogs::ComponentModel::ComponentPoolBase:
Cogs::ComponentModel::ComponentPool< AdaptivePlanarGridComponent > Cogs::ComponentModel::ComponentPool< AnimationComponent > Cogs::ComponentModel::ComponentPool< AnnotationAxisComponent > Cogs::ComponentModel::ComponentPool< AssetComponent > Cogs::ComponentModel::ComponentPool< AudioComponent > Cogs::ComponentModel::ComponentPool< BasicOceanComponent > Cogs::ComponentModel::ComponentPool< BillboardComponent > Cogs::ComponentModel::ComponentPool< BoxCollisionComponent > Cogs::ComponentModel::ComponentPool< CameraArrayComponent > Cogs::ComponentModel::ComponentPool< CameraComponent > Cogs::ComponentModel::ComponentPool< CapsuleCollisionComponent > Cogs::ComponentModel::ComponentPool< CaptureComponent > Cogs::ComponentModel::ComponentPool< CinematicCameraComponent > Cogs::ComponentModel::ComponentPool< ClipShapeRefComponent > Cogs::ComponentModel::ComponentPool< ClipShapeComponent > Cogs::ComponentModel::ComponentPool< T > Cogs::ComponentModel::ComponentPool< CubeMarkerComponent > Cogs::ComponentModel::ComponentPool< CurtainViewComponent > Cogs::ComponentModel::ComponentPool< CylinderCollisionComponent > Cogs::ComponentModel::ComponentPool< DepthAxisComponent > Cogs::ComponentModel::ComponentPool< DataSetComponent > Cogs::ComponentModel::ComponentPool< OctProviderComponent > Cogs::ComponentModel::ComponentPool< PingIsoComponent > Cogs::ComponentModel::ComponentPool< SwathBottomComponent > Cogs::ComponentModel::ComponentPool< SwathIsoComponent > Cogs::ComponentModel::ComponentPool< UniformGridComponent > Cogs::ComponentModel::ComponentPool< EmptyCollisionComponent > Cogs::ComponentModel::ComponentPool< EnvironmentComponent > Cogs::ComponentModel::ComponentPool< ExtrusionComponent > Cogs::ComponentModel::ComponentPool< FixedConstraintComponent > Cogs::ComponentModel::ComponentPool< FogComponent > Cogs::ComponentModel::ComponentPool< GenericConstraintComponent > Cogs::ComponentModel::ComponentPool< GhostComponent > Cogs::ComponentModel::ComponentPool< GuiRenderComponent > Cogs::ComponentModel::ComponentPool< GuiComponent > Cogs::ComponentModel::ComponentPool< HeightMapComponent > Cogs::ComponentModel::ComponentPool< HingeConstraintComponent > Cogs::ComponentModel::ComponentPool< Image360Component > Cogs::ComponentModel::ComponentPool< InstancedMeshRenderComponent > Cogs::ComponentModel::ComponentPool< InstancedModelComponent > Cogs::ComponentModel::ComponentPool< LightComponent > Cogs::ComponentModel::ComponentPool< LodComponent > Cogs::ComponentModel::ComponentPool< LoftedCrossSectionsComponent > Cogs::ComponentModel::ComponentPool< MarkerPointSetComponent > Cogs::ComponentModel::ComponentPool< MaterialComponent > Cogs::ComponentModel::ComponentPool< MeshCollisionComponent > Cogs::ComponentModel::ComponentPool< MeshGeneratorComponent > Cogs::ComponentModel::ComponentPool< MeshComponent > Cogs::ComponentModel::ComponentPool< ModelComponent > Cogs::ComponentModel::ComponentPool< OGC3DTilesComponent > Cogs::ComponentModel::ComponentPool< OceanComponent > Cogs::ComponentModel::ComponentPool< OverlayComponent > Cogs::ComponentModel::ComponentPool< PlaneCollisionComponent > Cogs::ComponentModel::ComponentPool< PotreeComponent > Cogs::ComponentModel::ComponentPool< PropertiesComponent > Cogs::ComponentModel::ComponentPool< MeshRenderComponent > Cogs::ComponentModel::ComponentPool< RigidBodyComponent > Cogs::ComponentModel::ComponentPool< SceneComponent > Cogs::ComponentModel::ComponentPool< ScreenSizeComponent > Cogs::ComponentModel::ComponentPool< ScriptComponent > Cogs::ComponentModel::ComponentPool< SeaCurrentsComponent > Cogs::ComponentModel::ComponentPool< ShapeComponent > Cogs::ComponentModel::ComponentPool< SphereCollisionComponent > Cogs::ComponentModel::ComponentPool< SpringConstraintComponent > Cogs::ComponentModel::ComponentPool< SpriteRenderComponent > Cogs::ComponentModel::ComponentPool< StaticModelComponent > Cogs::ComponentModel::ComponentPool< SubMeshRenderComponent > Cogs::ComponentModel::ComponentPool< TerrainComponent > Cogs::ComponentModel::ComponentPool< Text3DComponent > Cogs::ComponentModel::ComponentPool< TextComponent > Cogs::ComponentModel::ComponentPool< TextureGeneratorComponent > Cogs::ComponentModel::ComponentPool< TrajectoryCrossSectionsComponent > Cogs::ComponentModel::ComponentPool< TrajectoryLayoutComponent > Cogs::ComponentModel::ComponentPool< TrajectoryComponent > Cogs::ComponentModel::ComponentPool< TransformComponent > Cogs::ComponentModel::ComponentPool< TriggerComponent > Cogs::ComponentModel::ComponentPool< VariableExtrusionComponent > Cogs::ComponentModel::ComponentPool< VectorFieldComponent > Cogs::ComponentModel::ComponentPool< VideoCaptureComponent > Cogs::ComponentModel::ComponentPool< Cogs::Core::VideoPlaybackComponent > Cogs::ComponentModel::ComponentPool< DensityFieldComponent > Cogs::ComponentModel::ComponentPool< VolOctDummyProviderComponent > Cogs::ComponentModel::ComponentPool< OctComponent > Cogs::ComponentModel::ComponentPool< PointVisualizationComponent > Cogs::ComponentModel::ComponentPool< ZipComponent > Cogs::ComponentModel::ComponentPool< ComponentType >

Public Member Functions

COGSFOUNDATION_API ComponentPoolBase (const Reflection::TypeId typeId, SizeType capacity, Memory::Allocator *allocator, MemBlockType memType)
 Constructs a new pool base for components with the given type.
 
COGSFOUNDATION_API ComponentHandle allocateComponent ()
 Allocates and initializes a new component using placement new into the backing store.
 
COGSFOUNDATION_API void deallocateComponent (ComponentHandle handle)
 Deallocates a component from the pool, calling the destructor of the derived component type.
 
Componentoperator[] (SizeType index)
 Get the component at the given roster index.
 
Componentget (size_t index)
 Retrieve a pointer to the component at the given index. The pointer is valid until any new allocations are made.
 
Componentresolve (const ComponentHandle handle)
 Resolve a pointer to the component with the given handle.
 
COGSFOUNDATION_API void resize (SizeType capacity)
 Resize the pool.
 
SizeType size () const
 Gets the current size of the pool, the number components currently active.
 
SizeType capacity () const
 Get the capacity of the pool, the number of components that can be allocated without resizing the pool.
 
COGSFOUNDATION_API SizeType maxSize () const
 Get the maximum size of the pool.
 
SizeType getComponentIndex (const Component *component) const
 Get the index of the given component in the storage pool.
 
void setFlag (ComponentPoolFlags::EComponentPoolFlags flag)
 Set the given flag.
 
bool isSet (const uint32_t flag) const
 Checks if the given flag is set.
 

Detailed Description

Untyped Component pool base.

Holds raw backing storage for capacity components. Uses the given Reflection::Type to determine the size and layout of the backing store.

Components are placement constructed into the raw backing store when allocated, and their destructors are run when deallocated.

Definition at line 36 of file ComponentPool.h.

Constructor & Destructor Documentation

◆ ComponentPoolBase()

Cogs::ComponentModel::ComponentPoolBase::ComponentPoolBase ( const Reflection::TypeId  typeId,
SizeType  capacity,
Memory::Allocator allocator,
MemBlockType  memType 
)

Constructs a new pool base for components with the given type.

The initial capacity is set to capacity number of components.

Definition at line 13 of file ComponentPool.cpp.

References capacity(), Cogs::Reflection::TypeDatabase::getType(), and resize().

Member Function Documentation

◆ allocateComponent()

Cogs::ComponentModel::ComponentHandle Cogs::ComponentModel::ComponentPoolBase::allocateComponent ( )

Allocates and initializes a new component using placement new into the backing store.

Definition at line 28 of file ComponentPool.cpp.

References Cogs::ComponentModel::ComponentPoolFlags::AllowGrow, Cogs::Reflection::TypeDatabase::constructInstance(), and Cogs::Reflection::TypeDatabase::getType().

◆ capacity()

SizeType Cogs::ComponentModel::ComponentPoolBase::capacity ( ) const
inline

Get the capacity of the pool, the number of components that can be allocated without resizing the pool.

Definition at line 80 of file ComponentPool.h.

Referenced by ComponentPoolBase().

◆ deallocateComponent()

void Cogs::ComponentModel::ComponentPoolBase::deallocateComponent ( ComponentHandle  handle)

Deallocates a component from the pool, calling the destructor of the derived component type.

Definition at line 59 of file ComponentPool.cpp.

References Cogs::Reflection::TypeDatabase::destructInstance(), Cogs::Reflection::TypeDatabase::getType(), and Cogs::ComponentModel::ComponentHandle::resolve().

◆ get()

Component * Cogs::ComponentModel::ComponentPoolBase::get ( size_t  index)
inline

Retrieve a pointer to the component at the given index. The pointer is valid until any new allocations are made.

Definition at line 62 of file ComponentPool.h.

Referenced by operator[](), and resolve().

◆ getComponentIndex()

SizeType Cogs::ComponentModel::ComponentPoolBase::getComponentIndex ( const Component component) const
inline

Get the index of the given component in the storage pool.

Definition at line 86 of file ComponentPool.h.

References Cogs::ComponentModel::Component::getIndex().

◆ isSet()

bool Cogs::ComponentModel::ComponentPoolBase::isSet ( const uint32_t  flag) const
inline

Checks if the given flag is set.

Definition at line 92 of file ComponentPool.h.

◆ maxSize()

Cogs::SizeType Cogs::ComponentModel::ComponentPoolBase::maxSize ( ) const

Get the maximum size of the pool.

Definition at line 103 of file ComponentPool.cpp.

◆ operator[]()

Component & Cogs::ComponentModel::ComponentPoolBase::operator[] ( SizeType  index)
inline

Get the component at the given roster index.

Definition at line 56 of file ComponentPool.h.

References get().

Referenced by Cogs::ComponentModel::ComponentPool< ComponentType >::operator[]().

◆ resize()

void Cogs::ComponentModel::ComponentPoolBase::resize ( SizeType  capacity)

Resize the pool.

Definition at line 93 of file ComponentPool.cpp.

Referenced by ComponentPoolBase().

◆ resolve()

Component * Cogs::ComponentModel::ComponentPoolBase::resolve ( const ComponentHandle  handle)
inline

Resolve a pointer to the component with the given handle.

Definition at line 68 of file ComponentPool.h.

References get().

◆ setFlag()

void Cogs::ComponentModel::ComponentPoolBase::setFlag ( ComponentPoolFlags::EComponentPoolFlags  flag)
inline

Set the given flag.

Definition at line 89 of file ComponentPool.h.

◆ size()

SizeType Cogs::ComponentModel::ComponentPoolBase::size ( ) const
inline

Gets the current size of the pool, the number components currently active.

Definition at line 77 of file ComponentPool.h.

Referenced by Cogs::ComponentModel::ComponentPool< ComponentType >::end().


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