=encoding UTF-8 =head1 НАИМЕНОВАНИЕ BH_Hashmap - неупорядочный ассоциативный массив =head1 СИНТАКСИС #include cc prog.c -o prog -lbh =head1 ОПИСАНИЕ Библиотека BH_Hashmap предоставляет реализацию неупорядоченного ассоциативного массива, основанного на хэш-таблице. Она позволяет эффективно хранить и извлекать данные по ключу. =head1 API ВЫЗОВЫ =head2 BH_HashmapNew BH_Hashmap *BH_HashmapNew(BH_EqualCallback equal, BH_HashCallback hash); Создаёт ассоциативный массив. Параметр I принимает указатель на функцию, которая сравнивает два элемента. Параметр I принимает указатель на функцию, вычисляющую хэш-значение элемента. В случае успеха функция возвращает указатель на новый объект BH_Hashmap или NULL в случае ошибки. =head2 BH_HashmapFree void BH_HashmapFree(BH_Hashmap *hashmap); Уничтожает ассоциативный массив. =head2 BH_HashmapClear void BH_HashmapClear(BH_Hashmap *hashmap); Очищает ассоциативный массив. =head2 BH_HashmapReserve int BH_HashmapReserve(BH_Hashmap *hashmap, size_t size); Резервирует место как минимум для I элементов. Вызов этой функции делает существующие итераторы недействительными. В случае успеха функция возвращает 0, в случае ошибки - код ошибки. =head2 BH_HashmapInsert int BH_HashmapInsert(BH_Hashmap *hashmap, void *key, void *value); Вставляет элемент, представленный парой ключ-значение I и I. Функция позволяет вставлять несколько элементов с одинаковым значением ключа. Вызов этой функции делает существующие итераторы недействительными. В случае успеха функция возвращает 0, в случае ошибки - код ошибки. =head2 BH_HashmapRemove void BH_HashmapRemove(BH_Hashmap *hashmap, void *key); Удаляет элемент с заданным значением ключа I. Если ассоциативный массив содержит несколько элементов с одинаковым значением ключа, функция удалит только одну пару ключ-значение. Вызов этой функции делает существующие итераторы недействительными. =head2 BH_HashmapAt int BH_HashmapAt(BH_Hashmap *hashmap, void *key, void **value); Проверяет наличие элемента с заданным ключом I. Опциональный параметр I возвращает значение элемента с заданным ключом. В случае успеха функция возвращает 0, в случае ошибки - код ошибки. =head2 BH_HashmapEmpty int BH_HashmapEmpty(BH_Hashmap *hashmap); Проверяет, является ли ассоциативный массив пустым. =head2 BH_HashmapSize size_t BH_HashmapSize(BH_Hashmap *hashmap); Возвращает количество элементов. =head2 BH_HashmapCapacity size_t BH_HashmapCapacity(BH_Hashmap *hashmap); Возвращает ёмкость. =head2 BH_HashmapFactor float BH_HashmapFactor(BH_Hashmap *hashmap); Возвращает максимальный коэффициент загрузки. =head2 BH_HashmapSetFactor void BH_HashmapSetFactor(BH_Hashmap *hashmap, float factor); Задаёт максимальный коэффициент загрузки I. Новое значение максимального коэффициента загрузки будет применено при следующем вызове функции L или L. =head2 BH_HashmapIterAt void *BH_HashmapIterAt(BH_Hashmap *hashmap, void *key); Возвращает итератор на элемент с заданным ключом I. В случае успеха функция возвращает итератор или NULL. =head2 BH_HashmapIterNext void *BH_HashmapIterNext(BH_Hashmap *hashmap, void *iter); Возвращает итератор на следующий элемент. Опциональный параметр I принимает итератор на текущий элемент. В случае успеха функция возвращает итератор или NULL. =head2 BH_HashmapIterRemove void BH_HashmapIterRemove(BH_Hashmap *hashmap, void *iter); Удаляет элемент по заданному итератору I. Вызов этой функции делает существующие итераторы недействительными. =head2 BH_HashmapIterKey void *BH_HashmapIterKey(void *iter); Возвращает ключ элемента, указываемый итератором I. =head2 BH_HashmapIterValue void *BH_HashmapIterValue(void *iter); Возвращает значение элемента, указываемое итератором I. =head1 СМ. ТАКЖЕ L