ORIGINAL
|
A block-based list implementation. More...
#include <blocksList.h>
Classes | |
class | Iterator |
Iterator for blocksList, supports forward and backward iteration. More... | |
Public Member Functions | |
blocksList (ALLOC alloc=ALLOC{}) | |
Constructs an empty blocksList. | |
blocksList (const std::initializer_list< TYPE > &lst) | |
Constructs a blocksList from an initializer list. | |
blocksList (const array< TYPE > &arr) | |
Constructs a blocksList from an array. | |
blocksList (const blocksList &other) | |
Copy constructor. | |
blocksList & | operator= (const blocksList &other) |
Copy assignment operator. | |
blocksList (blocksList &&other) noexcept | |
Move constructor. | |
blocksList & | operator= (blocksList &&other) noexcept |
Move assignment operator. | |
void | swap (blocksList &other) noexcept |
Swaps the contents of this blocksList with another. | |
TYPE | get (integer index) const override |
Gets the element at the specified index. | |
u_integer | size () const override |
Gets the size of the blocksList. | |
Iterator * | begins () const override |
Gets an iterator to the beginning of the blocksList. | |
Iterator * | ends () const override |
Gets an iterator to the end of the blocksList. | |
TYPE & | operator[] (integer index) override |
Gets a reference to the element at the specified index. | |
void | set (integer index, const TYPE &e) override |
Sets the element at the specified index. | |
u_integer | indexOf (const TYPE &e) const override |
Finds the index of the first occurrence of the specified element. | |
void | push (integer index, const TYPE &e) override |
Pushes an element to the specified index in the blocksList. | |
TYPE | pop (integer index) override |
Pops the element at the specified index in the blocksList. | |
void | pushBegin (const TYPE &e) override |
Pushes an element to the beginning of the blocksList. | |
TYPE | popBegin () override |
Pops the element from the beginning of the blocksList. | |
void | pushEnd (const TYPE &e) override |
Pushes an element to the end of the blocksList. | |
TYPE | popEnd () override |
Pops the element from the end of the blocksList. | |
std::string | className () const override |
Gets the class name of the blocksList. | |
~blocksList () override | |
Destructor for the blocksList. | |
![]() | |
virtual void | add (const TYPE &e) |
Adds an element to the end of the list. | |
virtual TYPE | remove (const TYPE &e) |
Removes an element from the list. | |
virtual void | clear () |
Removes all elements. | |
![]() | |
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. | |
![]() | |
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. | |
Public Attributes | |
friend | Iterator |
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 |
![]() | |
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. | |
![]() | |
std::string | elementsString () const |
Returns a string representation of the elements in the stream. | |
![]() | |
ALLOC | allocator |
The allocator instance used for memory management. | |
A block-based list implementation.
TYPE | Type of elements stored in the blocksList |
ALLOC | Allocator type to use for memory management (default: allocator<TYPE>) |
The blocksList class is a container that stores elements in blocks. The class provides operations for insertion, deletion, and accessing elements from both ends. Memory management is handled through the specified allocator type, which is used for both block allocation and element construction/destruction.
|
explicit |
Constructs an empty blocksList.
alloc | Allocator instance to use for memory management |
Initializes an empty blocksList with one initial block allocated using the provided allocator.
original::blocksList< TYPE, ALLOC >::blocksList | ( | const std::initializer_list< TYPE > & | lst | ) |
Constructs a blocksList from an initializer list.
lst | The initializer list to construct the blocksList from. |
Constructs a blocksList from an array.
arr | The array to construct the blocksList from. |
original::blocksList< TYPE, ALLOC >::blocksList | ( | const blocksList< TYPE, ALLOC > & | other | ) |
Copy constructor.
other | The blocksList to copy from. |
Creates a deep copy of another blocksList. If ALLOC::propagate_on_container_copy_assignment is true, the allocator is also copied.
|
noexcept |
Move constructor.
other | The blocksList to move from. |
Moves the contents of another blocksList into this one. If ALLOC::propagate_on_container_move_assignment is true, the allocator is also moved.
|
overridevirtual |
Gets an iterator to the beginning of the blocksList.
Implements original::iterable< TYPE >.
|
overridevirtual |
Gets the class name of the blocksList.
Reimplemented from original::printable.
|
overridevirtual |
Gets an iterator to the end of the blocksList.
Implements original::iterable< TYPE >.
|
overridevirtual |
Gets the element at the specified index.
index | The index of the element to retrieve. |
Implements original::serial< TYPE, ALLOC >.
Finds the index of the first occurrence of the specified element.
e | The element to search for. |
Implements original::serial< TYPE, ALLOC >.
|
noexcept |
Move assignment operator.
other | The blocksList to move from. |
Moves the contents of another blocksList into this one. If ALLOC::propagate_on_container_move_assignment is true, the allocator is also moved.
original::blocksList< TYPE, ALLOC > & original::blocksList< TYPE, ALLOC >::operator= | ( | const blocksList< TYPE, ALLOC > & | other | ) |
Copy assignment operator.
other | The blocksList to assign from. |
Performs a deep copy of another blocksList. If ALLOC::propagate_on_container_copy_assignment is true, the allocator is also copied.
|
overridevirtual |
Gets a reference to the element at the specified index.
index | The index of the element to retrieve. |
Implements original::serial< TYPE, ALLOC >.
|
overridevirtual |
Pops the element at the specified index in the blocksList.
index | The index of the element to pop. |
Implements original::baseList< TYPE, ALLOC >.
|
overridevirtual |
Pops the element from the beginning of the blocksList.
Implements original::baseList< TYPE, ALLOC >.
|
overridevirtual |
Pops the element from the end of the blocksList.
Implements original::baseList< TYPE, ALLOC >.
Pushes an element to the specified index in the blocksList.
index | The index at which to insert the element. |
e | The element to insert. |
Implements original::baseList< TYPE, ALLOC >.
Pushes an element to the beginning of the blocksList.
e | The element to push. |
Implements original::baseList< TYPE, ALLOC >.
Pushes an element to the end of the blocksList.
e | The element to push. |
Implements original::baseList< TYPE, ALLOC >.
Sets the element at the specified index.
index | The index of the element to set. |
e | The value to set the element to. |
Implements original::serial< TYPE, ALLOC >.
|
overridevirtual |
Gets the size of the blocksList.
Implements original::container< TYPE, ALLOC >.
|
noexcept |
Swaps the contents of this blocksList with another.
other | The blocksList to swap with. |
Exchanges the contents and allocators (if propagate_on_container_swap is true) of this blocksList with another.