changelog
    
    
    - 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)
 
    - Wed, 09 May 2018 15:04:15 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 09 May 2018 15:04:15 +0200] rev 289
 
    - adds ucx_buffer_to_sstr() macro
 
    - Tue, 08 May 2018 12:49:56 +0200
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Tue, 08 May 2018 12:49:56 +0200] rev 288
 
    - makes sstrcat and sstrnlen scstr_t compatible
 
    - Thu, 03 May 2018 10:44:33 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 03 May 2018 10:44:33 +0200] rev 287
 
    - adds ucx_avl_free_content() function and documentation in modules.md
 
    - Thu, 03 May 2018 10:09:49 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 03 May 2018 10:09:49 +0200] rev 286
 
    - adds distance functions for integers as utils
 
    - Thu, 03 May 2018 09:49:38 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 03 May 2018 09:49:38 +0200] rev 285
 
    - adds ucx_longintcmp() compare function
 
    - Thu, 03 May 2018 09:26:06 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 03 May 2018 09:26:06 +0200] rev 284
 
    - introduces macro for library version, s.t. both version numbers can be changed in configure.ac
 
    - Wed, 02 May 2018 21:45:52 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 02 May 2018 21:45:52 +0200] rev 283
 
    - adds more convenience macros for sstr
This commit also increases the UCX version number towards the next release.
- New product version: 1.1
- New library version: 2.0.1 - we are backwards, but not forward compatible. 
    - Wed, 02 May 2018 20:55:23 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 02 May 2018 20:55:23 +0200] rev 282
 
    - minor formatting fix in modules.md
 
    - Wed, 02 May 2018 19:16:58 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 02 May 2018 19:16:58 +0200] rev 281
 
    - doc: adds ucx_sprintf() and ucx_bprintf() samples + fixes leftmenu
 
    - Wed, 02 May 2018 18:47:22 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 02 May 2018 18:47:22 +0200] rev 280
 
    - removes artificial anchors from modules.md
 
    - Wed, 02 May 2018 18:42:04 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 02 May 2018 18:42:04 +0200] rev 279
 
    - doc: MWE for ucx_stream_copy()
 
    - Wed, 02 May 2018 18:10:00 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 02 May 2018 18:10:00 +0200] rev 278
 
    - tell the user how allocation of property values works
 
    - Wed, 02 May 2018 16:14:40 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 02 May 2018 16:14:40 +0200] rev 277
 
    - makes destructor functions for *_free_content() optional + more documentation for UcxProperties
 
    - Sun, 01 Apr 2018 09:51:01 +0200
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Sun, 01 Apr 2018 09:51:01 +0200] rev 276
 
    - adapts sstrtrim, sstrsplit, sstrcmp and sstrstr to new const string API
 
    - Sun, 11 Mar 2018 13:43:07 +0100
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Sun, 11 Mar 2018 13:43:07 +0100] rev 275
 
    - adds scstr_t struct for const strings and adapts some string functions
 
    - Tue, 23 Jan 2018 19:23:34 +0100
 
    - by Mike Becker <universe@uap-core.de> [Tue, 23 Jan 2018 19:23:34 +0100] rev 274
 
    - Tag as version 1.0.1
 
    - Sun, 21 Jan 2018 14:10:59 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 21 Jan 2018 14:10:59 +0100] rev 273
 
    - fixes return value for multiplication with zero in ucx_szmul
 
    - Sun, 21 Jan 2018 10:57:32 +0100
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Sun, 21 Jan 2018 10:57:32 +0100] rev 272
 
    - adds integer overflow checks to sstrlen and sstrcat
 
    - Sun, 21 Jan 2018 10:14:47 +0100
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Sun, 21 Jan 2018 10:14:47 +0100] rev 271
 
    - makes default_allocator static
 
    - Sun, 21 Jan 2018 10:13:21 +0100
 
    - by Olaf Wintermann <olaf.wintermann@gmail.com> [Sun, 21 Jan 2018 10:13:21 +0100] rev 270
 
    - adds integer overflow checks