32 return m_pNext !=
this;
38 m_pNext = a_pNode->m_pNext;
39 a_pNode->m_pNext =
this;
59 return m_oRoot.
Next();
64 return m_oRoot.
Next();
79 return m_oRoot.m_pNext != &m_oRoot;
84 return m_oRoot.m_pNext == &m_oRoot;
91 for (
auto it =
Begin(); it !=
End(); it = it->Next() )
103 for (
auto it =
Begin(); it != a_pNode; it = it->
Next() )
127 pNodeBefore->m_pNext = &m_oRoot;
128 pBack->m_pNext = pBack;
136 m_oRoot.m_pNext = pNode->m_pNext;
137 pNode->m_pNext = pNode;
145 while ( a_pFrom != a_pTo )
147 Node* pNext = a_pFrom->m_pNext;
148 a_pFrom->m_pNext = a_pFrom;
152 pNodeBefore->m_pNext = a_pTo;
160 while ( pNode !=
End() )
163 pNode->m_pNext = pNode;
167 m_oRoot.m_pNext = &m_oRoot;
174 for (
auto it =
Begin(); it !=
End(); it = it->Next() )
185 pNodeBefore->m_pNext = a_pNode->m_pNext;
186 a_pNode->m_pNext = a_pNode;
193 mutable Node m_oRoot;
205template <
class T, TINT Unknown = 0>
219 TASSERT( !
"Nah, you can't do this" );
278 : m_pValue( a_pValue ) {}
#define TSTATICCAST(POINTERTYPE, VALUE)
#define TOSHI_NAMESPACE_START
#define TOSHI_NAMESPACE_END
Node * Transfer(Node *a_pNode, T2GenericSList &a_rList)
void PushBack(Node *a_pNode)
Node * Erase(Node *a_pFrom, Node *a_pTo)
void PushFront(Node *a_pNode)
~T2GenericSList()=default
Node * FindNodeBefore(Node *a_pNode)
void InsertAfter(Node *a_pNode)
friend class T2GenericSList
Iterator Erase(Iterator a_Iterator)
T2_DEFINE_ITERATOR_FRIEND()
Iterator FindNodeBefore(Iterator a_Node)
Iterator Erase(Iterator a_From, Iterator a_To)
void Delete(Iterator iter)
Iterator Transfer(Node *a_pNode, T2GenericSList &a_rList)
T2_DEFINE_ITERATOR(T, T2GenericSList::Node)
~T2SListNodeWrapper()=default
constexpr const T * GetNodeValue() const
constexpr T * operator->()
constexpr T2SListNodeWrapper & operator=(T *a_pValue)
constexpr T2SListNodeWrapper()=default
constexpr const T * operator->() const
constexpr T * GetNodeValue()
constexpr void SetNodeValue(T *a_pValue)
constexpr T2SListNodeWrapper(T *a_pValue)