19#if !defined(XALANLIST_HEADER_GUARD_1357924680)
20#define XALANLIST_HEADER_GUARD_1357924680
62template<
class XalanListTraits,
class Node>
66 typedef typename XalanListTraits::reference
reference;
67 typedef typename XalanListTraits::pointer
pointer;
81 currentNode(
theRhs.currentNode)
87 currentNode = currentNode->next;
94 currentNode = currentNode->next;
100 currentNode = currentNode->prev;
106 Node* node = currentNode;
117 return currentNode->value;
122 return ¤tNode->value;
127 currentNode =
theRhs.currentNode;
138 return currentNode ==
theRhs.currentNode;
212 destroyNode(
pos++.node());
215 Node * freeNode = m_freeListHeadPtr;
216 while (freeNode != 0)
219 deallocate(freeNode);
223 deallocate(m_listHead);
230 assert(m_memoryManager != 0 );
232 return *m_memoryManager;
238 assert(m_memoryManager != 0 );
240 return *m_memoryManager;
246 return iterator(*(getListHead().next));
273 const_reverse_iterator
285 const_reverse_iterator
308 while (item != end())
319 return (begin() == end()) != 0;
325 constructNode(data, end());
331 constructNode(data, begin());
356 freeNode(
pos.node());
369 assert(m_memoryManager == list.m_memoryManager);
398 assert(m_memoryManager == list.m_memoryManager);
423 freeNode(
pos++.node());
429 std::swap(m_memoryManager,
theRHS.m_memoryManager);
430 std::swap(m_listHead,
theRHS.m_listHead);
431 std::swap(m_freeListHeadPtr,
theRHS.m_freeListHeadPtr);
442 if (m_freeListHeadPtr != 0)
449 m_freeListHeadPtr = allocate(1);
453 Constructor::construct(&
newNode->value, data, *m_memoryManager);
472 node.
next = m_freeListHeadPtr;
473 m_freeListHeadPtr = &node;
478 assert(&node != m_listHead);
487 m_listHead = allocate(1);
488 m_listHead->next = m_listHead;
489 m_listHead->prev = m_listHead;
497 return const_cast<XalanList*
>(
this)->getListHead();
505 assert(m_memoryManager != 0);
518 assert(m_memoryManager != 0);
520 m_memoryManager->deallocate(
pointer);
#define XALAN_CPP_NAMESPACE
Xalan-C++ namespace, including major and minor version.
Xalan implementation of a doubly linked list.
void deallocate(Node *pointer)
std::reverse_iterator< iterator > reverse_iterator_
XalanListIteratorBase< XalanListConstIteratorTraits< value_type >, Node > const_iterator
XalanListIteratorBase< XalanListIteratorTraits< value_type >, Node > iterator
void freeNode(Node &node)
const_reverse_iterator rbegin() const
const value_type * const_pointer
XalanList< value_type > ThisType
const_reverse_iterator rend() const
void push_back(const value_type &data)
void splice(iterator pos, ThisType &list, iterator toInsertFirst, iterator toInsertLast)
reverse_iterator rbegin()
const_iterator end() const
void destroyNode(Node &node)
const value_type & const_reference
reverse_iterator_ reverse_iterator
const MemoryManager & getMemoryManager() const
std::reverse_iterator< const_iterator > const_reverse_iterator_
void swap(ThisType &theRHS)
const_reverse_iterator_ const_reverse_iterator
Node & constructNode(const value_type &data, iterator pos)
Node & getListHead() const
MemoryManagedConstructionTraits< value_type >::Constructor Constructor
void splice(iterator pos, ThisType &list, iterator toInsert)
MemoryManager * m_memoryManager
Node * allocate(size_type size)
XalanList(MemoryManager &theManager)
MemoryManager & getMemoryManager()
void push_front(const value_type &data)
iterator insert(const iterator &pos, const value_type &value)
const_iterator begin() const
void erase(XalanDOMString &theString)
Remove all elements from target string.
bool operator==(const XalanVector< Type > &theLHS, const XalanVector< Type > &theRHS)
XalanListIteratorBase(Node &node)
std::bidirectional_iterator_tag iterator_category
bool operator!=(const XalanListIteratorBase &theRhs) const
XalanListIteratorBase operator--()
XalanListTraits::value_type value_type
reference operator*() const
XalanListIteratorBase(const iterator &theRhs)
XalanListIteratorBase operator-(difference_type decrement) const
const XalanListIteratorBase & operator=(const XalanListIteratorBase &theRhs)
pointer operator->() const
bool operator==(const XalanListIteratorBase &theRhs) const
ptrdiff_t difference_type
XalanListIteratorBase operator++()
XalanListIteratorBase< XalanListIteratorTraits< value_type >, Node > iterator
XalanListTraits::reference reference
XalanListIteratorBase operator++(int)
XalanListTraits::pointer pointer
Node(const value_type &theValue, Node &prevNode, Node &nextNode)