#include <addrRange.h>
Data Structures | |
| struct | entry |
Public Member Functions | |
| addrRangeTree () | |
| virtual | ~addrRangeTree () |
| int | size () const |
| bool | empty () const |
| void | insert (T *value) |
| void | remove (Address key) |
| virtual bool | find (Address key, T *&value) const |
| virtual bool | find (Address start, Address end, std::vector< T * > &ranges) const |
| virtual bool | precessor (Address key, T *&value) const |
| virtual bool | successor (Address key, T *&value) const |
| T ** | elements (T **buffer) const |
| bool | elements (pdvector< T * > &buffer) const |
| void | clear () |
Private Types | |
| typedef struct addrRangeTree::entry | entry |
Private Member Functions | |
| void | leftRotate (entry *pivot) |
| void | rightRotate (entry *pivot) |
| void | deleteFixup (entry *x) |
| entry * | treeInsert (Address key, T *value) |
| entry * | treeSuccessor (entry *x) const |
| entry * | find_internal (Address element) const |
| void | traverse (T **all, entry *node, int &n) const |
| void | traverse (pdvector< T * > &all, entry *node) const |
| void | destroy (entry *node) |
| addrRangeTree (const addrRangeTree &) | |
| bool | precessor_internal (Address key, entry *&value) const |
| bool | successor_internal (Address key, entry *&value) const |
Private Attributes | |
| entry * | nil |
| int | setSize |
| entry * | setData |
T should inherit from addrRange
Definition at line 71 of file addrRange.h.
typedef struct addrRangeTree::entry addrRangeTree< T >::entry [private] |
tree implementation structure. Used to implement the RB tree
| addrRangeTree< T >::addrRangeTree | ( | const addrRangeTree< T > & | ) | [inline, private] |
copy constructor
Definition at line 352 of file addrRange.h.
| addrRangeTree< T >::addrRangeTree | ( | ) | [inline] |
constructor. The default comparison structure is used
Definition at line 425 of file addrRange.h.
References addrRangeTree< T >::nil, and addrRangeTree< T >::setData.
| virtual addrRangeTree< T >::~addrRangeTree | ( | ) | [inline, virtual] |
destructor which deletes all tree structure and allocated entries
Definition at line 433 of file addrRange.h.
References addrRangeTree< T >::destroy(), addrRangeTree< T >::nil, and addrRangeTree< T >::setData.
| void addrRangeTree< T >::clear | ( | ) | [inline] |
Definition at line 635 of file addrRange.h.
References addrRangeTree< T >::destroy(), addrRangeTree< T >::nil, addrRangeTree< T >::setData, and addrRangeTree< T >::setSize.
| void addrRangeTree< T >::deleteFixup | ( | entry * | x | ) | [inline, private] |
Definition at line 177 of file addrRange.h.
References addrRangeTree< T >::entry::color, addrRangeTree< T >::entry::left, addrRangeTree< T >::leftRotate(), addrRangeTree< T >::entry::parent, addrRangeTree< T >::entry::right, addrRangeTree< T >::rightRotate(), addrRangeTree< T >::setData, TREE_BLACK, and TREE_RED.
Referenced by addrRangeTree< T >::remove().
| void addrRangeTree< T >::destroy | ( | entry * | node | ) | [inline, private] |
Definition at line 340 of file addrRange.h.
References addrRangeTree< T >::entry::left, addrRangeTree< T >::nil, and addrRangeTree< T >::entry::right.
Referenced by addrRangeTree< T >::clear(), and addrRangeTree< T >::~addrRangeTree().
| bool addrRangeTree< T >::elements | ( | pdvector< T * > & | buffer | ) | const [inline] |
Definition at line 627 of file addrRange.h.
References addrRangeTree< T >::nil, addrRangeTree< T >::setData, and addrRangeTree< T >::traverse().
| T** addrRangeTree< T >::elements | ( | T ** | buffer | ) | const [inline] |
fill an buffer array with the sorted elements of the addrRangeTree in ascending order according to comparison function if the addrRangeTree is empty it retuns NULL, other wise it returns the input argument.
Definition at line 616 of file addrRange.h.
References addrRangeTree< T >::nil, addrRangeTree< T >::setData, and addrRangeTree< T >::traverse().
| bool addrRangeTree< T >::empty | ( | ) | const [inline] |
returns true if tree is empty
Definition at line 446 of file addrRange.h.
References addrRangeTree< T >::nil, and addrRangeTree< T >::setData.
| virtual bool addrRangeTree< T >::find | ( | Address | start, | |
| Address | end, | |||
| std::vector< T * > & | ranges | |||
| ) | const [inline, virtual] |
Fills in the vector with all address ranges that overlap with the address range defined by (start, end]
Definition at line 561 of file addrRange.h.
References addrRangeTree< T >::entry::key, addrRangeTree< T >::nil, addrRangeTree< T >::precessor_internal(), addrRangeTree< T >::successor_internal(), addrRangeTree< T >::treeSuccessor(), and addrRangeTree< T >::entry::value.
| virtual bool addrRangeTree< T >::find | ( | Address | key, | |
| T *& | value | |||
| ) | const [inline, virtual] |
returns true if the argument is member of the addrRangeTree
| e | the element that will be searched for |
Definition at line 538 of file addrRange.h.
References addrRangeTree< T >::precessor().
| entry* addrRangeTree< T >::find_internal | ( | Address | element | ) | const [inline, private] |
Definition at line 294 of file addrRange.h.
References addrRangeTree< T >::entry::key, addrRangeTree< T >::entry::left, addrRangeTree< T >::nil, addrRangeTree< T >::entry::right, and addrRangeTree< T >::setData.
Referenced by addrRangeTree< T >::remove().
| void addrRangeTree< T >::insert | ( | T * | value | ) | [inline] |
inserts the element in the tree
| 1 | element that will be inserted |
Definition at line 454 of file addrRange.h.
References addrRangeTree< T >::entry::color, addrRangeTree< T >::entry::left, addrRangeTree< T >::leftRotate(), addrRangeTree< T >::entry::parent, addrRangeTree< T >::entry::right, addrRangeTree< T >::rightRotate(), addrRangeTree< T >::setData, TREE_BLACK, TREE_RED, and addrRangeTree< T >::treeInsert().
| void addrRangeTree< T >::leftRotate | ( | entry * | pivot | ) | [inline, private] |
Definition at line 129 of file addrRange.h.
References addrRangeTree< T >::entry::left, addrRangeTree< T >::nil, addrRangeTree< T >::entry::parent, addrRangeTree< T >::entry::right, and addrRangeTree< T >::setData.
Referenced by addrRangeTree< T >::deleteFixup(), and addrRangeTree< T >::insert().
| virtual bool addrRangeTree< T >::precessor | ( | Address | key, | |
| T *& | value | |||
| ) | const [inline, virtual] |
Returns the largest value less than or equal to the key given
Definition at line 587 of file addrRange.h.
References addrRangeTree< T >::precessor_internal(), and addrRangeTree< T >::entry::value.
Referenced by addrRangeTree< T >::find().
| bool addrRangeTree< T >::precessor_internal | ( | Address | key, | |
| entry *& | value | |||
| ) | const [inline, private] |
Definition at line 357 of file addrRange.h.
References addrRangeTree< T >::entry::key, addrRangeTree< T >::entry::left, addrRangeTree< T >::nil, addrRangeTree< T >::entry::right, and addrRangeTree< T >::setData.
Referenced by addrRangeTree< T >::find(), and addrRangeTree< T >::precessor().
| void addrRangeTree< T >::remove | ( | Address | key | ) | [inline] |
removes the element in the tree
| 1 | element that will be removed |
Definition at line 506 of file addrRange.h.
References addrRangeTree< T >::entry::color, addrRangeTree< T >::deleteFixup(), addrRangeTree< T >::find_internal(), addrRangeTree< T >::entry::key, addrRangeTree< T >::entry::left, addrRangeTree< T >::nil, addrRangeTree< T >::entry::parent, addrRangeTree< T >::entry::right, addrRangeTree< T >::setData, addrRangeTree< T >::setSize, TREE_BLACK, addrRangeTree< T >::treeSuccessor(), and addrRangeTree< T >::entry::value.
| void addrRangeTree< T >::rightRotate | ( | entry * | pivot | ) | [inline, private] |
Definition at line 153 of file addrRange.h.
References addrRangeTree< T >::entry::left, addrRangeTree< T >::nil, addrRangeTree< T >::entry::parent, addrRangeTree< T >::entry::right, and addrRangeTree< T >::setData.
Referenced by addrRangeTree< T >::deleteFixup(), and addrRangeTree< T >::insert().
| int addrRangeTree< T >::size | ( | ) | const [inline] |
returns the cardinality of the tree , number of elements
Definition at line 440 of file addrRange.h.
References addrRangeTree< T >::setSize.
| virtual bool addrRangeTree< T >::successor | ( | Address | key, | |
| T *& | value | |||
| ) | const [inline, virtual] |
Returns the smallest value greater than or equal to the key given
Definition at line 601 of file addrRange.h.
References addrRangeTree< T >::successor_internal(), and addrRangeTree< T >::entry::value.
| bool addrRangeTree< T >::successor_internal | ( | Address | key, | |
| entry *& | value | |||
| ) | const [inline, private] |
Definition at line 391 of file addrRange.h.
References addrRangeTree< T >::entry::key, addrRangeTree< T >::entry::left, addrRangeTree< T >::nil, addrRangeTree< T >::entry::right, and addrRangeTree< T >::setData.
Referenced by addrRangeTree< T >::find(), and addrRangeTree< T >::successor().
| void addrRangeTree< T >::traverse | ( | pdvector< T * > & | all, | |
| entry * | node | |||
| ) | const [inline, private] |
Definition at line 327 of file addrRange.h.
References addrRangeTree< T >::entry::left, addrRangeTree< T >::nil, addrRangeTree< T >::entry::right, addrRangeTree< T >::traverse(), and addrRangeTree< T >::entry::value.
| void addrRangeTree< T >::traverse | ( | T ** | all, | |
| entry * | node, | |||
| int & | n | |||
| ) | const [inline, private] |
Definition at line 312 of file addrRange.h.
References addrRangeTree< T >::entry::left, addrRangeTree< T >::nil, addrRangeTree< T >::entry::right, and addrRangeTree< T >::entry::value.
Referenced by addrRangeTree< T >::elements(), and addrRangeTree< T >::traverse().
| entry* addrRangeTree< T >::treeInsert | ( | Address | key, | |
| T * | value | |||
| ) | [inline, private] |
Definition at line 243 of file addrRange.h.
References addrRangeTree< T >::entry::key, addrRangeTree< T >::entry::left, addrRangeTree< T >::nil, addrRangeTree< T >::entry::parent, addrRangeTree< T >::entry::right, addrRangeTree< T >::setData, and addrRangeTree< T >::setSize.
Referenced by addrRangeTree< T >::insert().
| entry* addrRangeTree< T >::treeSuccessor | ( | entry * | x | ) | const [inline, private] |
Definition at line 275 of file addrRange.h.
References addrRangeTree< T >::entry::left, addrRangeTree< T >::nil, addrRangeTree< T >::entry::parent, and addrRangeTree< T >::entry::right.
Referenced by addrRangeTree< T >::find(), and addrRangeTree< T >::remove().
entry* addrRangeTree< T >::nil [private] |
pointer to define the nil element of the tree NULL is not used since some operations need sentinel nil which may have non-nil parent.
Definition at line 119 of file addrRange.h.
Referenced by addrRangeTree< T >::addrRangeTree(), addrRangeTree< T >::clear(), addrRangeTree< T >::destroy(), addrRangeTree< T >::elements(), addrRangeTree< T >::empty(), addrRangeTree< T >::find(), addrRangeTree< T >::find_internal(), addrRangeTree< T >::leftRotate(), addrRangeTree< T >::precessor_internal(), addrRangeTree< T >::remove(), addrRangeTree< T >::rightRotate(), addrRangeTree< T >::successor_internal(), addrRangeTree< T >::traverse(), addrRangeTree< T >::treeInsert(), addrRangeTree< T >::treeSuccessor(), and addrRangeTree< T >::~addrRangeTree().
entry* addrRangeTree< T >::setData [private] |
pointer to the tree structure
Definition at line 125 of file addrRange.h.
Referenced by addrRangeTree< T >::addrRangeTree(), addrRangeTree< T >::clear(), addrRangeTree< T >::deleteFixup(), addrRangeTree< T >::elements(), addrRangeTree< T >::empty(), addrRangeTree< T >::find_internal(), addrRangeTree< T >::insert(), addrRangeTree< T >::leftRotate(), addrRangeTree< T >::precessor_internal(), addrRangeTree< T >::remove(), addrRangeTree< T >::rightRotate(), addrRangeTree< T >::successor_internal(), addrRangeTree< T >::treeInsert(), and addrRangeTree< T >::~addrRangeTree().
int addrRangeTree< T >::setSize [private] |
size of the tree
Definition at line 122 of file addrRange.h.
Referenced by addrRangeTree< T >::clear(), addrRangeTree< T >::remove(), addrRangeTree< T >::size(), and addrRangeTree< T >::treeInsert().
1.6.1