Tue, 11 Feb 2025 21:31:02 +0100
exclude new docs folder from dist package
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 |
88a9ee79c102
start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
6 | programmatic tasks in the C language. Using the build files you can create |
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. |
1191
11a0f6f0f30b
link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents:
1140
diff
changeset
|
12 | The source code is also available as Mercurial repository [at our site](https://develop.uap-core.de/hg/ucx/) and |
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 [<universe@uap-core.de>](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 | [<olaf.wintermann@gmail.com>](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 | |
11a0f6f0f30b
link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents:
1140
diff
changeset
|
29 | ### 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
|
30 | |
11a0f6f0f30b
link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents:
1140
diff
changeset
|
31 | * adds properties.h |
11a0f6f0f30b
link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents:
1140
diff
changeset
|
32 | * adds tree.h |
11a0f6f0f30b
link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents:
1140
diff
changeset
|
33 | * adds json.h |
11a0f6f0f30b
link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents:
1140
diff
changeset
|
34 | * 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
|
35 | * 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
|
36 | * 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
|
37 | * 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
|
38 | * 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
|
39 | * 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
|
40 | * adds cxBufferReset() |
11a0f6f0f30b
link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents:
1140
diff
changeset
|
41 | * adds cxBufferAppend() |
11a0f6f0f30b
link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents:
1140
diff
changeset
|
42 | * adds cxBufferEnableFlushing() and cxBufferFlush() |
11a0f6f0f30b
link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents:
1140
diff
changeset
|
43 | * 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
|
44 | * 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
|
45 | * adds cx_cmp_ptr() |
11a0f6f0f30b
link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents:
1140
diff
changeset
|
46 | * 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
|
47 | * 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
|
48 | * 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
|
49 | * 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
|
50 | * 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
|
51 | * 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
|
52 | * 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
|
53 | * 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
|
54 | 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
|
55 | * changes the name of destroy functions that actually free the memory to better indicate their behavior |
1194 | 56 | * changes cx_strcat variants to allow handling of ENOMEM |
57 | * changes cx_strcast() to also accept cxstring (and doing nothing in that case) | |
58 | * 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
|
59 | * 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
|
60 | * 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
|
61 | * 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
|
62 | * 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
|
63 | * 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
|
64 | * removes utils.h |
11a0f6f0f30b
link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents:
1140
diff
changeset
|
65 | * 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
|
66 | * 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
|
67 | * 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
|
68 | * removes CMake |
11a0f6f0f30b
link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents:
1140
diff
changeset
|
69 | * removes GTest dependency |
11a0f6f0f30b
link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents:
1140
diff
changeset
|
70 | * 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
|
71 | * 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
|
72 | * 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
|
73 | * 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
|
74 | * 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
|
75 | * ends UCX 2.1 long term support |
1140
88a9ee79c102
start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
76 | |
88a9ee79c102
start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
77 | ### Version 3.0 - 2023-07-09 {collapsible="true"} |
88a9ee79c102
start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
78 | |
88a9ee79c102
start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
79 | * complete redesign from scratch |
88a9ee79c102
start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
80 | * 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
|
81 | * collections are now dynamically implemented |
88a9ee79c102
start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
82 | * 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
|
83 | * 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
|
84 | * various fixes and improvements |
88a9ee79c102
start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
85 | * drops some other, rarely used, features |
88a9ee79c102
start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
86 | * removes testing implementation from the lib |
88a9ee79c102
start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
87 | |
88a9ee79c102
start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
88 | ### Version 2.1 - 2019-12-30 {collapsible="true"} |
88a9ee79c102
start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
89 | |
88a9ee79c102
start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
90 | * adds string replace functions |
88a9ee79c102
start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
91 | * adds set operations for ` UcxList` and `UcxMap` |
88a9ee79c102
start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
92 | * adds `sstrcaseprefix()` and `sstrcasesuffix()` |
88a9ee79c102
start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
93 | * improves Doxygen documentation in ucx/string.h |
88a9ee79c102
start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
94 | * adds `UcxArray` data type |
88a9ee79c102
start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
95 | * 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
|
96 | |
88a9ee79c102
start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
97 | ### Version 2.0 - 2018-12-28 {collapsible="true"} |
88a9ee79c102
start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
98 | |
88a9ee79c102
start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
99 | * some uncritical bug fixes |
88a9ee79c102
start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
100 | * 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
|
101 | * 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
|
102 | * renames utility compare functions |
88a9ee79c102
start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
103 | |
88a9ee79c102
start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
104 | ### Version 1.1 - 2018-05-14 {collapsible="true"} |
88a9ee79c102
start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
105 | |
88a9ee79c102
start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
106 | * 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
|
107 | * adds `ucx_buffer_to_sstr()` macro |
88a9ee79c102
start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
108 | * adds `ucx_avl_free_content()` |
88a9ee79c102
start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
109 | * 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
|
110 | * adds `SFMT()` and `PRIsstr` convenience macros |
88a9ee79c102
start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
111 | * 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
|
112 | |
88a9ee79c102
start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
113 | ### 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
|
114 | |
88a9ee79c102
start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
115 | * some bug fixes |
88a9ee79c102
start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
116 | * adds integer overflow checks |
88a9ee79c102
start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
117 | |
88a9ee79c102
start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
118 | ### Version 1.0 - 2017-10-28 {collapsible="true"} |
88a9ee79c102
start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
119 | |
88a9ee79c102
start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
120 | * first stable version of UCX released |