4#define T2_FOREACH( vecName, iteratorName ) \
5 for ( auto iteratorName = ( vecName ).Begin(); iteratorName != ( vecName ).End(); ++iteratorName )
7#define T2_FOREACH_BACK( vecName, iteratorName ) \
8 for ( auto iteratorName = ( vecName ).Tail(); iteratorName != ( vecName ).End(); --iteratorName )
10#define T2_FOREACH_ARRAY( arrName, iteratorName ) \
11 for ( TINT iteratorName = 0; iteratorName < TARRAYSIZE( arrName ); ++iteratorName )
13#define T2_FOREACH_ARRAY_BACK( arrName, iteratorName ) \
14 for ( TINT iteratorName = TARRAYSIZE( arrName ) - 1; iteratorName >= 0; --iteratorName )
16#define T2_DEFINE_ITERATOR_FRIEND() \
17 template <class T, class Node> friend class Toshi::T2Iterator
19#define T2_DEFINE_ITERATOR( TYPE, NODE_TYPE ) \
20 using Iterator = Toshi::T2Iterator<TYPE, NODE_TYPE>
24template <
class T,
class Node>
47 m_pPtr = other.m_pPtr;
84 m_pPtr = other.m_pPtr;
#define TSTATICCAST(POINTERTYPE, VALUE)
#define TOSHI_NAMESPACE_START
#define TOSHI_NAMESPACE_END
void operator=(const T2Iterator &other)
const T & operator*() const noexcept
T2Iterator operator--(TINT)
TSTATICASSERT(std::is_base_of< Node, T >::value)
T2Iterator(const T2Iterator &other)
T2Iterator operator++(TINT)