Refactor, separate docs from headers, add ru docs

Doxygen kind'a sucks and I need multilanguage documentation, so I did
that. Also, separated massive Math.h file into smaller files.
This commit is contained in:
2025-06-21 20:12:15 +03:00
parent 7ee69fc397
commit fc774fd0ff
116 changed files with 10693 additions and 3521 deletions

View File

@@ -0,0 +1,197 @@
=encoding UTF-8
=head1 NAME
BH_Hashmap - unordered associative array
=head1 SYNTAX
#include <BH/Hashmap.h>
cc prog.c -o prog -lbh
=head1 DESCRIPTION
The BH_Hashmap library provides an implementation of an unordered associative
array based on a hash table. It allows you to store and retrieve data by key
efficiently.
=head1 API CALLS
=head2 BH_HashmapNew
BH_Hashmap *BH_HashmapNew(BH_EqualCallback equal,
BH_HashCallback hash);
Creates an associative array.
The I<equal> parameter takes a pointer to a function that compares two elements.
The I<hash> parameter takes a pointer to a function that calculates the hash
value of an element.
If successful, the function returns a pointer to a new BH_Hashmap object or NULL
in case of an error.
=head2 BH_HashmapFree
void BH_HashmapFree(BH_Hashmap *hashmap);
Destroys the associative array.
=head2 BH_HashmapClear
void BH_HashmapClear(BH_Hashmap *hashmap);
Clears the associative array.
=head2 BH_HashmapReserve
int BH_HashmapReserve(BH_Hashmap *hashmap,
size_t size);
Reserves space for at least I<size> elements.
Calling this function invalidates existing iterators.
If successful, the function returns 0; otherwise, it returns an error code.
=head2 BH_HashmapInsert
int BH_HashmapInsert(BH_Hashmap *hashmap,
void *key,
void *value);
Inserts an element represented by the key-value pair I<key> and I<value>.
The function allows inserting multiple elements with the same key value.
Calling this function invalidates existing iterators.
If successful, the function returns 0; otherwise, it returns an error code.
=head2 BH_HashmapRemove
void BH_HashmapRemove(BH_Hashmap *hashmap,
void *key);
Removes the element with the given key value I<key>.
If the associative array contains multiple elements with the same key value, the
function will remove only one key-value pair.
Calling this function invalidates existing iterators.
=head2 BH_HashmapAt
int BH_HashmapAt(BH_Hashmap *hashmap,
void *key,
void **value);
Checks if there is an element with the given key I<key>.
The optional I<value> parameter returns the value of the element with the given
key.
If successful, the function returns 0; otherwise, it returns an error code.
=head2 BH_HashmapEmpty
int BH_HashmapEmpty(BH_Hashmap *hashmap);
Checks if the associative array is empty.
=head2 BH_HashmapSize
size_t BH_HashmapSize(BH_Hashmap *hashmap);
Returns the number of elements.
=head2 BH_HashmapCapacity
size_t BH_HashmapCapacity(BH_Hashmap *hashmap);
Returns the capacity.
=head2 BH_HashmapFactor
float BH_HashmapFactor(BH_Hashmap *hashmap);
Returns the maximum load factor.
=head2 BH_HashmapSetFactor
void BH_HashmapSetFactor(BH_Hashmap *hashmap,
float factor);
Sets the maximum load factor I<factor>.
The new value of the maximum load factor will be applied on the next call to
L</BH_HashmapInsert> or L</BH_HashmapReserve>.
=head2 BH_HashmapIterAt
void *BH_HashmapIterAt(BH_Hashmap *hashmap,
void *key);
Returns an iterator to the element with the given key I<key>.
If successful, the function returns an iterator or NULL.
=head2 BH_HashmapIterNext
void *BH_HashmapIterNext(BH_Hashmap *hashmap,
void *iter);
Returns an iterator to the next element.
The optional I<iter> parameter takes an iterator to the current element.
If successful, the function returns an iterator or NULL.
=head2 BH_HashmapIterRemove
void BH_HashmapIterRemove(BH_Hashmap *hashmap,
void *iter);
Removes the element by the given iterator I<iter>.
Calling this function invalidates existing iterators.
=head2 BH_HashmapIterKey
void *BH_HashmapIterKey(void *iter);
Returns the key of the element pointed to by the iterator I<iter>.
=head2 BH_HashmapIterValue
void *BH_HashmapIterValue(void *iter);
Returns the value of the element pointed to by the iterator I<iter>.
=head1 SEE ALSO
L<BH>