]> Savannah Git Hosting - gnulib.git/commit
oset: Add an 'update' operation.
authorBruno Haible <bruno@clisp.org>
Mon, 20 Jul 2020 18:06:29 +0000 (20:06 +0200)
committerBruno Haible <bruno@clisp.org>
Mon, 20 Jul 2020 18:06:29 +0000 (20:06 +0200)
commit91af6d7383aad01cd43b45dd733b027065743d00
tree70ea617e9893fdd45077c88f8143c666805ac644
parent2d431ac35c4943a3655c07ba91870d2323321b43
oset: Add an 'update' operation.

* lib/gl_array_oset.c (gl_array_update): New function.
(gl_array_oset_implementation): Use it.
* lib/gl_avltree_omap.c (NODE_PAYLOAD_DISPOSE): Add parameters.
* lib/gl_rbtree_omap.c (NODE_PAYLOAD_DISPOSE): Add parameters.
* lib/gl_avltree_ordered.h (gl_tree_add_node_before): New function,
extracted from gl_tree_nx_add_before.
(gl_tree_nx_add_before): Invoke it.
(gl_tree_add_node_after): New function, extracted from
gl_tree_nx_add_after.
(gl_tree_nx_add_after): Invoke it.
(gl_tree_remove_node_no_free): New function, extracted from
gl_tree_remove_node.
(gl_tree_remove_node): Invoke it.
* lib/gl_rbtree_ordered.h (gl_tree_add_node_before): New function,
extracted from gl_tree_nx_add_before.
(gl_tree_nx_add_before): Invoke it.
(gl_tree_add_node_after): New function, extracted from
gl_tree_nx_add_after.
(gl_tree_nx_add_after): Invoke it.
(gl_tree_remove_node_no_free): New function, extracted from
gl_tree_remove_node.
(gl_tree_remove_node): Invoke it.
* lib/gl_anytree_oset.h (gl_tree_next_node): New function, extracted
from gl_tree_iterator_next.
(gl_tree_iterator_next): Invoke it.
(gl_tree_prev_node, gl_tree_update): New functions.
* lib/gl_avltree_oset.c (NODE_PAYLOAD_DISPOSE): Add parameters.
(gl_avltree_oset_implementation): Use gl_tree_update.
* lib/gl_rbtree_oset.c (NODE_PAYLOAD_DISPOSE): Add parameters.
(gl_rbtree_oset_implementation): Use gl_tree_update.
* lib/gl_oset.h (struct gl_oset_implementation): Add 'update' member.
(gl_oset_update): New function.
* lib/gl_oset.hh (gl_OSet): Add 'update' member.
* modules/avltree-oset (configure.ac): Require AC_C_INLINE.
* modules/rbtree-oset (configure.ac): Likewise.
* tests/test-oset-update.h: New file.
* tests/test-array_oset.c: Include test-oset-update.h.
(main): Invoke test_update.
* tests/test-avltree_oset.c: Likewise.
* tests/test-rbtree_oset.c: Likewise.
* modules/array-oset-tests (Files): Add tests/test-oset-update.h.
* modules/avltree-oset-tests (Files): Likewise.
* modules/rbtree-oset-tests (Files): Likewise.
* tests/test-oset-c++.cc (action): New function.
(main): Test the 'update' member function.
21 files changed:
ChangeLog
lib/gl_anytree_oset.h
lib/gl_array_oset.c
lib/gl_avltree_omap.c
lib/gl_avltree_ordered.h
lib/gl_avltree_oset.c
lib/gl_oset.h
lib/gl_oset.hh
lib/gl_rbtree_omap.c
lib/gl_rbtree_ordered.h
lib/gl_rbtree_oset.c
modules/array-oset-tests
modules/avltree-oset
modules/avltree-oset-tests
modules/rbtree-oset
modules/rbtree-oset-tests
tests/test-array_oset.c
tests/test-avltree_oset.c
tests/test-oset-c++.cc
tests/test-oset-update.h [new file with mode: 0644]
tests/test-rbtree_oset.c