27 #include "../clib/logfacility.h" 34 template <
class USER_TYPE>
69 memset( m_pMemory, 0,
sizeof( FSA_ELEMENT ) *
m_MaxElements );
77 pElement->
pPrev = pElement - 1;
78 pElement->
pNext = pElement + 1;
86 ( pElement - 1 )->
pNext = NULL;
99 FSA_ELEMENT* pNewNode = NULL;
112 if ( pNewNode->pNext )
119 pNewNode->
pPrev = NULL;
123 pNewNode->
pNext = NULL;
134 return reinterpret_cast<USER_TYPE*
>( pNewNode );
142 void free( USER_TYPE* user_data )
144 FSA_ELEMENT* pNode =
reinterpret_cast<FSA_ELEMENT*
>( user_data );
149 pNode->pPrev->pNext = pNode->pNext;
187 _tmp << fmt::hex( p->pPrev ) <<
"!" << fmt::hex( p->pNext ) <<
" ";
199 _tmp << fmt::hex( p->pPrev ) <<
"!" << fmt::hex( p->pNext ) <<
" ";
211 return reinterpret_cast<USER_TYPE*
>( (
reinterpret_cast<FSA_ELEMENT*
>( node ) )->pNext );
224 #endif // defined FSA_H
FSA_ELEMENT * m_pFirstUsed
FixedSizeAllocator(size_t MaxElements=FSA_DEFAULT_SIZE)
USER_TYPE * GetNext(USER_TYPE *node)
FSA_ELEMENT * m_pFirstFree
void free(USER_TYPE *user_data)