blob: bad655b76a796fdcc8a03390ee606420acffa182 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
|
# 21
* Update readme.
* Require C23 (C2x).
* Use GCC (has better C23 support).
* Cleanup UTF-8 decoder and encoder (using binary literals).
* Rename `u8c_u32max` to `u8c_u32max` and move it to `u8c/u32.h`.
* Don't clear last error message on calls to `u8c_geterr`.
* Restructure source files.
* Fix makefile.
* Update test program.
# 20
* Update documentation.
* Optimise `u8c_println`,
* Make `u8c_print`, `u8c_println`, and `u8c_vprint` thread-safe (if thread-safe is not disabled).
* Create base for UTF-16 related functions:
* Add function for allocating UTF-16 strings; `u8c_u16alloc`.
* Add function for deallocating UTF-16 strings; `u8c_u16free`.
* Restructure headers:
* `u8c/SIZE_C.h`:
* `SIZE_C`
* `u8c/err.h`:
* `u8c_errtyp`
* `u8c_errhandltyp`
* `u8c_geterr`
* `u8c_regerrhandl`
* `u8c_seterr`
* `u8c/fmt`:
* `u8c_dbgprint`
* `u8c_fmt`
* `u8c_fmttyp`
* `u8c_print`
* `u8c_println`
* `u8c_setfmt`
* `u8c_vfmt`
* `u8c_vprint`
* `u8c/is.h`:
* `u8c_isalnum`
* `u8c_isalpha`
* `u8c_iscntrl`
* `u8c_isdigit`
* `u8c_ispunct`
* `u8c_isspace`
* `u8c_isxdigit`
* `u8c/main.h`:
* `u8c_dbg`
* `u8c_abrt`
* `u8c_end`
* `u8c_init`
* `u8c_thrdsafe`
* `u8c_u32max`
* `u8c_ver`
* `u8c/u16.h`:
* `u8c_u16alloc`
* `u8c_u16free`
* `u8c/u32.h`:
* `u8c_u32alloc`
* `u8c_u32cat`
* `u8c_u32cmp`
* `u8c_u32cp`
* `u8c_u32fndchr`
* `u8c_u32fndpat`
* `u8c_u32free`
* `u8c_u32ins`
* `u8c_u32substr`
* `u8c_u32sz`
* `u8c/u8.h`:
* `u8c_u8alloc`
* `u8c_u8dec`
* `u8c_u8enc`
* `u8c_u8free`
* Disable *-Wpadded*.
* Update `SIZE_C`.
* Always use character constants (instead of numerical values).
# 1↋
* Add more codepoints to `u8c_ispunct`.
* Don't use Zstandard for man page compression. Use Gzip.
* Remove Zstandard as a dependency.
* Update gitignore.
# 1↊
* Initialise error handler array.
* Initialise and destroy error handler array mutex.
* Fix Makefile.
* Update gitignore.
# 19
* Fix error when compiling with GCC: *src/u8c/dat.c:22:29: error: initializer element is not constant [-Wpedantic]*.
* Improve error handling:
* Add enumeration type for error types; `u8c_errtyp`.
* Add function for registering error handlers; `u8c_regerrhandl` (see `test.c`).
* Add function for inserting UTF-32 strings into UTF-32 strings; `u8c_u32ins`.
* Enable more warnings.
* Add man pages.
* Fix `u8c_u32cat` skipping the last character in `lstr`.
* Remove the `uninstall` target (it was deemed to unsafe).
* Add *Zstandard* as a dependency.
# 18
* Update `.gitignore`.
* Remove core dump.
# 17
* Create new logo.
* Update headers.
* Invert status values.
# 16
* Add function for concatenating UTF-32 strings; `u8c_u32cat`.
* Add functions for allocating UTF-32 and UTF-8 strings; `u8c_u32alloc` and `u8c_u8alloc`.
* Add function for finding a given codepoint in an UTF-32 string; `u8c_u32fndchr`.
* Add function for finding a given pattern (string) in an UTF-32 string; `u8c_u32fndpat`.
* Update `SIZE_C`.
* Add function for aborting; `u8c_abrt`.
* Rename `u8c_debug` to `u8c_dbg`.
* Use `bool` (`_Bool`) for return values instead of `uint_least8_t`.
* Add more format types.
* Fix incorrect unabbreviated names in headers.
* Add another function from `ctypes.h`; `u8c_isxdigit`.
* Use `char32_t` (from `uchar.h`) instead of `uint_least32_t` in UTF-32.
* Use `unsigned char` instead of `uint_least8_t` in UTF-8.
* Move all data into `u8c_dat` (of type `struct u8c_dattyp`).
* Add function for setting the format (base and endian) of `u8c_fmt` and company; `u8c_setfmt`.
* Remove `u8c_txt` in favour of Unicode string literals (much clearer code, but less portable).
* Add function for getting a sub-string of an UTF-32 string; `u8c_u32substr`.
* Don't count the null-terminator in string sizes.
* Add macro for maximum valid Unicode codepoint; `u8c_u32max`.
* Remove `txttolit`.
* Add function for deallocating UTF-8 strings; `u8c_u8free`.
* Turn both `u8c_dbg` and `u8c_thrdsafe` into type `bool` from `uint_least8_t`.
* Add more letters to `u8c_isalpha`.
# 15
* Add missing include directives to `include/u8c/u32free.h` and `include/u8c/u8free.h`.
# 14
* Free error message when `u8c_geterr` is called (after copying, of course).
* Update `u8c_freeu8`.
* Rename `u8c_freeu32` to and `u8c_u32free` and `u8c_freeu8` to `u8c_u8free`.
# 13
* Fix `u8c_txt` in C++.
# 12
* Use `u8c_println` instead of `u8c_print` in `u8c_dbgprint`.
# 11
* Update README.
* Update Makefile.
* Use constant variables more.
* Create macro for creating human-readable UTF-32 strings; `u8c_txt`.
* Add macros for deallocating UTF-32 and UTF-8 strings (use these instead of `free` or `std::free`); `u8c_u32free` and `u8c_u8free`.
* Optimisations.
# 10
* Make `u8c_seterr` public.
* Update logo.
# ↋
* Fix `u8c_ver`.
* Add Turkish letters to `u8c_isalpha`.
# ↊
* Add UTF-32 alternatives to some of the functions from `ctypes.h`; `u8c_isalnum`, `u8c_isalpha`, `u8c_iscntrl`, `u8c_isdigit`, `u8c_isspace`, and `u8c_ispunct`.
* Add assertions.
* Create new logo (move old logo to `u8c_old.svg`).
# 9
* Optimisations.
* Remove some optimisations, as they prevent C++ compatibility.
* Fix memory leak in test program.
* Add function for comparing UTF-32 strings; `u8c_u32cmp`.
# 8
* Optimisations.
# 7
* Optimisations.
# 6
* Remove unneeded include directives.
* Update `SIZE_C` to utilise the C++23 `std::size_t` literal suffix (`uz`).
* Fix include guard in `include/u8c/stat.h`.
* Add more error messages.
# 5
* Add logo (`u8c.svg`).
* Fix UTF-8 decoder.
* Update README.
# 4
* Add link to PKGBUILD in README.
# 3
* Remove `include/u8c.h`.
* Fix minor errors.
# 2
* Move PKGBUILD to seperate project.
* Create a *master* header that includes every other header.
* Create `size_t` constant macro.
* Add colour to text formatting.
* Specify what file to print to in `u8c_print`.
* Add C++ compatibility to headers.
* Add functions for initialising and ending *u8c*.
* Add dedicated function for text formatting (altough not working at the moment); `u8c_fmt`.
* Remove `u8c_free`.
* Improve error handling in the form of error messages (which can be retrieved by the programmer via `u8c_geterr`).
* Split `u8c_print` into two functions: `u8c_print` and `u8c_println`.
* Break the UTF-8 decoder somehow.
* Add compile-time option to be thread-safe (requiring C11 threads if enabled).
* Add function for copying UTF-32; `u8c_u32cp`.
* Add function for getting the size of an UTF-32 array; `u8c_u32sz`.
* Add `va_list` alternatives to `u8c_fmt` and `u8c_print`; `u8c_vfmt` and `u8c_vprint`.
* Add test-program (run via `make runtest`).
* Add program to make human-readable UTF-32 strings machine-readable.
* Turn `u8c_ver` into a compile-time macro.
* Enable more warnings when compiling.
* Add assertions.
# 1
* Fix Makefile compiling *u8c.so* instead of *libu8c.so*.
* Add global variable for version control.
# 0
* Fork from *luma*.
|