ORIGINAL
|
Non-cyclic doubly linked list container. More...
#include <chain.h>
Classes | |
class | Iterator |
Bidirectional iterator implementation for chain. More... | |
Public Member Functions | |
chain (ALLOC alloc=ALLOC{}) | |
Constructs an empty chain with specified allocator. | |
chain (const chain &other) | |
Copy constructs a chain with optional allocator. | |
chain (const std::initializer_list< TYPE > &list) | |
Constructs a chain from an initializer list. | |
chain (const array< TYPE > &arr) | |
Constructs a chain from an array. | |
chain & | operator= (const chain &other) |
Copy assignment operator with allocator propagation. | |
chain (chain &&other) noexcept | |
Move constructs a chain with optional allocator. | |
chain & | operator= (chain &&other) noexcept |
Move assignment operator with allocator propagation. | |
void | swap (chain &other) noexcept |
Swaps the contents of this chain with another. | |
chain & | operator+= (chain &other) |
Concatenates another chain to this one. | |
u_integer | size () const override |
Gets the size of the chain. | |
TYPE | get (integer index) const override |
Gets the element at the specified index. | |
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 | pushBegin (const TYPE &e) override |
Pushes an element to the beginning of the chain. | |
void | push (integer index, const TYPE &e) override |
Pushes an element at the specified index in the chain. | |
void | pushEnd (const TYPE &e) override |
Pushes an element to the end of the chain. | |
TYPE | popBegin () override |
Pops an element from the beginning of the chain. | |
TYPE | pop (integer index) override |
Pops an element at the specified index in the chain. | |
TYPE | popEnd () override |
Pops an element from the end of the chain. | |
Iterator * | begins () const override |
Gets an iterator to the beginning of the chain. | |
Iterator * | ends () const override |
Gets an iterator to the end of the chain. | |
std::string | className () const override |
Gets the class name of the chain. | |
~chain () override | |
Destructor for the chain. | |
![]() | |
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. | |
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. | |
Non-cyclic doubly linked list container.
TYPE | Type of elements stored in the list |
ALLOC | Allocator type for memory management (default is allocator<TYPE>) |
Implements a classic doubly linked list with:
|
explicit |
Constructs an empty chain with specified allocator.
alloc | Allocator instance to use (has default-constructed ALLOC) |
Copy constructs a chain with optional allocator.
other | The chain to copy from |
original::chain< TYPE, ALLOC >::chain | ( | const std::initializer_list< TYPE > & | list | ) |
Constructs a chain from an initializer list.
list | The initializer list to construct the chain from. |
Constructs a chain from an array.
arr | The array to construct the chain from. |
Move constructs a chain with optional allocator.
other | The chain to move from |
|
overridevirtual |
Gets an iterator to the beginning of the chain.
Implements original::iterable< TYPE >.
|
overridevirtual |
Gets the class name of the chain.
Reimplemented from original::printable.
|
overridevirtual |
Gets an iterator to the end of the chain.
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 >.
Concatenates another chain to this one.
other | The chain to concatenate |
Merges the contents of another chain into this one and optionally merges allocators if propagate_on_container_merge is true
Move assignment operator with allocator propagation.
other | Chain to move from |
original::chain< TYPE, ALLOC > & original::chain< TYPE, ALLOC >::operator= | ( | const chain< TYPE, ALLOC > & | other | ) |
Copy assignment operator with allocator propagation.
other | The chain to copy from |
|
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 an element at the specified index in the chain.
index | The index of the element to pop. |
Implements original::baseList< TYPE, ALLOC >.
|
overridevirtual |
Pops an element from the beginning of the chain.
Implements original::baseList< TYPE, ALLOC >.
|
overridevirtual |
Pops an element from the end of the chain.
Implements original::baseList< TYPE, ALLOC >.
Pushes an element at the specified index in the chain.
index | The index at which to insert the element. |
e | The element to push. |
Implements original::baseList< TYPE, ALLOC >.
Pushes an element to the beginning of the chain.
e | The element to push to the beginning. |
Implements original::baseList< TYPE, ALLOC >.
Pushes an element to the end of the chain.
e | The element to push to the end. |
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 chain.
Implements original::container< TYPE, ALLOC >.
Swaps the contents of this chain with another.
other | The chain to swap with |
Exchanges the contents and allocators (if propagate_on_container_swap is true) of this chain with another