changelog
    
    
    - Fri, 27 May 2022 14:14:55 +0200
 
    - by Mike Becker <universe@uap-core.de> [Fri, 27 May 2022 14:14:55 +0200] rev 561
 
    - #199 test removing via iterator
 
    - Fri, 27 May 2022 14:02:27 +0200
 
    - by Mike Becker <universe@uap-core.de> [Fri, 27 May 2022 14:02:27 +0200] rev 560
 
    - fix wrong slot and index numbers
 
    - Fri, 27 May 2022 14:02:14 +0200
 
    - by Mike Becker <universe@uap-core.de> [Fri, 27 May 2022 14:02:14 +0200] rev 559
 
    - corrects documentation of iterator behavior
 
    - Fri, 27 May 2022 13:25:42 +0200
 
    - by Mike Becker <universe@uap-core.de> [Fri, 27 May 2022 13:25:42 +0200] rev 558
 
    - add convenience function to make keys from strings
 
    - Fri, 27 May 2022 12:59:41 +0200
 
    - by Mike Becker <universe@uap-core.de> [Fri, 27 May 2022 12:59:41 +0200] rev 557
 
    - remove unused header
 
    - Fri, 27 May 2022 12:59:32 +0200
 
    - by Mike Becker <universe@uap-core.de> [Fri, 27 May 2022 12:59:32 +0200] rev 556
 
    - #199 tests for hash map
 
    - Fri, 27 May 2022 12:28:49 +0200
 
    - by Mike Becker <universe@uap-core.de> [Fri, 27 May 2022 12:28:49 +0200] rev 555
 
    - fix documentation for map iterators
 
    - Fri, 27 May 2022 12:28:35 +0200
 
    - by Mike Becker <universe@uap-core.de> [Fri, 27 May 2022 12:28:35 +0200] rev 554
 
    - fix kv-pair not initialized
 
    - Fri, 27 May 2022 11:39:50 +0200
 
    - by Mike Becker <universe@uap-core.de> [Fri, 27 May 2022 11:39:50 +0200] rev 553
 
    - fix missing static inline for map functions
 
    - Sat, 21 May 2022 12:10:25 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 21 May 2022 12:10:25 +0200] rev 552
 
    - #178 fix that lists of different kind cannot be compared
 
    - Sat, 21 May 2022 11:22:47 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 21 May 2022 11:22:47 +0200] rev 551
 
    - #189 implement map iterators
 
    - Thu, 19 May 2022 14:30:20 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 19 May 2022 14:30:20 +0200] rev 550
 
    - #189 basic map implementation
 
    - Wed, 18 May 2022 16:26:32 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 18 May 2022 16:26:32 +0200] rev 549
 
    - #189 declare basic map functions
 
    - Mon, 16 May 2022 19:25:19 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 16 May 2022 19:25:19 +0200] rev 548
 
    - #170 test buffer eof
 
    - Mon, 16 May 2022 19:15:44 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 16 May 2022 19:15:44 +0200] rev 547
 
    - #170 test buffer seek
 
    - Sun, 01 May 2022 16:48:26 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 01 May 2022 16:48:26 +0200] rev 546
 
    - #184 #170 flush at threshold test
 
    - Sun, 01 May 2022 16:12:13 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 01 May 2022 16:12:13 +0200] rev 545
 
    - #184 #170 first basic flush test
 
    - Sun, 01 May 2022 13:14:31 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 01 May 2022 13:14:31 +0200] rev 544
 
    - #184 untested implementation of the flush feature
 
    - Sun, 01 May 2022 11:54:10 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 01 May 2022 11:54:10 +0200] rev 543
 
    - optimization for buffer write easy cases
 
    - Sun, 01 May 2022 11:46:54 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 01 May 2022 11:46:54 +0200] rev 542
 
    - #170 no bug never existed
 
    - Sun, 01 May 2022 11:44:23 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 01 May 2022 11:44:23 +0200] rev 541
 
    - #170 complete write tests for status quo
 
    - Sun, 01 May 2022 10:39:13 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 01 May 2022 10:39:13 +0200] rev 540
 
    - fix regression: nitems adjusted at the wrong location
 
    - Sat, 30 Apr 2022 09:47:20 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 30 Apr 2022 09:47:20 +0200] rev 539
 
    - #184 start implementation of the flush feature
 
    - Sat, 30 Apr 2022 09:03:17 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 30 Apr 2022 09:03:17 +0200] rev 538
 
    - #170 first basic write tests
 
    - Sat, 30 Apr 2022 08:40:40 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 30 Apr 2022 08:40:40 +0200] rev 537
 
    - fix doc error for cxBufferWrite
 
    - Sat, 30 Apr 2022 08:30:51 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 30 Apr 2022 08:30:51 +0200] rev 536
 
    - #170 add cxBufferClear test
 
    - Sun, 24 Apr 2022 17:45:09 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 24 Apr 2022 17:45:09 +0200] rev 535
 
    - #170 add several more buffer tests
 
    - Sun, 24 Apr 2022 17:44:52 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 24 Apr 2022 17:44:52 +0200] rev 534
 
    - fix cxBufferMinimumCapacity not using the allocator
 
    - Sun, 24 Apr 2022 17:29:34 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 24 Apr 2022 17:29:34 +0200] rev 533
 
    - do not implicitly zero freshly allocated memory
 
    - Sun, 24 Apr 2022 17:14:05 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 24 Apr 2022 17:14:05 +0200] rev 532
 
    - fix cxBufferMinimumCapacity implementation still using additional_bytes
 
    - Sun, 24 Apr 2022 16:23:44 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 24 Apr 2022 16:23:44 +0200] rev 531
 
    - fix erroneous doc for cxBufferShift
 
    - Sun, 24 Apr 2022 15:15:39 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 24 Apr 2022 15:15:39 +0200] rev 530
 
    - #170 first buffer tests
 
    - Sun, 24 Apr 2022 14:54:50 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 24 Apr 2022 14:54:50 +0200] rev 529
 
    - #171 const qualifier and nonnull attributes
Also removes cxBufferExtract temporarily. 
    - Mon, 18 Apr 2022 17:26:21 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 18 Apr 2022 17:26:21 +0200] rev 528
 
    - #179 improve API for list content destruction
 
    - Mon, 18 Apr 2022 16:56:29 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 18 Apr 2022 16:56:29 +0200] rev 527
 
    - add doc for cx_for_n
 
    - Mon, 18 Apr 2022 16:29:14 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 18 Apr 2022 16:29:14 +0200] rev 526
 
    - simplify destructor signature (but loads more responsibility onto the user)
 
    - Mon, 18 Apr 2022 15:59:09 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 18 Apr 2022 15:59:09 +0200] rev 525
 
    - simplify auto-free contents in lists
 
    - Mon, 18 Apr 2022 15:29:52 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 18 Apr 2022 15:29:52 +0200] rev 524
 
    - remove list destructor
 
    - Mon, 18 Apr 2022 14:41:19 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 18 Apr 2022 14:41:19 +0200] rev 523
 
    - configure clang-tidy to ignore cert-err58-cpp for test code
 
    - Mon, 18 Apr 2022 14:35:41 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 18 Apr 2022 14:35:41 +0200] rev 522
 
    - add [[maybe_unused]] attributed to params of mocked function
 
    - Sat, 16 Apr 2022 22:12:47 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 16 Apr 2022 22:12:47 +0200] rev 521
 
    - add test for cxListCompare
Also increases size for low level sort test in order to
exceed the SBO limit. 
    - Sat, 16 Apr 2022 21:12:02 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 16 Apr 2022 21:12:02 +0200] rev 520
 
    - fix memory leak in test data
 
    - Sat, 16 Apr 2022 20:44:47 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 16 Apr 2022 20:44:47 +0200] rev 519
 
    - make cxListMemoryMgmt a linkable symbol
 
    - Sat, 16 Apr 2022 20:17:01 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 16 Apr 2022 20:17:01 +0200] rev 518
 
    - improve testing allocator + add tests for it
 
    - Sat, 16 Apr 2022 18:02:10 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 16 Apr 2022 18:02:10 +0200] rev 517
 
    - migrate list tests to gtest
 
    - Sat, 16 Apr 2022 17:28:36 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 16 Apr 2022 17:28:36 +0200] rev 516
 
    - fix required cast if compiled with C++
 
    - Sat, 16 Apr 2022 14:47:27 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 16 Apr 2022 14:47:27 +0200] rev 515
 
    - migrate tree tests to gtest
 
    - Sat, 16 Apr 2022 09:10:10 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 16 Apr 2022 09:10:10 +0200] rev 514
 
    - test uncovered branch in cxReallocate()
 
    - Sat, 16 Apr 2022 08:59:51 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 16 Apr 2022 08:59:51 +0200] rev 513
 
    - do not use macro for suite name
 
    - Sat, 16 Apr 2022 08:58:27 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 16 Apr 2022 08:58:27 +0200] rev 512
 
    - compile only one single binary for tests
 
    - Sat, 16 Apr 2022 08:49:31 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 16 Apr 2022 08:49:31 +0200] rev 511
 
    - migrate allocator tests to gtest
 
    - Fri, 15 Apr 2022 21:28:51 +0200
 
    - by Mike Becker <universe@uap-core.de> [Fri, 15 Apr 2022 21:28:51 +0200] rev 510
 
    - add googletest framework
 
    - Sat, 09 Apr 2022 18:02:53 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 09 Apr 2022 18:02:53 +0200] rev 509
 
    - #129 - remove test code duplication
 
    - Sat, 09 Apr 2022 16:37:43 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 09 Apr 2022 16:37:43 +0200] rev 508
 
    - #168 - add attributes and const
 
    - Sun, 06 Mar 2022 13:57:36 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 06 Mar 2022 13:57:36 +0100] rev 507
 
    - remove test code duplication for cxListAdd
 
    - Fri, 25 Feb 2022 14:35:18 +0100
 
    - by Mike Becker <universe@uap-core.de> [Fri, 25 Feb 2022 14:35:18 +0100] rev 506
 
    - add setup and teardown functions to test_list.c
 
    - Tue, 15 Feb 2022 20:01:59 +0100
 
    - by Mike Becker <universe@uap-core.de> [Tue, 15 Feb 2022 20:01:59 +0100] rev 505
 
    - fix typo in documentation
 
    - Tue, 15 Feb 2022 19:48:25 +0100
 
    - by Mike Becker <universe@uap-core.de> [Tue, 15 Feb 2022 19:48:25 +0100] rev 504
 
    - add convenience function to configure list memory management
 
    - Tue, 15 Feb 2022 19:41:48 +0100
 
    - by Mike Becker <universe@uap-core.de> [Tue, 15 Feb 2022 19:41:48 +0100] rev 503
 
    - add new destructor API and apply it to CxList
 
    - Tue, 15 Feb 2022 19:07:14 +0100
 
    - by Mike Becker <universe@uap-core.de> [Tue, 15 Feb 2022 19:07:14 +0100] rev 502
 
    - change Doxyfile to ignore __attribute__ and include static inline functions
 
    - Mon, 31 Jan 2022 17:15:59 +0100
 
    - by Mike Becker <universe@uap-core.de> [Mon, 31 Jan 2022 17:15:59 +0100] rev 501
 
    - add allocator support to CxBuffer
Also change how the buffer itself is allocated and destroyed. 
    - Sun, 30 Jan 2022 14:19:00 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 30 Jan 2022 14:19:00 +0100] rev 500
 
    - do not hide pointers behind typedefs
 
    - Sat, 29 Jan 2022 14:32:04 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 29 Jan 2022 14:32:04 +0100] rev 499
 
    - add cxListInsertAfter() and cxListInsertBefore()
 
    - Sat, 29 Jan 2022 12:46:07 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 29 Jan 2022 12:46:07 +0100] rev 498
 
    - reorder the list test functions
This should make it easier to spot duplicated code and think about a
strategy to uniformly test "normal" linked lists and pointer lists. 
    - Sat, 22 Jan 2022 19:10:04 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 22 Jan 2022 19:10:04 +0100] rev 497
 
    - pointer type must be explicit in cx_foreach macro
 
    - Sat, 22 Jan 2022 19:04:32 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 22 Jan 2022 19:04:32 +0100] rev 496
 
    - add cx_foreach macro
 
    - Sat, 22 Jan 2022 18:49:06 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 22 Jan 2022 18:49:06 +0100] rev 495
 
    - add the feature to remove items during iteration
 
    - Sat, 22 Jan 2022 17:15:14 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 22 Jan 2022 17:15:14 +0100] rev 494
 
    - add iterator interface + linked list iterator
 
    - Sat, 22 Jan 2022 10:29:48 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 22 Jan 2022 10:29:48 +0100] rev 493
 
    - hide __attribute__ from compilers that may not support it
 
    - Tue, 28 Dec 2021 18:05:14 +0100
 
    - by Mike Becker <universe@uap-core.de> [Tue, 28 Dec 2021 18:05:14 +0100] rev 492
 
    - simplifies some linked list tests
 
    - Tue, 28 Dec 2021 17:49:52 +0100
 
    - by Mike Becker <universe@uap-core.de> [Tue, 28 Dec 2021 17:49:52 +0100] rev 491
 
    - fix missing cleanup in test_hl_linked_list_from_array
 
    - Tue, 28 Dec 2021 17:41:51 +0100
 
    - by Mike Becker <universe@uap-core.de> [Tue, 28 Dec 2021 17:41:51 +0100] rev 490
 
    - add cxListReverse()
 
    - Tue, 28 Dec 2021 17:38:02 +0100
 
    - by Mike Becker <universe@uap-core.de> [Tue, 28 Dec 2021 17:38:02 +0100] rev 489
 
    - add some const qualifiers
 
    - Tue, 28 Dec 2021 17:24:18 +0100
 
    - by Mike Becker <universe@uap-core.de> [Tue, 28 Dec 2021 17:24:18 +0100] rev 488
 
    - add cxLinkedListFromArray() and cxListCompare()
 
    - Tue, 28 Dec 2021 14:25:05 +0100
 
    - by Mike Becker <universe@uap-core.de> [Tue, 28 Dec 2021 14:25:05 +0100] rev 487
 
    - use c99 bool + add test for low level find
 
    - Tue, 28 Dec 2021 14:16:04 +0100
 
    - by Mike Becker <universe@uap-core.de> [Tue, 28 Dec 2021 14:16:04 +0100] rev 486
 
    - add cx_linked_list_compare() and simplifies some tests
 
    - Mon, 27 Dec 2021 17:16:32 +0100
 
    - by Mike Becker <universe@uap-core.de> [Mon, 27 Dec 2021 17:16:32 +0100] rev 485
 
    - use same doxygen style in all files
also adds doxygen main page 
    - Mon, 27 Dec 2021 17:02:32 +0100
 
    - by Mike Becker <universe@uap-core.de> [Mon, 27 Dec 2021 17:02:32 +0100] rev 484
 
    - add common.h include to all other header files
 
    - Mon, 27 Dec 2021 16:51:10 +0100
 
    - by Mike Becker <universe@uap-core.de> [Mon, 27 Dec 2021 16:51:10 +0100] rev 483
 
    - add ported UCX buffer implementation
Notes:
* ucx_buffer_extend has been removed
  in favor of cxBufferMinimumCapacity
* the buffer struct now has a union for
  char* and unsigned char* buffers 
    - Mon, 27 Dec 2021 14:44:08 +0100
 
    - by Mike Becker <universe@uap-core.de> [Mon, 27 Dec 2021 14:44:08 +0100] rev 482
 
    - add tests for the new low level functions
 
    - Thu, 23 Dec 2021 15:20:50 +0100
 
    - by Mike Becker <universe@uap-core.de> [Thu, 23 Dec 2021 15:20:50 +0100] rev 481
 
    - add several new linked list functions
* cx_linked_list_insert()
* cx_linked_list_insert_chain()
* cx_linked_list_link()
* cx_linked_list_unlink()
Also uses the most general function wherever possible. 
    - Mon, 20 Dec 2021 13:01:38 +0100
 
    - by Mike Becker <universe@uap-core.de> [Mon, 20 Dec 2021 13:01:38 +0100] rev 480
 
    - add cx_linked_list_find()
 
    - Mon, 20 Dec 2021 12:10:48 +0100
 
    - by Mike Becker <universe@uap-core.de> [Mon, 20 Dec 2021 12:10:48 +0100] rev 479
 
    - add linked list tests for cxListAt()
 
    - Mon, 20 Dec 2021 11:58:36 +0100
 
    - by Mike Becker <universe@uap-core.de> [Mon, 20 Dec 2021 11:58:36 +0100] rev 478
 
    - add more nonnull attributes
This also changes the contract for last/first in the sense that these
functions now also require a valid pointer. 
    - Mon, 20 Dec 2021 11:26:39 +0100
 
    - by Mike Becker <universe@uap-core.de> [Mon, 20 Dec 2021 11:26:39 +0100] rev 477
 
    - add more explicit documentation to cx_linked_list_remove()
also require nonnull node argument 
    - Mon, 20 Dec 2021 11:17:06 +0100
 
    - by Mike Becker <universe@uap-core.de> [Mon, 20 Dec 2021 11:17:06 +0100] rev 476
 
    - change contract of cx_linked_list_remove()
also use cx_linked_list_remove() in high level API 
    - Sat, 04 Dec 2021 17:38:23 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sat, 04 Dec 2021 17:38:23 +0100] rev 475
 
    - add cx_linked_list_first() + cx_linked_list_prepend()
removes concatenating behavior of cx_linked_list_add() 
    - Sat, 09 Oct 2021 11:12:48 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 09 Oct 2021 11:12:48 +0200] rev 474
 
    - remove cxListLast (can be realized via cxListAt and index=size-1)
 
    - Fri, 08 Oct 2021 19:47:31 +0200
 
    - by Mike Becker <universe@uap-core.de> [Fri, 08 Oct 2021 19:47:31 +0200] rev 473
 
    - add cx_linked_list_{prev, remove, reverse}
changes assertions for some low level methods (loc_next is now always mandatory) 
    - Fri, 08 Oct 2021 18:58:49 +0200
 
    - by Mike Becker <universe@uap-core.de> [Fri, 08 Oct 2021 18:58:49 +0200] rev 472
 
    - move dereference operation into macro
 
    - Tue, 05 Oct 2021 16:22:48 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 05 Oct 2021 16:22:48 +0200] rev 471
 
    - add new ucx_list_sort test
 
    - Wed, 06 Oct 2021 14:24:52 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 06 Oct 2021 14:24:52 +0200] rev 470
 
    - add tree.h to list of headers
 
    - Wed, 06 Oct 2021 14:10:19 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 06 Oct 2021 14:10:19 +0200] rev 469
 
    - add high level list sort and inlines method invocation functions
 
    - Tue, 05 Oct 2021 16:33:11 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 05 Oct 2021 16:33:11 +0200] rev 468
 
    - add cx_linked_list_sort()
 
    - Tue, 05 Oct 2021 13:04:20 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 05 Oct 2021 13:04:20 +0200] rev 467
 
    - remove unused cxLinkedListRecalculateSize()
It is not clear what this function was ever supposed to do. 
    - Tue, 05 Oct 2021 13:03:45 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 05 Oct 2021 13:03:45 +0200] rev 466
 
    - add special linked list implementation for storing pointers