|
Infinity Engine v0.6.20
C++ API Documentation
|
Abstract base class for all array container types in the Infinity type system. More...
#include <ArrayBase.hpp>
Public Member Functions | |
| ArrayBase () | |
| ArrayBase (const ArrayBase &other) | |
| virtual | ~ArrayBase ()=default |
| Virtual destructor. | |
| virtual const Infinity::Types::TypeID & | elementTypeId ()=0 |
| Gets the TypeID of the element type contained in this array. | |
| virtual void * | pointer (size_t index)=0 |
| Gets a type-erased pointer to the element at the specified index. | |
| virtual const void * | pointer (size_t index) const =0 |
| Gets a const type-erased pointer to the element at the specified index. | |
| virtual bool | containsData () const =0 |
| Checks if the array contains Core::Data-derived types. | |
| virtual bool | containsValues () const =0 |
| Checks if the array contains plain value (POD) types. | |
| virtual std::shared_ptr< Core::Data > | dataAt (size_t index)=0 |
| Gets a type-erased Data pointer to the element at the specified index. | |
| virtual std::shared_ptr< const Core::Data > | dataAt (size_t index) const =0 |
| Gets a const type-erased Data pointer to the element at the specified index. | |
| virtual void | setData (size_t index, const Core::Data &data)=0 |
| Sets an element from type-erased Data. | |
| virtual void | resize (size_t newSize)=0 |
| Resizes the array to contain the specified number of elements. | |
| virtual size_t | dimensions () const noexcept=0 |
| Gets the number of dimensions in this array container. | |
| virtual size_t | size () const noexcept=0 |
| Gets the total number of elements in the array. | |
Public Member Functions inherited from Infinity::Types::Core::Data | |
| Data () | |
| Data (const Data &other) | |
| Data (Data &&other) | |
| Data & | operator= (const Data &other) |
| Data & | operator= (Data &&other) |
| std::unique_ptr< Base > | clone () const override |
| virtual const Infinity::Types::TypeID & | typeId () const override |
| Gets the runtime type identifier for this object. | |
| virtual | ~Data () |
| Virtual destructor. | |
| bool | hasProperty (const std::string &key) const |
| template<typename T > | |
| void | setProperty (const std::string &key, T &&value) |
| Sets a typed property value. | |
| template<typename T > | |
| void | setProperty (const std::string &key, const T &value) |
| Sets a typed property value. | |
| void | setProperty (const std::string &key, PropertyValue &&value) |
| Sets a typed property value. | |
| const PropertyValue & | getProperty (const std::string &key) const |
| Gets a property value without type checking. | |
| template<typename T > | |
| const T & | getProperty (const std::string &key) const |
| Gets a typed property value. | |
| void | removeProperty (const std::string &key) |
Public Member Functions inherited from Infinity::Types::Core::Base | |
| virtual | ~Base () |
| Virtual destructor. | |
| virtual std::istream & | legibleDataRead (std::istream &in) override |
| Deserializes the object from a single-line text representation. | |
| virtual std::ostream & | legibleDataWrite (std::ostream &out) const override |
| Serializes the object to a single-line text representation. | |
Additional Inherited Members | |
Public Attributes inherited from Infinity::Types::Core::Data | |
| std::unordered_map< std::string, PropertyValue > | properties |
| Property storage for arbitrary metadata. | |
Abstract base class for all array container types in the Infinity type system.
ArrayBase provides a type-erased interface for array-like containers, enabling polymorphic access to Array<T>, Array2D<T>, and Array3D<T> through a common base. This abstraction is essential for the procedural component system, allowing components to work with arrays generically without knowing the element type or dimensionality at compile time.
The class bridges the gap between strongly-typed array containers and the type-erased Data interface, providing:
This abstraction enables:
Example usage:
|
inline |
|
inline |
|
virtualdefault |
Virtual destructor.
Ensures proper cleanup of derived array types through base class pointers.
|
pure virtual |
Checks if the array contains Core::Data-derived types.
Returns true if the element type T is derived from Core::Data, indicating that elements are complex types with their own type system integration.
Implemented in Infinity::Types::Containers::Array< T >, Infinity::Types::Containers::Array< Infinity::Types::Containers::Array2D >, Infinity::Types::Containers::Array< Infinity::Types::Containers::Array2D< float > >, Infinity::Types::Containers::Array< Infinity::Types::Math::t_Vector2 >, Infinity::Types::Containers::Array< Infinity::Types::Math::t_Vector3 >, Infinity::Types::Containers::Array< Infinity::Types::Math::t_Vector4 >, Infinity::Types::Containers::Array< Infinity::Types::Rendering::Material >, Infinity::Types::Containers::Array< Infinity::Types::Rendering::SubMesh >, Infinity::Types::Containers::Array< Infinity::Types::Spatial::Transform >, and Infinity::Types::Containers::Array< uint8_t >.
|
pure virtual |
Checks if the array contains plain value (POD) types.
Returns true if the element type T is a POD type (int, float, etc.), indicating that elements are simple scalar values.
Implemented in Infinity::Types::Containers::Array< T >, Infinity::Types::Containers::Array< Infinity::Types::Containers::Array2D >, Infinity::Types::Containers::Array< Infinity::Types::Containers::Array2D< float > >, Infinity::Types::Containers::Array< Infinity::Types::Math::t_Vector2 >, Infinity::Types::Containers::Array< Infinity::Types::Math::t_Vector3 >, Infinity::Types::Containers::Array< Infinity::Types::Math::t_Vector4 >, Infinity::Types::Containers::Array< Infinity::Types::Rendering::Material >, Infinity::Types::Containers::Array< Infinity::Types::Rendering::SubMesh >, Infinity::Types::Containers::Array< Infinity::Types::Spatial::Transform >, and Infinity::Types::Containers::Array< uint8_t >.
|
pure virtual |
Gets a const type-erased Data pointer to the element at the specified index.
Wraps the element in a Core::Data-derived type for uniform handling. For Data-derived elements, returns the element directly. For POD types, wraps in a Value<T>.
| index | Element index. |
Implemented in Infinity::Types::Containers::Array< T >, Infinity::Types::Containers::Array< Infinity::Types::Containers::Array2D >, Infinity::Types::Containers::Array< Infinity::Types::Containers::Array2D< float > >, Infinity::Types::Containers::Array< Infinity::Types::Math::t_Vector2 >, Infinity::Types::Containers::Array< Infinity::Types::Math::t_Vector3 >, Infinity::Types::Containers::Array< Infinity::Types::Math::t_Vector4 >, Infinity::Types::Containers::Array< Infinity::Types::Rendering::Material >, Infinity::Types::Containers::Array< Infinity::Types::Rendering::SubMesh >, Infinity::Types::Containers::Array< Infinity::Types::Spatial::Transform >, and Infinity::Types::Containers::Array< uint8_t >.
|
pure virtual |
Gets a type-erased Data pointer to the element at the specified index.
Wraps the element in a Core::Data-derived type for uniform handling. For Data-derived elements, returns the element directly. For POD types, wraps in a Value<T>.
| index | Element index. |
Implemented in Infinity::Types::Containers::Array< T >, Infinity::Types::Containers::Array< Infinity::Types::Containers::Array2D >, Infinity::Types::Containers::Array< Infinity::Types::Containers::Array2D< float > >, Infinity::Types::Containers::Array< Infinity::Types::Math::t_Vector2 >, Infinity::Types::Containers::Array< Infinity::Types::Math::t_Vector3 >, Infinity::Types::Containers::Array< Infinity::Types::Math::t_Vector4 >, Infinity::Types::Containers::Array< Infinity::Types::Rendering::Material >, Infinity::Types::Containers::Array< Infinity::Types::Rendering::SubMesh >, Infinity::Types::Containers::Array< Infinity::Types::Spatial::Transform >, and Infinity::Types::Containers::Array< uint8_t >.
|
pure virtualnoexcept |
Gets the number of dimensions in this array container.
Returns the dimensionality of the array:
Implemented in Infinity::Types::Containers::Array< T >, Infinity::Types::Containers::Array< Infinity::Types::Containers::Array2D >, Infinity::Types::Containers::Array< Infinity::Types::Containers::Array2D< float > >, Infinity::Types::Containers::Array< Infinity::Types::Math::t_Vector2 >, Infinity::Types::Containers::Array< Infinity::Types::Math::t_Vector3 >, Infinity::Types::Containers::Array< Infinity::Types::Math::t_Vector4 >, Infinity::Types::Containers::Array< Infinity::Types::Rendering::Material >, Infinity::Types::Containers::Array< Infinity::Types::Rendering::SubMesh >, Infinity::Types::Containers::Array< Infinity::Types::Spatial::Transform >, Infinity::Types::Containers::Array< uint8_t >, Infinity::Types::Containers::Array2D< T >, and Infinity::Types::Containers::Array3D< T >.
|
pure virtual |
Gets the TypeID of the element type contained in this array.
Returns the type of elements stored in the array. For Data-derived types, returns the type directly. For POD types, returns the Value<T> wrapper type.
Implemented in Infinity::Types::Containers::Array< T >, Infinity::Types::Containers::Array< Infinity::Types::Containers::Array2D >, Infinity::Types::Containers::Array< Infinity::Types::Containers::Array2D< float > >, Infinity::Types::Containers::Array< Infinity::Types::Math::t_Vector2 >, Infinity::Types::Containers::Array< Infinity::Types::Math::t_Vector3 >, Infinity::Types::Containers::Array< Infinity::Types::Math::t_Vector4 >, Infinity::Types::Containers::Array< Infinity::Types::Rendering::Material >, Infinity::Types::Containers::Array< Infinity::Types::Rendering::SubMesh >, Infinity::Types::Containers::Array< Infinity::Types::Spatial::Transform >, and Infinity::Types::Containers::Array< uint8_t >.
|
pure virtual |
Gets a const type-erased pointer to the element at the specified index.
Provides low-level read-only access to array elements through void pointers.
| index | Element index (must be < size()). |
Implemented in Infinity::Types::Containers::Array< T >, Infinity::Types::Containers::Array< Infinity::Types::Containers::Array2D >, Infinity::Types::Containers::Array< Infinity::Types::Containers::Array2D< float > >, Infinity::Types::Containers::Array< Infinity::Types::Math::t_Vector2 >, Infinity::Types::Containers::Array< Infinity::Types::Math::t_Vector3 >, Infinity::Types::Containers::Array< Infinity::Types::Math::t_Vector4 >, Infinity::Types::Containers::Array< Infinity::Types::Rendering::Material >, Infinity::Types::Containers::Array< Infinity::Types::Rendering::SubMesh >, Infinity::Types::Containers::Array< Infinity::Types::Spatial::Transform >, and Infinity::Types::Containers::Array< uint8_t >.
|
pure virtual |
Gets a type-erased pointer to the element at the specified index.
Provides low-level access to array elements through void pointers. Useful for generic algorithms that need direct memory access.
| index | Element index (must be < size()). |
Implemented in Infinity::Types::Containers::Array< T >, Infinity::Types::Containers::Array< Infinity::Types::Containers::Array2D >, Infinity::Types::Containers::Array< Infinity::Types::Containers::Array2D< float > >, Infinity::Types::Containers::Array< Infinity::Types::Math::t_Vector2 >, Infinity::Types::Containers::Array< Infinity::Types::Math::t_Vector3 >, Infinity::Types::Containers::Array< Infinity::Types::Math::t_Vector4 >, Infinity::Types::Containers::Array< Infinity::Types::Rendering::Material >, Infinity::Types::Containers::Array< Infinity::Types::Rendering::SubMesh >, Infinity::Types::Containers::Array< Infinity::Types::Spatial::Transform >, and Infinity::Types::Containers::Array< uint8_t >.
|
pure virtual |
Resizes the array to contain the specified number of elements.
Changes the array size, growing or shrinking as needed. New elements are default-constructed if growing, excess elements are destroyed if shrinking.
| newSize | Target number of elements. |
Implemented in Infinity::Types::Containers::Array< T >, Infinity::Types::Containers::Array< Infinity::Types::Containers::Array2D >, Infinity::Types::Containers::Array< Infinity::Types::Containers::Array2D< float > >, Infinity::Types::Containers::Array< Infinity::Types::Math::t_Vector2 >, Infinity::Types::Containers::Array< Infinity::Types::Math::t_Vector3 >, Infinity::Types::Containers::Array< Infinity::Types::Math::t_Vector4 >, Infinity::Types::Containers::Array< Infinity::Types::Rendering::Material >, Infinity::Types::Containers::Array< Infinity::Types::Rendering::SubMesh >, Infinity::Types::Containers::Array< Infinity::Types::Spatial::Transform >, and Infinity::Types::Containers::Array< uint8_t >.
|
pure virtual |
Sets an element from type-erased Data.
Unwraps the Data to the appropriate element type and assigns it to the specified index. The Data must be compatible with the array's element type.
| index | Element index to set. |
| data | Type-erased data to assign. |
| std::invalid_argument | If data is not compatible with element type. |
Implemented in Infinity::Types::Containers::Array< T >, Infinity::Types::Containers::Array< Infinity::Types::Containers::Array2D >, Infinity::Types::Containers::Array< Infinity::Types::Containers::Array2D< float > >, Infinity::Types::Containers::Array< Infinity::Types::Math::t_Vector2 >, Infinity::Types::Containers::Array< Infinity::Types::Math::t_Vector3 >, Infinity::Types::Containers::Array< Infinity::Types::Math::t_Vector4 >, Infinity::Types::Containers::Array< Infinity::Types::Rendering::Material >, Infinity::Types::Containers::Array< Infinity::Types::Rendering::SubMesh >, Infinity::Types::Containers::Array< Infinity::Types::Spatial::Transform >, and Infinity::Types::Containers::Array< uint8_t >.
|
pure virtualnoexcept |
Gets the total number of elements in the array.
Returns the total element count. For multi-dimensional arrays, this is the product of all dimensions (e.g., width × height for Array2D).
Implemented in Infinity::Types::Containers::Array< T >, Infinity::Types::Containers::Array< Infinity::Types::Containers::Array2D >, Infinity::Types::Containers::Array< Infinity::Types::Containers::Array2D< float > >, Infinity::Types::Containers::Array< Infinity::Types::Math::t_Vector2 >, Infinity::Types::Containers::Array< Infinity::Types::Math::t_Vector3 >, Infinity::Types::Containers::Array< Infinity::Types::Math::t_Vector4 >, Infinity::Types::Containers::Array< Infinity::Types::Rendering::Material >, Infinity::Types::Containers::Array< Infinity::Types::Rendering::SubMesh >, Infinity::Types::Containers::Array< Infinity::Types::Spatial::Transform >, and Infinity::Types::Containers::Array< uint8_t >.