19 #if !defined(XALANLIST_HEADER_GUARD_1357924680)
20 #define XALANLIST_HEADER_GUARD_1357924680
42 XALAN_CPP_NAMESPACE_BEGIN
46 template <
class Value>
54 template <
class Value>
62 template<
class XalanListTraits,
class Node>
66 typedef typename XalanListTraits::reference
reference;
67 typedef typename XalanListTraits::pointer
pointer;
107 while (decrement > 0)
154 template <
class Type>
172 const value_type & theValue,
189 #if defined(XALAN_HAS_STD_ITERATORS)
192 #elif defined(XALAN_RW_NO_CLASS_PARTIAL_SPEC)
222 MemoryManager& theManager) :
233 iterator pos =
begin();
240 while (freeNode != 0)
242 Node * nextNode = freeNode->
next;
297 const_reverse_iterator
309 const_reverse_iterator
331 const_iterator item =
begin();
332 while (item !=
end())
371 insert(
const iterator& pos,
const value_type& value)
379 assert(pos !=
end());
397 Node & posNode = pos.
node();
398 Node & toInsertNode = toInsert.node();
404 toInsertNode.
next = &posNode;
407 posNode.
prev = &toInsertNode;
419 iterator toInsertFirst,
420 iterator toInsertLast)
424 if (toInsertFirst != toInsertLast)
426 Node & posNode = pos.
node();
427 Node & toInsertFirstNode = toInsertFirst.node();
428 Node & toInsertLastNode = *(toInsertLast.
node().
prev);
433 toInsertFirstNode.
prev = posNode.
prev;
434 toInsertLastNode.
next = &posNode;
436 posNode.
prev->
next = &toInsertFirstNode;
437 posNode.
prev = &toInsertLastNode;
444 iterator pos =
begin();
453 #if defined(XALAN_NO_STD_NAMESPACE)
470 Node * nextFreeNode = 0;
484 new (&newNode->prev) Node*(pos.
node().
prev);
485 new (&newNode->next) Node*(&(pos.
node()));
497 node.prev->next = node.next;
498 node.next->prev = node.prev;
533 const size_type theBytesNeeded = size *
sizeof(Node);
539 assert( pointer != 0 );
570 XALAN_CPP_NAMESPACE_END
572 #endif // XALANLIST_HEADER_GUARD_1357924680
const_reverse_iterator_ const_reverse_iterator
XalanListIteratorBase operator-(difference_type decrement) const
Node & constructNode(const value_type &data, iterator pos)
void push_front(const value_type &data)
const_iterator begin() const
XalanListIteratorBase(Node &node)
XalanListIteratorBase< XalanListConstIteratorTraits< value_type >, Node > const_iterator
XALAN_STD_QUALIFIER bidirectional_iterator_tag iterator_category
XalanListIteratorBase< XalanListIteratorTraits< value_type >, Node > iterator
const_reverse_iterator rend() const
reverse_iterator_ reverse_iterator
bool operator!=(const XalanListIteratorBase &theRhs) const
pointer operator->() const
XalanListIteratorBase(const iterator &theRhs)
const_reverse_iterator rbegin() const
XALAN_STD_QUALIFIER reverse_iterator< iterator, value_type > reverse_iterator_
const MemoryManager & getMemoryManager() const
Node * allocate(size_type size)
XalanListIteratorBase< XalanListIteratorTraits< value_type >, Node > iterator
Node & getListHead() const
reference operator*() const
void splice(iterator pos, ThisType &list, iterator toInsert)
XalanListTraits::pointer pointer
void destroyNode(Node &node)
const_iterator end() const
Xalan implementation of a doubly linked list.
XALAN_STD_QUALIFIER reverse_iterator< const_iterator, value_type, const_reference > const_reverse_iterator_
static C * construct(C *address, MemoryManager &)
XalanListTraits::value_type value_type
ptrdiff_t difference_type
XalanListIteratorBase operator++()
XalanList< value_type > ThisType
void push_back(const value_type &data)
void splice(iterator pos, ThisType &list, iterator toInsertFirst, iterator toInsertLast)
XalanListIteratorBase operator--()
void swap(ThisType &theRHS)
bool operator==(const XalanListIteratorBase &theRhs) const
XalanList(MemoryManager &theManager)
XalanListIteratorBase operator++(int)
MemoryManager & getMemoryManager()
MemoryManagedConstructionTraits< value_type >::Constructor Constructor
MemoryManager * m_memoryManager
XalanListTraits::reference reference
const XalanListIteratorBase & operator=(const XalanListIteratorBase &theRhs)
void deallocate(Node *pointer)
reverse_iterator rbegin()
iterator insert(const iterator &pos, const value_type &value)
void freeNode(Node &node)
const value_type * const_pointer
const value_type & const_reference
Node(const value_type &theValue, Node &prevNode, Node &nextNode)