19 #if !defined(REUSABLEARENAALLOCATOR_INCLUDE_GUARD_1357924680) 20 #define REUSABLEARENAALLOCATOR_INCLUDE_GUARD_1357924680 33 XALAN_CPP_NAMESPACE_BEGIN
37 template<
class ObjectType>
39 ReusableArenaBlock<ObjectType> >
66 MemoryManager& theManager,
67 size_type theBlockSize,
68 bool destroyBlocks =
false) :
69 BaseClassType(theManager, theBlockSize),
90 assert ( theObject != 0 );
100 while( iTerator != iEnd
101 && (*iTerator)->blockAvailable() )
103 if ((*iTerator)->ownsBlock(theObject) ==
true)
105 (*iTerator)->destroyObject(theObject);
111 ReusableArenaBlockType* block = *iTerator;
138 while ( !bResult && rIterator != rEnd )
140 if ((*rIterator)->ownsBlock(theObject))
142 (*rIterator)->destroyObject(theObject);
147 ReusableArenaBlockType* block = *iTerator;
167 if ( *rIterator == *iTerator)
222 assert( this->
m_blocks.
front()->ownsBlock(theObject) == true );
230 assert ( fullBlock != 0 );
249 while( iTerator != iEnd
250 && (*iTerator)->blockAvailable() )
252 if ((*iTerator)->ownsBlock(theObject) )
264 while( rIterator != rEnd )
266 if ((*rIterator)->ownsBlock(theObject) )
271 if ( *iTerator == *rIterator )
300 if ( (*iTerator)->isEmpty() )
305 (*iTerator)->blockAvailable() )
330 XALAN_CPP_NAMESPACE_END
334 #endif // !defined(REUSABLEARENAALLOCATOR_INCLUDE_GUARD_1357924680) ReusableArenaAllocator< ObjectType > ThisType
const_reverse_iterator_ const_reverse_iterator
void push_front(const value_type &data)
ArenaAllocator< ObjectType, ReusableArenaBlockType > BaseClassType
MemoryManager & getMemoryManager()
BaseClassType::size_type size_type
const bool m_destroyBlocks
ReusableArenaBlockType::size_type size_type
reverse_iterator_ reverse_iterator
ArenaBlockListType::const_iterator const_iterator
virtual ~ReusableArenaAllocator()
XalanList< ReusableArenaBlockType * > ArenaBlockListType
static ThisType * create(MemoryManager &theManager, size_type theBlockSize)
ReusableArenaAllocator(MemoryManager &theManager, size_type theBlockSize, bool destroyBlocks=false)
ArenaBlockListType m_blocks
Xalan implementation of a doubly linked list.
ArenaBlockListType::reverse_iterator reverse_iterator
virtual bool ownsObject(const ObjectType *theObject) const
virtual void commitAllocation(ObjectType *theObject)
ReusableArenaBlock< ObjectType > ReusableArenaBlockType
void push_back(const value_type &data)
virtual ObjectType * allocateBlock()
reverse_iterator rbegin()
ArenaBlockListType::iterator iterator
bool destroyObject(ObjectType *theObject)
ArenaBlockListType::const_reverse_iterator const_reverse_iterator