ORIGINAL
|
A fixed-size array container with random access. More...
#include <array.h>
Classes | |
class | Iterator |
Iterator for the array class that supports random access. More... | |
Public Member Functions | |
array (u_integer size=0, ALLOC alloc=ALLOC{}) | |
Constructs an empty array. | |
array (const std::initializer_list< TYPE > &lst) | |
Constructs an array from an initializer list. | |
array (const array &other) | |
Copy constructor. | |
array & | operator= (const array &other) |
Copy assignment operator. | |
array (array &&other) noexcept | |
Move constructor. | |
array & | operator= (array &&other) noexcept |
Move assignment operator. | |
void | swap (array &other) noexcept |
Swaps the contents of two arrays. | |
u_integer | size () const override |
Returns the size of the array. | |
TYPE & | data () const |
Returns a reference to the first element of the array. | |
TYPE | get (integer index) const override |
Retrieves an element at a specified index. | |
TYPE & | operator[] (integer index) override |
Access an element at a specified index for modification. | |
void | set (integer index, const TYPE &e) override |
Sets the value of an element at the specified index. | |
u_integer | indexOf (const TYPE &e) const override |
Finds the index of the specified element in the array. | |
Iterator * | begins () const override |
Returns an iterator to the first element of the array. | |
Iterator * | ends () const override |
Returns an iterator to the last element of the array. | |
std::string | className () const override |
Returns the class name. | |
~array () override | |
Destroys the array and releases its memory. | |
![]() | |
integer | compareTo (const iterationStream &other) const override |
Compares the current iteration stream with another iteration stream. | |
u_integer | toHash () const noexcept override |
Computes a hash value for the iteration stream. | |
std::string | className () const override |
Returns the class name. | |
std::string | toString (bool enter) const override |
Converts the iteration stream to a string representation. | |
![]() | |
operator std::string () const | |
Explicit conversion to std::string. | |
operator const char * () const | |
Explicit conversion to C-style string. | |
const char * | toCString (bool enter) const |
Direct C-string access with formatting control. | |
template<typename TYPE > | |
auto | formatString (const TYPE &t) -> std::string |
template<typename TYPE > | |
auto | formatCString (const TYPE &t) -> const char * |
template<typename TYPE > | |
auto | formatEnum (const TYPE &t) -> std::string |
template<typename TYPE > | |
auto | formatString (TYPE *const &ptr) -> std::string |
![]() | |
iterAdaptor | begin () |
Returns an iterator adapter pointing to the beginning of the container. | |
iterAdaptor | end () |
Returns an iterator adapter pointing to the end sentinel of the container. | |
iterAdaptor | begin () const |
Returns a const iterator adapter pointing to the beginning of the container. | |
iterAdaptor | end () const |
Returns a const iterator adapter pointing to the end sentinel of the container. | |
iterAdaptor | first () |
Returns an iterator adapter pointing to the first element. | |
iterAdaptor | last () |
Returns an iterator adapter pointing to the last element. | |
iterAdaptor | first () const |
Returns a const iterator adapter pointing to the first element. | |
iterAdaptor | last () const |
Returns a const iterator adapter pointing to the last element. | |
template<typename Callback = transform<TYPE>> requires Operation<Callback, TYPE> | |
void | forEach (Callback operation=Callback{}) |
Applies a given operation to each element in the iterable container. | |
template<typename Callback = transform<TYPE>> requires Operation<Callback, TYPE> | |
void | forEach (const Callback &operation=Callback{}) const |
Applies a given operation to each element in the iterable container (const version). | |
coroutine::generator< T > | generator () const |
Creates a coroutine generator that yields elements from this container. | |
template<typename Callback > requires original::Operation<Callback, TYPE> | |
auto | forEach (Callback operation) -> void |
template<typename Callback > requires original::Operation<Callback, TYPE> | |
auto | forEach (const Callback &operation) const -> void |
![]() | |
bool | operator== (const iterationStream< TYPE, DERIVED > &other) const |
Checks if the current object is equal to another. | |
bool | operator!= (const iterationStream< TYPE, DERIVED > &other) const |
Checks if the current object is not equal to another. | |
bool | operator< (const iterationStream< TYPE, DERIVED > &other) const |
Checks if the current object is less than another. | |
bool | operator> (const iterationStream< TYPE, DERIVED > &other) const |
Checks if the current object is greater than another. | |
bool | operator<= (const iterationStream< TYPE, DERIVED > &other) const |
Checks if the current object is less than or equal to another. | |
bool | operator>= (const iterationStream< TYPE, DERIVED > &other) const |
Checks if the current object is greater than or equal to another. | |
virtual | ~comparable ()=default |
Virtual destructor for proper cleanup of derived objects. | |
![]() | |
virtual bool | equals (const iterationStream< TYPE, DERIVED > &other) const noexcept |
Compares two objects for equality. | |
virtual | ~hashable ()=0 |
Virtual destructor. | |
![]() | |
virtual TYPE | getBegin () const |
Retrieves the first element in the container. | |
virtual TYPE | getEnd () const |
Retrieves the last element in the container. | |
virtual TYPE | operator[] (integer index) const |
Retrieves the element at the specified index (const version). | |
bool | contains (const TYPE &e) const override |
Checks if the container contains the specified element. | |
![]() | |
bool | empty () const |
Checks if the container is empty. | |
virtual | ~container ()=default |
Destructor for the container class. | |
Additional Inherited Members | |
![]() | |
using | T = std::remove_const_t< TYPE > |
![]() | |
template<typename TYPE > | |
static std::string | formatString (const TYPE &t) |
Universal value-to-string conversion with type-specific formatting. | |
template<Printable TYPE> | |
static std::string | formatString (const TYPE &t) |
Specialization for types deriving from printable. | |
template<EnumType TYPE> | |
static std::string | formatString (const TYPE &t) |
Specialization for enum types with type-safe formatting. | |
template<typename TYPE > | |
static std::string | formatString (TYPE *const &ptr) |
Pointer-specific formatting with null safety. | |
template<typename TYPE > | |
static const char * | formatCString (const TYPE &t) |
C-string cache for temporary usage with static storage. | |
template<typename TYPE > | |
static std::string | formatEnum (const TYPE &t) |
Enum formatting utility with underlying value extraction. | |
template<> | |
auto | formatString (const char &t) -> std::string |
template<> | |
auto | formatString (const bool &t) -> std::string |
template<> | |
auto | formatString (const char *const &ptr) -> std::string |
![]() | |
std::string | elementsString () const |
Returns a string representation of the elements in the stream. | |
![]() | |
bool | indexOutOfBound (integer index) const |
Checks if the provided index is out of bounds. | |
integer | parseNegIndex (integer index) const |
Converts negative indices into valid positive indices. | |
![]() | |
container (ALLOC alloc=ALLOC{}) | |
Constructs a container with specified allocator. | |
TYPE * | allocate (u_integer size) |
Allocates raw memory for elements. | |
void | deallocate (TYPE *ptr, u_integer size) |
Deallocates memory previously allocated by allocate() | |
template<typename O_TYPE , typename... Args> | |
void | construct (O_TYPE *o_ptr, Args &&... args) |
Constructs an element in-place. | |
template<typename O_TYPE > | |
void | destroy (O_TYPE *o_ptr) |
Destroys an element. | |
![]() | |
ALLOC | allocator |
The allocator instance used for memory management. | |
A fixed-size array container with random access.
TYPE | Type of the elements contained in the array |
ALLOC | Allocator type to use for memory management (default: allocator<TYPE>) |
The array
class encapsulates a fixed-size array and provides operations such as indexing, element assignment, and iteration. It supports random access via iterators, which can be used to traverse the container from beginning to end, and vice versa.
This class offers both copy and move semantics, along with an iterator class that supports random access operations. Memory management is handled through the specified allocator type.
Constructs an empty array.
size | The initial size of the array. |
alloc | Allocator instance to use for memory management |
Initializes the array with a given size, allocating memory for the array using the specified allocator and setting each element to its default value.
original::array< TYPE, ALLOC >::array | ( | const std::initializer_list< TYPE > & | lst | ) |
Constructs an array from an initializer list.
lst | The initializer list to initialize the array. |
This constructor allows creating an array from a list of elements. The size of the array will be the size of the initializer list.
Copy constructor.
other | The array to copy from. |
Initializes the array by copying the elements from another array. If ALLOC::propagate_on_container_copy_assignment is true, the allocator is also copied.
Move constructor.
other | The array to move from. |
Moves the elements and resources from another array into this one, leaving the source array in a valid but unspecified state. If ALLOC::propagate_on_container_move_assignment is true, the allocator is also moved.
Destroys the array and releases its memory.
This destructor frees the memory allocated for the array.
|
overridevirtual |
Returns an iterator to the first element of the array.
Implements original::iterable< TYPE >.
|
overridevirtual |
Returns a reference to the first element of the array.
outOfBoundError | If the array is empty. |
|
overridevirtual |
Returns an iterator to the last element of the array.
Implements original::iterable< TYPE >.
|
overridevirtual |
Retrieves an element at a specified index.
index | The index of the element to retrieve. |
outOfBoundError | If the index is out of bounds. |
Implements original::serial< TYPE, ALLOC >.
Finds the index of the specified element in the array.
e | The element to find. |
unSupportedMethodError | If TYPE is not comparable. |
Implements original::serial< TYPE, ALLOC >.
|
noexcept |
Move assignment operator.
other | The array to move from. |
Moves the elements and resources from another array into this one, leaving the source array in a valid but unspecified state. If ALLOC::propagate_on_container_move_assignment is true, the allocator is also moved.
Copy assignment operator.
other | The array to copy from. |
Copies the elements of another array into this array. If ALLOC::propagate_on_container_copy_assignment is true, the allocator is also copied.
|
overridevirtual |
Access an element at a specified index for modification.
index | The index of the element to access. |
outOfBoundError | If the index is out of bounds. |
Implements original::serial< TYPE, ALLOC >.
Sets the value of an element at the specified index.
index | The index of the element to set. |
e | The value to assign to the element. |
outOfBoundError | If the index is out of bounds. |
Implements original::serial< TYPE, ALLOC >.
|
overridevirtual |
Returns the size of the array.
Implements original::container< TYPE, ALLOC >.
Swaps the contents of two arrays.
other | Array to swap with |
Exchanges the size, data pointer, and optionally the allocator between two arrays