Update base package documentation

2026-05-10 15:56:53 +01:00
parent 40a9f5156d
commit 2e6dd6cfa1
+21 -4
@@ -12,7 +12,7 @@ The `base` package provides core data structures and memory abstractions: dynami
## 🗄️ Allocator Interface ## 🗄️ Allocator Interface
A pluggable allocator that abstracts memory allocation strategies. See os package for the arena-backed implementation. A pluggable allocator that abstracts memory allocation strategies. See `os` package for the arena-backed implementation.
```c ```c
typedef struct Allocator Allocator; typedef struct Allocator Allocator;
@@ -86,11 +86,28 @@ A type-generic dynamic array with both stack-allocated and allocator-backed vari
### Allocator-backed Operations (may grow) ### Allocator-backed Operations (may grow)
These macros **return the array pointer**, which may differ from the input if reallocation occurred. Always assign the result back to your array variable.
| Macro | Description | | Macro | Description |
|-------|-------------| |-------|-------------|
| `wapp_array_append_alloc(type, allocator, array, value_ptr, flags)` | Appends, growing via allocator | | `wapp_array_append_alloc(type, allocator, array, value_ptr, flags)` | Appends, growing via allocator. Returns (possibly new) array pointer. |
| `wapp_array_extend_alloc(type, allocator, dst, src, flags)` | Extends, growing via allocator | | `wapp_array_extend_alloc(type, allocator, dst, src, flags)` | Extends, growing via allocator. Returns (possibly new) dst pointer. |
| `wapp_array_copy_alloc(type, allocator, dst, src, flags)` | Copies, growing via allocator | | `wapp_array_copy_alloc(type, allocator, dst, src, flags)` | Copies, growing via allocator. Returns (possibly new) dst pointer. |
```c
I32Array arr = wapp_array_alloc_capacity(i32, &arena, 4, ARRAY_INIT_NONE);
i32 val = 42;
I32Array new_arr = wapp_array_append_alloc(i32, &arena, &arr, &val, ARRAY_INIT_NONE);
if (new_arr != arr) {
// Reallocation occurred — the old memory is still valid
// but will be managed by the allocator (no manual free needed
// for arena allocators; for malloc-like allocators you may
// need to free the old array).
arr = new_arr;
}
```
### Other ### Other