18#if !defined(XALAN_OBJECTSTACKCACHE_HEADER_GUARD)
19#define XALAN_OBJECTSTACKCACHE_HEADER_GUARD
39#if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS)
40class CreateFunctorType,
41class DeleteFunctorType,
42class ResetFunctorType>
44class CreateFunctorType = DefaultCacheCreateFunctor<ObjectType>,
45class DeleteFunctorType = DeleteFunctor<ObjectType>,
46class ResetFunctorType = DefaultCacheResetFunctor<ObjectType> >
63 m_numObjectsOnStack(0)
82 if (m_stack.size() == m_numObjectsOnStack)
84 ObjectType*
const theNewObject = m_createFunctor(m_stack.getMemoryManager());
86 ++m_numObjectsOnStack;
91 return m_stack[m_numObjectsOnStack++];
98 assert (m_numObjectsOnStack > 0);
100 return m_stack[m_numObjectsOnStack-1];
106 assert(m_numObjectsOnStack > 0);
108 return m_stack[--m_numObjectsOnStack];
116 for (iterator = m_stack.begin(); iterator < m_stack.end(); iterator++)
118 m_resetFunctor(*iterator);
148template<
class ObjectType>
#define XALAN_CPP_NAMESPACE
Xalan-C++ namespace, including major and minor version.
XalanObjectStackCacheDefault(XalanSize_t initialListSize=0)
XalanObjectStackCache< ObjectType, DefaultCacheCreateFunctor< ObjectType >, DeleteFunctor< ObjectType >, DefaultCacheResetFunctor< ObjectType > > BaseClassType
ResetFunctorType m_resetFunctor
ObjectType CacheObjectType
CreateFunctorType m_createFunctor
DeleteFunctorType m_deleteFunctor
XalanObjectStackCache(MemoryManager &theManager, XalanSize_t initialListSize=0)
XalanVector< ObjectType * > VectorType