| 6 * adds new key-value-based list implementation |
6 * adds new key-value-based list implementation |
| 7 + adds support for integer keys to CxHashKey |
7 + adds support for integer keys to CxHashKey |
| 8 * adds support for comparing arbitrary strings without explicit call to cx_strcast() |
8 * adds support for comparing arbitrary strings without explicit call to cx_strcast() |
| 9 * adds clone, union, difference, and intersection functions for CxList and CxMap |
9 * adds clone, union, difference, and intersection functions for CxList and CxMap |
| 10 * adds cxListContains() and cxMapContains() |
10 * adds cxListContains() and cxMapContains() |
| |
11 * adds cxListReserve() and cxListShrink() |
| 11 * adds cxListSet() |
12 * adds cxListSet() |
| 12 * adds cxListFirst() and cxListLast() |
13 * adds cxListFirst() and cxListLast() |
| 13 * adds cxListRemoveAndGetFirst() and cxListRemoveAndGetLast(), |
14 * adds cxListRemoveAndGetFirst() and cxListRemoveAndGetLast(), |
| 14 and corresponding macro aliases cxListPopFront() and cxListPop() |
15 and corresponding macro aliases cxListPopFront() and cxListPop() |
| 15 * adds cxListEmplace(), cxListEmplaceAt(), cxListEmplaceArray(), cxListEmplaceArrayAt(), and cxMapEmplace() |
16 * adds cxListEmplace(), cxListEmplaceAt(), cxListEmplaceArray(), cxListEmplaceArrayAt(), and cxMapEmplace() |
| 33 * changes the implementation of cx_strreplacen() for improved efficiency |
34 * changes the implementation of cx_strreplacen() for improved efficiency |
| 34 * changes all cxListIterator() and cxMapIterator() family of functions to also accept NULL as argument |
35 * changes all cxListIterator() and cxMapIterator() family of functions to also accept NULL as argument |
| 35 * changes insert_element member function of CxList to accept NULL source and return a pointer to the inserted element |
36 * changes insert_element member function of CxList to accept NULL source and return a pointer to the inserted element |
| 36 * changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers |
37 * changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers |
| 37 * changes struct cx_array_reallocator_s by replacing the four generic data members with two specifically named members |
38 * changes struct cx_array_reallocator_s by replacing the four generic data members with two specifically named members |
| |
39 * changes cx_array_reserve() so that it reserves exactly the requested capacity (i.e., without overallocation) |
| |
40 * changes all other array functions to perform smart overallocation to avoid too many subsequent allocations |
| 38 * fixes critical memory overflow in the stack-based array reallocator (this unfortunately breaks the function signature) |
41 * fixes critical memory overflow in the stack-based array reallocator (this unfortunately breaks the function signature) |
| 39 * fixes critical bug in cx_array_insert_sorted() that caused an infinite loop when inserting duplicates |
42 * fixes critical bug in cx_array_insert_sorted() that caused an infinite loop when inserting duplicates |
| 40 * fixes mempool implementation not supporting NULL as argument for realloc |
43 * fixes mempool implementation not supporting NULL as argument for realloc |
| 41 * fixes mempool implementation not supporting zero as size for realloc |
44 * fixes mempool implementation not supporting zero as size for realloc |
| 42 * fixes that the elem_count member of an iterator was not updated after removing an element flagged by cxIteratorFlagRemoval() |
45 * fixes that the elem_count member of an iterator was not updated after removing an element flagged by cxIteratorFlagRemoval() |