ZXFoundation™ 26h2
Loading...
Searching...
No Matches
lib.list Module Reference

Data Structures

struct  lib::list_head
 Intrusive circular doubly-linked list. More...
struct  lib::list_iterator
 Bidirectional iterator over raw list_node pointers. More...
struct  lib::list_node
 Embeddable anchor for an intrusive doubly-linked list. More...
struct  lib::typed_list_iterator< Owner, member >
 Typed bidirectional iterator that yields Owner& directly. More...
struct  lib::list_head::typed_range< Owner, member >
 Typed range that yields Owner& for range-for. More...

Functions

constexpr auto begin () const noexcept -> list_iterator
constexpr auto begin () noexcept -> list_iterator
 Raw bidirectional begin iterator.
constexpr auto begin () noexcept
constexpr auto count () const noexcept -> usize
 Returns the number of elements. O(N) — avoid hot paths.
constexpr auto empty () const noexcept -> bool
 Returns true if the list contains no elements.
constexpr auto end () const noexcept -> list_iterator
constexpr auto end () noexcept -> list_iterator
 Raw bidirectional end iterator (sentinel).
constexpr auto end () noexcept
constexpr auto insert_before (list_node &marker, list_node &node) noexcept -> void
 Insert node immediately before marker.
template<typename Owner, list_node Owner::* member>
constexpr auto iter () noexcept -> typed_range< Owner, member >
 Return a typed range adaptor for range-for over Owner&.
 list_head (const list_head &)=delete
 list_head (list_head &&)=delete
constexpr list_iterator (list_node *cur) noexcept
constexpr list_node () noexcept
 Initialize node to the self-linked (unlinked) state.
 list_node (const list_node &)=delete
 list_node (list_node &&)=delete
constexpr auto operator!= (const list_iterator &o) const noexcept -> bool
constexpr auto operator!= (const typed_list_iterator &o) const noexcept -> bool
constexpr auto operator* () const noexcept -> const list_node *
constexpr auto operator* () noexcept -> list_node *
constexpr auto operator* () const noexcept -> const Owner &
constexpr auto operator* () noexcept -> Owner &
constexpr auto operator++ () noexcept -> list_iterator &
constexpr auto operator++ (int) noexcept -> list_iterator
constexpr auto operator++ () noexcept -> typed_list_iterator &
constexpr auto operator++ (int) noexcept -> typed_list_iterator
constexpr auto operator-- () noexcept -> list_iterator &
constexpr auto operator-- (int) noexcept -> list_iterator
constexpr auto operator-- () noexcept -> typed_list_iterator &
constexpr auto operator-- (int) noexcept -> typed_list_iterator
auto operator= (const list_head &)=delete
auto operator= (list_head &&)=delete
auto operator= (const list_node &)=delete
auto operator= (list_node &&)=delete
constexpr auto operator== (const list_iterator &o) const noexcept -> bool
constexpr auto operator== (const typed_list_iterator &o) const noexcept -> bool
constexpr auto pop_front () noexcept -> list_node *
 Remove and return the first element, or nullptr if empty.
constexpr auto push_back (list_node &node) noexcept -> void
 Append node (new last element).
constexpr auto push_front (list_node &node) noexcept -> void
 Prepend node (new first element).
static constexpr auto remove (list_node &node) noexcept -> void
 Remove node from this list.
constexpr auto singular () const noexcept -> bool
 Returns true if the list contains exactly one element.
constexpr auto splice_back (list_head &src) noexcept -> void
 Move all elements of src to the back of this list.
constexpr typed_list_iterator (list_node *cur) noexcept

Variables

list_nodecurrent
list_nodecurrent
list_head & h
list_nodenext
list_nodeprev
list_node sentinel

Files

file  lib/list.cxxm
 Intrusive circular doubly-linked list types.