Norman James | 6a58a27 | 2015-10-07 14:34:16 -0500 | [diff] [blame] | 1 | #include <ccan/container_of/container_of.h>
|
| 2 | #include <ccan/tap/tap.h>
|
| 3 |
|
| 4 | struct foo {
|
| 5 | int a;
|
| 6 | char b;
|
| 7 | };
|
| 8 |
|
| 9 | int main(int argc, char *argv[])
|
| 10 | {
|
| 11 | struct foo foo = { .a = 1, .b = 2 };
|
| 12 | int *intp = &foo.a;
|
| 13 | char *charp = &foo.b;
|
| 14 |
|
| 15 | plan_tests(6);
|
| 16 | ok1(container_of(intp, struct foo, a) == &foo);
|
| 17 | ok1(container_of(charp, struct foo, b) == &foo);
|
| 18 | ok1(container_of_var(intp, &foo, a) == &foo);
|
| 19 | ok1(container_of_var(charp, &foo, b) == &foo);
|
| 20 |
|
| 21 | ok1(container_off(struct foo, a) == 0);
|
| 22 | ok1(container_off(struct foo, b) == offsetof(struct foo, b));
|
| 23 | return exit_status();
|
| 24 | }
|