#include <ccan/tap/tap.h>
-#include <ccan/jmap/jmap_type.h>
#include <ccan/jmap/jmap.c>
struct foo;
struct idx;
-JMAP_DEFINE_PTRIDX_TYPE(struct idx, struct foo, foo);
+struct jmap_foo {
+ JMAP_MEMBERS(struct idx *, struct foo *);
+};
#define NUM 100
int main(int argc, char *argv[])
{
struct jmap_foo *map;
- struct foo *foo[NUM], **foop;
+ struct foo *foo[NUM+1], **foop;
struct idx *idx[NUM+1], *index;
unsigned int i;
for (i = 0; i < NUM+1; i++)
idx[i] = (void *)((char *)foo[i] + 1);
- map = jmap_foo_new();
- ok1(jmap_foo_error(map) == NULL);
+ map = jmap_new(struct jmap_foo);
+ ok1(jmap_error(map) == NULL);
- ok1(jmap_foo_test(map, idx[NUM]) == false);
- ok1(jmap_foo_get(map, idx[NUM]) == (struct foo *)NULL);
- ok1(jmap_foo_count(map) == 0);
- ok1(jmap_foo_first(map) == (struct idx *)NULL);
- ok1(jmap_foo_del(map, idx[0]) == false);
+ ok1(jmap_test(map, idx[NUM]) == false);
+ ok1(jmap_get(map, idx[NUM]) == (struct foo *)NULL);
+ ok1(jmap_count(map) == 0);
+ ok1(jmap_first(map) == (struct idx *)NULL);
+ ok1(jmap_del(map, idx[0]) == false);
/* Set only works on existing cases. */
- ok1(jmap_foo_set(map, idx[0], foo[0]) == false);
- ok1(jmap_foo_add(map, idx[0], foo[1]) == true);
- ok1(jmap_foo_get(map, idx[0]) == foo[1]);
- ok1(jmap_foo_set(map, idx[0], foo[0]) == true);
- ok1(jmap_foo_get(map, idx[0]) == foo[0]);
+ ok1(jmap_set(map, idx[0], foo[0]) == false);
+ ok1(jmap_add(map, idx[0], foo[1]) == true);
+ ok1(jmap_get(map, idx[0]) == foo[1]);
+ ok1(jmap_set(map, idx[0], foo[0]) == true);
+ ok1(jmap_get(map, idx[0]) == foo[0]);
- ok1(jmap_foo_test(map, idx[0]) == true);
- ok1(jmap_foo_count(map) == 1);
- ok1(jmap_foo_first(map) == idx[0]);
- ok1(jmap_foo_next(map, idx[0]) == NULL);
+ ok1(jmap_test(map, idx[0]) == true);
+ ok1(jmap_count(map) == 1);
+ ok1(jmap_first(map) == idx[0]);
+ ok1(jmap_next(map, idx[0]) == NULL);
- ok1(jmap_foo_del(map, idx[0]) == true);
- ok1(jmap_foo_test(map, idx[0]) == false);
- ok1(jmap_foo_count(map) == 0);
+ ok1(jmap_del(map, idx[0]) == true);
+ ok1(jmap_test(map, idx[0]) == false);
+ ok1(jmap_count(map) == 0);
for (i = 0; i < NUM; i++)
- jmap_foo_add(map, idx[i], foo[i]);
+ jmap_add(map, idx[i], foo[i]);
- ok1(jmap_foo_count(map) == NUM);
+ ok1(jmap_count(map) == NUM);
- ok1(jmap_foo_first(map) == idx[0]);
- ok1(jmap_foo_next(map, idx[0]) == idx[1]);
- ok1(jmap_foo_next(map, idx[NUM-1]) == NULL);
+ ok1(jmap_first(map) == idx[0]);
+ ok1(jmap_next(map, idx[0]) == idx[1]);
+ ok1(jmap_next(map, idx[NUM-1]) == NULL);
- ok1(jmap_foo_get(map, idx[0]) == foo[0]);
- ok1(jmap_foo_get(map, idx[NUM-1]) == foo[NUM-1]);
- ok1(jmap_foo_get(map, (void *)((char *)idx[NUM-1] + 1)) == NULL);
+ ok1(jmap_get(map, idx[0]) == foo[0]);
+ ok1(jmap_get(map, idx[NUM-1]) == foo[NUM-1]);
+ ok1(jmap_get(map, (void *)((char *)idx[NUM-1] + 1)) == NULL);
/* Reverse values in map. */
for (i = 0; i < NUM; i++) {
- foop = jmap_foo_getval(map, idx[i]);
+ foop = jmap_getval(map, idx[i]);
ok1(*foop == foo[i]);
*foop = foo[NUM-1-i];
- jmap_foo_putval(map, &foop);
+ jmap_putval(map, &foop);
}
for (i = 0; i < NUM; i++)
- ok1(jmap_foo_get(map, idx[i]) == foo[NUM-1-i]);
+ ok1(jmap_get(map, idx[i]) == foo[NUM-1-i]);
- foop = jmap_foo_firstval(map, &index);
+ foop = jmap_firstval(map, &index);
ok1(index == idx[0]);
ok1(*foop == foo[NUM-1]);
- jmap_foo_putval(map, &foop);
+ jmap_putval(map, &foop);
- foop = jmap_foo_nextval(map, &index);
+ foop = jmap_nextval(map, &index);
ok1(index == idx[1]);
ok1(*foop == foo[NUM-2]);
- jmap_foo_putval(map, &foop);
+ jmap_putval(map, &foop);
index = idx[NUM-1];
- foop = jmap_foo_nextval(map, &index);
+ foop = jmap_nextval(map, &index);
ok1(foop == NULL);
- ok1(jmap_foo_error(map) == NULL);
- jmap_foo_free(map);
+ ok1(jmap_error(map) == NULL);
+ jmap_free(map);
+
+ for (i = 0; i < NUM+1; i++)
+ free(foo[i]);
return exit_status();
}