changelog
    
    
    - Sat, 15 Jul 2017 22:36:29 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 15 Jul 2017 22:36:29 +0200] rev 245
 
    - adds AVL predecessor and successor functions
 
    - Sat, 15 Jul 2017 20:46:18 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 15 Jul 2017 20:46:18 +0200] rev 244
 
    - adds const qualifiers to compare, distance and copy function signatures
 
    - Sat, 15 Jul 2017 19:20:06 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 15 Jul 2017 19:20:06 +0200] rev 243
 
    - adds distance function and ucx_avl_find_node()
 
    - Mon, 06 Mar 2017 16:22:42 +0100
 
    - by Mike Becker <universe@uap-core.de> [Mon, 06 Mar 2017 16:22:42 +0100] rev 242
 
    - safe one multiplication in overflow check for mempool_chcap()
 
    - Mon, 06 Mar 2017 16:09:42 +0100
 
    - by Mike Becker <universe@uap-core.de> [Mon, 06 Mar 2017 16:09:42 +0100] rev 241
 
    - removes unused ucx_mempool_clamp() and changes storage behavior of mempool to increase the capacity by a factor of two
 
    - Mon, 06 Mar 2017 15:37:40 +0100
 
    - by Mike Becker <universe@uap-core.de> [Mon, 06 Mar 2017 15:37:40 +0100] rev 240
 
    - ucx_mempool_free() aborts execution instead of just exiting on failure
 
    - Mon, 27 Feb 2017 17:25:36 +0100
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Mon, 27 Feb 2017 17:25:36 +0100] rev 239
 
    - fixes integer overflow in ucx_buffer_extract
 
    - Mon, 27 Feb 2017 11:45:31 +0100
 
    - by Mike Becker <universe@uap-core.de> [Mon, 27 Feb 2017 11:45:31 +0100] rev 238
 
    - fixes major bug in construction of KMP prefix table for strstr()
 
    - Thu, 23 Feb 2017 15:25:26 +0100
 
    - by Mike Becker <universe@uap-core.de> [Thu, 23 Feb 2017 15:25:26 +0100] rev 237
 
    - further performance tweaks to sstrstr() function
 
    - Thu, 23 Feb 2017 14:30:12 +0100
 
    - by Mike Becker <universe@uap-core.de> [Thu, 23 Feb 2017 14:30:12 +0100] rev 236
 
    - improves sstrstr function by using KMP string search algorithm
 
    - Mon, 20 Feb 2017 17:28:58 +0100
 
    - by Mike Becker <universe@uap-core.de> [Mon, 20 Feb 2017 17:28:58 +0100] rev 235
 
    - reduces amount of realloc calls in sstrsplit
 
    - Mon, 20 Feb 2017 17:12:14 +0100
 
    - by Mike Becker <universe@uap-core.de> [Mon, 20 Feb 2017 17:12:14 +0100] rev 234
 
    - adds an optimization for one-byte delimiters to sstrsplit (will take effect after planned reimplementation of sstrstr)
 
    - Mon, 20 Feb 2017 16:57:09 +0100
 
    - by Mike Becker <universe@uap-core.de> [Mon, 20 Feb 2017 16:57:09 +0100] rev 233
 
    - reimplementation of sstrsplit
 
    - Mon, 20 Feb 2017 16:04:14 +0100
 
    - by Mike Becker <universe@uap-core.de> [Mon, 20 Feb 2017 16:04:14 +0100] rev 232
 
    - adds new test case for sstrsplit: string ends with delimiter but empty string exceeds list bound
 
    - Mon, 20 Feb 2017 15:25:28 +0100
 
    - by Mike Becker <universe@uap-core.de> [Mon, 20 Feb 2017 15:25:28 +0100] rev 231
 
    - improves handling of special cases delimiter size >= string size in sstrsplit
 
    - Fri, 16 Dec 2016 23:22:18 +0100
 
    - by Mike Becker <universe@uap-core.de> [Fri, 16 Dec 2016 23:22:18 +0100] rev 230
 
    - adds missing stdint.h include for int32_t + fixes possible implicit const cast overflow + adds support for DESTDIR variable in Makefile
 
    - Fri, 18 Nov 2016 15:33:58 +0100
 
    - by Mike Becker <universe@uap-core.de> [Fri, 18 Nov 2016 15:33:58 +0100] rev 229
 
    - removes ucx_list_prepend_once() - this was a big mistake....
 
    - Fri, 18 Nov 2016 15:17:04 +0100
 
    - by Mike Becker <universe@uap-core.de> [Fri, 18 Nov 2016 15:17:04 +0100] rev 228
 
    - adds ucx_list_append_once() and ucx_list_prepend_once()
 
    - Thu, 13 Oct 2016 16:25:21 +0200
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Thu, 13 Oct 2016 16:25:21 +0200] rev 227
 
    - fixes memory leak in test_ucx_buffer_eof
 
    - Thu, 08 Sep 2016 16:39:45 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 08 Sep 2016 16:39:45 +0200] rev 226
 
    - adds web documentation to project
 
    - Thu, 08 Sep 2016 15:12:56 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 08 Sep 2016 15:12:56 +0200] rev 225
 
    - updates documenting comments
 
    - Thu, 08 Sep 2016 12:04:01 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 08 Sep 2016 12:04:01 +0200] rev 224
 
    - documents UCX_STREAM_COPY_BUFSIZE
 
    - Wed, 07 Sep 2016 12:41:30 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 07 Sep 2016 12:41:30 +0200] rev 223
 
    - fixes ucx_sprintf macro and adds tests for sprintf and bprintf
 
    - Wed, 07 Sep 2016 12:26:01 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 07 Sep 2016 12:26:01 +0200] rev 222
 
    - changes ucx_stream_Xcopy API
 
    - Wed, 07 Sep 2016 11:32:22 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 07 Sep 2016 11:32:22 +0200] rev 221
 
    - removes superfluous  UCX_VERSION macro
 
    - Tue, 23 Aug 2016 12:41:04 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 23 Aug 2016 12:41:04 +0200] rev 220
 
    - fixes UCX_FOREACH documentation
 
    - Fri, 11 Mar 2016 18:06:27 +0100
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Fri, 11 Mar 2016 18:06:27 +0100] rev 219
 
    - fixed misaligned memory access in test_ucx_buffer_write
 
    - Fri, 26 Feb 2016 16:33:04 +0100
 
    - by Mike Becker <universe@uap-core.de> [Fri, 26 Feb 2016 16:33:04 +0100] rev 218
 
    - fixed further usages of SIZE_MAX
 
    - Fri, 26 Feb 2016 16:22:20 +0100
 
    - by Mike Becker <universe@uap-core.de> [Fri, 26 Feb 2016 16:22:20 +0100] rev 217
 
    - removed dependency to stdint.h in stack header
 
    - Fri, 26 Feb 2016 16:00:18 +0100
 
    - by Mike Becker <universe@uap-core.de> [Fri, 26 Feb 2016 16:00:18 +0100] rev 216
 
    - added casts for mallocs in AVL implementation (to satisfy c++ compiler)
 
    - Fri, 26 Feb 2016 14:59:52 +0100
 
    - by Mike Becker <universe@uap-core.de> [Fri, 26 Feb 2016 14:59:52 +0100] rev 215
 
    - removed some implementation details from documentation + fixed ucx_buffer_write doc
 
    - Tue, 27 Oct 2015 15:29:34 +0100
 
    - by Mike Becker <universe@uap-core.de> [Tue, 27 Oct 2015 15:29:34 +0100] rev 214
 
    - added sstrstr() function + improved sstrsplit variants by using sstrprefix()
 
    - Mon, 26 Oct 2015 14:09:45 +0100
 
    - by Mike Becker <universe@uap-core.de> [Mon, 26 Oct 2015 14:09:45 +0100] rev 213
 
    - added important test case to sstrsplit and fixed bug with consecutively occurring delimiters + fixed build system not linking test binary with newest library build
 
    - Thu, 22 Oct 2015 11:35:40 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 22 Oct 2015 11:35:40 +0200] rev 212
 
    - fixed name of ucx_list_free_content()
 
    - Wed, 21 Oct 2015 16:32:30 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 21 Oct 2015 16:32:30 +0200] rev 211
 
    - added ucx_list_free_contents()
 
    - Thu, 15 Oct 2015 16:52:53 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 15 Oct 2015 16:52:53 +0200] rev 210
 
    - added sstrlower / sstrupper variants
 
    - Thu, 15 Oct 2015 14:59:25 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 15 Oct 2015 14:59:25 +0200] rev 209
 
    - moved ucx_destructor type to ucx.h and added destructor argument to ucx_map_free_content
 
    - Thu, 15 Oct 2015 14:21:38 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 15 Oct 2015 14:21:38 +0200] rev 208
 
    - added convenience function ucx_map_free_contents()
 
    - Thu, 15 Oct 2015 12:39:50 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 15 Oct 2015 12:39:50 +0200] rev 207
 
    - optimized ucx_map_clear (noop for count == 0)
 
    - Thu, 15 Oct 2015 12:34:10 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 15 Oct 2015 12:34:10 +0200] rev 206
 
    - added ucx_map_clean()
 
    - Tue, 19 May 2015 17:01:28 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 19 May 2015 17:01:28 +0200] rev 205
 
    - improved avl function names
 
    - Tue, 19 May 2015 16:47:54 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 19 May 2015 16:47:54 +0200] rev 204
 
    - better and better and better AVL API
 
    - Mon, 18 May 2015 20:39:04 +0200
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Mon, 18 May 2015 20:39:04 +0200] rev 203
 
    - added 1 assert in ucx_avl_remove tests and fixed source code formatting
 
    - Mon, 18 May 2015 20:32:29 +0200
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Mon, 18 May 2015 20:32:29 +0200] rev 202
 
    - fixed bug in ucx_avl_remove
 
    - Mon, 18 May 2015 20:17:16 +0200
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Mon, 18 May 2015 20:17:16 +0200] rev 201
 
    - extended ucx_avl_remove tests
 
    - Mon, 18 May 2015 19:52:03 +0200
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Mon, 18 May 2015 19:52:03 +0200] rev 200
 
    - added ucx_avl_remove tests
 
    - Mon, 18 May 2015 19:49:03 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 18 May 2015 19:49:03 +0200] rev 199
 
    - added ucx_avl_count
 
    - Mon, 18 May 2015 19:12:32 +0200
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Mon, 18 May 2015 19:12:32 +0200] rev 198
 
    - added test for ucx_avl_put
 
    - Mon, 18 May 2015 18:42:45 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 18 May 2015 18:42:45 +0200] rev 197
 
    - fuck -Wparentheses
 
    - Mon, 18 May 2015 18:39:19 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 18 May 2015 18:39:19 +0200] rev 196
 
    - added free() to AVL tree implementation + use UcxAllocator
 
    - Mon, 18 May 2015 12:54:18 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 18 May 2015 12:54:18 +0200] rev 195
 
    - added AVL tree implementation - TODO: free memory + test cases
 
    - Sun, 17 May 2015 18:32:41 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 17 May 2015 18:32:41 +0200] rev 194
 
    - finalized AVL tree interface + added implementation skeleton + fixed ucx_ptrcmp()
 
    - Sun, 17 May 2015 17:59:07 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 17 May 2015 17:59:07 +0200] rev 193
 
    - defined AVL tree functional interface
 
    - Sun, 17 May 2015 17:31:32 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 17 May 2015 17:31:32 +0200] rev 192
 
    - updated copyright notice + added files for upcoming AVL tree implementation
 
    - Sat, 04 Apr 2015 19:02:15 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 04 Apr 2015 19:02:15 +0200] rev 191
 
    - fuck_
 
    - Sat, 04 Apr 2015 18:58:24 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 04 Apr 2015 18:58:24 +0200] rev 190
 
    - added ucx_sprintf macro
 
    - Tue, 31 Mar 2015 10:17:36 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 31 Mar 2015 10:17:36 +0200] rev 189
 
    - sstrtrim now uses isspace()
 
    - Mon, 28 Jul 2014 15:10:22 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 28 Jul 2014 15:10:22 +0200] rev 188
 
    - fixed doc
 
    - Mon, 28 Jul 2014 15:02:17 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 28 Jul 2014 15:02:17 +0200] rev 187
 
    - fixed stack tests to work with 4-byte-alignment + fixed logging tests
 
    - Mon, 28 Jul 2014 14:44:06 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 28 Jul 2014 14:44:06 +0200] rev 186
 
    - fixed logging tests for mingw
 
    - Mon, 28 Jul 2014 14:36:25 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 28 Jul 2014 14:36:25 +0200] rev 185
 
    - added stack implementation + added g++ config and added some fixes for C++
 
    - Mon, 21 Jul 2014 13:18:32 +0200
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Mon, 21 Jul 2014 13:18:32 +0200] rev 184
 
    - added some string tests
 
    - Mon, 21 Jul 2014 13:04:57 +0200
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Mon, 21 Jul 2014 13:04:57 +0200] rev 183
 
    - added sstrcat documentation
 
    - Mon, 14 Jul 2014 16:54:10 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 14 Jul 2014 16:54:10 +0200] rev 182
 
    - merged sstrcat function