From 53b74ddf2cfe0f654724c3a1aca16e7fb6044ae5 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Fri, 25 Apr 2014 00:13:44 +0200 Subject: vector: add VECTOR_BSEARCH macro and use where appropriate --- src/vector.h | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/vector.h') diff --git a/src/vector.h b/src/vector.h index 701b64e..0396c01 100644 --- a/src/vector.h +++ b/src/vector.h @@ -81,3 +81,10 @@ void _fastd_vector_delete(fastd_vector_desc_t *desc, void **data, size_t pos, si __typeof__(v) *_v = &(v); \ _fastd_vector_delete(&_v->desc, (void**)&_v->data, (pos), sizeof(*_v->data)); \ }) + +#define VECTOR_BSEARCH(key, v, cmp) ({ \ + __typeof__(v) *_v = &(v); \ + const __typeof__(*_v->data) *_key = (key); \ + int (*_cmp)(__typeof__(_key), __typeof__(_key)) = (cmp); \ + (__typeof__(_v->data))bsearch(_key, _v->data, _v->desc.length, sizeof(*_v->data), (int (*)(const void *, const void *))_cmp); \ + }) -- cgit v1.2.3