Add methods _swap, _move & _init_move

This commit is contained in:
Patrick Pelissier committed 2018-04-09 18:06:48 +02:00
1 parent fb35ad7ab3
commit f3b2b6b41e
1 file changed
+33
+33
View File
@@ -771,8 +771,41 @@
M_C(name, _cmax)(const tree_t tree) \
{ \
return M_CONST_CAST(value_t, M_C(name, _max)(tree)); \
} \
\
static inline void \
M_C(name, _init_move)(tree_t b, tree_t ref) \
{ \
BPTREEI_CONTRACT(N, key_oplist, ref); \
assert (b != NULL && b != ref); \
b->size = ref->size; \
b->root = ref->root; \
ref->root = NULL; \
BPTREEI_CONTRACT(N, key_oplist, b); \
} \
\
static inline void \
M_C(name, _move)(tree_t b, tree_t ref) \
{ \
BPTREEI_CONTRACT(N, key_oplist, b); \
BPTREEI_CONTRACT(N, key_oplist, ref); \
assert (b != ref); \
M_C(name,_clear)(b); \
M_C(name,_init_move)(b, ref); \
BPTREEI_CONTRACT(N, key_oplist, b); \
} \
\
static inline void \
M_C(name, _swap)(tree_t tree1, tree_t tree2) \
{ \
BPTREEI_CONTRACT(N, key_oplist, tree1); \
BPTREEI_CONTRACT(N, key_oplist, tree2); \
M_SWAP(size_t, tree1->size, tree2->size); \
M_SWAP(node_t, tree1->root, tree2->root); \
BPTREEI_CONTRACT(N, key_oplist, tree1); \
BPTREEI_CONTRACT(N, key_oplist, tree2); \
} \
\
#endif