|
|
@ -1,3 +1,69 @@ |
|
|
|
# gplib |
|
|
|
|
|
|
|
General Purpose library for POSIX systems |
|
|
|
General Purpose library for Freestanding C++ environment and POSIX systems. |
|
|
|
|
|
|
|
> Expects C++17 |
|
|
|
|
|
|
|
## Datastructures |
|
|
|
|
|
|
|
### `buffer` |
|
|
|
|
|
|
|
Also named "slices" in other languages, they are a combination of a pointer and a size. |
|
|
|
|
|
|
|
### `array` |
|
|
|
|
|
|
|
A fixed size, inplace array. |
|
|
|
|
|
|
|
### `indexed_array` |
|
|
|
|
|
|
|
A resizable, fragmentation resistant array, it associates elements with fixed indices. It will reuse deleted indices. |
|
|
|
|
|
|
|
### `optional` |
|
|
|
|
|
|
|
A Maybe monad, will not allocate for final classes or primitives. |
|
|
|
|
|
|
|
### `variant` and `fixed_variant` |
|
|
|
|
|
|
|
### `ring_list` |
|
|
|
|
|
|
|
### `bloomfilter` |
|
|
|
|
|
|
|
### `quotient_filter` |
|
|
|
|
|
|
|
## Algorithms |
|
|
|
|
|
|
|
## Tools |
|
|
|
|
|
|
|
### Allocators |
|
|
|
|
|
|
|
### Renderer |
|
|
|
|
|
|
|
### Internal file-system |
|
|
|
|
|
|
|
## GP Configuration |
|
|
|
|
|
|
|
### `enum class gp_errorcodes` |
|
|
|
|
|
|
|
This `enum` should not contain any non-zero value. |
|
|
|
|
|
|
|
- `infinite_skipstone`: used when a linear probing reaches infinity lookup |
|
|
|
|
|
|
|
### Generic elements |
|
|
|
|
|
|
|
- `constexpr bool gp_config::has_exceptions`: enables or disables exceptions throwing |
|
|
|
- `constexpr bool gp_config::has_buffer_bounds`: enables or disables bound checking |
|
|
|
- `constexpr size_t gp_config::arc4random_strength`: determines the amount of shuffling of the arc4random PRNG |
|
|
|
- `constexpr /* T */ gp_config::assertion`: `T` is a callable type taking a boolean predicate and a `const char*` |
|
|
|
- `typedef /* T */ file_descriptor_t`: `T` is an integer type. No negative value should be expected |
|
|
|
|
|
|
|
|
|
|
|
### Rendering and mathematics |
|
|
|
|
|
|
|
- `using gp_config::rendering::default_type`: provide a numeric type for rendering and for the mathematical framework |
|
|
|
- `constexpr default_type gp_config::rendering::epsilon`: a small value of the default type (example for float: `0.001f`) |
|
|
|
- `#define GP_CONFIG__RENDERING__COLOR_T`: a configuration define for storing a color for rendering purposes |
|
|
|
|
|
|
|
### Memory |
|
|
|
|
|
|
|
- `using gp_config::memory_module::default_allocator`: a default constructible allocator type |
|
|
|
- `constexpr bool gp_config::memory_module::is_ok`: true if the default allocator is able to allocate, false if not |