docs/Writerside/topics/about.md

Tue, 11 Feb 2025 21:58:22 +0100

author
Mike Becker <universe@uap-core.de>
date
Tue, 11 Feb 2025 21:58:22 +0100
changeset 1202
f0aa627c37b6
parent 1194
b9654414c087
permissions
-rw-r--r--

Removed tag scstr_t-final

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 [&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
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
b9654414c087 fix typos in CHANGELOG
Mike Becker <universe@uap-core.de>
parents: 1191
diff changeset
56 * changes cx_strcat variants to allow handling of ENOMEM
b9654414c087 fix typos in CHANGELOG
Mike Becker <universe@uap-core.de>
parents: 1191
diff changeset
57 * 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
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

mercurial