changelog
    
    
    - Thu, 07 Nov 2024 22:46:58 +0100
 
    - by Mike Becker <universe@uap-core.de> [Thu, 07 Nov 2024 22:46:58 +0100] rev 985
 
    - major refactoring of attributes
resolves #460
resolves #471
resolves #472 
    - Thu, 07 Nov 2024 20:22:56 +0100
 
    - by Mike Becker <universe@uap-core.de> [Thu, 07 Nov 2024 20:22:56 +0100] rev 984
 
    - let cxMapDestroy() ignore NULL as any free()-like function should do
 
    - Sun, 03 Nov 2024 20:15:14 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 03 Nov 2024 20:15:14 +0100] rev 983
 
    - instruct Doxygen to expand all macros
 
    - Sun, 03 Nov 2024 19:36:21 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 03 Nov 2024 19:36:21 +0100] rev 982
 
    - add -c flag to ARFLAGS to suppress diagnostic message on stderr
 
    - Sun, 03 Nov 2024 19:30:50 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 03 Nov 2024 19:30:50 +0100] rev 981
 
    - add script to invoke make check with different configurations
 
    - Sun, 03 Nov 2024 16:08:15 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 03 Nov 2024 16:08:15 +0100] rev 980
 
    - remove obsolete reference to previously removed cxPropertiesInput()
 
    - Sun, 03 Nov 2024 16:01:55 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 03 Nov 2024 16:01:55 +0100] rev 979
 
    - fix broken docs target after uwproj update
 
    - Sun, 03 Nov 2024 09:57:17 +0100
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Sun, 03 Nov 2024 09:57:17 +0100] rev 978
 
    - fix memory leaks in json tests
 
    - Sun, 03 Nov 2024 09:56:33 +0100
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Sun, 03 Nov 2024 09:56:33 +0100] rev 977
 
    - add test for reading multiple json values
 
    - Sun, 03 Nov 2024 09:30:10 +0100
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Sun, 03 Nov 2024 09:30:10 +0100] rev 976
 
    - fix missing value_ready reset when returning a CxJsonValue
 
    - Sat, 02 Nov 2024 20:19:58 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 02 Nov 2024 20:19:58 +0100] rev 975
 
    - adds test case for numbers - currently fails due to issue #482
 
    - Sat, 02 Nov 2024 20:17:38 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 02 Nov 2024 20:17:38 +0100] rev 974
 
    - fix copy-pasted parameter name
 
    - Sat, 02 Nov 2024 19:37:59 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 02 Nov 2024 19:37:59 +0100] rev 973
 
    - add UCX string support to cxJsonFill()
 
    - Sat, 02 Nov 2024 19:27:45 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 02 Nov 2024 19:27:45 +0100] rev 972
 
    - add support for UCX strings in cxPropertiesFill()
 
    - Sat, 02 Nov 2024 13:48:53 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 02 Nov 2024 13:48:53 +0100] rev 971
 
    - rename utils.h to streams.h
resolves #470 
    - Sat, 02 Nov 2024 13:38:51 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 02 Nov 2024 13:38:51 +0100] rev 970
 
    - move szmul to common.h
relates to #470 
    - Fri, 01 Nov 2024 18:33:16 +0100
 
    - by Mike Becker <universe@uap-core.de> [Fri, 01 Nov 2024 18:33:16 +0100] rev 969
 
    - simplify parsing of numbers
relates to #431 
    - Fri, 01 Nov 2024 18:17:19 +0100
 
    - by Mike Becker <universe@uap-core.de> [Fri, 01 Nov 2024 18:17:19 +0100] rev 968
 
    - add assertion that triggers when cx_array_copy() stops working for NULL arrays
 
    - Fri, 01 Nov 2024 18:16:32 +0100
 
    - by Mike Becker <universe@uap-core.de> [Fri, 01 Nov 2024 18:16:32 +0100] rev 967
 
    - simplify parsing of array and object elements
relates to #431 
    - Fri, 01 Nov 2024 17:35:42 +0100
 
    - by Mike Becker <universe@uap-core.de> [Fri, 01 Nov 2024 17:35:42 +0100] rev 966
 
    - treat integers and doubles both as JSON numbers
relates to #431 
    - Fri, 01 Nov 2024 17:24:51 +0100
 
    - by Mike Becker <universe@uap-core.de> [Fri, 01 Nov 2024 17:24:51 +0100] rev 965
 
    - remove single-member structs
relates to #431 
    - Fri, 01 Nov 2024 16:21:06 +0100
 
    - by Mike Becker <universe@uap-core.de> [Fri, 01 Nov 2024 16:21:06 +0100] rev 964
 
    - fix test function names not in line with naming convention
 
    - Thu, 31 Oct 2024 17:53:55 +0100
 
    - by Mike Becker <universe@uap-core.de> [Thu, 31 Oct 2024 17:53:55 +0100] rev 963
 
    - add reallocarray() like functions - resolves #468
 
    - Thu, 31 Oct 2024 14:54:44 +0100
 
    - by Mike Becker <universe@uap-core.de> [Thu, 31 Oct 2024 14:54:44 +0100] rev 962
 
    - remove cx_for_n() macro - fixes #467
 
    - Thu, 31 Oct 2024 14:39:05 +0100
 
    - by Mike Becker <universe@uap-core.de> [Thu, 31 Oct 2024 14:39:05 +0100] rev 961
 
    - increase list test coverage - fixes #454
 
    - Thu, 31 Oct 2024 13:24:39 +0100
 
    - by Mike Becker <universe@uap-core.de> [Thu, 31 Oct 2024 13:24:39 +0100] rev 960
 
    - test coverage does not really work with clang
 
    - Thu, 31 Oct 2024 12:15:45 +0100
 
    - by Mike Becker <universe@uap-core.de> [Thu, 31 Oct 2024 12:15:45 +0100] rev 959
 
    - add common.h include to test.h - fixes #464
 
    - Thu, 31 Oct 2024 12:15:13 +0100
 
    - by Mike Becker <universe@uap-core.de> [Thu, 31 Oct 2024 12:15:13 +0100] rev 958
 
    - update build dependencies for json.c
 
    - Wed, 30 Oct 2024 16:59:53 +0100
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Wed, 30 Oct 2024 16:59:53 +0100] rev 957
 
    - fix map.h C++ inline functions not ported to new collection base class
 
    - Tue, 29 Oct 2024 18:47:49 +0100
 
    - by Mike Becker <universe@uap-core.de> [Tue, 29 Oct 2024 18:47:49 +0100] rev 956
 
    - fix comparing size_t with int
 
    - Tue, 29 Oct 2024 18:46:50 +0100
 
    - by Mike Becker <universe@uap-core.de> [Tue, 29 Oct 2024 18:46:50 +0100] rev 955
 
    - remove cx_swap_ptr()
 
    - Tue, 29 Oct 2024 18:15:06 +0100
 
    - by Mike Becker <universe@uap-core.de> [Tue, 29 Oct 2024 18:15:06 +0100] rev 954
 
    - use cx_array_add() instead of reimplementing the magic
 
    - Tue, 29 Oct 2024 18:14:02 +0100
 
    - by Mike Becker <universe@uap-core.de> [Tue, 29 Oct 2024 18:14:02 +0100] rev 953
 
    - add function to create array reallocator that can move arrays from stack to heap
resolves #465 
    - Tue, 29 Oct 2024 16:53:00 +0100
 
    - by Mike Becker <universe@uap-core.de> [Tue, 29 Oct 2024 16:53:00 +0100] rev 952
 
    - add msvc support
 
    - Tue, 29 Oct 2024 16:47:40 +0100
 
    - by Mike Becker <universe@uap-core.de> [Tue, 29 Oct 2024 16:47:40 +0100] rev 951
 
    - remove dynamic arrays which are not supported by msvc
 
    - Tue, 29 Oct 2024 16:47:19 +0100
 
    - by Mike Becker <universe@uap-core.de> [Tue, 29 Oct 2024 16:47:19 +0100] rev 950
 
    - fix missing pointer initializations
 
    - Tue, 29 Oct 2024 16:08:37 +0100
 
    - by Mike Becker <universe@uap-core.de> [Tue, 29 Oct 2024 16:08:37 +0100] rev 949
 
    - add cast from size_t to unsigned to avoid warnings from certain compilers
 
    - Tue, 29 Oct 2024 16:01:10 +0100
 
    - by Mike Becker <universe@uap-core.de> [Tue, 29 Oct 2024 16:01:10 +0100] rev 948
 
    - fix compile regression on some platforms after removing sys/types.h include
 
    - Wed, 23 Oct 2024 19:33:36 +0200
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Wed, 23 Oct 2024 19:33:36 +0200] rev 947
 
    - fix cx_mempool_free crash if ptr is null
 
    - Tue, 22 Oct 2024 23:10:31 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 22 Oct 2024 23:10:31 +0200] rev 946
 
    - avoid state buffer allocation for JSON with reasonable nesting depth
 
    - Tue, 22 Oct 2024 22:42:48 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 22 Oct 2024 22:42:48 +0200] rev 945
 
    - add cx_nmemb() utility
 
    - Tue, 22 Oct 2024 22:20:50 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 22 Oct 2024 22:20:50 +0200] rev 944
 
    - make both gcc and clang happy with how cx_json_value_nothing is initialized
 
    - Tue, 22 Oct 2024 12:23:43 +0200
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Tue, 22 Oct 2024 12:23:43 +0200] rev 943
 
    - fix memory leak in case of json parser errors
 
    - Tue, 22 Oct 2024 12:17:48 +0200
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Tue, 22 Oct 2024 12:17:48 +0200] rev 942
 
    - use json reader state macros everywhere
 
    - Tue, 22 Oct 2024 12:16:16 +0200
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Tue, 22 Oct 2024 12:16:16 +0200] rev 941
 
    - fix incomplete json object not resulting in syntax error
 
    - Sun, 20 Oct 2024 12:30:30 +0200
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Sun, 20 Oct 2024 12:30:30 +0200] rev 940
 
    - fix memory leak in json reader when handling incomplete tokens
 
    - Sun, 20 Oct 2024 11:39:54 +0200
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Sun, 20 Oct 2024 11:39:54 +0200] rev 939
 
    - add test for parsing json with multiple incomplete tokens
 
    - Sun, 20 Oct 2024 10:49:38 +0200
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Sun, 20 Oct 2024 10:49:38 +0200] rev 938
 
    - simplify cx_json_value_nothing initialization
 
    - Sat, 19 Oct 2024 17:25:11 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 19 Oct 2024 17:25:11 +0200] rev 937
 
    - add first draft of json implementation - relates to #431
 
    - Sat, 19 Oct 2024 16:28:15 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 19 Oct 2024 16:28:15 +0200] rev 936
 
    - add missing dependencies for test_properties.o
 
    - Sat, 19 Oct 2024 14:24:26 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 19 Oct 2024 14:24:26 +0200] rev 935
 
    - add convenience macro for cx_reallocate to hide the (void**) cast
 
    - Sat, 19 Oct 2024 13:49:44 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 19 Oct 2024 13:49:44 +0200] rev 934
 
    - remove <sys/types.h> include from common.h
 
    - Sat, 19 Oct 2024 13:45:49 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 19 Oct 2024 13:45:49 +0200] rev 933
 
    - add extern "C" to iterator.h
 
    - Sat, 19 Oct 2024 13:43:10 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 19 Oct 2024 13:43:10 +0200] rev 932
 
    - add extern "C" to properties.h
 
    - Sat, 19 Oct 2024 13:21:58 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 19 Oct 2024 13:21:58 +0200] rev 931
 
    - add test coverage for unlinking tree nodes w/o prev pointer
 
    - Sat, 19 Oct 2024 13:08:06 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 19 Oct 2024 13:08:06 +0200] rev 930
 
    - add max depth for tree search - closes #459
 
    - Sun, 13 Oct 2024 16:47:14 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 13 Oct 2024 16:47:14 +0200] rev 929
 
    - fix totally bugged assertion in cxPropertiesUseStack()
 
    - Sun, 13 Oct 2024 16:44:29 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 13 Oct 2024 16:44:29 +0200] rev 928
 
    - add source/sink facility for properties - fixes #430
 
    - Sun, 13 Oct 2024 15:19:12 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 13 Oct 2024 15:19:12 +0200] rev 927
 
    - fix missing parameter doc
 
    - Sun, 13 Oct 2024 14:06:32 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 13 Oct 2024 14:06:32 +0200] rev 926
 
    - fix several survivors of east-const and some missing consts
 
    - Sat, 12 Oct 2024 19:41:04 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 12 Oct 2024 19:41:04 +0200] rev 925
 
    - fix invalid reads when removing linked list nodes
 
    - Sat, 12 Oct 2024 19:34:19 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 12 Oct 2024 19:34:19 +0200] rev 924
 
    - add implementation for the properties parser
relates to #429 
    - Thu, 10 Oct 2024 18:40:27 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 10 Oct 2024 18:40:27 +0200] rev 923
 
    - add ucx2.1 style interface for a properties parser
relates to #429 
    - Tue, 08 Oct 2024 19:52:09 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 08 Oct 2024 19:52:09 +0200] rev 922
 
    - also report coverage for header files
 
    - Tue, 08 Oct 2024 18:47:45 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 08 Oct 2024 18:47:45 +0200] rev 921
 
    - make loc_prev in trees optional - fixes #433
 
    - Tue, 08 Oct 2024 18:32:48 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 08 Oct 2024 18:32:48 +0200] rev 920
 
    - update CHANGELOG
 
    - Mon, 07 Oct 2024 20:20:21 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 07 Oct 2024 20:20:21 +0200] rev 919
 
    - add possibility to remove arrays of data and retrieve removed data
resolves #453
resolves #413 
    - Sun, 06 Oct 2024 19:17:41 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 06 Oct 2024 19:17:41 +0200] rev 918
 
    - add cxTreeSetParent()
 
    - Sun, 06 Oct 2024 19:02:32 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 06 Oct 2024 19:02:32 +0200] rev 917
 
    - add functions to start iteration in a subtree
 
    - Sun, 06 Oct 2024 13:48:00 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 06 Oct 2024 13:48:00 +0200] rev 916
 
    - add missing details for 100% test coverage in tree.c
 
    - Sun, 06 Oct 2024 13:44:26 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 06 Oct 2024 13:44:26 +0200] rev 915
 
    - add test for creating an iterator over an empty tree
 
    - Sun, 06 Oct 2024 13:41:26 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 06 Oct 2024 13:41:26 +0200] rev 914
 
    - simplify tree class
 
    - Sun, 06 Oct 2024 13:37:05 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 06 Oct 2024 13:37:05 +0200] rev 913
 
    - implement cxTreeDestroyNode and cxTreeDestroySubtree - resolves #438
 
    - Sun, 06 Oct 2024 12:40:44 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 06 Oct 2024 12:40:44 +0200] rev 912
 
    - fix missing free() in test_array_insert_sorted
 
    - Sun, 06 Oct 2024 12:33:57 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 06 Oct 2024 12:33:57 +0200] rev 911
 
    - fix missing free() in test_tree_add_duplicate_root
 
    - Sun, 06 Oct 2024 12:32:28 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 06 Oct 2024 12:32:28 +0200] rev 910
 
    - fix uninitialized simple_destructor - fixes #443
 
    - 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