36 * adds cxListContains() |
36 * adds cxListContains() |
37 * adds cxListFirst() and cxListLast() |
37 * adds cxListFirst() and cxListLast() |
38 * adds cxListRemoveAndGetFirst() and cxListRemoveAndGetLast(), |
38 * adds cxListRemoveAndGetFirst() and cxListRemoveAndGetLast(), |
39 and corresponding macro aliases cxListPopFront() and cxListPop() |
39 and corresponding macro aliases cxListPopFront() and cxListPop() |
40 * adds cxListEmplace(), cxListEmplaceAt(), and cxMapEmplace() |
40 * adds cxListEmplace(), cxListEmplaceAt(), and cxMapEmplace() |
|
41 * adds cxListInsertUnique() and cxListInsertUniqueArray() |
|
42 * adds cx_array_insert_unique() and various convenience macros |
|
43 * adds cx_linked_list_insert_unique() and cx_linked_list_insert_unique_chain() |
41 * adds cxBufferShrink() |
44 * adds cxBufferShrink() |
42 * adds cxTreeSize() |
45 * adds cxTreeSize() |
43 * adds CX_PRIstr and CX_SFMT macros for formatting UCX strings |
46 * adds CX_PRIstr and CX_SFMT macros for formatting UCX strings |
44 * adds cx_strcpy() and cx_strcpy_a() |
47 * adds cx_strcpy() and cx_strcpy_a() |
45 * adds cxJsonArrRemove() and cxJsonObjRemove() |
48 * adds cxJsonArrRemove() and cxJsonObjRemove() |
51 * changes grow strategy for CxBuffer, which does now take the page size into account |
54 * changes grow strategy for CxBuffer, which does now take the page size into account |
52 * changes the implementation of cx_strreplacen() for improved efficiency |
55 * changes the implementation of cx_strreplacen() for improved efficiency |
53 * changes all cxListIterator() and cxMapIterator() family of functions to also accept NULL as argument |
56 * changes all cxListIterator() and cxMapIterator() family of functions to also accept NULL as argument |
54 * changes insert_element member function of CxList to accept NULL source and return a pointer to the inserted element |
57 * changes insert_element member function of CxList to accept NULL source and return a pointer to the inserted element |
55 * fixes critical memory overflow in the stack-based array reallocator (this unfortunately breaks the function signature) |
58 * fixes critical memory overflow in the stack-based array reallocator (this unfortunately breaks the function signature) |
|
59 * fixes critical bug in cx_array_insert_sorted() that caused an infinite loop when inserting duplicates |
56 * fixes mempool implementation not supporting NULL as argument for realloc |
60 * fixes mempool implementation not supporting NULL as argument for realloc |
57 * fixes mempool implementation not supporting zero as size for realloc |
61 * fixes mempool implementation not supporting zero as size for realloc |
58 * fixes that the elem_count member of an iterator was not updated after removing an element flagged by cxIteratorFlagRemoval() |
62 * fixes that the elem_count member of an iterator was not updated after removing an element flagged by cxIteratorFlagRemoval() |
59 * fixes that starting an iteration in a non-root node incorrectly continues iteration with the siblings of that node |
63 * fixes that starting an iteration in a non-root node incorrectly continues iteration with the siblings of that node |
60 * fixes unnecessary allocations in cx_strcat() family of functions |
64 * fixes unnecessary allocations in cx_strcat() family of functions |