Foray Library
rapid prototyping framework for crossplatform development of vulkan hardware ray tracing applications
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
foray::util::ManagedVectorBuffer< TClass > Class Template Reference

Class maintaining a resizable array of templated classes in a managed buffer. More...

#include <foray_managedvectorbuffer.hpp>

Inheritance diagram for foray::util::ManagedVectorBuffer< TClass >:
foray::core::ManagedResource foray::NoMoveDefaults

Public Member Functions

 ManagedVectorBuffer ()
 
 ManagedVectorBuffer (core::Context *context)
 
 ManagedVectorBuffer (core::Context *context, bool deviceLocal)
 
void InitOrUpdate (std::optional< BufferSection > section={})
 
virtual void Destroy () override
 Destroy the resource.
 
virtual bool Exists () const override
 Return true, if the managed resource is allocated.
 
virtual std::string GetName () const
 
virtual void SetName (std::string_view name) override
 Set a custom name for the object.
 
virtual ~ManagedVectorBuffer ()
 
VkDeviceSize GetDeviceSize ()
 
- Public Member Functions inherited from foray::core::ManagedResource
virtual std::string_view GetTypeName () const
 Return a hint for the type of resource managed by the instantiation.
 
 ManagedResource ()
 Default constructor registers the resource.
 
 ManagedResource (std::string_view name)
 Registers the resource and sets its name.
 
virtual ~ManagedResource ()
 Unregisters the resource.
 
std::string_view GetName () const
 Return a custom name for the object.
 
std::string Print () const
 Print name and type in one string.
 
- Public Member Functions inherited from foray::NoMoveDefaults
 NoMoveDefaults ()=default
 
 NoMoveDefaults (const NoMoveDefaults &other)=delete
 
 NoMoveDefaults (NoMoveDefaults &&other)=default
 
NoMoveDefaultsoperator= (const NoMoveDefaults &other)=delete
 

Public Attributes

const bool DeviceLocal
 

Protected Member Functions

void CreateBuffer (VkDeviceSize capacity)
 
void UploadToBuffer (BufferSection section)
 

Protected Attributes

core::ContextmContext = nullptr
 
std::vector< TClass > mVector = {}
 
core::ManagedBuffer mBuffer = {}
 
VkDeviceSize mDeviceCount = 0
 
VkDeviceSize mDeviceCapacity = 0
 
void * mHostMemoryMap = nullptr
 
- Protected Attributes inherited from foray::core::ManagedResource
std::string mName
 This objects custom name.
 

Additional Inherited Members

- Static Public Member Functions inherited from foray::core::ManagedResource
static void sPrintAllocatedResources (bool printAsWarning)
 Print a list of all registered existing resources.
 
static const std::unordered_set< ManagedResource * > * GetTotalAllocatedResources ()
 

Detailed Description

template<typename TClass>
class foray::util::ManagedVectorBuffer< TClass >

Class maintaining a resizable array of templated classes in a managed buffer.

Constructor & Destructor Documentation

◆ ManagedVectorBuffer() [1/3]

template<typename TClass >
foray::util::ManagedVectorBuffer< TClass >::ManagedVectorBuffer ( )
inline

◆ ManagedVectorBuffer() [2/3]

template<typename TClass >
foray::util::ManagedVectorBuffer< TClass >::ManagedVectorBuffer ( core::Context context)
inlineexplicit

◆ ManagedVectorBuffer() [3/3]

template<typename TClass >
foray::util::ManagedVectorBuffer< TClass >::ManagedVectorBuffer ( core::Context context,
bool  deviceLocal 
)
inlineexplicit

◆ ~ManagedVectorBuffer()

template<typename TClass >
virtual foray::util::ManagedVectorBuffer< TClass >::~ManagedVectorBuffer ( )
inlinevirtual

Member Function Documentation

◆ CreateBuffer()

template<typename TClass >
void foray::util::ManagedVectorBuffer< TClass >::CreateBuffer ( VkDeviceSize  capacity)
inlineprotected

◆ Destroy()

template<typename TClass >
void foray::util::ManagedVectorBuffer< TClass >::Destroy ( )
overridevirtual

Destroy the resource.

Remarks
This method must be callable even if the resource has not been initialized yet. This method must call any Destroy() overloads of child objects and of base classes

Implements foray::core::ManagedResource.

◆ Exists()

template<typename TClass >
virtual bool foray::util::ManagedVectorBuffer< TClass >::Exists ( ) const
inlineoverridevirtual

Return true, if the managed resource is allocated.

Example: Vulkan object stored could be nullptr or instantiated

Implements foray::core::ManagedResource.

◆ GetDeviceSize()

template<typename TClass >
VkDeviceSize foray::util::ManagedVectorBuffer< TClass >::GetDeviceSize ( )
inline

◆ GetName()

template<typename TClass >
virtual std::string foray::util::ManagedVectorBuffer< TClass >::GetName ( ) const
inlinevirtual

◆ InitOrUpdate()

template<typename TClass >
void foray::util::ManagedVectorBuffer< TClass >::InitOrUpdate ( std::optional< BufferSection section = {})

◆ SetName()

template<typename TClass >
void foray::util::ManagedVectorBuffer< TClass >::SetName ( std::string_view  name)
inlineoverridevirtual

Set a custom name for the object.

Reimplemented from foray::core::ManagedResource.

◆ UploadToBuffer()

template<typename TClass >
void foray::util::ManagedVectorBuffer< TClass >::UploadToBuffer ( BufferSection  section)
inlineprotected

Member Data Documentation

◆ DeviceLocal

template<typename TClass >
const bool foray::util::ManagedVectorBuffer< TClass >::DeviceLocal

◆ mBuffer

template<typename TClass >
core::ManagedBuffer foray::util::ManagedVectorBuffer< TClass >::mBuffer = {}
protected

◆ mContext

template<typename TClass >
core::Context* foray::util::ManagedVectorBuffer< TClass >::mContext = nullptr
protected

◆ mDeviceCapacity

template<typename TClass >
VkDeviceSize foray::util::ManagedVectorBuffer< TClass >::mDeviceCapacity = 0
protected

◆ mDeviceCount

template<typename TClass >
VkDeviceSize foray::util::ManagedVectorBuffer< TClass >::mDeviceCount = 0
protected

◆ mHostMemoryMap

template<typename TClass >
void* foray::util::ManagedVectorBuffer< TClass >::mHostMemoryMap = nullptr
protected

◆ mVector

template<typename TClass >
std::vector<TClass> foray::util::ManagedVectorBuffer< TClass >::mVector = {}
protected

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