https://github.com/r32/clib
my clib
https://github.com/r32/clib
Last synced: 3 months ago
JSON representation
my clib
- Host: GitHub
- URL: https://github.com/r32/clib
- Owner: R32
- License: gpl-2.0
- Created: 2020-11-02T14:53:09.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2025-10-28T16:26:10.000Z (8 months ago)
- Last Synced: 2025-10-28T18:26:44.289Z (8 months ago)
- Language: C
- Size: 277 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
my c language trashbox
--------
- [`tinyalloc`](src/tinyalloc.c) : Releases all requested memory at once instead of releasing each object separately.
* tinyalloc : The requested memory block can be freed individually.
* bumpalloc : The requested memory block cannot be freed individually, you can only call `bumpreset/bumpdestroy` to free all blocks at once
* fixedalloc :
- [`strbuf`](src/strbuf.c): Auto-growing string buffer
* [`wcsbuf`](src/wcsbuf.c) : The wchar_t version of strbuf
- [`pmap`](src/pmap.c) : PMap in C language, This code is ported from OCaml ExtLib PMap [sample](test/pmap_test.c)
- ~~[`rarray`](src/rarray.c) : Auto-growing arrays(by `realloc`)~~ It's horrible
hiden
```c
// rarray_fast_set, rarray_fast_get
struct point {
int x, y, z;
};
struct rarray array = { .size = sizeof(struct point), .base = NULL };
int len = 16;
// you could also call `rarray_grow()` to increase "capacity" only
rarray_setlen(&array, len);
struct point *ptr = rarray_fast_get(&array, struct point, 0);
for (int i = 0; i < len; i++) {
*ptr++ = (struct point){ i, i, i };
}
for (int i = 0; i < len; i++) {
struct point *ptr = rarray_fast_get(&array, struct point, i);
assert(ptr->x == i && ptr->y == i && ptr->z == i);
}
rarray_discard(&array);
```
- ~~`slist.h`: Singly Linked List.~~ Deprecated
- `ucs2`: wcs_to_utf8, utf8_to_wcs
- [`rjson`](src/rjson.c) :
- `circ_buf.h`: Copied from [linux/circ_buf.h](https://github.com/torvalds/linux/blob/master/include/linux/circ_buf.h)
- `list.h`: Doubly Linked List. Copied from [linux/tools/list.h](https://github.com/torvalds/linux/blob/master/tools/include/linux/list.h)
- `rbtree`: Copied from [linux/tools/rbtree.h](https://github.com/torvalds/linux/blob/master/tools/include/linux/rbtree.h)
## external links
- [lexer and Simple LR tool](https://github.com/r32/lex)