Fennel: BTreeKeyedNodeAccessor< NodeAccessor, KeyAccessor > Class Template Reference (original) (raw)
BTreeKeyedNodeAccessor is a template for implementing some of the virtual methods in the BTreeNodeAccessor interface. More...
#include <[BTreeKeyedNodeAccessor.h](BTreeKeyedNodeAccessor%5F8h-source.html)>
| Public Member Functions | |
|---|---|
| virtual void | accessTupleInline (BTreeNode const &node, uint iEntry) |
| virtual void | accessTuple (BTreeNode const &node, uint iEntry) |
| virtual void | unmarshalKey (TupleData &keyData) |
| virtual uint | binarySearch (BTreeNode const &node, TupleDescriptor const &keyDescriptor, TupleData const &searchKey, DuplicateSeek dupSeek, bool leastUpper, TupleData &scratchKey, bool &found) |
| virtual int | compareFirstKey (BTreeNode const &node, TupleDescriptor const &keyDescriptor, TupleData const &searchKey, TupleData &scratchKey) |
| virtual PConstBuffer | getEntryForRead (BTreeNode const &node, uint iEntry) |
| Public Attributes | |
| KeyAccessor * | pKeyAccessor |
Detailed Description
template<class NodeAccessor, class KeyAccessor>
class BTreeKeyedNodeAccessor< NodeAccessor, KeyAccessor >
BTreeKeyedNodeAccessor is a template for implementing some of the virtual methods in the BTreeNodeAccessor interface.
It requires the class used to instantiate NodeAccessor to implement a getEntryForReadInline method.
Definition at line 39 of file BTreeKeyedNodeAccessor.h.
Member Function Documentation
template<class NodeAccessor, class KeyAccessor>
| virtual void BTreeKeyedNodeAccessor< NodeAccessor, KeyAccessor >::accessTupleInline | ( | BTreeNode const & | node, |
|---|---|---|---|
| uint | iEntry | ||
| ) | [inline, virtual] |
template<class NodeAccessor, class KeyAccessor>
| virtual void BTreeKeyedNodeAccessor< NodeAccessor, KeyAccessor >::accessTuple | ( | BTreeNode const & | node, |
|---|---|---|---|
| uint | iEntry | ||
| ) | [inline, virtual] |
template<class NodeAccessor, class KeyAccessor>
| virtual void BTreeKeyedNodeAccessor< NodeAccessor, KeyAccessor >::unmarshalKey | ( | TupleData & | keyData | ) | [inline, virtual] |
|---|
Definition at line 61 of file BTreeKeyedNodeAccessor.h.
References BTreeKeyedNodeAccessor< NodeAccessor, KeyAccessor >::accessTupleInline(), TupleDescriptor::compareTuples(), DUP_SEEK_ANY, DUP_SEEK_BEGIN, DUP_SEEK_END, BTreeNode::height, BTreeNode::nEntries, and BTreeKeyedNodeAccessor< NodeAccessor, KeyAccessor >::pKeyAccessor.
00069 {
00070 uint probe = 0;
00071 uint base = probe;
00072 found = false;
00073 int nKeys = NodeAccessor::getKeyCount(node);
00074 while (nKeys > 0) {
00075 uint split = nKeys >> 1;
00076 probe = base + split;
00077 accessTupleInline(node,probe);
00078 pKeyAccessor->unmarshal(scratchKey);
00079 int j = keyDescriptor.compareTuples(
00080 searchKey,scratchKey);
00081 if (j == 0) {
00082 found = true;
00083 switch (dupSeek) {
00084 case DUP_SEEK_ANY:
00085 return probe;
00086 case DUP_SEEK_BEGIN:
00087 j = -1;
00088 break;
00089 case DUP_SEEK_END:
00090 j = 1;
00091 break;
00092 default:
00093 permAssert(false);
00094 }
00095 }
00096 if (j < 0) {
00097 nKeys = split;
00098 } else {
00099 base = probe + 1;
00100 nKeys -= (split + 1);
00101 }
00102 }
00103 if (!found && !leastUpper && (base > 0)) {
00104 base--;
00105 }
00106 if (((base != probe) && (base < node.nEntries)) ||
00107 ((node.nEntries == 1) && (node.height != 0)))
00108 {
00109
00110 accessTupleInline(node,base);
00111 }
00112 return base;
00113 }
Member Data Documentation
template<class NodeAccessor, class KeyAccessor>
The documentation for this class was generated from the following file:
- /home/pub/open/dev/fennel/btree/BTreeKeyedNodeAccessor.h
