docs/Writerside/topics/about.md

Fri, 11 Apr 2025 16:48:58 +0200

author
Mike Becker <universe@uap-core.de>
date
Fri, 11 Apr 2025 16:48:58 +0200
changeset 1285
7acbaa74fbd0
parent 1284
b2103354baed
child 1286
5492e8ef05f4
permissions
-rw-r--r--

fix allocator of some printf.h functions not being const - fixes #611

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.
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
1280
60123b3db06e start development of UCX 3.2
Mike Becker <universe@uap-core.de>
parents: 1227
diff changeset
29 ### Version 3.2 - preview {collapsible="true"}
60123b3db06e start development of UCX 3.2
Mike Becker <universe@uap-core.de>
parents: 1227
diff changeset
30
1283
89935fea4b7c add cxMempoolTransferObject() - resolves #640
Mike Becker <universe@uap-core.de>
parents: 1281
diff changeset
31 * adds cxMempoolTransfer() and cxMempoolTransferObject()
1281
45746a08c59e add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents: 1280
diff changeset
32 * changes grow strategy for the mempory pool to reduce reallocations
1284
b2103354baed fix implementation of cxBufferTerminate() - fixes #631
Mike Becker <universe@uap-core.de>
parents: 1283
diff changeset
33 * fixes implementation of cxBufferTerminate()
1285
7acbaa74fbd0 fix allocator of some printf.h functions not being const - fixes #611
Mike Becker <universe@uap-core.de>
parents: 1284
diff changeset
34 * fixes allocator arguments for some printf.h functions not being const
1280
60123b3db06e start development of UCX 3.2
Mike Becker <universe@uap-core.de>
parents: 1227
diff changeset
35
1191
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
36 ### 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
37
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
38 * adds properties.h
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
39 * adds tree.h
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
40 * adds json.h
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
41 * 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
42 * 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
43 * 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
44 * 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
45 * 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
46 * 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
47 * adds cxBufferReset()
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
48 * adds cxBufferAppend()
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
49 * adds cxBufferEnableFlushing() and cxBufferFlush()
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
50 * 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
51 * 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
52 * adds cx_cmp_ptr()
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
53 * 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
54 * 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
55 * 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
56 * 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
57 * 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
58 * 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
59 * 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
60 * 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
61 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
62 * 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
63 * changes cx_strcat variants to allow handling of ENOMEM
b9654414c087 fix typos in CHANGELOG
Mike Becker <universe@uap-core.de>
parents: 1191
diff changeset
64 * 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
65 * 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
66 * 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
67 * 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
68 * 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
69 * 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
70 * 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
71 * removes utils.h
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
72 * 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
73 * 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
74 * 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
75 * removes CMake
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
76 * removes GTest dependency
11a0f6f0f30b link doxygen and coverage reports on overview page
Mike Becker <universe@uap-core.de>
parents: 1140
diff changeset
77 * 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
78 * 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
79 * 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
80 * 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
81 * 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
82 * ends UCX 2.1 long term support
1140
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
83
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
84 ### Version 3.0 - 2023-07-09 {collapsible="true"}
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
85
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
86 * complete redesign from scratch
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
87 * 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
88 * collections are now dynamically implemented
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
89 * 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
90 * 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
91 * various fixes and improvements
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
92 * drops some other, rarely used, features
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
93 * removes testing implementation from the lib
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
94
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
95 ### Version 2.1 - 2019-12-30 {collapsible="true"}
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 * adds string replace functions
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
98 * adds set operations for ` UcxList` and `UcxMap`
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
99 * adds `sstrcaseprefix()` and `sstrcasesuffix()`
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
100 * improves Doxygen documentation in ucx/string.h
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
101 * adds `UcxArray` data type
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
102 * 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
103
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
104 ### Version 2.0 - 2018-12-28 {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 * some uncritical bug fixes
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
107 * 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
108 * 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
109 * renames utility compare functions
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
110
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
111 ### Version 1.1 - 2018-05-14 {collapsible="true"}
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 * 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
114 * adds `ucx_buffer_to_sstr()` macro
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
115 * adds `ucx_avl_free_content()`
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
116 * 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
117 * adds `SFMT()` and `PRIsstr` convenience macros
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
118 * 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
119
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
120 ### 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
121
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
122 * some bug fixes
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
123 * adds integer overflow checks
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
124
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
125 ### Version 1.0 - 2017-10-28 {collapsible="true"}
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
126
88a9ee79c102 start overhauling the entire web documentation
Mike Becker <universe@uap-core.de>
parents:
diff changeset
127 * first stable version of UCX released

mercurial