16 #define MAKE_BTREETYPE_DEF(K,V,T) \ 17 typedef DynaTreeInnerElem<K> T##TreeInnerElem; \ 18 typedef DynaTreeLeafElem<K,V> T##TreeLeafElem; \ 19 typedef DynaTreeInnerElem<K>::Data T##TreeInnerData; \ 20 typedef DynaTreeLeafElem<K,V>::Data T##TreeLeafData; \ 21 typedef DynaBTree<K,V> T##BTree; \ 22 typedef DynaBTreeLeafNode<K,V> T##BTreeLeafNode; \ 23 typedef DynaBTreeInnerNode<K> T##BTreeInnerNode 28 template <
typename T> T*
ptr(T& obj) {
return &obj; }
29 template <
typename T> T*
ptr(T* obj) {
return obj; }
44 virtual void setKeyInSearch(K key);
45 virtual void setValueInSearch(V
value);
46 virtual void setKeyInData(K key);
47 virtual void setValueInData(V
value);
48 virtual void getKeyFromData(K& key);
49 virtual void getValueFromData(V&
value);
50 int size() {
return sizeof(this->search); }
51 int keySize() {
return sizeof(this->search.key); }
63 virtual void setKeyInSearch(K key);
64 virtual void setKeyInData(K key);
65 virtual void getKeyFromData(K& key);
66 int size() {
return sizeof(this->search); }
67 int keySize() {
return sizeof(this->search.key); }
89 static bool wasFound(
int returnValue);
90 static int insertAt(
int returnValue);
92 void insert(K& key, V&
value);
94 void deleteEntry(K& key, V* value);
131 bool wasFound(
int returnValue);
132 int insertAt(
int returnValue);
134 virtual bool getKeyFromData(uint index, K& key);
135 virtual void setKeyToData(uint index, K& key);
137 virtual bool isOverflow();
140 virtual bool isUnderflow();
141 virtual bool canGiveKey();
157 virtual void transferFromSibling(K& sinkKey, K& upKey,
DynaBTreeNode<K>* sibling, uint fromIndex);
172 void _deleteAt(uint index);
181 bool getKeyFromData(uint index, K& key)
override;
182 void setKeyToData(uint index, K& key)
override;
184 V* getValue(uint index);
199 void transferFromSibling(K& sinkKey, K& upKey,
DynaBTreeNode<K>* sibling, uint fromIndex)
override;
213 void _deleteAt(uint index);
222 bool getKeyFromData(uint index, K& key)
override;
223 void setKeyToData(uint index, K& key)
override;
236 void transferFromSibling(K& sinkKey, K& upKey,
DynaBTreeNode<K>* sibling, uint fromIndex)
override;
int keySize()
Definition: DynaBTree.h:67
T * ptr(T &obj)
Definition: DynaBTree.h:28
Base Class for B-Tree nodes.
Definition: DynaBTree.h:25
B-Tree Leaf Node.
Definition: DynaBTree.h:26
MatchType
Definition: DynaBTree.h:33
Data * data
Definition: DynaBTree.h:42
GeneratorWrapper< T > value(T &&value)
Definition: catch.hpp:4005
Definition: DynaBTree.h:37
DynaBTreeNode< K > * _rightSibling
Definition: DynaBTree.h:117
B-Tree Inner Node.
Definition: DynaBTree.h:209
Definition: DynaBTree.h:54
Definition: DynaBTree.h:35
int64_t index_t
Definition: ICacheConst.h:19
Definition: DynaBTree.h:56
index_t _leftSiblingIndex
Definition: DynaBTree.h:113
DynaBTreeNode< K > * _leftSibling
Definition: DynaBTree.h:116
TreeNodeType
Definition: DynaBTree.h:99
DynaBTreeNode< K > * _parent
Definition: DynaBTree.h:115
int keySize()
Definition: DynaBTree.h:51
index_t _parentIndex
Definition: DynaBTree.h:112
int size()
Definition: DynaBTree.h:66
int size()
Definition: DynaBTree.h:50
B-Tree main class.
Definition: DynaBTree.h:78
DynaBuffer * _buffer
Definition: DynaBTree.h:111
TreeNodeType _nodeType
Definition: DynaBTree.h:108
int _leafOrder
Definition: DynaBTree.h:109
Data * data
Definition: DynaBTree.h:61
index_t _rightSiblingIndex
Definition: DynaBTree.h:114
Definition: ICopyable.h:8
Definition: DynaBuffer.h:20
int _innerOrder
Definition: DynaBTree.h:110