3939#define BK_OK 0
4040#define BK_ENOMEM 12
4141#define BK_EINVAL 22
42+ #define BK_ERANGE 34
4243
4344/* Cannot use <stdbool.h> because it is C99 not C89. */
4445#define BK_FALSE 0
@@ -65,6 +66,7 @@ array array_init(size_t element_count, size_t data_size);
6566size_t array_size (array me );
6667void array_copy_to_array (void * arr , array me );
6768void * array_get_data (array me );
69+ bk_err array_add_all (array me , void * arr , size_t size );
6870
6971/* Accessing */
7072bk_err array_set (array me , size_t index , void * data );
@@ -92,6 +94,7 @@ size_t deque_size(deque me);
9294bk_bool deque_is_empty (deque me );
9395bk_err deque_trim (deque me );
9496void deque_copy_to_array (void * arr , deque me );
97+ bk_err deque_add_all (deque me , void * arr , size_t size );
9598
9699/* Adding */
97100bk_err deque_push_front (deque me , void * data );
@@ -133,6 +136,7 @@ forward_list forward_list_init(size_t data_size);
133136size_t forward_list_size (forward_list me );
134137bk_bool forward_list_is_empty (forward_list me );
135138void forward_list_copy_to_array (void * arr , forward_list me );
139+ bk_err forward_list_add_all (forward_list me , void * arr , size_t size );
136140
137141/* Adding */
138142bk_err forward_list_add_first (forward_list me , void * data );
@@ -176,6 +180,7 @@ list list_init(size_t data_size);
176180size_t list_size (list me );
177181bk_bool list_is_empty (list me );
178182void list_copy_to_array (void * arr , list me );
183+ bk_err list_add_all (list me , void * arr , size_t size );
179184
180185/* Adding */
181186bk_err list_add_first (list me , void * data );
@@ -227,6 +232,14 @@ bk_bool map_get(void *value, map me, void *key);
227232bk_bool map_contains (map me , void * key );
228233bk_bool map_remove (map me , void * key );
229234
235+ /* Retrieval */
236+ void * map_first (map me );
237+ void * map_last (map me );
238+ void * map_lower (map me , void * key );
239+ void * map_higher (map me , void * key );
240+ void * map_floor (map me , void * key );
241+ void * map_ceiling (map me , void * key );
242+
230243/* Ending */
231244void map_clear (map me );
232245map map_destroy (map me );
@@ -263,6 +276,14 @@ bk_bool multimap_contains(multimap me, void *key);
263276bk_bool multimap_remove (multimap me , void * key , void * value );
264277bk_bool multimap_remove_all (multimap me , void * key );
265278
279+ /* Retrieval */
280+ void * multimap_first (multimap me );
281+ void * multimap_last (multimap me );
282+ void * multimap_lower (multimap me , void * key );
283+ void * multimap_higher (multimap me , void * key );
284+ void * multimap_floor (multimap me , void * key );
285+ void * multimap_ceiling (multimap me , void * key );
286+
266287/* Ending */
267288void multimap_clear (multimap me );
268289multimap multimap_destroy (multimap me );
@@ -295,6 +316,14 @@ bk_bool multiset_contains(multiset me, void *key);
295316bk_bool multiset_remove (multiset me , void * key );
296317bk_bool multiset_remove_all (multiset me , void * key );
297318
319+ /* Retrieval */
320+ void * multiset_first (multiset me );
321+ void * multiset_last (multiset me );
322+ void * multiset_lower (multiset me , void * key );
323+ void * multiset_higher (multiset me , void * key );
324+ void * multiset_floor (multiset me , void * key );
325+ void * multiset_ceiling (multiset me , void * key );
326+
298327/* Ending */
299328void multiset_clear (multiset me );
300329multiset multiset_destroy (multiset me );
@@ -392,6 +421,14 @@ bk_err set_put(set me, void *key);
392421bk_bool set_contains (set me , void * key );
393422bk_bool set_remove (set me , void * key );
394423
424+ /* Retrieval */
425+ void * set_first (set me );
426+ void * set_last (set me );
427+ void * set_lower (set me , void * key );
428+ void * set_higher (set me , void * key );
429+ void * set_floor (set me , void * key );
430+ void * set_ceiling (set me , void * key );
431+
395432/* Ending */
396433void set_clear (set me );
397434set set_destroy (set me );
@@ -594,6 +631,7 @@ bk_err vector_reserve(vector me, size_t size);
594631bk_err vector_trim (vector me );
595632void vector_copy_to_array (void * arr , vector me );
596633void * vector_get_data (vector me );
634+ bk_err vector_add_all (vector me , void * arr , size_t size );
597635
598636/* Adding */
599637bk_err vector_add_first (vector me , void * data );
0 commit comments