56                if (
this != std::addressof(a_rhs)) {
 
   65                if (
this != std::addressof(a_rhs)) {
 
   66                    item = std::move(a_rhs.item);
 
   68                    next = std::move(a_rhs.next);
 
  100                _cur(std::move(a_rhs._cur))
 
  102                a_rhs._cur = 
nullptr;
 
  113                if (
this != std::addressof(a_rhs)) {
 
  121                if (
this != std::addressof(a_rhs)) {
 
  122                    _cur = std::move(a_rhs._cur);
 
  123                    a_rhs._cur = 
nullptr;
 
  129            [[nodiscard]] 
constexpr pointer   operator->() const noexcept { 
return std::addressof(_cur->item); }
 
  158                for (
auto iter = _cur; iter; iter = iter->next) {
 
  159                    if (iter == a_rhs._cur) {
 
  194            if (
this != std::addressof(a_rhs)) {
 
  203            if (
this != std::addressof(a_rhs)) {
 
  244            auto node = 
new Node(a_value);
 
  247                std::make_pair(node, node));
 
  252            auto node = 
new Node(std::move(a_value));
 
  255                std::make_pair(node, node));
 
  260            auto node = 
new Node(a_value);
 
  263                std::make_pair(node, node));
 
  268            auto node = 
new Node(std::move(a_value));
 
  271                std::make_pair(node, node));
 
  287            if (a_pos == 
cend()) {
 
  310        template <
class... Args>
 
  325                std::construct_at(std::addressof(
_listHead.
item), std::move(node->item));
 
  341            auto head = 
new Node(a_value);
 
  343            for (
size_type i = 1; i < a_count; ++i) {
 
  344                tail->next = 
new Node(a_value);
 
  348            return std::make_pair(head, tail);
 
  356            lhs->
item = rhs->item;
 
  359                lhs->next = 
new Node(rhs->item);
 
  366            auto [head, tail] = a_values;
 
  369            assert(head && tail);
 
  371            tail->next = a_pos->
next;
 
  378            if (a_head && a_head != a_tail) {
 
  379                auto iter = a_head->
next;
 
  381                while (iter != a_tail) {
 
  386                a_head->
next = a_tail;
 
  390        template <
class... Args>
 
  399            std::construct_at(std::addressof(
_listHead.
item), std::forward<Args>(a_args)...);
 
  411            while (iter != last && elems != a_count) {
 
  416            if (elems < a_count) {
 
  419            } 
else if (iter != last) {
 
constexpr bool operator==(const iterator_base &a_rhs) const noexcept
Definition: BSTList.h:131
 
constexpr reference operator*() const noexcept
Definition: BSTList.h:128
 
constexpr iterator_base(const iterator_base &a_rhs) noexcept
Definition: BSTList.h:95
 
constexpr Node * get_current() noexcept
Definition: BSTList.h:153
 
constexpr bool operator!=(const iterator_base &a_rhs) const noexcept
Definition: BSTList.h:132
 
constexpr iterator_base & operator=(iterator_base &&a_rhs) noexcept
Definition: BSTList.h:119
 
constexpr const Node * get_current() const noexcept
Definition: BSTList.h:154
 
constexpr iterator_base & operator=(const iterator_base &a_rhs) noexcept
Definition: BSTList.h:111
 
constexpr iterator_base(Node *a_node) noexcept
Definition: BSTList.h:105
 
constexpr iterator_base() noexcept
Definition: BSTList.h:91
 
std::forward_iterator_tag iterator_category
Definition: BSTList.h:89
 
~iterator_base() noexcept
Definition: BSTList.h:109
 
constexpr iterator_base(iterator_base &&a_rhs) noexcept
Definition: BSTList.h:99
 
U value_type
Definition: BSTList.h:86
 
U & reference
Definition: BSTList.h:88
 
constexpr iterator_base & operator++() noexcept
Definition: BSTList.h:135
 
std::ptrdiff_t difference_type
Definition: BSTList.h:85
 
constexpr bool comes_before(const iterator_base &a_rhs) const noexcept
Definition: BSTList.h:156
 
U * pointer
Definition: BSTList.h:87
 
constexpr pointer operator->() const noexcept
Definition: BSTList.h:129
 
constexpr const_iterator cend() const noexcept
Definition: BSTList.h:230
 
const value_type & const_reference
Definition: BSTList.h:15
 
constexpr const Node * get_head() const noexcept
Definition: BSTList.h:335
 
constexpr const_iterator end() const noexcept
Definition: BSTList.h:229
 
iterator insert_after(iterator a_pos, const_reference a_value)
Definition: BSTList.h:242
 
reference front()
Definition: BSTList.h:212
 
void resize(size_type a_count, const value_type &a_value)
Definition: BSTList.h:331
 
const_iterator cbegin() const
Definition: BSTList.h:226
 
BSSimpleList & operator=(const BSSimpleList &a_rhs)
Definition: BSTList.h:192
 
T value_type
Definition: BSTList.h:12
 
void push_front(value_type &&a_value)
Definition: BSTList.h:308
 
void resize(size_type a_count)
Definition: BSTList.h:330
 
BSSimpleList(BSSimpleList &&a_rhs)
Definition: BSTList.h:183
 
iterator insert_after(const_iterator a_pos, const_reference a_value)
Definition: BSTList.h:258
 
BSSimpleList & operator=(BSSimpleList &&a_rhs)
Definition: BSTList.h:201
 
iterator insert_after(const_iterator a_pos, size_type a_count, const_reference a_value)
Definition: BSTList.h:274
 
iterator erase_after(const_iterator a_pos)
Definition: BSTList.h:285
 
reference emplace_front(Args &&... a_args)
Definition: BSTList.h:311
 
~BSSimpleList()
Definition: BSTList.h:187
 
iterator begin()
Definition: BSTList.h:224
 
iterator_base< const value_type > const_iterator
Definition: BSTList.h:171
 
void emplace_front_impl(Args &&... a_args)
Definition: BSTList.h:391
 
iterator erase_after(const_iterator a_first, const_iterator a_last)
Definition: BSTList.h:296
 
const_iterator begin() const
Definition: BSTList.h:225
 
constexpr Node * get_head() noexcept
Definition: BSTList.h:334
 
iterator insert_after(iterator a_pos, value_type &&a_value)
Definition: BSTList.h:250
 
void copy_from(const BSSimpleList &a_rhs)
Definition: BSTList.h:351
 
std::uint32_t size_type
Definition: BSTList.h:13
 
BSSimpleList(const BSSimpleList &a_rhs)
Definition: BSTList.h:177
 
constexpr iterator end() noexcept
Definition: BSTList.h:228
 
void erase_after_impl(Node *a_head, Node *a_tail)
Definition: BSTList.h:376
 
const_reference front() const
Definition: BSTList.h:218
 
iterator_base< value_type > iterator
Definition: BSTList.h:170
 
iterator insert_after(const_iterator a_pos, value_type &&a_value)
Definition: BSTList.h:266
 
value_type & reference
Definition: BSTList.h:14
 
void push_front(const_reference a_value)
Definition: BSTList.h:307
 
Node _listHead
Definition: BSTList.h:428
 
void clear()
Definition: BSTList.h:234
 
std::pair< Node *, Node * > alloc_copies(size_type a_count, const_reference a_value)
Definition: BSTList.h:337
 
BSSimpleList()
Definition: BSTList.h:173
 
bool empty() const
Definition: BSTList.h:232
 
void pop_front()
Definition: BSTList.h:317
 
Node * insert_after_impl(Node *a_pos, std::pair< Node *, Node * > a_values)
Definition: BSTList.h:364
 
void resize_impl(size_type a_count, const_reference a_value)
Definition: BSTList.h:402
 
Definition: AbsorbEffect.h:6
 
T observer
Definition: PCH.h:93
 
Definition: EffectArchetypes.h:65
 
Node()
Definition: BSTList.h:20
 
stl::observer< Node * > next
Definition: BSTList.h:78
 
Node(const Node &a_rhs)
Definition: BSTList.h:30
 
Node(value_type &&a_value)
Definition: BSTList.h:47
 
Node(value_type a_value, Node *a_next)
Definition: BSTList.h:25
 
value_type item
Definition: BSTList.h:77
 
Node(const value_type &a_value)
Definition: BSTList.h:42
 
Node & operator=(Node &&a_rhs)
Definition: BSTList.h:63
 
Node(Node &&a_rhs)
Definition: BSTList.h:35
 
Node & operator=(const Node &a_rhs)
Definition: BSTList.h:54