aboutsummaryrefslogtreecommitdiff
path: root/doc/Manual/ru/BH_Hashmap.pod
blob: 30a1116699e52b88c242f1b08590e45af279c92e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
=encoding UTF-8


=head1 НАИМЕНОВАНИЕ

BH_Hashmap - неупорядочный ассоциативный массив


=head1 СИНТАКСИС

 #include <BH/Hashmap.h>
 
 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<equal> принимает указатель на функцию, которая сравнивает два 
элемента.

Параметр I<hash> принимает указатель на функцию, вычисляющую хэш-значение 
элемента.

В случае успеха функция возвращает указатель на новый объект 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<size> элементов.

Вызов этой функции делает существующие итераторы недействительными.

В случае успеха функция возвращает 0, в случае ошибки - код ошибки.


=head2 BH_HashmapInsert

 int BH_HashmapInsert(BH_Hashmap *hashmap,
                      void *key,
                      void *value);

Вставляет элемент, представленный парой ключ-значение I<key> и I<value>.

Функция позволяет вставлять несколько элементов с одинаковым значением ключа.

Вызов этой функции делает существующие итераторы недействительными.

В случае успеха функция возвращает 0, в случае ошибки - код ошибки.


=head2 BH_HashmapRemove

 void BH_HashmapRemove(BH_Hashmap *hashmap,
                       void *key);

Удаляет элемент с заданным значением ключа I<key>.

Если ассоциативный массив содержит несколько элементов с одинаковым значением 
ключа, функция удалит только одну пару ключ-значение.

Вызов этой функции делает существующие итераторы недействительными.


=head2 BH_HashmapAt

 int BH_HashmapAt(BH_Hashmap *hashmap,
                  void *key,
                  void **value);

Проверяет наличие элемента с заданным ключом I<key>.

Опциональный параметр I<value> возвращает значение элемента с заданным ключом.

В случае успеха функция возвращает 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<factor>.

Новое значение максимального коэффициента загрузки будет применено при следующем
вызове функции
L</BH_HashmapInsert> или L</BH_HashmapReserve>.


=head2 BH_HashmapIterAt

 void *BH_HashmapIterAt(BH_Hashmap *hashmap,
                        void *key);

Возвращает итератор на элемент с заданным ключом I<key>.

В случае успеха функция возвращает итератор или NULL.


=head2 BH_HashmapIterNext

 void *BH_HashmapIterNext(BH_Hashmap *hashmap,
                          void *iter);

Возвращает итератор на следующий элемент.

Опциональный параметр I<iter> принимает итератор на текущий элемент.

В случае успеха функция возвращает итератор или NULL.


=head2 BH_HashmapIterRemove

 void BH_HashmapIterRemove(BH_Hashmap *hashmap,
                           void *iter);

Удаляет элемент по заданному итератору I<iter>.

Вызов этой функции делает существующие итераторы недействительными.


=head2 BH_HashmapIterKey

 void *BH_HashmapIterKey(void *iter);

Возвращает ключ элемента, указываемый итератором I<iter>.


=head2 BH_HashmapIterValue

 void *BH_HashmapIterValue(void *iter);

Возвращает значение элемента, указываемое итератором I<iter>.


=head1 СМ. ТАКЖЕ

L<BH>