| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
| |
In a previous commit, adding HASH node support, this code was added
that would let both ARRAY and HASH nodes allocate an array.
The syntax was however wrong, never allocating memory and thus
failing with an INVALID_STATE when freeing.
Additionally, this begs the question how a cleanup of INVALID_STATE
could be handled (i.e. with a `goto fail` in the `bowl_free` function)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The example previously would lead to corrupt memory
when running for items that needed to re-hash the
hash array. This has been fixed.
Secondly, all HASH node memory leaks are now fixed,
that resulted from badly tracking objects through the
resize process. A new function `hash_free_shallow` was
added to help with this. The function `array_free_shallow`
is unused but might become useful in the future and so
was not removed.
The hash strategy is still garbage but this can be fixed later :)
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This PR adds initial support for HASH data nodes in libbowl.
This allows a performant key-value store lookup in a node tree.
The hashing code implements the "murmur" hash, which has shown
good performance over at [`libcuckoo`]. Currently there is no
extended hashing strategy, which should definitely be changed.
[`libcuckoo`]: https://github.com/qaul/libcuckoo
(currently a collision will cause a recursive re-alloc)
Some of the type-level hacks also begs the question if a PAIR
data node might be warranted, even though it would break the
simple design around bowl->data.
|
|
|
|
|
|
|
|
|
| |
This commit rewrites pretty much the entire library. It is now much
smaller and more maintainable (split over multiple files). It will now
also support more features (that aren't implemented yet).
Adding two examples to show how to use the new API. Also changing the
name of the library everywhere.
|
|
|