changelog
    
    
    - Mon, 30 Dec 2019 09:13:51 +0100
 
    - by Mike Becker <universe@uap-core.de> [Mon, 30 Dec 2019 09:13:51 +0100] rev 385
 
    - fix: missing test header files in make dist target
 
    - Sun, 29 Dec 2019 20:21:35 +0100
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Sun, 29 Dec 2019 20:21:35 +0100] rev 384
 
    - fixes build on FreeBSD and macOS
 
    - Sun, 29 Dec 2019 19:45:00 +0100
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Sun, 29 Dec 2019 19:45:00 +0100] rev 383
 
    - fixes string replace function in case replmax is 0
 
    - Sun, 29 Dec 2019 16:04:34 +0100
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Sun, 29 Dec 2019 16:04:34 +0100] rev 382
 
    - adds more sstrreplace tests
 
    - Sun, 29 Dec 2019 13:39:36 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 29 Dec 2019 13:39:36 +0100] rev 381
 
    - adds CHANGELOG
 
    - Sun, 29 Dec 2019 12:52:56 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 29 Dec 2019 12:52:56 +0100] rev 380
 
    - fixes another leak in string replace function
 
    - Sun, 29 Dec 2019 11:30:39 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 29 Dec 2019 11:30:39 +0100] rev 379
 
    - fix: index buffer in string replace was not freed
 
    - Sun, 29 Dec 2019 11:29:17 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 29 Dec 2019 11:29:17 +0100] rev 378
 
    - adds string replace functions
 
    - Fri, 27 Dec 2019 11:48:55 +0100
 
    - by Mike Becker <universe@uap-core.de> [Fri, 27 Dec 2019 11:48:55 +0100] rev 377
 
    - adds install target for cmake builds
 
    - Fri, 20 Dec 2019 14:44:50 +0100
 
    - by Mike Becker <universe@uap-core.de> [Fri, 20 Dec 2019 14:44:50 +0100] rev 376
 
    - fixes logging of absolute paths in ucx_logger_logf()
 
    - Fri, 20 Dec 2019 14:29:41 +0100
 
    - by Mike Becker <universe@uap-core.de> [Fri, 20 Dec 2019 14:29:41 +0100] rev 375
 
    - adds proper cmake build targets
 
    - Thu, 19 Dec 2019 19:58:41 +0100
 
    - by Mike Becker <universe@uap-core.de> [Thu, 19 Dec 2019 19:58:41 +0100] rev 374
 
    - adds set operations for UcxMap
 
    - Thu, 19 Dec 2019 18:47:23 +0100
 
    - by Mike Becker <universe@uap-core.de> [Thu, 19 Dec 2019 18:47:23 +0100] rev 373
 
    - adds missing documentation for custom multiplication function
 
    - Thu, 19 Dec 2019 18:40:00 +0100
 
    - by Mike Becker <universe@uap-core.de> [Thu, 19 Dec 2019 18:40:00 +0100] rev 372
 
    - adds very simple cmake wrapper
 
    - Sun, 24 Nov 2019 17:57:25 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 24 Nov 2019 17:57:25 +0100] rev 371
 
    - adds set operations to UcxList
 
    - Thu, 07 Nov 2019 10:43:31 +0100
 
    - by Mike Becker <universe@uap-core.de> [Thu, 07 Nov 2019 10:43:31 +0100] rev 370
 
    - updates the web doc for array
 
    - Thu, 07 Nov 2019 10:10:36 +0100
 
    - by Mike Becker <universe@uap-core.de> [Thu, 07 Nov 2019 10:10:36 +0100] rev 369
 
    - removes some bugs by redesigning the array API
 
    - Wed, 06 Nov 2019 21:01:25 +0100
 
    - by Mike Becker <universe@uap-core.de> [Wed, 06 Nov 2019 21:01:25 +0100] rev 368
 
    - removes c11 default again and leave the choice to the user
 
    - Wed, 06 Nov 2019 20:34:54 +0100
 
    - by Mike Becker <universe@uap-core.de> [Wed, 06 Nov 2019 20:34:54 +0100] rev 367
 
    - fix: configure.ac
 
    - Wed, 06 Nov 2019 16:27:54 +0100
 
    - by Mike Becker <universe@uap-core.de> [Wed, 06 Nov 2019 16:27:54 +0100] rev 366
 
    - adds testcase to uncover a bug in ucx_array_append()
 
    - Sun, 03 Nov 2019 17:03:10 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 03 Nov 2019 17:03:10 +0100] rev 365
 
    - fix: missing documentation for first param in ucx_array_init_a()
 
    - Sun, 03 Nov 2019 16:34:29 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 03 Nov 2019 16:34:29 +0100] rev 364
 
    - adds case independent versions of sstrprefix() and sstrsuffix()
 
    - Sun, 03 Nov 2019 16:22:46 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 03 Nov 2019 16:22:46 +0100] rev 363
 
    - fixes hard to use documentation in string.h
 
    - Sun, 03 Nov 2019 15:35:29 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 03 Nov 2019 15:35:29 +0100] rev 362
 
    - adds automatic c11 detection to configure.ac
 
    - Sat, 05 Oct 2019 17:07:16 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 05 Oct 2019 17:07:16 +0200] rev 361
 
    - adds missing include for strncasecmp() to avoid an implicit declaration
 
    - Sat, 05 Oct 2019 16:58:16 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 05 Oct 2019 16:58:16 +0200] rev 360
 
    - merges the UcxArray implementation
 
    - Sat, 05 Oct 2019 16:57:06 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 05 Oct 2019 16:57:06 +0200] rev 359
 
    - adjusts the UcxArray documentation to the recent changes
 
    - Thu, 03 Oct 2019 11:16:12 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 03 Oct 2019 11:16:12 +0200] rev 358
 
    - tells libtool to prefer the static library to avoid accidental testing against a previously installed version of ucx
 
    - Thu, 03 Oct 2019 11:15:48 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 03 Oct 2019 11:15:48 +0200] rev 357
 
    - fixes two bugs: clone to uninitialized array and missing return in ucx_array_ensurecap()
 
    - Thu, 03 Oct 2019 10:55:39 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 03 Oct 2019 10:55:39 +0200] rev 356
 
    - changes UcxArray from value to pointer semantics
 
    - Tue, 24 Sep 2019 20:16:00 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 24 Sep 2019 20:16:00 +0200] rev 355
 
    - adds array utility functions for user defined arrays
 
    - Sat, 10 Aug 2019 11:12:49 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 10 Aug 2019 11:12:49 +0200] rev 354
 
    - improves array append/prepend/set interface
 
    - Sat, 10 Aug 2019 09:47:59 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 10 Aug 2019 09:47:59 +0200] rev 353
 
    - renames ucx_array_free() to ucx_array_destroy()
 
    - Sat, 10 Aug 2019 08:47:25 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 10 Aug 2019 08:47:25 +0200] rev 352
 
    - merges master changes
 
    - Sat, 10 Aug 2019 08:46:38 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 10 Aug 2019 08:46:38 +0200] rev 351
 
    - fixes dist_int() function in AVL tests broken on 32 bit platforms
 
    - Sat, 10 Aug 2019 08:45:12 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 10 Aug 2019 08:45:12 +0200] rev 350
 
    - fixes array_equals test (broken on 32 bit platforms)
 
    - Sat, 10 Aug 2019 08:44:36 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 10 Aug 2019 08:44:36 +0200] rev 349
 
    - adds a broader set of compare and distance functions
 
    - Wed, 07 Aug 2019 23:23:58 +0200
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Wed, 07 Aug 2019 23:23:58 +0200] rev 348
 
    - use qsort_s on solaris
 
    - Wed, 07 Aug 2019 21:44:35 +0200
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Wed, 07 Aug 2019 21:44:35 +0200] rev 347
 
    - fixes build on FreeBSD
 
    - Wed, 07 Aug 2019 21:20:08 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 07 Aug 2019 21:20:08 +0200] rev 346
 
    - fixes #ifdefs to be sure no redefine can ever happen
 
    - Wed, 07 Aug 2019 21:14:58 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 07 Aug 2019 21:14:58 +0200] rev 345
 
    - ucx_array_sort() uses qsort_r(), if available
 
    - Wed, 07 Aug 2019 20:45:21 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 07 Aug 2019 20:45:21 +0200] rev 344
 
    - reverts deletion of tests for ucx_array_at()
 
    - Wed, 07 Aug 2019 19:43:50 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 07 Aug 2019 19:43:50 +0200] rev 343
 
    - adjusts the documentation for ucx_array_sort() to the current plans
 
    - Tue, 06 Aug 2019 16:26:46 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 06 Aug 2019 16:26:46 +0200] rev 342
 
    - removes cumbersome array accessor macros
 
    - Thu, 11 Jul 2019 10:11:43 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 11 Jul 2019 10:11:43 +0200] rev 341
 
    - resets revision number
 
    - Fri, 05 Jul 2019 15:47:57 +0200
 
    - by Mike Becker <universe@uap-core.de> [Fri, 05 Jul 2019 15:47:57 +0200] rev 340
 
    - adds documentation
 
    - Fri, 05 Jul 2019 15:07:43 +0200
 
    - by Mike Becker <universe@uap-core.de> [Fri, 05 Jul 2019 15:07:43 +0200] rev 339
 
    - fixes doxygen doc
 
    - Fri, 05 Jul 2019 15:02:04 +0200
 
    - by Mike Becker <universe@uap-core.de> [Fri, 05 Jul 2019 15:02:04 +0200] rev 338
 
    - adjusts library version
 
    - Thu, 04 Jul 2019 22:32:03 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 04 Jul 2019 22:32:03 +0200] rev 337
 
    - adds ucx_array_set()
 
    - Thu, 04 Jul 2019 22:23:15 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 04 Jul 2019 22:23:15 +0200] rev 336
 
    - implements ucx_array_sort()
 
    - Thu, 04 Jul 2019 21:31:45 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 04 Jul 2019 21:31:45 +0200] rev 335
 
    - fixes inappropriate size datatype in list merge sort
 
    - Thu, 04 Jul 2019 20:07:31 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 04 Jul 2019 20:07:31 +0200] rev 334
 
    - adds array interface and tests
 
    - Fri, 28 Dec 2018 17:20:23 +0100
 
    - by Mike Becker <universe@uap-core.de> [Fri, 28 Dec 2018 17:20:23 +0100] rev 333
 
    - fixes an url typo which survived surprisingly long
 
    - Fri, 28 Dec 2018 17:09:05 +0100
 
    - by Mike Becker <universe@uap-core.de> [Fri, 28 Dec 2018 17:09:05 +0100] rev 332
 
    - Added tag v2.0 for changeset 3b985a4eb05b
 
    - Sun, 07 Oct 2018 09:00:08 +0200
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Sun, 07 Oct 2018 09:00:08 +0200] rev 331
 
    - fixes ucx_szmul definition for gcc < 5
 
    - Fri, 28 Sep 2018 21:47:30 +0200
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Fri, 28 Sep 2018 21:47:30 +0200] rev 330
 
    - adds some additional avl tree tests
 
    - Wed, 22 Aug 2018 14:39:24 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 22 Aug 2018 14:39:24 +0200] rev 329
 
    - adds Eclipse hidden files to .hgignore
 
    - Thu, 21 Jun 2018 16:10:19 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 21 Jun 2018 16:10:19 +0200] rev 328
 
    - makes g++ happy again
 
    - Thu, 21 Jun 2018 16:00:37 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 21 Jun 2018 16:00:37 +0200] rev 327
 
    - UcxMap now separates internal non-const keys from public const keys
This simplifies function calls with constant keys like scstr_t or const char*. 
    - Wed, 30 May 2018 11:13:52 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 30 May 2018 11:13:52 +0200] rev 326
 
    - being more precise on the different required behavior of a destructor function for pooled and non-pooled memory
 
    - Tue, 29 May 2018 11:05:12 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 29 May 2018 11:05:12 +0200] rev 325
 
    - changes sstr shortcut macros s.t. they distinguish sstr_t and scstr_t + add macros which can completely disable the shortcuts
 
    - Tue, 29 May 2018 10:02:55 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 29 May 2018 10:02:55 +0200] rev 324
 
    - fixes logging messages starting with '- ' when no additional information is selected
 
    - Thu, 17 May 2018 11:13:02 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 17 May 2018 11:13:02 +0200] rev 323
 
    - removes deprecated ucx_list_append_once() and ucx_list_prepend_once()
 
    - Wed, 16 May 2018 19:33:31 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 16 May 2018 19:33:31 +0200] rev 322
 
    - Tags finalization of the scstr_t integration.
 
    - Wed, 16 May 2018 19:27:45 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 16 May 2018 19:27:45 +0200] rev 321
 
    - adds scstr_t to modules.md + fixes parenthesis bug in sstrsplit_a macro
 
    - Wed, 16 May 2018 19:01:21 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 16 May 2018 19:01:21 +0200] rev 320
 
    - use 'convert' as more precise term than 'cast' for the conversion from sstr_t to scstr_t
 
    - Wed, 16 May 2018 18:56:44 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 16 May 2018 18:56:44 +0200] rev 319
 
    - unifies naming of sstr_t related and scstr_t related functions
 
    - Wed, 16 May 2018 14:02:59 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 16 May 2018 14:02:59 +0200] rev 318
 
    - adds remaining documentation for the scstr functions
 
    - Wed, 16 May 2018 13:13:33 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 16 May 2018 13:13:33 +0200] rev 317
 
    - overflow of sstrnlen should return SIZE_MAX instead of zero
 
    - Mon, 14 May 2018 19:24:34 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 14 May 2018 19:24:34 +0200] rev 316
 
    - adjusts documentation of UCX string types, converters, and constructors
 
    - Mon, 14 May 2018 18:27:23 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 14 May 2018 18:27:23 +0200] rev 315
 
    - finally removes the underscore of ugliness from ucx_str_cmp() and ucx_str_casecmp()
 
    - Mon, 14 May 2018 18:25:20 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 14 May 2018 18:25:20 +0200] rev 314
 
    - renames int and longint distance and compare functions according to the new scheme
 
    - Mon, 14 May 2018 18:23:35 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 14 May 2018 18:23:35 +0200] rev 313
 
    - renames ucx_doublecmp() and ucx_floatcmp() to ucx_cmp_double() and ucx_cmp_float()
 
    - Mon, 14 May 2018 18:20:56 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 14 May 2018 18:20:56 +0200] rev 312
 
    - renames ucx_ptrcmp() to ucx_cmp_ptr()
 
    - Mon, 14 May 2018 18:19:16 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 14 May 2018 18:19:16 +0200] rev 311
 
    - renames ucx_memcmp() to ucx_cmp_mem()
 
    - Mon, 14 May 2018 18:16:12 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 14 May 2018 18:16:12 +0200] rev 310
 
    - renames ucx_sstrcmp() to ucx_cmp_sstr()
 
    - Mon, 14 May 2018 18:13:03 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 14 May 2018 18:13:03 +0200] rev 309
 
    - renames ucx_strncmp() to ucx_cmp_strn()
 
    - Mon, 14 May 2018 18:12:14 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 14 May 2018 18:12:14 +0200] rev 308
 
    - renames ucx_strcmp() to ucx_cmp_str()
 
    - Mon, 14 May 2018 17:58:06 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 14 May 2018 17:58:06 +0200] rev 307
 
    - closes constsstr branch
 
    - Mon, 14 May 2018 17:56:03 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 14 May 2018 17:56:03 +0200] rev 306
 
    - merges constsstr branch
 
    - Mon, 14 May 2018 15:58:51 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 14 May 2018 15:58:51 +0200] rev 305
 
    - Version 1.1 (library version 2:0:1).
 
    - Mon, 14 May 2018 13:15:32 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 14 May 2018 13:15:32 +0200] rev 304
 
    - fixes typo in modules.md
 
    - Mon, 14 May 2018 13:13:36 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 14 May 2018 13:13:36 +0200] rev 303
 
    - adds documentation for ucx_szmul and 32 bit support
 
    - Mon, 14 May 2018 12:54:37 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 14 May 2018 12:54:37 +0200] rev 302
 
    - comprehensive code example for the memory pool
 
    - Sun, 13 May 2018 17:34:06 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 13 May 2018 17:34:06 +0200] rev 301
 
    - documentation for the UcxStack
 
    - Sun, 13 May 2018 07:13:09 +0200
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Sun, 13 May 2018 07:13:09 +0200] rev 300
 
    - completes conversion to scstr
 
    - Sat, 12 May 2018 14:56:17 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 12 May 2018 14:56:17 +0200] rev 299
 
    - adjusts code sample for UcxMap
 
    - Sat, 12 May 2018 14:50:09 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 12 May 2018 14:50:09 +0200] rev 298
 
    - adds a code sample for UcxMap
 
    - Sat, 12 May 2018 14:13:53 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 12 May 2018 14:13:53 +0200] rev 297
 
    - documentation for the testing framework
 
    - Sat, 12 May 2018 13:57:12 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 12 May 2018 13:57:12 +0200] rev 296
 
    - fixes logger test case
 
    - Fri, 11 May 2018 19:48:19 +0200
 
    - by Mike Becker <universe@uap-core.de> [Fri, 11 May 2018 19:48:19 +0200] rev 295
 
    - documents (and fixes!) the UcxLogger
 
    - Fri, 11 May 2018 18:46:31 +0200
 
    - by Mike Becker <universe@uap-core.de> [Fri, 11 May 2018 18:46:31 +0200] rev 294
 
    - example code for the usage of a UcxList
 
    - Fri, 11 May 2018 18:35:08 +0200
 
    - by Mike Becker <universe@uap-core.de> [Fri, 11 May 2018 18:35:08 +0200] rev 293
 
    - adds deprecation notice for *_append/prepend_once()
 
    - Fri, 11 May 2018 18:13:54 +0200
 
    - by Mike Becker <universe@uap-core.de> [Fri, 11 May 2018 18:13:54 +0200] rev 292
 
    - adds ucx_sstrcmp() compare function to utils.h
 
    - Fri, 11 May 2018 17:40:16 +0200
 
    - by Mike Becker <universe@uap-core.de> [Fri, 11 May 2018 17:40:16 +0200] rev 291
 
    - adds ucx_list_prepend_once() and ucx_list_prepend_once_a()
 
    - Wed, 09 May 2018 20:15:10 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 09 May 2018 20:15:10 +0200] rev 290
 
    - adds new shift operations for UcxBuffer (including tests and a usage example in modules.md)