index d4a3d6cccb83ba3612416faec7edd3b03995dedc..35c53e5b0b84c9818ac11a7a4004483a4ff27ac3 100644 (file)
--- a/src/core/store_lookup.c
+++ b/src/core/store_lookup.c
} host_matcher_t;
#define HOST_M(m) ((host_matcher_t *)(m))
+typedef struct {
+ sdb_store_matcher_t *m;
+ sdb_store_lookup_cb cb;
+ void *user_data;
+} lookup_iter_data_t;
+
+/*
+ * private helper functions
+ */
+
+static int
+lookup_iter(sdb_store_base_t *obj, void *user_data)
+{
+ lookup_iter_data_t *d = user_data;
+
+ if (! sdb_store_matcher_matches(d->m, obj))
+ return d->cb(obj, d->user_data);
+ return 0;
+} /* lookup_iter */
+
/*
* matcher implementations
*/
return matchers[m->type](m, obj);
} /* sdb_store_matcher_matches */
+int
+sdb_store_lookup(sdb_store_matcher_t *m, sdb_store_lookup_cb cb,
+ void *user_data)
+{
+ lookup_iter_data_t data = { m, cb, user_data };
+
+ if (! cb)
+ return -1;
+ return sdb_store_iterate(lookup_iter, &data);
+} /* sdb_store_lookup */
+
/* vim: set tw=78 sw=4 ts=4 noexpandtab : */