/* Copyright (c) 2005-2009 Dovecot authors, see the included COPYING file */
#include "lib.h"
+#include "array.h"
#include "bsearch-insert-pos.h"
bool bsearch_insert_pos(const void *key, const void *base, unsigned int nmemb,
return FALSE;
}
+bool array_bsearch_insert_pos_i(const struct array *array, const void *key,
+ int (*cmp)(const void *, const void *),
+ unsigned int *idx_r)
+{
+ return bsearch_insert_pos(key, array->buffer->data,
+ array_count_i(array),
+ array->element_size, cmp, idx_r);
+}
size_t size, int (*cmp)(const void *, const void *),
unsigned int *idx_r);
+bool array_bsearch_insert_pos_i(const struct array *array, const void *key,
+ int (*cmp)(const void *, const void *),
+ unsigned int *idx_r);
+#ifdef CONTEXT_TYPE_SAFETY
+#define array_bsearch_insert_pos(array, key, cmp, idx_r) \
+ ({(void)(1 ? 0 : cmp(key, ARRAY_TYPE_CAST_CONST(array)NULL)); \
+ array_bsearch_insert_pos_i(&(array)->arr, (const void *)key, \
+ (int (*)(const void *, const void *))cmp, idx_r); })
+#else
+#define array_bsearch(array, key, cmp) \
+ array_bsearch_insert_pos_i(&(array)->arr, (const void *)key, \
+ (int (*)(const void *, const void *))cmp, idx_r)
+#endif
+
#endif