changelog
    
    
    - Sun, 26 Jan 2025 14:37:07 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 26 Jan 2025 14:37:07 +0100] rev 1161
 
    - improve cx_strchr()
 
    - Sun, 26 Jan 2025 14:23:13 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 26 Jan 2025 14:23:13 +0100] rev 1160
 
    - simplify array access
 
    - Sun, 26 Jan 2025 14:15:21 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 26 Jan 2025 14:15:21 +0100] rev 1159
 
    - fix wrong inequality
 
    - Sun, 26 Jan 2025 14:13:48 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 26 Jan 2025 14:13:48 +0100] rev 1158
 
    - extract unescape_unicode_string() and fix rages
 
    - Sun, 26 Jan 2025 13:22:58 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 26 Jan 2025 13:22:58 +0100] rev 1157
 
    - fix memory leaks
 
    - Sun, 26 Jan 2025 13:20:05 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 26 Jan 2025 13:20:05 +0100] rev 1156
 
    - add test and implementation for malformed escape sequences
 
    - Sun, 26 Jan 2025 12:24:49 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 26 Jan 2025 12:24:49 +0100] rev 1155
 
    - do not trim strings before conversion to number
 
    - Sun, 26 Jan 2025 11:59:16 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 26 Jan 2025 11:59:16 +0100] rev 1154
 
    - add missing test coverage for escape sequences
 
    - Sun, 26 Jan 2025 11:28:50 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 26 Jan 2025 11:28:50 +0100] rev 1153
 
    - put coverage report into a subdir
 
    - Sun, 26 Jan 2025 10:23:32 +0100
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Sun, 26 Jan 2025 10:23:32 +0100] rev 1152
 
    - implement decoder for utf16 surrogate pairs in unescape_string
 
    - Sat, 25 Jan 2025 16:27:48 +0100
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Sat, 25 Jan 2025 16:27:48 +0100] rev 1151
 
    - replace cx_strtou32_lc_ with cx_strtou32_lc in json.c
 
    - Sat, 25 Jan 2025 16:27:32 +0100
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Sat, 25 Jan 2025 16:27:32 +0100] rev 1150
 
    - fix incorrect str length comparision in unescape_string
 
    - Sat, 25 Jan 2025 16:13:28 +0100
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Sat, 25 Jan 2025 16:13:28 +0100] rev 1149
 
    - implement unicode escape sequences in json unescape_string function
 
    - Sat, 25 Jan 2025 15:22:01 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 25 Jan 2025 15:22:01 +0100] rev 1148
 
    - documentation of test.h
relates to #451 
    - Sat, 25 Jan 2025 14:05:35 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 25 Jan 2025 14:05:35 +0100] rev 1147
 
    - fix minor bugs in hash_key.h and streams.h docs
relates to #451 
    - Sat, 25 Jan 2025 13:44:24 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 25 Jan 2025 13:44:24 +0100] rev 1146
 
    - add marker to every incomplete page
relates to #451 
    - Sat, 25 Jan 2025 13:40:50 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 25 Jan 2025 13:40:50 +0100] rev 1145
 
    - add stream.h docs and reworks hash_key.h docs
relates to #451 
    - Fri, 24 Jan 2025 21:38:40 +0100
 
    - by Mike Becker <universe@uap-core.de> [Fri, 24 Jan 2025 21:38:40 +0100] rev 1144
 
    - documentation of hash_key.h
relates to #451 
    - Fri, 24 Jan 2025 21:12:09 +0100
 
    - by Mike Becker <universe@uap-core.de> [Fri, 24 Jan 2025 21:12:09 +0100] rev 1143
 
    - assign proper names to the documentation topics
relates to #451 
    - Thu, 23 Jan 2025 20:19:03 +0100
 
    - by Mike Becker <universe@uap-core.de> [Thu, 23 Jan 2025 20:19:03 +0100] rev 1142
 
    - add symbols that need documentation as TODOs
relates to #451 
    - Thu, 23 Jan 2025 01:33:36 +0100
 
    - by Mike Becker <universe@uap-core.de> [Thu, 23 Jan 2025 01:33:36 +0100] rev 1141
 
    - create new page structure
relates to #451 
    - Thu, 23 Jan 2025 01:15:52 +0100
 
    - by Mike Becker <universe@uap-core.de> [Thu, 23 Jan 2025 01:15:52 +0100] rev 1140
 
    - start overhauling the entire web documentation
relates to #451 
    - Wed, 22 Jan 2025 21:02:46 +0100
 
    - by Mike Becker <universe@uap-core.de> [Wed, 22 Jan 2025 21:02:46 +0100] rev 1139
 
    - remove token_escape bool from CxJson struct
 
    - Wed, 22 Jan 2025 20:36:10 +0100
 
    - by Mike Becker <universe@uap-core.de> [Wed, 22 Jan 2025 20:36:10 +0100] rev 1138
 
    - avoid recursion in cxBufferWrite() - fixes #567
 
    - Mon, 20 Jan 2025 22:50:24 +0100
 
    - by Mike Becker <universe@uap-core.de> [Mon, 20 Jan 2025 22:50:24 +0100] rev 1137
 
    - allocate first index buffer for strreplacen on the stack - fixes #575
 
    - Mon, 20 Jan 2025 22:43:46 +0100
 
    - by Mike Becker <universe@uap-core.de> [Mon, 20 Jan 2025 22:43:46 +0100] rev 1136
 
    - reduce default SBO memory for strstr - relates to #575
 
    - Sun, 19 Jan 2025 17:17:01 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 19 Jan 2025 17:17:01 +0100] rev 1135
 
    - add test case for flushing when target is full and fixes a bug related to that
fixes #564 
    - Sat, 18 Jan 2025 14:10:51 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 18 Jan 2025 14:10:51 +0100] rev 1134
 
    - fix that some IDEs cannot resolve documentation
the way we used macros was confusing the IDE
fixes #562 
    - Sat, 18 Jan 2025 14:07:52 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 18 Jan 2025 14:07:52 +0100] rev 1133
 
    - fix duplicate dependency
 
    - Sat, 18 Jan 2025 13:30:51 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 18 Jan 2025 13:30:51 +0100] rev 1132
 
    - remove uses of ctype.h - temporarily fixes #577
we are in desperate need of a good solution that also supports Unicode, though 
    - Fri, 17 Jan 2025 17:55:21 +0100
 
    - by Mike Becker <universe@uap-core.de> [Fri, 17 Jan 2025 17:55:21 +0100] rev 1131
 
    - fix cxBufferAppend() not adjusting position after flush
fixes #565 
    - Fri, 17 Jan 2025 17:41:29 +0100
 
    - by Mike Becker <universe@uap-core.de> [Fri, 17 Jan 2025 17:41:29 +0100] rev 1130
 
    - fix wrong accidental unicode escaping
 
    - Thu, 16 Jan 2025 18:56:44 +0100
 
    - by Mike Becker <universe@uap-core.de> [Thu, 16 Jan 2025 18:56:44 +0100] rev 1129
 
    - fix #566 by changing the spec (pro-move 8)
 
    - Thu, 16 Jan 2025 18:56:17 +0100
 
    - by Mike Becker <universe@uap-core.de> [Thu, 16 Jan 2025 18:56:17 +0100] rev 1128
 
    - fix stupid signature of the flush helper
 
    - Wed, 15 Jan 2025 19:42:49 +0100
 
    - by Mike Becker <universe@uap-core.de> [Wed, 15 Jan 2025 19:42:49 +0100] rev 1127
 
    - removes some unnecessary string functions - fixes #561
 
    - Wed, 15 Jan 2025 19:32:53 +0100
 
    - by Mike Becker <universe@uap-core.de> [Wed, 15 Jan 2025 19:32:53 +0100] rev 1126
 
    - fix mistake string test: CX_STR should be used for initializers only
 
    - Tue, 14 Jan 2025 21:40:29 +0100
 
    - by Mike Becker <universe@uap-core.de> [Tue, 14 Jan 2025 21:40:29 +0100] rev 1125
 
    - avoid unnecessary comparison
 
    - Sun, 12 Jan 2025 13:25:50 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 12 Jan 2025 13:25:50 +0100] rev 1124
 
    - fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 
    - Sun, 12 Jan 2025 13:04:32 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 12 Jan 2025 13:04:32 +0100] rev 1123
 
    - make escaping slashes optional - fixes #569
 
    - Sat, 11 Jan 2025 12:56:54 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 11 Jan 2025 12:56:54 +0100] rev 1122
 
    - add more escape sequences to unescape function
and change the name of token_start to more clearly express what it actually is
(the start of the currently parsed PART of the token) 
    - Sat, 11 Jan 2025 12:33:10 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 11 Jan 2025 12:33:10 +0100] rev 1121
 
    - minor cleanup of json.c
 
    - Fri, 10 Jan 2025 23:16:36 +0100
 
    - by Mike Becker <universe@uap-core.de> [Fri, 10 Jan 2025 23:16:36 +0100] rev 1120
 
    - remove unreachable assert(false) since some compilers might warn about it - relates to #541
 
    - Fri, 10 Jan 2025 23:11:08 +0100
 
    - by Mike Becker <universe@uap-core.de> [Fri, 10 Jan 2025 23:11:08 +0100] rev 1119
 
    - implement string escape - resolves #526
 
    - Fri, 10 Jan 2025 15:03:58 +0100
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Fri, 10 Jan 2025 15:03:58 +0100] rev 1118
 
    - fix build on Solaris 10 and other platforms, where ferror is a just a macro
 
    - Thu, 09 Jan 2025 22:37:10 +0100
 
    - by Mike Becker <universe@uap-core.de> [Thu, 09 Jan 2025 22:37:10 +0100] rev 1117
 
    - add fractional number formatting - relates to #526
 
    - Thu, 09 Jan 2025 21:19:52 +0100
 
    - by Mike Becker <universe@uap-core.de> [Thu, 09 Jan 2025 21:19:52 +0100] rev 1116
 
    - fix JSON create value functions not actually accepting NULL as allocator arg
 
    - Wed, 08 Jan 2025 20:06:37 +0100
 
    - by Mike Becker <universe@uap-core.de> [Wed, 08 Jan 2025 20:06:37 +0100] rev 1115
 
    - create specialized map iterators - fixes #550
 
    - Tue, 07 Jan 2025 19:16:03 +0100
 
    - by Mike Becker <universe@uap-core.de> [Tue, 07 Jan 2025 19:16:03 +0100] rev 1114
 
    - fix that overwriting a map element did not call any destructor function
fixes also, that two tests were never called and increases test coverage in general
fixes #558 
    - Tue, 07 Jan 2025 18:37:07 +0100
 
    - by Mike Becker <universe@uap-core.de> [Tue, 07 Jan 2025 18:37:07 +0100] rev 1113
 
    - remove CX_LINKED_LIST_SWAP_SBO_SIZE - fixes #551
 
    - Tue, 07 Jan 2025 00:12:46 +0100
 
    - by Mike Becker <universe@uap-core.de> [Tue, 07 Jan 2025 00:12:46 +0100] rev 1112
 
    - add convenience macros to avoid a fptr cast for cxBufferRead and cxBufferWrite
fixes #545 
    - Mon, 06 Jan 2025 23:29:41 +0100
 
    - by Mike Becker <universe@uap-core.de> [Mon, 06 Jan 2025 23:29:41 +0100] rev 1111
 
    - remove API for changing the store_pointer property after list creation
fixes #553 
    - Sun, 05 Jan 2025 18:19:42 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 05 Jan 2025 18:19:42 +0100] rev 1110
 
    - re-implement flushing
fixes #542 fixes #543 
    - Sun, 05 Jan 2025 14:03:30 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 05 Jan 2025 14:03:30 +0100] rev 1109
 
    - free functions should not be inline in release mode - relates to #541
 
    - Sun, 05 Jan 2025 13:54:09 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 05 Jan 2025 13:54:09 +0100] rev 1108
 
    - refine docs for tree.h - issue #548
and also remove cx_tree_node_layout() from public scope 
    - Sun, 05 Jan 2025 13:44:02 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 05 Jan 2025 13:44:02 +0100] rev 1107
 
    - refine docs for string.h - issue #548
 
    - Sun, 05 Jan 2025 13:19:56 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 05 Jan 2025 13:19:56 +0100] rev 1106
 
    - refine docs for properties.h - issue #548
 
    - Sun, 05 Jan 2025 13:02:51 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 05 Jan 2025 13:02:51 +0100] rev 1105
 
    - refine docs for printf.h - issue #548
 
    - Sun, 05 Jan 2025 12:59:01 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 05 Jan 2025 12:59:01 +0100] rev 1104
 
    - remove unused attributes
 
    - Sun, 05 Jan 2025 12:41:43 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 05 Jan 2025 12:41:43 +0100] rev 1103
 
    - refine docs for mempool.h - issue #548
 
    - Sun, 05 Jan 2025 12:40:43 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 05 Jan 2025 12:40:43 +0100] rev 1102
 
    - refine docs for map.h - issue #548
 
    - Sun, 05 Jan 2025 12:07:39 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 05 Jan 2025 12:07:39 +0100] rev 1101
 
    - refine docs for list.h - issue #548
 
    - Sun, 05 Jan 2025 11:51:11 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 05 Jan 2025 11:51:11 +0100] rev 1100
 
    - refine docs for linked_list.h - issue #548
 
    - Sat, 04 Jan 2025 18:44:11 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 04 Jan 2025 18:44:11 +0100] rev 1099
 
    - refine docs for streams.h - issue #548
 
    - Sat, 04 Jan 2025 18:40:29 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 04 Jan 2025 18:40:29 +0100] rev 1098
 
    - refine docs for test.h - issue #548
 
    - Sat, 04 Jan 2025 18:34:13 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 04 Jan 2025 18:34:13 +0100] rev 1097
 
    - refine docs for json.h - issue #548
 
    - Sat, 04 Jan 2025 18:02:08 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 04 Jan 2025 18:02:08 +0100] rev 1096
 
    - refine docs for iterator.h - issue #548
 
    - Sat, 04 Jan 2025 17:48:35 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 04 Jan 2025 17:48:35 +0100] rev 1095
 
    - refine docs for hash_map.h - issue #548
 
    - Sat, 04 Jan 2025 17:46:32 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 04 Jan 2025 17:46:32 +0100] rev 1094
 
    - refine docs for hash_key.h - issue #548
 
    - Sat, 04 Jan 2025 17:37:47 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 04 Jan 2025 17:37:47 +0100] rev 1093
 
    - refine docs for common.h - issue #548
 
    - Sat, 04 Jan 2025 16:10:53 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 04 Jan 2025 16:10:53 +0100] rev 1092
 
    - refine docs for compare.h - issue #548
 
    - Sat, 04 Jan 2025 16:02:20 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 04 Jan 2025 16:02:20 +0100] rev 1091
 
    - refine docs for collection.h - issue #548
 
    - Sat, 04 Jan 2025 15:41:02 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 04 Jan 2025 15:41:02 +0100] rev 1090
 
    - refine docs for buffer.h - issue #548
also fixes the ultra fail in the struct declaration 
    - Sat, 04 Jan 2025 14:19:11 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 04 Jan 2025 14:19:11 +0100] rev 1089
 
    - refine docs for array_list.h - issue #548
plus also allows NULL values for CxArrayReallocator* 
    - Sat, 04 Jan 2025 14:18:27 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 04 Jan 2025 14:18:27 +0100] rev 1088
 
    - do not mixup Doxygen command syntax
relates to #548 
    - Sat, 04 Jan 2025 14:17:51 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 04 Jan 2025 14:17:51 +0100] rev 1087
 
    - don't document constness of arguments in macros
relates to #548 
    - Sat, 04 Jan 2025 13:40:34 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 04 Jan 2025 13:40:34 +0100] rev 1086
 
    - refine docs for util_allocator.h - issue #548
 
    - Sat, 04 Jan 2025 13:34:37 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 04 Jan 2025 13:34:37 +0100] rev 1085
 
    - refine docs for allocator.h - issue #548
 
    - Sat, 04 Jan 2025 12:31:28 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 04 Jan 2025 12:31:28 +0100] rev 1084
 
    - change cx_array_reserve() and cx_array_copy() to accept width in bytes instead of bits
 
    - Sat, 04 Jan 2025 11:55:31 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 04 Jan 2025 11:55:31 +0100] rev 1083
 
    - fix typo in assert()
 
    - Fri, 03 Jan 2025 19:18:00 +0100
 
    - by Mike Becker <universe@uap-core.de> [Fri, 03 Jan 2025 19:18:00 +0100] rev 1082
 
    - implement index array to preserve order of json object members
relates to #526 and resolves #462 
    - Fri, 03 Jan 2025 17:16:49 +0100
 
    - by Mike Becker <universe@uap-core.de> [Fri, 03 Jan 2025 17:16:49 +0100] rev 1081
 
    - remove code duplication from writer tests - relates to #526
 
    - Fri, 03 Jan 2025 17:12:28 +0100
 
    - by Mike Becker <universe@uap-core.de> [Fri, 03 Jan 2025 17:12:28 +0100] rev 1080
 
    - add test case for pretty printing with tabs - relates to #526
 
    - Thu, 02 Jan 2025 21:00:11 +0100
 
    - by Mike Becker <universe@uap-core.de> [Thu, 02 Jan 2025 21:00:11 +0100] rev 1079
 
    - remove idea for an array wrapping feature - relates to #526
 
    - Thu, 02 Jan 2025 20:58:32 +0100
 
    - by Mike Becker <universe@uap-core.de> [Thu, 02 Jan 2025 20:58:32 +0100] rev 1078
 
    - implement JSON pretty printing - relates to #526
 
    - Thu, 02 Jan 2025 19:07:56 +0100
 
    - by Mike Becker <universe@uap-core.de> [Thu, 02 Jan 2025 19:07:56 +0100] rev 1077
 
    - add functions to create default JSON writers - relates to #526
 
    - Wed, 01 Jan 2025 16:06:32 +0100
 
    - by Mike Becker <universe@uap-core.de> [Wed, 01 Jan 2025 16:06:32 +0100] rev 1076
 
    - fix missing SSIZE_T not only for MSVC
 
    - Wed, 01 Jan 2025 15:56:02 +0100
 
    - by Mike Becker <universe@uap-core.de> [Wed, 01 Jan 2025 15:56:02 +0100] rev 1075
 
    - fix cxJsonDestroy() not freeing uncompleted object member names
 
    - Wed, 01 Jan 2025 15:50:57 +0100
 
    - by Mike Becker <universe@uap-core.de> [Wed, 01 Jan 2025 15:50:57 +0100] rev 1074
 
    - add missing new-line
 
    - Wed, 01 Jan 2025 15:48:48 +0100
 
    - by Mike Becker <universe@uap-core.de> [Wed, 01 Jan 2025 15:48:48 +0100] rev 1073
 
    - fix for ultrafail fix #546
 
    - Wed, 01 Jan 2025 15:33:41 +0100
 
    - by Mike Becker <universe@uap-core.de> [Wed, 01 Jan 2025 15:33:41 +0100] rev 1072
 
    - first mvp for the json writer - relates to #526
 
    - Wed, 01 Jan 2025 15:26:50 +0100
 
    - by Mike Becker <universe@uap-core.de> [Wed, 01 Jan 2025 15:26:50 +0100] rev 1071
 
    - fix cx_strcmp() and cx_strcasecmp() - fixes #546
 
    - Wed, 01 Jan 2025 14:03:49 +0100
 
    - by Mike Becker <universe@uap-core.de> [Wed, 01 Jan 2025 14:03:49 +0100] rev 1070
 
    - add array iterator over pointer arrays
 
    - Wed, 01 Jan 2025 13:31:38 +0100
 
    - by Mike Becker <universe@uap-core.de> [Wed, 01 Jan 2025 13:31:38 +0100] rev 1069
 
    - fix include guard for properties.h
 
    - Tue, 31 Dec 2024 12:41:01 +0100
 
    - by Mike Becker <universe@uap-core.de> [Tue, 31 Dec 2024 12:41:01 +0100] rev 1068
 
    - move the test execution for string_to_number back in line
 
    - Sun, 29 Dec 2024 18:03:21 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 29 Dec 2024 18:03:21 +0100] rev 1067
 
    - optimize cxJsonObjGet() part 1 - binary search
part 2 will be the index buffer to preserve the order
relates to #462 
    - Sun, 29 Dec 2024 17:45:56 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 29 Dec 2024 17:45:56 +0100] rev 1066
 
    - add missing convenience macros for sorted insert with array reallocator