optimize cxJsonObjGet() part 1 - binary search default tip

add missing convenience macros for sorted insert with array reallocator

improve coverage metrics

change coverage tool from gcov to gcovr

implement floating point string to number conversions

add cx_vcmp_* family of functions

implement string to integer conversions

avoid copying the filled data in the json parser when possible - fixes #530

add references between both variants of the properties fill function

downgrades the severity of the advice in cxPropertiesFilln() from attention to remark

add tests for JSON create functions and fix a bug in cxJsonCreateCxString()

add documentation for json value creation API

fix cxJsonObjPut() for existing keys

add implementation for creating new json values

fix missing definition of SSIZE_MAX in windows

add temporary implementations for string to number and first test cases

fix another missing free() in json tests

make cx_strcast() also support cxstring

fix cx_hash_key_cxstr() being a macro

implement all string to number conversions that are just wrappers

don't trust that size_t always has word width

fix datatype in long long variants

add attributes to string to number conversion functions

add documentation for string to number conversion functions

add function prototypes and macros for string conversion function

add missing libc string.h include

fix missing errno.h include

add some more overflow treatment and make sure to set errno properly

upgrade Doxyfile

fix outdated documentation in properties.h

generify cxJsonObjGet() - fixes #525

add missing documentation for struct cx_properties_config_s

add missing documentation in iterator.h

add missing documentation of CX_WORDSIZE

add cxJsonArrIter() - fixes #524

fix memory leaks in json tests

rework of properties parser - fixes #529 and resolves #458

add cxBufferAppend() - fixes #534

add advice to set the size of a buffer initialized with existing data

add copy-on-extend feature to UCX buffer - fixes #533

add CHANGELOG entry for issue #431

merge remote changes

add CHANGELOG entry for issue #531

add copy-on-write feature to UCX buffer - fixes #531

fix out of range access in test on platforms which are actually shrinking the buffer

add shortcut to binary search when array size is one

add szmul.c to msvc project

fix wrong "variant" of zero/NULL/false

add explicit casts to silence warnings

fix compilation for compilers which don't set __WORDSIZE

add check for C23 compatibility

add sys/types.h to the common includes to fix a problem with ssize_t

increase test coverage

fix number parser not detecting integers out of range

add cxJsonReset() and cxPropertiesReset()

add documentation - resolves #431

and changelog entry for issue #523

add fake doc to mute doxygen complaints

minor cleanup

json: enable multiple subsequent fills - relates to #431

fix that cxBufferSeek() cannot move pos past the end - fixes #523

fix stupid initialization of target buffer in tests where no flush target is used

add cxBufferTerminate()

make cxBufferEof() return a bool

add test case to cover new branches inside cx_strcat_ma()

add status codes to json parser - relates to #431

change cx_strcat variants to allow handling of ENOMEM

simplify how the json parser works

add cx_array_reserve() and several more array convenience functions

make cx_array_copy() support different types for size/capacity - fixes #492

fix missing cxMempoolFree in json allocator test

add support for allocators to the json parser

fix cx_array_advanced_realloc to handle reallocation of NULL arrays, consistent with standard realloc behavior

remove map detach function - fixes #487

make names of destroy and free functions consistent - fixes #484

missing comma in map iterator docs

cxBufferFree() now calls cxBufferDestroy()

automatically disable szmul builtin when testing with coverage

improve consistency for allocator arguments - fixes #485

make ucx C++ compatible again (and add tests for it) - fixes #486

add configure option for szmul

simplify cx_array_copy() - fixes #474

major refactoring of attributes

let cxMapDestroy() ignore NULL as any free()-like function should do

instruct Doxygen to expand all macros

add -c flag to ARFLAGS to suppress diagnostic message on stderr

add script to invoke make check with different configurations

remove obsolete reference to previously removed cxPropertiesInput()

fix broken docs target after uwproj update

fix memory leaks in json tests

add test for reading multiple json values

fix missing value_ready reset when returning a CxJsonValue

adds test case for numbers - currently fails due to issue #482

fix copy-pasted parameter name

add UCX string support to cxJsonFill()

add support for UCX strings in cxPropertiesFill()

rename utils.h to streams.h

move szmul to common.h

simplify parsing of numbers

add assertion that triggers when cx_array_copy() stops working for NULL arrays

simplify parsing of array and object elements

treat integers and doubles both as JSON numbers

remove single-member structs

fix test function names not in line with naming convention

add reallocarray() like functions - resolves #468

remove cx_for_n() macro - fixes #467

increase list test coverage - fixes #454

test coverage does not really work with clang

add common.h include to test.h - fixes #464

update build dependencies for json.c

fix map.h C++ inline functions not ported to new collection base class

fix comparing size_t with int

remove cx_swap_ptr()

use cx_array_add() instead of reimplementing the magic

add function to create array reallocator that can move arrays from stack to heap

add msvc support

remove dynamic arrays which are not supported by msvc

fix missing pointer initializations

add cast from size_t to unsigned to avoid warnings from certain compilers

fix compile regression on some platforms after removing sys/types.h include

fix cx_mempool_free crash if ptr is null

avoid state buffer allocation for JSON with reasonable nesting depth

add cx_nmemb() utility

make both gcc and clang happy with how cx_json_value_nothing is initialized

fix memory leak in case of json parser errors

use json reader state macros everywhere

fix incomplete json object not resulting in syntax error

fix memory leak in json reader when handling incomplete tokens

add test for parsing json with multiple incomplete tokens

simplify cx_json_value_nothing initialization

add first draft of json implementation - relates to #431

add missing dependencies for test_properties.o

add convenience macro for cx_reallocate to hide the (void**) cast

remove <sys/types.h> include from common.h

add extern "C" to iterator.h

add extern "C" to properties.h

add test coverage for unlinking tree nodes w/o prev pointer

add max depth for tree search - closes #459

fix totally bugged assertion in cxPropertiesUseStack()

add source/sink facility for properties - fixes #430

fix missing parameter doc

fix several survivors of east-const and some missing consts

fix invalid reads when removing linked list nodes

add implementation for the properties parser

add ucx2.1 style interface for a properties parser

also report coverage for header files

make loc_prev in trees optional - fixes #433

update CHANGELOG

add possibility to remove arrays of data and retrieve removed data

add cxTreeSetParent()

add functions to start iteration in a subtree

add missing details for 100% test coverage in tree.c

add test for creating an iterator over an empty tree

simplify tree class

implement cxTreeDestroyNode and cxTreeDestroySubtree - resolves #438

fix missing free() in test_array_insert_sorted

fix missing free() in test_tree_add_duplicate_root

fix uninitialized simple_destructor - fixes #443

implement cxTreeRemove() with re-link function

rename cxTreeRemove() to cxTreeRemoveSubtree()

fix bug when removing the root node of a tree

add test for simple destructor in trees - fixes #436

complete implementation of remaining high level tree functions

implement cxTreeInsert family of functions

add cxTreeSubtreeDepth()

implement cxTreeCreate family of functions

add functions to link/unlink nodes manually

downgrade the attention block regarding the auto-register of a simple destructor to a note

more prototypes for tree functions

prototypes for create and destroy functions

add allocator and root node pointer to tree structure

allow find() member function to start in an arbitrary subtree

provide a default tree node layout, but do not make it mandatory

first draft of a class for high level trees

add bounding parameter to cx_tree_add_iter()

fix misleading documentation that could have indicated that an allocator is optional for lists

make all function attributes leading - fixes #425

move all const keywords to the west - fixes #426

apply binary search in cx_array_insert_sorted()

fix for empty arrays

fix documentation

also add a binary search for the supremum

fixes incorrect result from cx_array_binary_search() when searched element is smaller than the entire array

add cx_array_binary_search() - fixes #424

add low level cx_array_insert_sorted() and convenience macros

add missing documentation for cx_list_default_swap() return value

add optimized implementation of insert_sorted for array lists

fix cx_ll_insert_sorted_cmp_func not being thread local

implement optimized sorted insert for linked lists - resolves #415

fix typo in documentation

optimize default insert_sorted implementation

add stupid default implementation for high level insertion sort

add default impl for some list member functions

fix inserting via iterator correctly increases element count

close feature branch feature/tree_add

merge feature/tree_add branch

rework cx_tree_add() API to allow insertion of edge nodes feature/tree_add

remove condition that is always false after recent fix feature/tree_add

fix cx_tree_search() not remembering root as a valid candidate feature/tree_add

cx_tree_add_iter() - optimize check for empty trees feature/tree_add

cx_tree_add() fix missing spec for adding duplicates feature/tree_add

complete cx_tree_add() implementations feature/tree_add

fix return type of cx_tree_node_create_func feature/tree_add

complete specification for tree_add functions feature/tree_add

merge changes from default branch feature/tree_add

change cx_tree_link() from prepending to appending children - fixes #391

fix mixed up arguments for calloc()

add prototypes for cx_tree_add() family of functions feature/tree_add

minor doc fixes

add cxIteratorRef() macro

add missing convenience functions

fix name of collection base member (to avoid base.base)

fix inconsistent use of item_size and elem_size

fix members inherited by macro or include are not documented

simplify iterator structures

fix documentation

issue #389 : add separate function for immutable arrays

add iterator over raw C arrays - closes #389

improves interface of cx_sprintf() variants

implement tree continue - fixes #376

add missing cxTreeVisitorDispose() test

add missing header dependencies

add cx_tree_visitor()

fix another superfluous semicolon...

fix superfluous semicolon

add -lm to ldflags on Solaris

fix build in case CX_SZMUL_BUILTIN is undefined

allow freeing tree nodes on exit - fixes #377

add xml test case for the tree iterator

add visit_on_exit to iterator implementation

add depth assertion to basic tree iterator test

implement basic (enter only) tree iterator

set tree iterator stack pointer to NULL on dispose to avoid accidental double-frees

capitalize cx_array_declare()

vastly simplify tree iterators and add test for creating them

make cx_array_simple_add() automatically take the address of the element

add convenience macros for cx_array_*

commit complicated stuff before simplifying it

remove unnecessary flag_removal function

improve tree iterator struct and add signature for a function that can create an iterator

first draft of a tree iterator

add cx_tree_search() - relates to #165

be honest at least in the lib version

fix missing typedef

declare cx_tree_search_func function pointer

add code documentation for tree functions

update uwproj configure template

remove check that is always true in cx_arl_remove()

rename cx_array_copy_result to just cx_array_result

add cx_array_add() + fix type of cx_array_default_reallocator

add cx_array_default_reallocator

add first basic low level tree functions

update uwproj and check toolchain dependency for coverage flags - fixes #345

fix using warning options with compilers which do not support them - fixes #363

improve program flow - relates to #353

fix unnecessary printf retry when printed string is empty

fix missing va_end() calls

add cx_sprintf() variants - fixes #353

fix assertion failure depending on possibly uninitialized memory

add missing CHANGELOG entries

remove flags to disable SBO in tests - fix #343 fix #358

add constant for reading out strstr sbo size - relates to #343

add constant for reading out printf sbo size - relates to #343

add CX_DISABLE_ARRAY_LIST_SWAP_SBO flag

complete migration of list tests - fixes #342

fix #356 : broken cxListCompare

migrate list create and destroy tests - relates to #342

migrate cxEmptyList tests - relates to #342

fix some broken cleanup

migrate low level linked list tests - relates to #342

use that recent uwproj trims indents in project.xml

update uwproj configure template

fix documentation of reallocator struct

improve output of coverage summary

migrate remaining buffer tests - relates to #342

migrate more buffer tests - relates to #342

generate (release) config.mk if none exists - fixes #350

some text replacements to prepare migration of list tests

begin migration of buffer tests - relates to #342

move coverage flags to make/*.mk files - relates to #345

migrate compare tests - relates to #342

declare cx_compare_func in compare.h - fixes #344

migrate map tests - relates to #342

fix broken CX_TEST_SUBROUTINE - relates to #341

add command to remove outdated coverage data

migrate allocator tests - relates to #342

migrate mempool tests - relates to #342

migrate printf tests - relates to #342

revert the insanely stupid idea to automatically run the test program on default build

fix missing dependencies for test_string.c

migrate string tests - relates to #342

fix accidental generation of cxListIterator() symbol

ignore the intentional use-after-free

add make target to automatically gather coverage info

fix missing LDFLAGS when linking ucxtest

add coverage feature - relates to #342

remove CXX flags that have become unnecessary

migrates self-test for testing allocator - relates to #342

change default make target from 'compile test-compile' to 'check'

migrate hash_key tests - relates to #342

migrate utils tests - relates to #342

bring back UCX test - fixes #341

fix usage of COPYALL in Makefiles

add cxListFindRemove and cx_linked_list_find_node

make cx_cmp_ptr default comparator for pointer lists - relates to #340

add cx_cmp_ptr() - fix #340

add cxBufferReset() - resolves #338

update build instructions

increase version number to 3.1

fix #318 - incorrect link to ucx 3 docs

fix incorrect documentation of cxBufferEof()

fix wrong static lib name in check target

add update-rules script

add an uwproj based install target

replace most of the build system with uwproj

make C++ compiler and pandoc entirely optional

Release 3.0

update CHANGELOG, COPYING, and README v3.0

Release Version 3.0

add release date for UCX 3.0

Added tag v3.0 for changeset b4bd0155f03f

improve the CSV example

some fixes in example code

merge upstream changes

fix typo in mempool.h

change cxMempoolDestroy doc

more doc fixes

fix iterator doc

fix typo in list.h

fix typos in hash_map.h

add overridable macros to the install docs

make streamcopy buffer sizes overridable

unify the list swap SBO sizes

slightly improve CSS

add iterator documentation

add map documentation

add documentation for the lists

add documentation for collection.h

add mempool example

improve how GTest config is passed during builds

improve mempool implementation

add a low-level stdlib-based cx_reallocate()

add docs for the compare.h and printf.h utilities

add web docs for buffer and stream copy

add web documentation for strings

add allocator example

update install instructions for ucx 3.0

add empty sections to features.md

remove deprecated align=center attribute

remove trees from UCX 3.0

fix some typos in UCX 2.1 documentation

update general web documentation structure

add header and footer to list of build dependencies

add missing docs for cxEmptyMap

fix wrong docs for cx_stream_copy()

add missing docs for cx_invoke_destructor()

update Doxyfile to Doxygen 1.9.6

fix const-ness of non-mutating iterator creation for maps

simplify map class structure

fix inconsistent destructor requirements for list and map classes

fix rehash not valid for non-hash-maps

add empty map implementation - fixes #259

fix cxListCompare if-condition

add empty list implementation - fixes #258

improve cx_linked_list_sort() - fixes #257

fix cx_linked_list_sort() not working for empty lists

explicitly set cmake policy CMP0077

add cx_strdup_m() and cx_strdup_ma()

make list find return a negative value when elem not found

fix wrong doc in cxListFind()

add cx_strcat_m() and cx_strcat_ma() for in-place concatenation

add cxHashMapCreateSimple()

fix typo

fix missing controlling-expression for char const*

fix missing const qualifier for allocator

add cxmutstr to the map generics

bring a generic interface to CxMap

simplify CxHashKey

fix typo

serious code formatting problems ;-)

tweak rehash test to achieve missing coverage

add destructor functions for maps - fixes #253

add base collection members to map interface

change CX_STR: use compound literal in C and ctor in C++

add convenience functions for allocating a buffer on the heap

work around some MSC problems

fix common.h include problems - fixes #255

fix wrong operator precedence in destructor macros

add pointer array list tests

reformat code

refactoring of collections to make use of destructors in map implementations

fix initial storage allocation for array lists created with CX_STORE_POINTERS

simplify cx_stream_ncopy()

add stream copy utils - fixes #254

make allocator in cxBufferInit optional

increase test coverage - fixes #250

test coverage for cx_strcmp pointer variants

allow NULL for allocator and comparator

add docs for CX_STORE_POINTERS and remove cxHashMapCreateForPointers()

add CX_STORE_POINTERS special item size for maps

add CX_STORE_POINTERS special "item size" for lists

add unit test for cxListClear + fix destructor functions not always invoked with the correct pointer

fix hashmap iterator skipping the second element in some cases

add cxListClear and fix missing destructor invocations - #241 #246

add cx_hash_key_cxstr() macro

add simple functions for creating lists

add CX_LINKED_LIST_SORT_SBO_SIZE macro

add some asserts

split cxMapRemove() to cxMapRemoveAndGet()

make hashmap store objects instead of pointers by default - fixes #239

add CxListComparator compatible string compare functions

fix gmock being build and gtest and gmock being installed

implement backwards iterator - fixes #238

Automated merge

rename test directory to avoid name clash with Makefile target

fix README showing how tests were run in the automake era

fix last change of mul overflow builtin breaking non-windows compilations

fix code not compiling under windows+mingw

fix wrong types for umul overflow builtins

remove too platform dependent printf tests

implement swap function for list elements - fixes #218

add pointer swap utility

add strtok API - fixes #220

reformat file

#228 make buffer sizes adjustable at compile time

minor fix for testing allocator self-test

add new pointer list wrapper - resolves #234

simplify list class - fixes #236

temporarily remove pointer lists - see #234

add cxListInsertArray() - fixes #224

remove the untrue restriction for the index parameter of cx_array_copy() from the documentation

add printf tests

add attributes to printf functions

change prefix of UCX_PRINTF_BUFSIZE to CX

add utils tests

fix public header destination

tests for compare functions

separate iterators and mutating iterators

#224 add cxListAddArray()

use //-style single line comments everywhere

fix cx_array_copy() unintentionally shrinking the array

#219: fix off-by-one bug in cx_arl_remove()

fix calculation of new capacity in cx_array_copy()

#219: cx_arl_remove short-circuit for last element

#219 array list: implement reverse

#219 array list: implement compare member func

missing const in cxListFind

#219 improve cx_arl_iter_next

#219 array list: implement insert via iterator

#219 array list: implement compare

fix include in array_list.h

#219 array list: add iterator

#219 array list: implement sort

#219 array list: implement find

#219 array list: implement remove

fix typo in enum cx_array_copy_result

#219 array list: implement insert

#219 array list: implement add and at

more custom data for array re-allocator

proposal for a low level array copy

implement array list ctor and dtor

add array list tests

fix typo in compare.h

change hash functions

fix missing const in cx_hash_key signature

use ucx compare function in list tests

add compare functions

east const

#222 add printf-like functions

#217 cover cx_strreplace_a() macro

#217 cover cx_strcat macro

#216 test hashing functions

remove unnecessary code

add test for cxMapClear()

explicitly cast int to char

enclose macro arguments in parenthesis

fix over-optimization of strstr

fix missing zero-termination in strreplace

add zero-termination guarantees

do not use c++ object initialization

use EXPECT_STREQ instead of strcmp

add tests for strupper and strlower

add test coverage for _m variant functions

disallow NULL for cx_str() and cx_mutstr()

add tests and missing implementations for strings

implement strupper and strlower

implement more string functions

more implementations of string functions

start implementing string functions

some function can be macros using the default allocator

wrong position of struct identifier

first proposal for the string header

fix #200 - key contents not compared in cx_hash_map_put()

invert if-condition in preparation for the next bugfix

remove unused variable (return immediately)

#201 - remove dangerous allocator config

#201 - add mempool implementation

remove currently unused ssize_t definition

#170 test cxBufferRead

#170 test cxBufferGet

#184 #170 more thorough flush testing

fix two tests reading one byte too much

fix putc tests to make more sense of the bitwise or

fix obsolete documentation

improve hash key handling

#189 #199 implement and test map rehash

#199 test removing via iterator

fix wrong slot and index numbers

corrects documentation of iterator behavior

add convenience function to make keys from strings

remove unused header

#199 tests for hash map

fix documentation for map iterators

fix kv-pair not initialized

fix missing static inline for map functions

#178 fix that lists of different kind cannot be compared

#189 implement map iterators

#189 basic map implementation

#189 declare basic map functions

#170 test buffer eof

#170 test buffer seek

#184 #170 flush at threshold test

#184 #170 first basic flush test

#184 untested implementation of the flush feature

optimization for buffer write easy cases

#170 no bug never existed

#170 complete write tests for status quo

fix regression: nitems adjusted at the wrong location

#184 start implementation of the flush feature

#170 first basic write tests

fix doc error for cxBufferWrite

#170 add cxBufferClear test

#170 add several more buffer tests

fix cxBufferMinimumCapacity not using the allocator

do not implicitly zero freshly allocated memory

fix cxBufferMinimumCapacity implementation still using additional_bytes

fix erroneous doc for cxBufferShift

#170 first buffer tests

#171 const qualifier and nonnull attributes

#179 improve API for list content destruction

add doc for cx_for_n

simplify destructor signature (but loads more responsibility onto the user)

simplify auto-free contents in lists

remove list destructor

configure clang-tidy to ignore cert-err58-cpp for test code

add [[maybe_unused]] attributed to params of mocked function

add test for cxListCompare

fix memory leak in test data

make cxListMemoryMgmt a linkable symbol

improve testing allocator + add tests for it

migrate list tests to gtest

fix required cast if compiled with C++

migrate tree tests to gtest

test uncovered branch in cxReallocate()

do not use macro for suite name

compile only one single binary for tests

migrate allocator tests to gtest

add googletest framework

#129 - remove test code duplication

#168 - add attributes and const

remove test code duplication for cxListAdd

add setup and teardown functions to test_list.c

fix typo in documentation

add convenience function to configure list memory management

add new destructor API and apply it to CxList

change Doxyfile to ignore __attribute__ and include static inline functions

add allocator support to CxBuffer

do not hide pointers behind typedefs

add cxListInsertAfter() and cxListInsertBefore()

reorder the list test functions

pointer type must be explicit in cx_foreach macro

add cx_foreach macro

add the feature to remove items during iteration

add iterator interface + linked list iterator

hide __attribute__ from compilers that may not support it

simplifies some linked list tests

fix missing cleanup in test_hl_linked_list_from_array

add cxListReverse()

add some const qualifiers

add cxLinkedListFromArray() and cxListCompare()

use c99 bool + add test for low level find

add cx_linked_list_compare() and simplifies some tests

use same doxygen style in all files

add common.h include to all other header files

add ported UCX buffer implementation

add tests for the new low level functions

add several new linked list functions

add cx_linked_list_find()

add linked list tests for cxListAt()

add more nonnull attributes

add more explicit documentation to cx_linked_list_remove()

change contract of cx_linked_list_remove()

add cx_linked_list_first() + cx_linked_list_prepend()

remove cxListLast (can be realized via cxListAt and index=size-1)

add cx_linked_list_{prev, remove, reverse}

move dereference operation into macro

add new ucx_list_sort test support/2.x

add tree.h to list of headers

add high level list sort and inlines method invocation functions

add cx_linked_list_sort()

remove unused cxLinkedListRecalculateSize()

add special linked list implementation for storing pointers

remove redundant documentation for function pointers

add documentation for list.h

change src dir of Doxygen to only include header files

remove obsolete config from Doxyfile

put attributes on separate lines

remove convenience macros

add tests for high level functions

add convenience macros for pointer casts

fix bad start index in cx_ll_node_at()

change cx_linked_list_last() and add a test for it

change test names

remove unused cx_tree_last()

add some documentation and changes some signatures

add __alloc_size__ attribute

make cx_linked_list_class static

improves usage of attributes

minor code changes

implement cx_ll_insert()

implement cx_ll_remove()

remove unnecessary fields from linked list node and simplifies cx_ll_add()

Automated merge

rename test_cx_linked_list_add

remove error handling from tests

add test for cx_linked_list_add

change cxLinkedListCreate() setting all fields instead of calling cxListRecalculateSize()

fix mixed up cases in cx_ll_at()

add high-level function cxListAt()

add function cx_linked_list_at()

implement linked list find

add node destruction in cxLinkedListDestroy()

change inheritance model for lists

add attributes to allocator functions

add option to enable more warnings

Automated merge

implement cx_tree_add_child_node using cx_linked_list_add

add cx_tree_add_child_node tests

add documentation to allocator.h

fix special cases for linked_list_add

Automated merge

implement cx_tree_add_node()

add cx_tree_add_node test

add some low level tree function declarations

implement at least freeing the linked list container

add utility to verify allocations

fix reallocate_null test not used and wrong

change detection of Doxygen

remove public visibility of default allocator class

merge with remote default

add missing quotation marks

remove unnecessary check

fix missing extern "C"

adds cxReallocate()

perform array and list tests in the same test binary (use the same assertions, later)

removes stupid high level wrapper for linked lists + adds test for cxLinkedListCreate

add first test suite to test_linked_list.c

add test config and let the test binary return nonzero on test failures

adds cxLinkedListDestroy prototype

fixes cx_linked_list_add not recalculating end

simplifies linked list descriptor

adds cxLinkedListWrap and cxLinkedListRecalculateSize

removes unnecessary typedefs

adds cxListLast

use C99 flexible array to mark the node's payload

use named fields to access node memory

copy list items when they are added to the list

changes off_t to ptrdiff_t

adds missing assignments for new list node

adds first draft for linked list implementation

removes unnecessary cx_allocator typedef

make cx_allocator_class shared

fixes missing CUnit include dir

high level allocator functions should be real functions, not macros

no C99 comments

add at least a cxFree() call, even if we can't test it

adds allocator interface and default implementation

starts ucx 3.0 development

Added tag v2.1 for changeset 871a8ffe6c9d

merges closed feature/array branch v2.1

closes array branch towards ucx 2.1 release feature/array

adds changelog to html documentation

fix: missing test header files in make dist target

fixes build on FreeBSD and macOS

fixes string replace function in case replmax is 0

adds more sstrreplace tests

adds CHANGELOG

fixes another leak in string replace function

fix: index buffer in string replace was not freed

adds string replace functions

adds install target for cmake builds

fixes logging of absolute paths in ucx_logger_logf()

adds proper cmake build targets

adds set operations for UcxMap

adds missing documentation for custom multiplication function

adds very simple cmake wrapper

adds set operations to UcxList

updates the web doc for array

removes some bugs by redesigning the array API

removes c11 default again and leave the choice to the user

fix: configure.ac

adds testcase to uncover a bug in ucx_array_append()

fix: missing documentation for first param in ucx_array_init_a()

adds case independent versions of sstrprefix() and sstrsuffix()

fixes hard to use documentation in string.h

adds automatic c11 detection to configure.ac

adds missing include for strncasecmp() to avoid an implicit declaration

merges the UcxArray implementation

adjusts the UcxArray documentation to the recent changes feature/array

tells libtool to prefer the static library to avoid accidental testing against a previously installed version of ucx feature/array

fixes two bugs: clone to uninitialized array and missing return in ucx_array_ensurecap() feature/array

changes UcxArray from value to pointer semantics feature/array

adds array utility functions for user defined arrays feature/array

improves array append/prepend/set interface feature/array

renames ucx_array_free() to ucx_array_destroy() feature/array

merges master changes feature/array

fixes dist_int() function in AVL tests broken on 32 bit platforms

fixes array_equals test (broken on 32 bit platforms) feature/array

adds a broader set of compare and distance functions feature/array

use qsort_s on solaris feature/array

fixes build on FreeBSD feature/array

fixes #ifdefs to be sure no redefine can ever happen feature/array

ucx_array_sort() uses qsort_r(), if available feature/array

reverts deletion of tests for ucx_array_at() feature/array

adjusts the documentation for ucx_array_sort() to the current plans feature/array

removes cumbersome array accessor macros feature/array

resets revision number feature/array

adds documentation feature/array

fixes doxygen doc feature/array

adjusts library version feature/array

adds ucx_array_set() feature/array

implements ucx_array_sort() feature/array

fixes inappropriate size datatype in list merge sort feature/array

adds array interface and tests feature/array

fixes an url typo which survived surprisingly long

Added tag v2.0 for changeset 3b985a4eb05b

fixes ucx_szmul definition for gcc < 5 v2.0

adds some additional avl tree tests

adds Eclipse hidden files to .hgignore

makes g++ happy again

UcxMap now separates internal non-const keys from public const keys

being more precise on the different required behavior of a destructor function for pooled and non-pooled memory

changes sstr shortcut macros s.t. they distinguish sstr_t and scstr_t + add macros which can completely disable the shortcuts

fixes logging messages starting with '- ' when no additional information is selected

removes deprecated ucx_list_append_once() and ucx_list_prepend_once()

Tags finalization of the scstr_t integration.

adds scstr_t to modules.md + fixes parenthesis bug in sstrsplit_a macro scstr_t-final

use 'convert' as more precise term than 'cast' for the conversion from sstr_t to scstr_t

unifies naming of sstr_t related and scstr_t related functions

adds remaining documentation for the scstr functions

overflow of sstrnlen should return SIZE_MAX instead of zero

adjusts documentation of UCX string types, converters, and constructors

finally removes the underscore of ugliness from ucx_str_cmp() and ucx_str_casecmp()

renames int and longint distance and compare functions according to the new scheme

renames ucx_doublecmp() and ucx_floatcmp() to ucx_cmp_double() and ucx_cmp_float()

renames ucx_ptrcmp() to ucx_cmp_ptr()

renames ucx_memcmp() to ucx_cmp_mem()

renames ucx_sstrcmp() to ucx_cmp_sstr()

renames ucx_strncmp() to ucx_cmp_strn()

renames ucx_strcmp() to ucx_cmp_str()

closes constsstr branch constsstr

merges constsstr branch

Version 1.1 (library version 2:0:1).

fixes typo in modules.md v1.1

adds documentation for ucx_szmul and 32 bit support

comprehensive code example for the memory pool

documentation for the UcxStack

completes conversion to scstr constsstr

adjusts code sample for UcxMap

adds a code sample for UcxMap

documentation for the testing framework

fixes logger test case

documents (and fixes!) the UcxLogger

example code for the usage of a UcxList

adds deprecation notice for *_append/prepend_once()

adds ucx_sstrcmp() compare function to utils.h

adds ucx_list_prepend_once() and ucx_list_prepend_once_a()

adds new shift operations for UcxBuffer (including tests and a usage example in modules.md)

adds ucx_buffer_to_sstr() macro

makes sstrcat and sstrnlen scstr_t compatible constsstr

adds ucx_avl_free_content() function and documentation in modules.md

adds distance functions for integers as utils

adds ucx_longintcmp() compare function

introduces macro for library version, s.t. both version numbers can be changed in configure.ac

adds more convenience macros for sstr

minor formatting fix in modules.md

doc: adds ucx_sprintf() and ucx_bprintf() samples + fixes leftmenu

removes artificial anchors from modules.md

doc: MWE for ucx_stream_copy()

tell the user how allocation of property values works

makes destructor functions for *_free_content() optional + more documentation for UcxProperties

adapts sstrtrim, sstrsplit, sstrcmp and sstrstr to new const string API constsstr

adds scstr_t struct for const strings and adapts some string functions constsstr

Tag as version 1.0.1

fixes return value for multiplication with zero in ucx_szmul v1.0.1

adds integer overflow checks to sstrlen and sstrcat

makes default_allocator static

adds integer overflow checks

ucx_buffere_getc should return an unsigned char (0-255) or EOF (-1)

removes man dir from clean target of doc makefile

restructures documentation + adds some examples for sstr_t

toc for examples

fixes bad header specification in root Makefile.am

web doc has now proper titles

fixes sourceforge link in doxygen doc

fixes sourceforge link in doxygen doc

UCX release

rename LICENSE to COPYING to be distributed by autoconf v1.0

modules documentation

removes "integration" from documentation

TOC for modules documentation

documentation will now be generated using pandoc

adds support for older automake versions + comments in configure.ac

fixes include path and non-cpp build for test program

removes unnecessary macros from ucx.h + removes the usage of restrict and _Bool completely, instead of defining macros

removes custom make files and adds autoconf support

changes source directory structure in preperation for autotools rollout

updates license

removes unusedFunction check for now (we may add it later to get a further indicator for test coverage)

explicit cast from (void*) for (ucx_memchunk*) to silence a warning

fixes wrong format specifier in test result output

adds cppcheck make target

adds AVL predecessor and successor functions

adds const qualifiers to compare, distance and copy function signatures

adds distance function and ucx_avl_find_node()

safe one multiplication in overflow check for mempool_chcap()

removes unused ucx_mempool_clamp() and changes storage behavior of mempool to increase the capacity by a factor of two

ucx_mempool_free() aborts execution instead of just exiting on failure

fixes integer overflow in ucx_buffer_extract

fixes major bug in construction of KMP prefix table for strstr()

further performance tweaks to sstrstr() function

improves sstrstr function by using KMP string search algorithm

reduces amount of realloc calls in sstrsplit

adds an optimization for one-byte delimiters to sstrsplit (will take effect after planned reimplementation of sstrstr)

reimplementation of sstrsplit

adds new test case for sstrsplit: string ends with delimiter but empty string exceeds list bound

improves handling of special cases delimiter size >= string size in sstrsplit

adds missing stdint.h include for int32_t + fixes possible implicit const cast overflow + adds support for DESTDIR variable in Makefile

removes ucx_list_prepend_once() - this was a big mistake....

adds ucx_list_append_once() and ucx_list_prepend_once()

fixes memory leak in test_ucx_buffer_eof

adds web documentation to project

updates documenting comments

documents UCX_STREAM_COPY_BUFSIZE

fixes ucx_sprintf macro and adds tests for sprintf and bprintf

changes ucx_stream_Xcopy API

removes superfluous UCX_VERSION macro

fixes UCX_FOREACH documentation

fixed misaligned memory access in test_ucx_buffer_write

fixed further usages of SIZE_MAX

removed dependency to stdint.h in stack header

added casts for mallocs in AVL implementation (to satisfy c++ compiler)

removed some implementation details from documentation + fixed ucx_buffer_write doc

added sstrstr() function + improved sstrsplit variants by using sstrprefix()

added important test case to sstrsplit and fixed bug with consecutively occurring delimiters + fixed build system not linking test binary with newest library build

fixed name of ucx_list_free_content()

added ucx_list_free_contents()

added sstrlower / sstrupper variants

moved ucx_destructor type to ucx.h and added destructor argument to ucx_map_free_content

added convenience function ucx_map_free_contents()

optimized ucx_map_clear (noop for count == 0)

added ucx_map_clean()

improved avl function names

better and better and better AVL API

added 1 assert in ucx_avl_remove tests and fixed source code formatting

fixed bug in ucx_avl_remove

extended ucx_avl_remove tests

added ucx_avl_remove tests

added ucx_avl_count

added test for ucx_avl_put

fuck -Wparentheses

added free() to AVL tree implementation + use UcxAllocator

added AVL tree implementation - TODO: free memory + test cases

finalized AVL tree interface + added implementation skeleton + fixed ucx_ptrcmp()

defined AVL tree functional interface

updated copyright notice + added files for upcoming AVL tree implementation

fuck_

added ucx_sprintf macro

sstrtrim now uses isspace()

fixed doc

fixed stack tests to work with 4-byte-alignment + fixed logging tests

fixed logging tests for mingw

added stack implementation + added g++ config and added some fixes for C++

added some string tests

added sstrcat documentation

merged sstrcat function

fixed stream copy bug + fixed doc issues in mempool

added new sstrcat

removed old sstrncat

fixed doc for __FUNCTION__ macro

go ahead, nothing to see here

fixed way too optimistic version number

adjusted README

fixed missing malloc return value validation in ucx_vasprintf

fixed some sstring issues + added allocator macros

refactoring of list tests + some bug fixes

logger: removed unnecessary boundary checks and limited string parts so they always respect buffer lengths

improved logger tests

fixed issues revealed by buffer tests

completed buffer tests

ucx_buffer_extract tests

improved more buffer tests + some doc fixes

hotfix for ucx_buffer_seek documentation

added allocator tests + started refactoring UcxBuffer tests (HINT: don't fix issues yet, complete tests first)

minor lexical and documentation fixes

added more tests for ucx_list_remove

fixed ucx_list_remove crashing when removing the last element of a list

fixed documentation error in sstr_split

added license to readme + added underlines to chapter titles

Added allocator to mempool struct + fixed suncc.mk

added new mingw config

removed unnecessary configurations + added build command for shared lib

further improved build system (debug is now a target instead of a configuration)

fixed makefiles

windows specifics

minor code fixes + added clang support + improved build system

added README file - TODO: make install

fixes for ultra fail not C99 supporting VC wannebe compiler

added sstrcasecmp

added sstrrchr

added printf for UcxBuffer + fixed memory leaks

fixed documentation for netbeans parser + added sstrprefix() and sstrsuffix()

fixed utils tests

fixed printf functions

fail again

added printf functions

added mempool clamp + some minor fixes

completed documentation + changed API for buffer/stream generic copy functions

8-) f**k

documented map.h + changed return value of ucx_map_iter_next()

changed parameter order of ucx_map_new_a

started documentation of map.h + renamed allocator version of ucx_map_new

documented mempool + some fixes

documented test.h and removed duplicated implement/declare macros for UCX_TEST

finished documentation of UcxProperties

fixed ssize_t fix for MinGW

fixed some warnings when compiling with the sun C++ Compiler

started documentation of UcxProperties + some fixes

documentation for UcxLogger

finished documentation of UcxList

added ssize_t typedef for windows

changed includes in list.h to satisfy Mac OS X users

changed suffix for allocator aware functions + added allocator aware functions for UcxList

more documentation for UcxList

changed signature of sstrncat + some documentation for UcxList + new features for UcxList

removal of single linked list implemenation - step 2: renamed UcxDlist to UcxList (new single implementation)

removal of single linked list implemenation - step 1: removal

some fixes

completed documentation on sstr_t + sstrsplit overhaul + allocator version of sstrsplit

documented allocator + some further documentation for sstr_t

fixed properties parser

some fixes and some documentation

added man page output

added doxyfile and documentation for ucx.h

added mempool allocator

removed map load/store

new map foreach macro

renamed properties functions

added properties load/store functions

new properties parser

map uses an allocator

fixed makefiles for ms c++ compiler

fixed logging test

fixed sstrtrim and some warnings

added license and copyright notice to all files

added headers that are missing under visual studio

regained support for microsoft c++ compiler

happy 100th commit + removed deprecated sstrcat + fixed sstrncat

fixed suncc makefiles

fixed sstrtrim for empty strings

fixed execution order of tests + added test for sstrtrim

added sstrtrim

added gnu++11 support

renamed comparator to utils module and added copy functions

removed brain-afk code

added floating point comparators

added memcmp to the comparator module

added tests for ucx_(d)list_contains

comparator module

variadic test subroutines

some fixes + ucx_(d)list_contains

added generic ncopy

fixed comments + added ucx_buffer_clear

added optimizing for debug build

modified code to compile with -pedantic

logger can now log timestamps

changed logger to behave more like printf + added possibility to specify write function

Fixed map tests + added some formatting options to logger

fixed macros and ucx_map_store_enc

some fixes

used more library friendly optimization level

fixed buffer

fixed some compiler warnings

made the code work with g++ and without warnings

lists now sort on heap to prevent stack overflows

Merge with 6721482eaf8e8d35b1cd46f0a21285bfaa520d5a

made the code work with g++ without errors (but warnings)

fixed memory leak in ucx_map_rehash

made the code work with VC++ compiler (use make CONF=windows)

removed const from string.*

added some qualifiers + removed pointer alias in mergesort

added separated debug makefiles and some optimization options

added _Bool macro for cplusplus

added autoextend feature to buffer

discarded fascism from buffer

added extract function

added flag field to buffer

renamed UcxMemstream to UcxBuffer

added semicolons to UCX_TEST_DECLARE calls

discarded memprintf / memscanf

some fixes

added memstream to ucx - still little work to do

fixed map tests + used tmpfiles in tests

added logging API

added ucx_map_remove

added ucx_map_copy and fixed ucx_map_rehash

added rehashing to maps by using clone function

moved allocator to seperate file

Merge with 22fb97e9f58a0a8b18db7f81b7392dae0cd64571

map can now load values from file into pooled memory

sstrncat uses memcpy

implemented encoder/decoder for map store/load

map counts elements

added map clone

fixed crash fails by completing the implementation of the tested function....

(broken-commit) - added load and store functions, tests failing

simplified UCX_MAP_FOREACH

added semicolons to assert makros

added sstrsplit function

added missing stddef includes

replaced qsort with natural merge sort

changed API of sort algorithms (no further hint for the algorithms used in preparation for the upcomming change from qsort to natural merge sort)

added mkdir for build directory to makefile + added qsort for list and dlist

completed map tests

major refactoring of test framework

consequently used intptr_t in mpool tests

added map iterator

some fixes

fixed map with the help of new tests

new mempool tests

removed old foreach + refactored list tests

added test framework and foreach macro

changed hgignore filter

changed make clean + added dlist_clone with copy test + added va_end statements to string.c

added ucx_list_remove

added ucx_dlist_remove and tests + fixed makefile error

merge

added some map functions

Removed linked list from tests (assume that they are correct if the dlist tests are correct)

added clone and equals to lists

fix for ultra fail fix

fixed ultra fail + renamed files from mpool to mempool

fixed mpool compiler warnings

Fixed realloc

Added mempool

Added list tests2

Added list tests

added list implementation

Added dlist tests

completed dlist

added dlist to makefile, implemented first functions, discarded some fails

Fixed fatal super bug

added list specification

added dlist specification

added hgignore

Added some source files

Moved object files to build/

Added makefiles

(0) tip

mercurial