#include "config.h" #include #include /** * invbloom - implementation of invertible bloom lookup tables. * * This code implements a subset of invertible bloom lookup tables * as described in[1]. * * [1] Goodrich, Michael T., and Michael Mitzenmacher. "Invertible bloom * lookup tables." Communication, Control, and Computing (Allerton), 2011 * 49th Annual Allerton Conference on. IEEE, 2011. * http://arxiv.org/pdf/1101.2245 * * License: BSD-MIT * * Example: * #include * #include * * int main(int argc, char *argv[]) * { * unsigned int i, n; * struct invbloom *ib = invbloom_new(NULL, char *, 16, 0); * * for (i = 1; i < argc; i++) * invbloom_insert(ib, &argv[i]); * * n = 0; * for (i = 1; i < argc; i++) * n += invbloom_get(ib, &argv[i]); * * printf("%u out of %u are found\n", n, argc); * * n = 0; * for (i = 1; i < argc; i++) { * unsigned int j; * char **p = invbloom_extract(NULL, ib); * * for (j = 1; j < argc; j++) { * if (p == &argv[j]) * n++; * } * tal_free(p); * } * printf("%u out of %u were extracted\n", n, argc); * return 0; * } */ int main(int argc, char *argv[]) { /* Expect exactly one argument */ if (argc != 2) return 1; if (strcmp(argv[1], "depends") == 0) { printf("ccan/endian\n"); printf("ccan/hash\n"); printf("ccan/short_types\n"); printf("ccan/tal\n"); printf("ccan/typesafe_cb\n"); return 0; } return 1; }