docs/Writerside/topics/about.md

Tue, 16 Dec 2025 18:32:35 +0100

author
Mike Becker <universe@uap-core.de>
date
Tue, 16 Dec 2025 18:32:35 +0100
changeset 1615
5c211187dde9
parent 1607
0ecb13118cac
permissions
-rw-r--r--

remove dependency from tree.c to array_list.h

1140
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1 # Overview
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
2
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3 Welcome to the UAP Common Extensions.
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
4
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
5 With this library we provide useful data structures and algorithms for common
1424
563033aa998c fixes tons of typos and grammar issues across the documentation - fixes #667
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
6 programmatic tasks in the C language. Using the build files, you can create
1140
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
7 a static and a shared lib containing all units, but you may also use the UCX
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
8 sources in your project and compile specific units by yourself.
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
9
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
10 If you want to use this library, you can [download and install](install.md)
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
11 the recent version.
1227
0bf1c1fdf1e3 fix outdated link to develop.uap-core.de and link to latest dist
Mike Becker <universe@uap-core.de>
parents: 1194
diff changeset
12 The source code is also available as Mercurial repository [at our site](https://uap-core.de/hg/ucx/) and
1191
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
13 on [Source Forge](https://sourceforge.net/p/ucx/code/).
1140
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
14
1191
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
15 ## Authors
1140
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
16
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
17 Mike Becker [&lt;universe@uap-core.de&gt;](mailto:universe@uap-core.de)
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
18
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
19 Olaf Wintermann
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
20 [&lt;olaf.wintermann@gmail.com&gt;](mailto:olaf.wintermann@gmail.com)
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
21
1191
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
22 ## Other Resources
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
23
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
24 * [Doxygen Documentation](https://ucx.sourceforge.io/api/)
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
25 * [Test Coverage Report](https://ucx.sourceforge.io/coverage/)
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
26
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
27 ## Changelog
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
28
1539
2cbdb482d325 add cx_system_page_size() to allocator.h
Mike Becker <universe@uap-core.de>
parents: 1527
diff changeset
29 ### Version 4.0 - preview {collapsible="true"}
2cbdb482d325 add cx_system_page_size() to allocator.h
Mike Becker <universe@uap-core.de>
parents: 1527
diff changeset
30
2cbdb482d325 add cx_system_page_size() to allocator.h
Mike Becker <universe@uap-core.de>
parents: 1527
diff changeset
31 * adds cx_system_page_size() to allocator.h
1607
0ecb13118cac next step of simplifying the array API - relates to #619
Mike Becker <universe@uap-core.de>
parents: 1605
diff changeset
32 * adds a new (optional) capacity parameter to cxJsonCreateArr() and cxJsonObjPutArr()
1573
cd2e974410ad add cxJsonToString() and cxJsonToPrettyString() - resolves #778
Mike Becker <universe@uap-core.de>
parents: 1572
diff changeset
33 * adds cxJsonFromString(), cxJsonToString(), and cxJsonToPrettyString()
1594
4b9537f93239 add cxJsonClone - resolves #785 except for the tests
Mike Becker <universe@uap-core.de>
parents: 1590
diff changeset
34 * adds cxJsonClone()
1583
97fc8c55aeea add cxJsonCompare()
Mike Becker <universe@uap-core.de>
parents: 1582
diff changeset
35 * adds cxJsonCompare()
1579
0393c67556ec add cxMapCompare() - resolves #784
Mike Becker <universe@uap-core.de>
parents: 1576
diff changeset
36 * adds cxMapCompare()
1569
b5d896ad5e75 adjusts documentation regarding line continuation support - relates to #457
Mike Becker <universe@uap-core.de>
parents: 1556
diff changeset
37 * adds line continuation support to CxProperties / CxPropertiesConfig
1571
25ead2ffb9b5 removes buffer flush and adds maximum capacity instead - resolves #185
Mike Becker <universe@uap-core.de>
parents: 1569
diff changeset
38 * adds cxBufferMaximumCapacity()
1576
7e19168d49d1 improves cxBufferPutString() and adds cxBufferAppendString() - resolves #779
Mike Becker <universe@uap-core.de>
parents: 1575
diff changeset
39 * adds cxBufferAppendString()
1572
0499bf03aef3 adds new CX_BUFFER_DO_NOT_FREE buffer flag
Mike Becker <universe@uap-core.de>
parents: 1571
diff changeset
40 * adds CX_BUFFER_DO_NOT_FREE buffer flag
1605
55b13f583356 refactor the list and map construction functions and remove the simple macros
Mike Becker <universe@uap-core.de>
parents: 1601
diff changeset
41 * changes the parameter order of cxBufferInit() and cxBufferCreate()
1543
7b66371d6da3 use an anonymous union for the CxJsonValue
Mike Becker <universe@uap-core.de>
parents: 1542
diff changeset
42 * changes cxBufferReserve() to allow reducing the capacity
1575
dde0c67a449b improves cxBufferTerminate()
Mike Becker <universe@uap-core.de>
parents: 1573
diff changeset
43 * changes cxBufferTerminate() to automatically shrink the buffer
1590
7fc3bea76481 changelog fixes and make dependency fixes
Mike Becker <universe@uap-core.de>
parents: 1587
diff changeset
44 * changes cxBufferTerminate() so that position and size are equal after a successful operation
1576
7e19168d49d1 improves cxBufferPutString() and adds cxBufferAppendString() - resolves #779
Mike Becker <universe@uap-core.de>
parents: 1575
diff changeset
45 * changes cxBufferPutString() to accept any kind of string that cx_strcast() supports
1605
55b13f583356 refactor the list and map construction functions and remove the simple macros
Mike Becker <universe@uap-core.de>
parents: 1601
diff changeset
46 * changes the names of cxDefineDestructor() and cxDefineAdvancedDestructor() to
55b13f583356 refactor the list and map construction functions and remove the simple macros
Mike Becker <universe@uap-core.de>
parents: 1601
diff changeset
47 cxSetDestructor() and cxSetdvancedDestructor()
55b13f583356 refactor the list and map construction functions and remove the simple macros
Mike Becker <universe@uap-core.de>
parents: 1601
diff changeset
48 * changes the name of cxCollectionCompareFunc() to cxSetCompareFunc()
1601
e47078681a6f change signature of cxBufferInit() and cxBufferCreate()
Mike Becker <universe@uap-core.de>
parents: 1594
diff changeset
49 * changes the entire low-level array-list API by making it much simpler
1543
7b66371d6da3 use an anonymous union for the CxJsonValue
Mike Becker <universe@uap-core.de>
parents: 1542
diff changeset
50 * changes the members of CxJson and CxJsonValue
1547
12da0654e4a9 replace JSON object member array with kv-list - resolves #762
Mike Becker <universe@uap-core.de>
parents: 1546
diff changeset
51 * changes the return value of cxJsonObjIter() to CxMapIterator
1549
72ad8a78378a changes CxTree structure so that it now inherits CX_COLLECTION_BASE - resolves #629
Mike Becker <universe@uap-core.de>
parents: 1548
diff changeset
52 * changes CxTree structure so that it now inherits CX_COLLECTION_BASE
1555
8972247f54e8 properties.h: removes the source/sink API and adds a new cxPropertiesLoad()
Mike Becker <universe@uap-core.de>
parents: 1552
diff changeset
53 * changes cxPropertiesLoad() to directly load properties from a file to a CxMap
1576
7e19168d49d1 improves cxBufferPutString() and adds cxBufferAppendString() - resolves #779
Mike Becker <universe@uap-core.de>
parents: 1575
diff changeset
54 * changes cxFreeDefault() from a macro to a function so that it can be used as a simple destructor
1548
12315ee158ad fixes cxJsonWrite() incorrectly returning non-zero when strings needed to be escaped
Mike Becker <universe@uap-core.de>
parents: 1547
diff changeset
55 * fixes cxJsonWrite() incorrectly returning non-zero when strings needed to be escaped
1569
b5d896ad5e75 adjusts documentation regarding line continuation support - relates to #457
Mike Becker <universe@uap-core.de>
parents: 1556
diff changeset
56 * fixes cxJsonNext() incorrectly returning CX_JSON_INCOMPLETE_DATA when the input ends with trailing spaces
1545
7822ffe65848 fixes critical memory leak when using cxMapFree() on a kv-list that is using destructors
Mike Becker <universe@uap-core.de>
parents: 1543
diff changeset
57 * fixes critical memory leak when using cxMapFree() on a kv-list that is using destructors
1590
7fc3bea76481 changelog fixes and make dependency fixes
Mike Becker <universe@uap-core.de>
parents: 1587
diff changeset
58 * fixes critical use-after-free with keys stored in kv-lists
1546
c8dd35f3ea53 fixes that overwriting elements with cxMapPut() in a kv-list did not work
Mike Becker <universe@uap-core.de>
parents: 1545
diff changeset
59 * fixes that overwriting items with cxMapPut() in a kv-list did not work
1545
7822ffe65848 fixes critical memory leak when using cxMapFree() on a kv-list that is using destructors
Mike Becker <universe@uap-core.de>
parents: 1543
diff changeset
60 * fixes that cxReallocate(), cxReallocateArray(), cx_reallocate(), and cx_reallocatearray()
1541
d06aa9db0408 fix that certain reallocate functions did not properly support size zero
Mike Becker <universe@uap-core.de>
parents: 1539
diff changeset
61 were not returning zero after freeing the memory when passed a size of zero
1582
32b82c424252 removes the CX_STR() macro and instead makes the cx_str() inlinable
Mike Becker <universe@uap-core.de>
parents: 1579
diff changeset
62 * removes the CX_STR() macro and instead makes the cx_str() inlinable
1552
a114fc4a285a fix order of bugfixes and removed features in changelog
Mike Becker <universe@uap-core.de>
parents: 1549
diff changeset
63 * removes the sort_members feature from CxJsonWriter
1555
8972247f54e8 properties.h: removes the source/sink API and adds a new cxPropertiesLoad()
Mike Becker <universe@uap-core.de>
parents: 1552
diff changeset
64 * removes the source and sink API from properties.h
1571
25ead2ffb9b5 removes buffer flush and adds maximum capacity instead - resolves #185
Mike Becker <universe@uap-core.de>
parents: 1569
diff changeset
65 * removes the flush feature from CxBuffer
1607
0ecb13118cac next step of simplifying the array API - relates to #619
Mike Becker <universe@uap-core.de>
parents: 1605
diff changeset
66 * removes the ability to remove elements from the iterators created with cxIterator() and cxIteratorPtr()
1601
e47078681a6f change signature of cxBufferInit() and cxBufferCreate()
Mike Becker <universe@uap-core.de>
parents: 1594
diff changeset
67 * removes several unnecessary convenience functions
1539
2cbdb482d325 add cx_system_page_size() to allocator.h
Mike Becker <universe@uap-core.de>
parents: 1527
diff changeset
68
1527
9661e947eec1 add release date for UCX 3.2
Mike Becker <universe@uap-core.de>
parents: 1516
diff changeset
69 ### Version 3.2 - 2025-11-30 {collapsible="true"}
1280
60123b3db06e start development of UCX 3.2
Mike Becker <universe@uap-core.de>
parents: 1227
diff changeset
70
1283
89935fea4b7c add cxMempoolTransferObject() - resolves #640
Mike Becker <universe@uap-core.de>
parents: 1281
diff changeset
71 * adds cxMempoolTransfer() and cxMempoolTransferObject()
1325
20caf6efaf07 improve mempool destructor support (3/3)
Mike Becker <universe@uap-core.de>
parents: 1322
diff changeset
72 * adds support for different destruction strategies in CxMempool
1390
ff077f793c5d kv-list: add documentation
Mike Becker <universe@uap-core.de>
parents: 1334
diff changeset
73 * adds new key-value-based list implementation
1401
a76249f50237 add changelog entries for issue #720
Mike Becker <universe@uap-core.de>
parents: 1390
diff changeset
74 * adds support for integer keys to CxHashKey
1426
3a89b31f0724 clean up header files and adds support for comparing arbitrary strings with string.h functions
Mike Becker <universe@uap-core.de>
parents: 1425
diff changeset
75 * adds support for comparing arbitrary strings without explicit call to cx_strcast()
1479
ac1baaed2fd7 implement simple versions of the clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
76 * adds clone, union, difference, and intersection functions for CxList and CxMap
1447
aaf85b3e9601 add documentation for cxMapDifference() and cxMapListDifference()
Mike Becker <universe@uap-core.de>
parents: 1440
diff changeset
77 * adds cxListContains() and cxMapContains()
1482
6769cb72521b implement a new allocation strategy for array lists and add cxListReserve() and cxListShrink()
Mike Becker <universe@uap-core.de>
parents: 1479
diff changeset
78 * adds cxListReserve() and cxListShrink()
1287
3a3ffc27813f adds cxListSet() - resolves #642
Mike Becker <universe@uap-core.de>
parents: 1286
diff changeset
79 * adds cxListSet()
1315
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1309
diff changeset
80 * adds cxListFirst() and cxListLast()
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1309
diff changeset
81 * adds cxListRemoveAndGetFirst() and cxListRemoveAndGetLast(),
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1309
diff changeset
82 and corresponding macro aliases cxListPopFront() and cxListPop()
1433
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
83 * adds cxListEmplace(), cxListEmplaceAt(), cxListEmplaceArray(), cxListEmplaceArrayAt(), and cxMapEmplace()
1419
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1401
diff changeset
84 * adds cxListInsertUnique() and cxListInsertUniqueArray()
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1401
diff changeset
85 * adds cx_array_insert_unique() and various convenience macros
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1401
diff changeset
86 * adds cx_linked_list_insert_unique() and cx_linked_list_insert_unique_chain()
1464
9a10af83cfab add cxCollectionCompareFunc() macro
Mike Becker <universe@uap-core.de>
parents: 1453
diff changeset
87 * adds cxCollectionCompareFunc() to conveniently set a compare function for a collection
9a10af83cfab add cxCollectionCompareFunc() macro
Mike Becker <universe@uap-core.de>
parents: 1453
diff changeset
88 without needing to access the base struct manually
1290
4ac889e14211 adds cxBufferShrink() - resolves #626
Mike Becker <universe@uap-core.de>
parents: 1288
diff changeset
89 * adds cxBufferShrink()
1514
ee5d668a71e4 add cxBufferPop()
Mike Becker <universe@uap-core.de>
parents: 1507
diff changeset
90 * adds cxBufferPop()
1295
b00c6ae1441a add cxTreeSize() - resolves #624
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
91 * adds cxTreeSize()
1297
0811fb9a8dba bring back CX_PRIstr and CX_SFMT macros - resolves #612
Mike Becker <universe@uap-core.de>
parents: 1296
diff changeset
92 * adds CX_PRIstr and CX_SFMT macros for formatting UCX strings
1304
57e062a4bb05 adds cx_strcpy() and cx_strcpy_a()
Mike Becker <universe@uap-core.de>
parents: 1301
diff changeset
93 * adds cx_strcpy() and cx_strcpy_a()
1390
ff077f793c5d kv-list: add documentation
Mike Becker <universe@uap-core.de>
parents: 1334
diff changeset
94 * adds cxJsonArrRemove() and cxJsonObjRemove()
1318
12fa1d37fe48 allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents: 1316
diff changeset
95 * adds cxStdlibAllocator and allows changes of cxDefaultAllocator
1316
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
96 * improves performance of the CxList array list implementation
1426
3a89b31f0724 clean up header files and adds support for comparing arbitrary strings with string.h functions
Mike Becker <universe@uap-core.de>
parents: 1425
diff changeset
97 * changes over-aggressively declaring functions as static inline
1334
7763892ed801 allow NULL for creating UCX strings - resolves #683
Mike Becker <universe@uap-core.de>
parents: 1331
diff changeset
98 * changes cx_str() and cx_mutstr() to allow NULL strings
1331
02946dc73e6a add support for C-strings in cx_strcast() - resolves #549
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
99 * changes cx_strcast() to also accept C-strings as input
1300
fcb149ee60ff improve cx_strreplacen() - resolves #623
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
100 * changes grow strategy for the memory pool to reduce reallocations
1291
5942859fd76c new auto-extend strategy for CxBuffer - resolves #641
Mike Becker <universe@uap-core.de>
parents: 1290
diff changeset
101 * changes grow strategy for CxBuffer, which does now take the page size into account
1300
fcb149ee60ff improve cx_strreplacen() - resolves #623
Mike Becker <universe@uap-core.de>
parents: 1297
diff changeset
102 * changes the implementation of cx_strreplacen() for improved efficiency
1390
ff077f793c5d kv-list: add documentation
Mike Becker <universe@uap-core.de>
parents: 1334
diff changeset
103 * changes all cxListIterator() and cxMapIterator() family of functions to also accept NULL as argument
1316
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
104 * changes insert_element member function of CxList to accept NULL source and return a pointer to the inserted element
1422
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
105 * changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
1425
83284b289430 remove unnecessary members from the array reallocator struct - fixes #621
Mike Becker <universe@uap-core.de>
parents: 1424
diff changeset
106 * changes struct cx_array_reallocator_s by replacing the four generic data members with two specifically named members
1482
6769cb72521b implement a new allocation strategy for array lists and add cxListReserve() and cxListShrink()
Mike Becker <universe@uap-core.de>
parents: 1479
diff changeset
107 * changes cx_array_reserve() so that it reserves exactly the requested capacity (i.e., without overallocation)
6769cb72521b implement a new allocation strategy for array lists and add cxListReserve() and cxListShrink()
Mike Becker <universe@uap-core.de>
parents: 1479
diff changeset
108 * changes all other array functions to perform smart overallocation to avoid too many subsequent allocations
1507
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1500
diff changeset
109 * changes that binary search and infimum always report the largest index, and supremum always reports the smallest index
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1500
diff changeset
110 when the found element appears more than once in the array
1322
7be10b57f658 fix critical memory overflow in the stack-based array reallocator
Mike Becker <universe@uap-core.de>
parents: 1318
diff changeset
111 * fixes critical memory overflow in the stack-based array reallocator (this unfortunately breaks the function signature)
1419
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1401
diff changeset
112 * fixes critical bug in cx_array_insert_sorted() that caused an infinite loop when inserting duplicates
1328
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
113 * fixes mempool implementation not supporting NULL as argument for realloc
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
114 * fixes mempool implementation not supporting zero as size for realloc
1390
ff077f793c5d kv-list: add documentation
Mike Becker <universe@uap-core.de>
parents: 1334
diff changeset
115 * fixes that the elem_count member of an iterator was not updated after removing an element flagged by cxIteratorFlagRemoval()
1309
b240b73d2a10 fix that iteration continued with siblings for a subtree-root - fixes #656
Mike Becker <universe@uap-core.de>
parents: 1305
diff changeset
116 * fixes that starting an iteration in a non-root node incorrectly continues iteration with the siblings of that node
1296
2a2403c63439 fixes unnecessary allocations in cx_strcat() family of functions
Mike Becker <universe@uap-core.de>
parents: 1295
diff changeset
117 * fixes unnecessary allocations in cx_strcat() family of functions
1500
d20037235c9c add missing test coverage in string.c and fix overflow checking bug in cx_strcat()
Mike Becker <universe@uap-core.de>
parents: 1482
diff changeset
118 * fixes ineffective overflow check in cx_strcat() family of functions
1288
b41ad5d9bcbf fixes errno value after failing cxBufferSeek() to be consistently EINVAL
Mike Becker <universe@uap-core.de>
parents: 1287
diff changeset
119 * fixes errno value after failing cxBufferSeek() to be consistently EINVAL
1284
b2103354baed fix implementation of cxBufferTerminate() - fixes #631
Mike Becker <universe@uap-core.de>
parents: 1283
diff changeset
120 * fixes implementation of cxBufferTerminate()
1516
95b094472e9a fixes that cxBufferWrite() could auto-extend the buffer beyond the configured threshold
Mike Becker <universe@uap-core.de>
parents: 1514
diff changeset
121 * fixes that cxBufferWrite() could auto-extend the buffer beyond the configured threshold
1286
5492e8ef05f4 fixes that cx_tree_search() did not investigate subtrees with equally good distance
Mike Becker <universe@uap-core.de>
parents: 1285
diff changeset
122 * fixes allocator arguments for some printf.h functions not being const
5492e8ef05f4 fixes that cx_tree_search() did not investigate subtrees with equally good distance
Mike Becker <universe@uap-core.de>
parents: 1285
diff changeset
123 * fixes that cx_tree_search() did not investigate subtrees with equally good distance
1318
12fa1d37fe48 allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents: 1316
diff changeset
124 * fixes that memory was freed by the wrong allocator in cx_vasprintf_a() when the underlying vsnprintf() failed
1429
6e0c3a8a914a remove the concept of "mutating iterators" - resolves #579
Mike Becker <universe@uap-core.de>
parents: 1426
diff changeset
125 * removes all functions that create mutating iterators in favor of making all iterators possibly mutating
1301
f81d8b4f40c4 fix code not compiling with GCC 15
Mike Becker <universe@uap-core.de>
parents: 1300
diff changeset
126 * removes the use of C23 attributes because they don't mix well with GNU attributes in GCC 15
1280
60123b3db06e start development of UCX 3.2
Mike Becker <universe@uap-core.de>
parents: 1227
diff changeset
127
1191
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
128 ### Version 3.1 - 2025-02-11 {collapsible="true"}
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
129
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
130 * adds properties.h
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
131 * adds tree.h
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
132 * adds json.h
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
133 * adds locale-independent string to number conversion functions
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
134 * adds reallocarray() like functions to allocator.h
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
135 * adds cxIterator() to create iterators over raw C arrays
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
136 * adds cxIteratorPtr() to create iterators over raw C pointer arrays
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
137 * adds cx_array_reallocator() and cx_array_default_reallocator
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
138 * adds several new array and list functions
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
139 * adds cxBufferReset()
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
140 * adds cxBufferAppend()
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
141 * adds cxBufferEnableFlushing() and cxBufferFlush()
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
142 * adds CX_BUFFER_COPY_ON_WRITE and CX_BUFFER_COPY_ON_EXTEND flags
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
143 * adds cxBufferWriteFunc and cxBufferReadFunc function pointers (for convenience)
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
144 * adds cx_cmp_ptr()
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
145 * adds cx_vcmp_* family of functions
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
146 * adds cx_sprintf() and several more variants
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
147 * adds runtime constants to read out the actual SBO sizes
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
148 * adds improved version of UCX 2 Test framework (now a self-contained header)
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
149 * adds cx_nmemb() utility function to common.h
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
150 * changes that CxMap returns own CxMapIterator to save memory in CxIterator
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
151 * changes name of cxBasicMempoolCreate() to cxMempoolCreateSimple()
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
152 * changes all functions, for which there is no dedicated xyz_a variant,
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
153 to accept NULL as allocator argument (in which case a default allocator will be used)
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
154 * changes the name of destroy functions that actually free the memory to better indicate their behavior
1194
b9654414c087 fix typos in CHANGELOG
Mike Becker <universe@uap-core.de>
parents: 1191
diff changeset
155 * changes cx_strcat variants to allow handling of ENOMEM
b9654414c087 fix typos in CHANGELOG
Mike Becker <universe@uap-core.de>
parents: 1191
diff changeset
156 * changes cx_strcast() to also accept cxstring (and doing nothing in that case)
b9654414c087 fix typos in CHANGELOG
Mike Becker <universe@uap-core.de>
parents: 1191
diff changeset
157 * changes the behavior of cxBufferSeek() to allow offset zero for SEEK_END
1191
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
158 * moves cx_compare_func typedef to compare.h
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
159 * moves cx_szmul() to common.h
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
160 * moves stream copy functions to new streams.h
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
161 * removes cx_strupper() and cx_strlower() because they only do the right thing in special cases
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
162 * removes several *_m variants of functions in string.h in favor of automatic conversion
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
163 * removes utils.h
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
164 * removes flag_removal function from iterator
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
165 * removes cxMapDetach() and makes cxMapRemoveAndGet() compatible with both map variants
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
166 * removes the API for changing the store_pointer property of collections after their creation
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
167 * removes CMake
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
168 * removes GTest dependency
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
169 * removes flags to disable SBO in tests
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
170 * removes CX_LINKED_LIST_SWAP_SBO_SIZE (it's not really an optimization for linked lists)
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
171 * fixes cx_strcmp() and cx_strcasecmp() not being useful for lexicographic ordering
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
172 * fixes cx_hash_key_cxstr() evaluating the argument twice
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
173 * fixes critical bug that produced wrong results when comparing lists of different type but same size
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
174 * ends UCX 2.1 long term support
1140
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
175
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
176 ### Version 3.0 - 2023-07-09 {collapsible="true"}
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
177
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
178 * complete redesign from scratch
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
179 * collections can now store copies of objects and not just pointers
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
180 * collections are now dynamically implemented
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
181 * users of the library can specify own implementations of collections that work with the UCX API
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
182 * low level API for custom lists that do not use the UCX structures
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
183 * various fixes and improvements
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
184 * drops some other, rarely used, features
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
185 * removes testing implementation from the lib
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
186
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
187 ### Version 2.1 - 2019-12-30 {collapsible="true"}
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
188
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
189 * adds string replace functions
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
190 * adds set operations for ` UcxList` and `UcxMap`
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
191 * adds `sstrcaseprefix()` and `sstrcasesuffix()`
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
192 * improves Doxygen documentation in ucx/string.h
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
193 * adds `UcxArray` data type
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
194 * adds support for CMake builds, but main build system is still autotools
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
195
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
196 ### Version 2.0 - 2018-12-28 {collapsible="true"}
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
197
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
198 * some uncritical bug fixes
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
199 * overflow of `sstrnlen` now returns `SIZE_MAX` instead of zero
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
200 * adds `scstr_t` - a `const char*` variant for sstr_t
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
201 * renames utility compare functions
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
202
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
203 ### Version 1.1 - 2018-05-14 {collapsible="true"}
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
204
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
205 * adds missing 32 bit support to integer overflow checks
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
206 * adds `ucx_buffer_to_sstr()` macro
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
207 * adds `ucx_avl_free_content()`
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
208 * adds some more compare and distance functions in utils.h
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
209 * adds `SFMT()` and `PRIsstr` convenience macros
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
210 * destructor functions for `*_free_content()` functions are now optional
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
211
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
212 ### Version 1.0.1 - 2018-01-21 {collapsible="true"}
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
213
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
214 * some bug fixes
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
215 * adds integer overflow checks
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
216
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
217 ### Version 1.0 - 2017-10-28 {collapsible="true"}
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
218
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
219 * first stable version of UCX released

mercurial