changelog
    
    
    - Mon, 29 Sep 2025 23:31:59 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 29 Sep 2025 23:31:59 +0200] rev 1405
 
    - fix using empty initializer, which is a C23 extension
 
    - Mon, 29 Sep 2025 23:28:46 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 29 Sep 2025 23:28:46 +0200] rev 1404
 
    - fix cxKvListSetKey() and cxKvListRemoveKey() accidentally not declared for C++
relates to #461 
    - Mon, 29 Sep 2025 23:25:31 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 29 Sep 2025 23:25:31 +0200] rev 1403
 
    - add C++ implementation of CX_HASH_KEY()
relates to #731 
    - Sun, 28 Sep 2025 22:32:42 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 28 Sep 2025 22:32:42 +0200] rev 1402
 
    - add generic CX_HASH_KEY() macro
relates to #731 
    - Sat, 27 Sep 2025 17:53:41 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 27 Sep 2025 17:53:41 +0200] rev 1401
 
    - add changelog entries for issue #720
 
    - Sat, 27 Sep 2025 17:49:13 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 27 Sep 2025 17:49:13 +0200] rev 1400
 
    - add support for integer keys - resolves #720
 
    - Sat, 27 Sep 2025 17:47:10 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 27 Sep 2025 17:47:10 +0200] rev 1399
 
    - add size_t compare functions
 
    - Sat, 27 Sep 2025 17:03:35 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 27 Sep 2025 17:03:35 +0200] rev 1398
 
    - simplify hash map iterator - resolves #727
 
    - Fri, 26 Sep 2025 22:43:17 +0200
 
    - by Mike Becker <universe@uap-core.de> [Fri, 26 Sep 2025 22:43:17 +0200] rev 1397
 
    - fix cx_kvl_map_put() returning the wrong pointer
relates to #461 
    - Thu, 25 Sep 2025 14:49:48 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 25 Sep 2025 14:49:48 +0200] rev 1396
 
    - add kv-list files to MSVC project files
resolves #461 for MSVC 
    - Thu, 25 Sep 2025 14:49:26 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 25 Sep 2025 14:49:26 +0200] rev 1395
 
    - fix initialization of cxDefaultAllocator for MSVC
 
    - Thu, 25 Sep 2025 14:30:28 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 25 Sep 2025 14:30:28 +0200] rev 1394
 
    - add cxKvListGetKey()
resolves #461 
    - Wed, 24 Sep 2025 23:52:36 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 24 Sep 2025 23:52:36 +0200] rev 1393
 
    - fix that cxKvListInsert() did not lose the sorted property
relates to #461 
    - Wed, 24 Sep 2025 23:51:04 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 24 Sep 2025 23:51:04 +0200] rev 1392
 
    - remove unused old cx_kv_list_remove_key() prototype
 
    - Wed, 24 Sep 2025 23:50:41 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 24 Sep 2025 23:50:41 +0200] rev 1391
 
    - fix typo in CHANGELOG
 
    - Wed, 24 Sep 2025 23:50:15 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 24 Sep 2025 23:50:15 +0200] rev 1390
 
    - kv-list: add documentation
relates to #461 
    - Tue, 23 Sep 2025 20:31:50 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 23 Sep 2025 20:31:50 +0200] rev 1389
 
    - kv-list: completes test coverage
relates to #461 
    - Tue, 23 Sep 2025 20:19:31 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 23 Sep 2025 20:19:31 +0200] rev 1388
 
    - add tests for creating iterators with NULL lists or maps
 
    - Mon, 22 Sep 2025 19:22:23 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 22 Sep 2025 19:22:23 +0200] rev 1387
 
    - the elem_count member of an iterator was not updated after removing an element flagged by cxIteratorFlagRemoval() - fixes #728
 
    - Sun, 21 Sep 2025 19:31:30 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 21 Sep 2025 19:31:30 +0200] rev 1386
 
    - kv-list: implement mutating iterator support
relates to #461 
    - Sun, 21 Sep 2025 18:42:18 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 21 Sep 2025 18:42:18 +0200] rev 1385
 
    - add changelog entry
relates to #461 
    - Sat, 20 Sep 2025 18:34:15 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 20 Sep 2025 18:34:15 +0200] rev 1384
 
    - implement non-mutating iterator
relates to #461 
    - Sat, 20 Sep 2025 12:30:07 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 20 Sep 2025 12:30:07 +0200] rev 1383
 
    - allow setting the key again on the same node
relates to #461 
    - Sat, 20 Sep 2025 12:27:36 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 20 Sep 2025 12:27:36 +0200] rev 1382
 
    - disallow setting a key that already exists
relates to #461 
    - Sat, 20 Sep 2025 12:19:49 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 20 Sep 2025 12:19:49 +0200] rev 1381
 
    - consider the edge case that either list or map operation fails when adding an element
relates to #461 
    - Fri, 19 Sep 2025 16:05:41 +0200
 
    - by Mike Becker <universe@uap-core.de> [Fri, 19 Sep 2025 16:05:41 +0200] rev 1380
 
    - increase test coverage for kv-list
relates to #461 
    - Thu, 18 Sep 2025 00:40:27 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 18 Sep 2025 00:40:27 +0200] rev 1379
 
    - improve cx_kv_list_insert() by using low level access to the list method
relates to #461 
    - Thu, 18 Sep 2025 00:36:42 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 18 Sep 2025 00:36:42 +0200] rev 1378
 
    - implement cx_kv_list_insert()
relates to #461 
    - Wed, 17 Sep 2025 22:45:00 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 17 Sep 2025 22:45:00 +0200] rev 1377
 
    - implement cxKvListRemoveKey()
relates to #461 
    - Tue, 16 Sep 2025 22:32:23 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 16 Sep 2025 22:32:23 +0200] rev 1376
 
    - add error handling to cx_kv_list_set_key()
relates to #461 
    - Sat, 13 Sep 2025 20:57:59 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 13 Sep 2025 20:57:59 +0200] rev 1375
 
    - implement cx_kvl_find_remove()
relates to #461 
    - Sat, 13 Sep 2025 20:55:56 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 13 Sep 2025 20:55:56 +0200] rev 1374
 
    - fix documentation of return value of cx_linked_list_find()
 
    - Fri, 12 Sep 2025 16:56:04 +0200
 
    - by Mike Becker <universe@uap-core.de> [Fri, 12 Sep 2025 16:56:04 +0200] rev 1373
 
    - make cx_kvl_remove() also remove the keys from the map
relates to #461 
    - Thu, 11 Sep 2025 20:17:43 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 11 Sep 2025 20:17:43 +0200] rev 1372
 
    - kv-list: remove obsolete TODOs and add a test case to prove it
relates to #461 
    - Thu, 11 Sep 2025 20:10:12 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 11 Sep 2025 20:10:12 +0200] rev 1371
 
    - kv-list: fix a possible source of UB when allocation fails during list creation
relates to #461 
    - Thu, 11 Sep 2025 20:09:33 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 11 Sep 2025 20:09:33 +0200] rev 1370
 
    - kv-list: fix support for CX_STORE_POINTERS when using the map interface
relates to #461 
    - Thu, 11 Sep 2025 19:59:49 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 11 Sep 2025 19:59:49 +0200] rev 1369
 
    - remove now unused destructor wrapper
relates to #461 
    - Wed, 10 Sep 2025 19:15:58 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 10 Sep 2025 19:15:58 +0200] rev 1368
 
    - change kv-list destructor strategy to only use the list destructors
relates to #461 
    - Tue, 09 Sep 2025 22:30:18 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 09 Sep 2025 22:30:18 +0200] rev 1367
 
    - change linked_list.c to allow custom data in nodes + implement cx_kv_list_set_key()
relates to #461 
    - Mon, 08 Sep 2025 22:48:48 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 08 Sep 2025 22:48:48 +0200] rev 1366
 
    - add failing test case test_kv_list_set_key()
relates to #461 
    - Sun, 07 Sep 2025 17:08:26 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 07 Sep 2025 17:08:26 +0200] rev 1365
 
    - implement a patch function that results in (almost) always calling the correct destructors
relates to #461 
    - Sat, 06 Sep 2025 11:57:17 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 06 Sep 2025 11:57:17 +0200] rev 1364
 
    - fix that the fallthrough attributes were not abstracted by the cx_attr macros
 
    - Wed, 03 Sep 2025 23:10:36 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 03 Sep 2025 23:10:36 +0200] rev 1363
 
    - add failing tests for when clear/remove are called with destructors in the "opposite" aspect of a kv-list
relates to #461 
    - Wed, 03 Sep 2025 22:59:09 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 03 Sep 2025 22:59:09 +0200] rev 1362
 
    - add several fixme and todo comments regarding invoking destructors
relates to #461 
    - Wed, 03 Sep 2025 22:52:20 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 03 Sep 2025 22:52:20 +0200] rev 1361
 
    - implement support for registering destructors to a kv-list using its map aspect
relates to #461 
    - Tue, 02 Sep 2025 21:12:51 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 02 Sep 2025 21:12:51 +0200] rev 1360
 
    - implement cx_kvl_map_remove()
relates to #461 
    - Tue, 02 Sep 2025 20:26:10 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 02 Sep 2025 20:26:10 +0200] rev 1359
 
    - add test_kv_list_map_remove()
relates to #461 
    - Mon, 01 Sep 2025 20:20:12 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 01 Sep 2025 20:20:12 +0200] rev 1358
 
    - make test_kv_list_map_put() pass
relates to #461 
    - Sun, 31 Aug 2025 13:37:00 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 31 Aug 2025 13:37:00 +0200] rev 1357
 
    - add failing test case for inserting into kv-list via map
relates to #461 
    - Sat, 30 Aug 2025 13:37:00 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 30 Aug 2025 13:37:00 +0200] rev 1356
 
    - add missing attributes to generic implementations
relates to #461 
    - Fri, 29 Aug 2025 13:37:00 +0200
 
    - by Mike Becker <universe@uap-core.de> [Fri, 29 Aug 2025 13:37:00 +0200] rev 1355
 
    - fix broken C++ build
relates to #461 
    - Thu, 28 Aug 2025 13:37:00 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 28 Aug 2025 13:37:00 +0200] rev 1354
 
    - fix wrong position of cstr argument in attribute
relates to #461 
    - Wed, 27 Aug 2025 23:24:11 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 27 Aug 2025 23:24:11 +0200] rev 1353
 
    - fix that the wrong vtable is patched when CX_STORE_POINTERS is used
relates to #461 
    - Wed, 27 Aug 2025 23:13:53 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 27 Aug 2025 23:13:53 +0200] rev 1352
 
    - make comparisons between kv_list and linked_list optimizable
relates to #461 
    - Wed, 27 Aug 2025 23:07:39 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 27 Aug 2025 23:07:39 +0200] rev 1351
 
    - fix some grammar and wording issues
 
    - Tue, 26 Aug 2025 21:55:19 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 26 Aug 2025 21:55:19 +0200] rev 1350
 
    - implement kv-list to a point where it correctly behaves like a list
that means no lookup-map aspects are implemented just yet
relates to #461 
    - Tue, 26 Aug 2025 21:14:17 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 26 Aug 2025 21:14:17 +0200] rev 1349
 
    - remove overlooked unnecessary attribute
 
    - Mon, 25 Aug 2025 21:47:45 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 25 Aug 2025 21:47:45 +0200] rev 1348
 
    - roll out the function stubs for the kv-list
relates to #461 
    - Sun, 24 Aug 2025 17:11:53 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 24 Aug 2025 17:11:53 +0200] rev 1347
 
    - create a header file for the new key-value-lists
kick-off for issue #461 
    - Mon, 18 Aug 2025 23:10:26 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 18 Aug 2025 23:10:26 +0200] rev 1346
 
    - remove obsolete attributes
 
    - Mon, 18 Aug 2025 23:08:56 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 18 Aug 2025 23:08:56 +0200] rev 1345
 
    - fix that the support for NULL when creating mutating iterators was  broken
 
    - Mon, 18 Aug 2025 23:06:27 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 18 Aug 2025 23:06:27 +0200] rev 1344
 
    - add support for NULL in map iterators
 
    - Mon, 18 Aug 2025 23:00:55 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 18 Aug 2025 23:00:55 +0200] rev 1343
 
    - also support NULL in index-based iterator generating functions
 
    - Sun, 17 Aug 2025 23:10:25 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 17 Aug 2025 23:10:25 +0200] rev 1342
 
    - fix the documentation regarding member function that now support emplace-mechanics