From f3b2b6b41e0813dcfeb9d297e6e5609a926832db Mon Sep 17 00:00:00 2001 From: Patrick Pelissier Date: Mon, 9 Apr 2018 18:06:48 +0200 Subject: [PATCH] Add methods _swap, _move & _init_move --- m-bptree.h | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/m-bptree.h b/m-bptree.h index 6a48bd23..5c9549d4 100644 --- a/m-bptree.h +++ b/m-bptree.h @@ -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