KSquare Utilities
KKB::Iterator< Entry, CompareNodes, KeyType > Class Template Reference

#include <RBTree.h>

Public Types

typedef Entry * EntryPtr
 
typedef RBnode< Entry > * NodePtr
 
typedef RBTree< Entry, CompareNodes, KeyType > * TreePtr
 

Public Member Functions

 Iterator (TreePtr _tree)
 
 ~Iterator ()
 
EntryPtr GetEqual (const KeyType &key)
 
EntryPtr GetFirst ()
 
EntryPtr GetGreater (const KeyType &key)
 
EntryPtr GetGreaterOrEqual (const KeyType &key)
 
EntryPtr GetLast ()
 
EntryPtr GetNext ()
 
EntryPtr GetPrev ()
 

Friends

class RBTree< Entry, CompareNodes, KeyType >
 

Detailed Description

template<class Entry, class CompareNodes, typename KeyType>
class KKB::Iterator< Entry, CompareNodes, KeyType >

Definition at line 72 of file RBTree.h.

Member Typedef Documentation

template<class Entry , class CompareNodes , typename KeyType >
typedef Entry* KKB::Iterator< Entry, CompareNodes, KeyType >::EntryPtr

Definition at line 77 of file RBTree.h.

template<class Entry , class CompareNodes , typename KeyType >
typedef RBnode<Entry>* KKB::Iterator< Entry, CompareNodes, KeyType >::NodePtr

Definition at line 79 of file RBTree.h.

template<class Entry , class CompareNodes , typename KeyType >
typedef RBTree<Entry,CompareNodes,KeyType>* KKB::Iterator< Entry, CompareNodes, KeyType >::TreePtr

Definition at line 75 of file RBTree.h.

Constructor & Destructor Documentation

template<class Entry , class CompareNodes , typename KeyType >
KKB::Iterator< Entry, CompareNodes, KeyType >::Iterator ( TreePtr  _tree)

Definition at line 1641 of file RBTree.h.

1642 {
1643  tree = _tree;
1644 
1645  prevNode = tree->nil;
1646  curNode = tree->nil;
1647  nextNode = tree->Minimum ();
1648 
1649  tree->IteratorAdd (this);
1650 }
template<class Entry , class CompareNodes , typename KeyType >
KKB::Iterator< Entry, CompareNodes, KeyType >::~Iterator ( )

Definition at line 1655 of file RBTree.h.

1656 {
1657  if (tree)
1658  tree->IteratorDelete (this);
1659 }

Member Function Documentation

template<class Entry , class CompareNodes , typename KeyType >
Entry * KKB::Iterator< Entry, CompareNodes, KeyType >::GetEqual ( const KeyType &  key)

Definition at line 1684 of file RBTree.h.

1685 {
1686  IsTreeStillThere ();
1687 
1688  curNode = tree->GetEqual (tree->root, key);
1689 
1690  if (curNode == tree.nil)
1691  {
1692  nextNode = tree->GetGreater (tree->root, key);
1693  if (nextNode == tree.nil)
1694  prevNode = tree->GetLess (tree->root, key);
1695 
1696  else
1697  prevNode = tree->Predecessor (nextNode);
1698 
1699  return NULL;
1700  }
1701 
1702 
1703  prevNode = tree->Predecessor (curNode);
1704  nextNode = tree->Successor (curNode);
1705 
1706  return curNode->Data ();
1707 }
EntryPtr GetLess(const KeyType &key)
Definition: RBTree.h:669
EntryPtr GetGreater(const KeyType &key)
Definition: RBTree.h:598
EntryPtr Data()
Definition: RBTree.h:48
EntryPtr GetEqual(const KeyType &key)
Definition: RBTree.h:493
EntryPtr Successor()
Definition: RBTree.h:700
EntryPtr Predecessor()
Definition: RBTree.h:682
template<class Entry , class CompareNodes , typename KeyType >
Entry * KKB::Iterator< Entry, CompareNodes, KeyType >::GetFirst ( )

Definition at line 1765 of file RBTree.h.

1766 {
1767  IsTreeStillThere ();
1768 
1769  prevNode = tree->nil;
1770  curNode = tree->Minimum ();
1771  nextNode = tree->Successor (curNode);
1772 
1773  return curNode->Data ();
1774 }
EntryPtr Data()
Definition: RBTree.h:48
EntryPtr Successor()
Definition: RBTree.h:700
template<class Entry , class CompareNodes , typename KeyType >
Entry * KKB::Iterator< Entry, CompareNodes, KeyType >::GetGreater ( const KeyType &  key)

Definition at line 1713 of file RBTree.h.

1714 {
1715  IsTreeStillThere ();
1716 
1717  curNode = tree->GetGreater (tree->root, key);
1718 
1719  if (curNode == tree->nil)
1720  {
1721  nextNode = tree->nil;
1722  prevNode = tree->Maximum (tree->root);
1723  }
1724 
1725  else
1726  {
1727  nextNode = tree->Successor (curNode);
1728  prevNode = tree->Predecessor (curNode);
1729  }
1730 
1731  return curNode->Data ();
1732 } /* Iterator::GetGreater */
EntryPtr GetGreater(const KeyType &key)
Definition: RBTree.h:598
EntryPtr Data()
Definition: RBTree.h:48
EntryPtr Successor()
Definition: RBTree.h:700
EntryPtr Predecessor()
Definition: RBTree.h:682
template<class Entry , class CompareNodes , typename KeyType >
Entry * KKB::Iterator< Entry, CompareNodes, KeyType >::GetGreaterOrEqual ( const KeyType &  key)

Definition at line 1738 of file RBTree.h.

1739 {
1740  IsTreeStillThere ();
1741 
1742  curNode = tree->GetGreaterOrEqual (tree->root, key);
1743 
1744  if (curNode == tree->nil)
1745  {
1746  nextNode = tree->nil;
1747  prevNode = tree->Maximum (tree->root);
1748  }
1749 
1750  else
1751  {
1752  nextNode = tree->Successor (tree.curMode);
1753  prevNode = tree->Predecessor (tree.curNode);
1754  }
1755 
1756  return curNode->Data ();
1757 } /* Iterator::GetGreaterOrEqual */
EntryPtr GetGreaterOrEqual(const KeyType &key)
Definition: RBTree.h:608
EntryPtr Data()
Definition: RBTree.h:48
EntryPtr Successor()
Definition: RBTree.h:700
EntryPtr Predecessor()
Definition: RBTree.h:682
template<class Entry , class CompareNodes , typename KeyType >
Entry * KKB::Iterator< Entry, CompareNodes, KeyType >::GetLast ( )

Definition at line 1780 of file RBTree.h.

1781 {
1782  IsTreeStillThere ();
1783 
1784  curNode = tree->Maximum ();
1785  prevNode = tree->Predecessor (curNode);
1786  nextNode = tree->nil;
1787 
1788  return curNode->Data ();
1789 }
EntryPtr Data()
Definition: RBTree.h:48
EntryPtr Predecessor()
Definition: RBTree.h:682
template<class Entry , class CompareNodes , typename KeyType >
Entry * KKB::Iterator< Entry, CompareNodes, KeyType >::GetNext ( )

Definition at line 1795 of file RBTree.h.

1796 {
1797  IsTreeStillThere ();
1798 
1799 
1800  if (nextNode == tree->nil)
1801  {
1802  return NULL;
1803  }
1804 
1805  prevNode = curNode;
1806  curNode = nextNode;
1807 
1808  if (prevNode == tree->nil)
1809  {
1810  prevNode = tree->Predecessor (curNode);
1811  }
1812 
1813  nextNode = tree->Successor (curNode);
1814 
1815  return curNode->Data ();
1816 }
EntryPtr Data()
Definition: RBTree.h:48
EntryPtr Successor()
Definition: RBTree.h:700
EntryPtr Predecessor()
Definition: RBTree.h:682
template<class Entry , class CompareNodes , typename KeyType >
Entry * KKB::Iterator< Entry, CompareNodes, KeyType >::GetPrev ( )

Definition at line 1822 of file RBTree.h.

1823 {
1824  IsTreeStillThere ();
1825 
1826  if (prevNode == tree->nil)
1827  {
1828  return NULL;
1829  }
1830 
1831  nextNode = curNode;
1832  curNode = prevNode;
1833 
1834  if (nextNode == tree->nil)
1835  {
1836  prevNode = tree->Successor (curNode);
1837  }
1838 
1839  prevNode = tree->Predecessor (curNode);
1840 
1841  return curNode->Data ();
1842 }
EntryPtr Data()
Definition: RBTree.h:48
EntryPtr Successor()
Definition: RBTree.h:700
EntryPtr Predecessor()
Definition: RBTree.h:682

Friends And Related Function Documentation

template<class Entry , class CompareNodes , typename KeyType >
friend class RBTree< Entry, CompareNodes, KeyType >
friend

Definition at line 81 of file RBTree.h.


The documentation for this class was generated from the following file: