changelog
    
    
    - Sat, 05 Oct 2024 19:05:47 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 05 Oct 2024 19:05:47 +0200] rev 909
 
    - implement cxTreeRemove() with re-link function
fixes #437 
    - Sat, 05 Oct 2024 14:42:14 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 05 Oct 2024 14:42:14 +0200] rev 908
 
    - rename cxTreeRemove() to cxTreeRemoveSubtree()
relates to #437 
    - Sat, 05 Oct 2024 14:22:42 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 05 Oct 2024 14:22:42 +0200] rev 907
 
    - fix bug when removing the root node of a tree
relates to #166 
    - Sat, 05 Oct 2024 14:16:01 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 05 Oct 2024 14:16:01 +0200] rev 906
 
    - add test for simple destructor in trees - fixes #436
 
    - Thu, 03 Oct 2024 17:39:21 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 03 Oct 2024 17:39:21 +0200] rev 905
 
    - complete implementation of remaining high level tree functions
relates to #166 
    - Thu, 03 Oct 2024 16:31:09 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 03 Oct 2024 16:31:09 +0200] rev 904
 
    - implement cxTreeInsert family of functions
relates to #166 
    - Thu, 03 Oct 2024 15:42:35 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 03 Oct 2024 15:42:35 +0200] rev 903
 
    - add cxTreeSubtreeDepth()
relates to #166 
    - Thu, 03 Oct 2024 15:38:05 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 03 Oct 2024 15:38:05 +0200] rev 902
 
    - implement cxTreeCreate family of functions
relates to #166 
    - Wed, 02 Oct 2024 19:11:40 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 02 Oct 2024 19:11:40 +0200] rev 901
 
    - add functions to link/unlink nodes manually
relates to #166 
    - Mon, 30 Sep 2024 19:19:44 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 30 Sep 2024 19:19:44 +0200] rev 900
 
    - downgrade the attention block regarding the auto-register of a simple destructor to a note
relates to #166 
    - Mon, 30 Sep 2024 19:17:19 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 30 Sep 2024 19:17:19 +0200] rev 899
 
    - more prototypes for tree functions
relates to #166 
    - Sun, 29 Sep 2024 23:08:40 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 29 Sep 2024 23:08:40 +0200] rev 898
 
    - prototypes for create and destroy functions
relates to #166 
    - Sun, 29 Sep 2024 22:45:43 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 29 Sep 2024 22:45:43 +0200] rev 897
 
    - add allocator and root node pointer to tree structure
relates to #166 
    - Sun, 29 Sep 2024 14:40:43 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 29 Sep 2024 14:40:43 +0200] rev 896
 
    - allow find() member function to start in an arbitrary subtree
relates to #166 
    - Sun, 29 Sep 2024 14:38:41 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 29 Sep 2024 14:38:41 +0200] rev 895
 
    - provide a default tree node layout, but do not make it mandatory
relates to #166 
    - Sun, 29 Sep 2024 13:49:33 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 29 Sep 2024 13:49:33 +0200] rev 894
 
    - first draft of a class for high level trees
relates to #166 
    - Sun, 29 Sep 2024 13:32:33 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 29 Sep 2024 13:32:33 +0200] rev 893
 
    - add bounding parameter to cx_tree_add_iter()
 
    - Sun, 29 Sep 2024 13:10:52 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 29 Sep 2024 13:10:52 +0200] rev 892
 
    - fix misleading documentation that could have indicated that an allocator is optional for lists
 
    - Sat, 28 Sep 2024 15:55:14 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 28 Sep 2024 15:55:14 +0200] rev 891
 
    - make all function attributes leading - fixes #425
 
    - Sat, 28 Sep 2024 15:47:28 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 28 Sep 2024 15:47:28 +0200] rev 890
 
    - move all const keywords to the west - fixes #426
 
    - Wed, 18 Sep 2024 00:02:18 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 18 Sep 2024 00:02:18 +0200] rev 889
 
    - apply binary search in cx_array_insert_sorted()
resolves #416
relates to #424 
    - Tue, 17 Sep 2024 23:37:15 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 17 Sep 2024 23:37:15 +0200] rev 888
 
    - fix for empty arrays
relates to #424 
    - Tue, 17 Sep 2024 23:32:27 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 17 Sep 2024 23:32:27 +0200] rev 887
 
    - fix documentation
relates to #424 
    - Tue, 17 Sep 2024 23:29:12 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 17 Sep 2024 23:29:12 +0200] rev 886
 
    - also add a binary search for the supremum
relates to #424 
    - Tue, 17 Sep 2024 23:19:03 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 17 Sep 2024 23:19:03 +0200] rev 885
 
    - fixes incorrect result from cx_array_binary_search() when searched element is smaller than the entire array
relates to #424 
    - Tue, 17 Sep 2024 23:11:17 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 17 Sep 2024 23:11:17 +0200] rev 884
 
    - add cx_array_binary_search() - fixes #424
 
    - Tue, 17 Sep 2024 19:38:41 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 17 Sep 2024 19:38:41 +0200] rev 883
 
    - add low level cx_array_insert_sorted() and convenience macros
relates to #416 
    - Tue, 17 Sep 2024 19:08:22 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 17 Sep 2024 19:08:22 +0200] rev 882
 
    - add missing documentation for cx_list_default_swap() return value
 
    - Mon, 16 Sep 2024 19:52:17 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 16 Sep 2024 19:52:17 +0200] rev 881
 
    - add optimized implementation of insert_sorted for array lists
relates to #416 
    - Mon, 09 Sep 2024 21:54:22 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 09 Sep 2024 21:54:22 +0200] rev 880
 
    - fix cx_ll_insert_sorted_cmp_func not being thread local
relates to #415 
    - Mon, 09 Sep 2024 21:34:39 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 09 Sep 2024 21:34:39 +0200] rev 879
 
    - implement optimized sorted insert for linked lists - resolves #415
 
    - Mon, 09 Sep 2024 19:00:47 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 09 Sep 2024 19:00:47 +0200] rev 878
 
    - fix typo in documentation
 
    - Sun, 01 Sep 2024 16:14:34 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 01 Sep 2024 16:14:34 +0200] rev 877
 
    - optimize default insert_sorted implementation
resolves #418 
    - Sun, 01 Sep 2024 14:48:43 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 01 Sep 2024 14:48:43 +0200] rev 876
 
    - add stupid default implementation for high level insertion sort
relates to #418 
    - Thu, 29 Aug 2024 21:30:52 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 29 Aug 2024 21:30:52 +0200] rev 875
 
    - add default impl for some list member functions
resolves #419 
    - Thu, 29 Aug 2024 20:48:15 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 29 Aug 2024 20:48:15 +0200] rev 874
 
    - fix inserting via iterator correctly increases element count
fixes #423 
    - Tue, 20 Aug 2024 18:04:31 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 20 Aug 2024 18:04:31 +0200] rev 873
 
    - close feature branch
 
    - Tue, 20 Aug 2024 18:02:39 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 20 Aug 2024 18:02:39 +0200] rev 872
 
    - merge feature/tree_add branch
relates to #390 
    - Tue, 20 Aug 2024 18:01:03 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 20 Aug 2024 18:01:03 +0200] rev 871
 
    - rework cx_tree_add() API to allow insertion of edge nodes
closes #390 
    - Tue, 20 Aug 2024 13:53:18 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 20 Aug 2024 13:53:18 +0200] rev 870
 
    - remove condition that is always false after recent fix
 
    - Tue, 20 Aug 2024 13:36:56 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 20 Aug 2024 13:36:56 +0200] rev 869
 
    - fix cx_tree_search() not remembering root as a valid candidate
 
    - Tue, 20 Aug 2024 12:39:35 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 20 Aug 2024 12:39:35 +0200] rev 868
 
    - cx_tree_add_iter() - optimize check for empty trees
relates to #390 
    - Tue, 20 Aug 2024 11:02:54 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 20 Aug 2024 11:02:54 +0200] rev 867
 
    - cx_tree_add() fix missing spec for adding duplicates
relates to #390 
    - Mon, 19 Aug 2024 20:46:36 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 19 Aug 2024 20:46:36 +0200] rev 866
 
    - complete cx_tree_add() implementations
resolves #390 - but we still need more test coverage 
    - Mon, 19 Aug 2024 18:46:49 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 19 Aug 2024 18:46:49 +0200] rev 865
 
    - fix return type of cx_tree_node_create_func
relates to #390 
    - Sun, 18 Aug 2024 11:26:34 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 18 Aug 2024 11:26:34 +0200] rev 864
 
    - complete specification for tree_add functions
relates to #390 
    - Sat, 17 Aug 2024 11:14:39 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 17 Aug 2024 11:14:39 +0200] rev 863
 
    - merge changes from default branch
 
    - Sun, 07 Jul 2024 14:56:44 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 07 Jul 2024 14:56:44 +0200] rev 862
 
    - change cx_tree_link() from prepending to appending children - fixes #391
 
    - Sun, 07 Jul 2024 14:20:28 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 07 Jul 2024 14:20:28 +0200] rev 861
 
    - fix mixed up arguments for calloc()
 
    - Sun, 07 Jul 2024 12:21:58 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 07 Jul 2024 12:21:58 +0200] rev 860
 
    - add prototypes for cx_tree_add() family of functions
relates to #390 
    - Wed, 03 Jul 2024 22:07:42 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 03 Jul 2024 22:07:42 +0200] rev 859
 
    - minor doc fixes
 
    - Sat, 08 Jun 2024 20:08:09 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 08 Jun 2024 20:08:09 +0200] rev 858
 
    - add cxIteratorRef() macro
 
    - Thu, 23 May 2024 22:06:32 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 23 May 2024 22:06:32 +0200] rev 857
 
    - add missing convenience functions
 
    - Thu, 23 May 2024 20:43:04 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 23 May 2024 20:43:04 +0200] rev 856
 
    - fix name of collection base member (to avoid base.base)
 
    - Thu, 23 May 2024 20:31:37 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 23 May 2024 20:31:37 +0200] rev 855
 
    - fix inconsistent use of item_size and elem_size
 
    - Thu, 23 May 2024 20:29:28 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 23 May 2024 20:29:28 +0200] rev 854
 
    - fix members inherited by macro or include are not documented
 
    - Thu, 23 May 2024 19:29:14 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 23 May 2024 19:29:14 +0200] rev 853
 
    - simplify iterator structures
 
    - Thu, 23 May 2024 18:21:36 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 23 May 2024 18:21:36 +0200] rev 852
 
    - fix documentation
relates to #389 
    - Thu, 23 May 2024 18:21:08 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 23 May 2024 18:21:08 +0200] rev 851
 
    - issue #389 : add separate function for immutable arrays
 
    - Thu, 23 May 2024 15:05:24 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 23 May 2024 15:05:24 +0200] rev 850
 
    - add iterator over raw C arrays - closes #389
 
    - Fri, 12 Apr 2024 21:48:12 +0200
 
    - by Mike Becker <universe@uap-core.de> [Fri, 12 Apr 2024 21:48:12 +0200] rev 849
 
    - improves interface of cx_sprintf() variants
 
    - Wed, 03 Apr 2024 21:22:23 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 03 Apr 2024 21:22:23 +0200] rev 848
 
    - implement tree continue - fixes #376
 
    - Wed, 20 Mar 2024 23:35:32 +0100
 
    - by Mike Becker <universe@uap-core.de> [Wed, 20 Mar 2024 23:35:32 +0100] rev 847
 
    - add missing cxTreeVisitorDispose() test
 
    - Wed, 20 Mar 2024 23:35:18 +0100
 
    - by Mike Becker <universe@uap-core.de> [Wed, 20 Mar 2024 23:35:18 +0100] rev 846
 
    - add missing header dependencies