# HG changeset patch # User Mike Becker # Date 1767190272 -3600 # Node ID 56731bb98508fc4a2b2e26c30e02783ecd131336 # Parent 5e608d0e5bd19c508fc0846e97686f9f23b2bafe final docs fixes + add release date to the changelog diff -r 5e608d0e5bd1 -r 56731bb98508 CHANGELOG --- a/CHANGELOG Wed Dec 31 14:58:52 2025 +0100 +++ b/CHANGELOG Wed Dec 31 15:11:12 2025 +0100 @@ -1,4 +1,4 @@ -Version 4.0 - tbd +Version 4.0 - 2025-12-31 ------------------------ * adds cx_system_page_size() to allocator.h diff -r 5e608d0e5bd1 -r 56731bb98508 docs/Writerside/topics/about.md --- a/docs/Writerside/topics/about.md Wed Dec 31 14:58:52 2025 +0100 +++ b/docs/Writerside/topics/about.md Wed Dec 31 15:11:12 2025 +0100 @@ -26,7 +26,7 @@ ## Changelog -### Version 4.0 - preview {collapsible="true"} +### Version 4.0 - 2025-12-31 {collapsible="true"} * adds cx_system_page_size() to allocator.h * adds cx_compare_func2 function pointer that supports compare functions with custom data diff -r 5e608d0e5bd1 -r 56731bb98508 src/cx/array_list.h --- a/src/cx/array_list.h Wed Dec 31 14:58:52 2025 +0100 +++ b/src/cx/array_list.h Wed Dec 31 15:11:12 2025 +0100 @@ -577,7 +577,7 @@ * @retval zero success * @retval non-zero a re-allocation was necessary but failed */ -#define cx_array_insert_sorted_ca(allocator, array, element, cmp_func) \ +#define cx_array_insert_sorted_ca(allocator, array, element, cmp_func, context) \ cx_array_insert_sorted_c_(allocator, (CxArray*)&(array), sizeof((array).data[0]), (void*)&(element), 1, cmp_func, context, true) /** @@ -753,7 +753,6 @@ * * @param array the name of the array * @param fn (@c cx_compare_func) the compare function - * @param context (@c void*) the context for the compare function */ #define cx_array_sort(array, fn) \ cx_array_sort_((CxArray*)&(array), sizeof((array).data[0]), fn) diff -r 5e608d0e5bd1 -r 56731bb98508 src/cx/common.h --- a/src/cx/common.h Wed Dec 31 14:58:52 2025 +0100 +++ b/src/cx/common.h Wed Dec 31 15:11:12 2025 +0100 @@ -266,9 +266,11 @@ #ifdef _MSC_VER #define cx_thread_local __declspec(thread) #else // ! _MSC_VER -#if __STDC_VERSION__ < 202300L +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 202300L +/** Platform independent thread-local macro. */ #define cx_thread_local _Thread_local #else // C23 or newer +/** Platform independent thread-local macro. */ #define cx_thread_local thread_local #endif // C23 #endif // _MSC_VER diff -r 5e608d0e5bd1 -r 56731bb98508 src/cx/linked_list.h --- a/src/cx/linked_list.h Wed Dec 31 14:58:52 2025 +0100 +++ b/src/cx/linked_list.h Wed Dec 31 15:11:12 2025 +0100 @@ -443,6 +443,7 @@ * @param loc_next the location of a @c next pointer within your node struct (required) * @param new_node a pointer to the node that shall be inserted * @param cmp_func a compare function that will receive the node pointers + * @param context the context for the compare function * @retval zero when the node was inserted * @retval non-zero when a node with the same value already exists */ @@ -591,6 +592,7 @@ * @param loc_advance the location of the pointer to advance * @param loc_data the location of the @c data pointer within your node struct * @param cmp_func the function to compare the elements + * @param context the context for the compare function * @return the first non-zero result of invoking @p cmp_func or: negative if the left list is smaller than the * right list, positive if the left list is larger than the right list, zero if both lists are equal. */ diff -r 5e608d0e5bd1 -r 56731bb98508 src/cx/string.h --- a/src/cx/string.h Wed Dec 31 14:58:52 2025 +0100 +++ b/src/cx/string.h Wed Dec 31 15:11:12 2025 +0100 @@ -569,11 +569,24 @@ CX_EXTERN CX_NODISCARD cxstring cx_strsubs_(cxstring string, size_t start); +/** + * Internal conversion function - do not use. + * @param string + * @param start + * @return + */ CX_INLINE cxmutstr cx_strsubs_m_(cxmutstr string, size_t start) { return cx_mutstrcast(cx_strsubs_(cx_strcast(string), start)); } +/** + * Internal conversion function - do not use. + * @param string + * @param start + * @param length + * @return + */ CX_INLINE cxmutstr cx_strsubsl_m_(cxmutstr string, size_t start, size_t length) { return cx_mutstrcast(cx_strsubsl_(cx_strcast(string), start, length)); diff -r 5e608d0e5bd1 -r 56731bb98508 src/cx/tree.h --- a/src/cx/tree.h Wed Dec 31 14:58:52 2025 +0100 +++ b/src/cx/tree.h Wed Dec 31 15:11:12 2025 +0100 @@ -59,6 +59,9 @@ struct cx_tree_visitor_queue_s *next; }; +/** + * An iterator (DFS) or visitor (BFS) for a tree. + */ typedef struct cx_tree_combined_iterator_s { /** * Base members. @@ -334,6 +337,7 @@ * Structure for holding the base data of a tree. */ typedef struct cx_tree_s { + /** Base attributes. */ CX_COLLECTION_BASE; /** * A pointer to the root node.