X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Fjbitset%2Fjbitset.c;fp=ccan%2Fjbitset%2Fjbitset.c;h=0756e3048ff9f1255b8b8ff9ec4a0850199c9ef4;hb=5e880e4ce45a3cececd0996b384482780a92070d;hp=0000000000000000000000000000000000000000;hpb=b734bbea227ae0c326a0f19f84b490d8895b2010;p=ccan diff --git a/ccan/jbitset/jbitset.c b/ccan/jbitset/jbitset.c new file mode 100644 index 00000000..0756e304 --- /dev/null +++ b/ccan/jbitset/jbitset.c @@ -0,0 +1,41 @@ +#include +#include +#include +#include + +struct jbitset *jbit_new(void) +{ + struct jbitset *set; + + /* Judy uses Word_t, we use size_t. */ + BUILD_ASSERT(sizeof(size_t) == sizeof(Word_t)); + + set = malloc(sizeof(*set)); + if (set) { + set->judy = NULL; + memset(&set->err, 0, sizeof(set->err)); + set->errstr = NULL; + } + return set; +} + +const char *jbit_error_(struct jbitset *set) +{ + char *str; + free((char *)set->errstr); + set->errstr = str = malloc(100); + if (!set->errstr) + return "out of memory"; + + sprintf(str, + "JU_ERRNO_* == %d, ID == %d\n", + JU_ERRNO(&set->err), JU_ERRID(&set->err)); + return str; +} + +void jbit_free(const struct jbitset *set) +{ + free((char *)set->errstr); + Judy1FreeArray((PPvoid_t)&set->judy, PJE0); + free((void *)set); +}