From 9593fc545950782ed75f12f53238b07885559b2b Mon Sep 17 00:00:00 2001 From: William Casarin Date: Mon, 9 Jul 2018 22:28:25 -0700 Subject: remove ccan for now --- ccan/container_of/LICENSE | 1 - ccan/container_of/_info | 65 ----------- ccan/container_of/container_of.h | 145 ------------------------ ccan/container_of/test/compile_fail-bad-type.c | 22 ---- ccan/container_of/test/compile_fail-types.c | 22 ---- ccan/container_of/test/compile_fail-var-types.c | 25 ---- ccan/container_of/test/run.c | 30 ----- 7 files changed, 310 deletions(-) delete mode 120000 ccan/container_of/LICENSE delete mode 100644 ccan/container_of/_info delete mode 100644 ccan/container_of/container_of.h delete mode 100644 ccan/container_of/test/compile_fail-bad-type.c delete mode 100644 ccan/container_of/test/compile_fail-types.c delete mode 100644 ccan/container_of/test/compile_fail-var-types.c delete mode 100644 ccan/container_of/test/run.c (limited to 'ccan/container_of') diff --git a/ccan/container_of/LICENSE b/ccan/container_of/LICENSE deleted file mode 120000 index b7951da..0000000 --- a/ccan/container_of/LICENSE +++ /dev/null @@ -1 +0,0 @@ -../../licenses/CC0 \ No newline at end of file diff --git a/ccan/container_of/_info b/ccan/container_of/_info deleted file mode 100644 index b116052..0000000 --- a/ccan/container_of/_info +++ /dev/null @@ -1,65 +0,0 @@ -#include "config.h" -#include -#include - -/** - * container_of - routine for upcasting - * - * It is often convenient to create code where the caller registers a pointer - * to a generic structure and a callback. The callback might know that the - * pointer points to within a larger structure, and container_of gives a - * convenient and fairly type-safe way of returning to the enclosing structure. - * - * This idiom is an alternative to providing a void * pointer for every - * callback. - * - * Example: - * #include - * #include - * - * struct timer { - * void *members; - * }; - * - * struct info { - * int my_stuff; - * struct timer timer; - * }; - * - * static void my_timer_callback(struct timer *timer) - * { - * struct info *info = container_of(timer, struct info, timer); - * printf("my_stuff is %u\n", info->my_stuff); - * } - * - * static void register_timer(struct timer *timer) - * { - * (void)timer; - * (void)my_timer_callback; - * //... - * } - * - * int main(void) - * { - * struct info info = { .my_stuff = 1 }; - * - * register_timer(&info.timer); - * // ... - * return 0; - * } - * - * License: CC0 (Public domain) - * Author: Rusty Russell - */ -int main(int argc, char *argv[]) -{ - if (argc != 2) - return 1; - - if (strcmp(argv[1], "depends") == 0) { - printf("ccan/check_type\n"); - return 0; - } - - return 1; -} diff --git a/ccan/container_of/container_of.h b/ccan/container_of/container_of.h deleted file mode 100644 index 47a34d8..0000000 --- a/ccan/container_of/container_of.h +++ /dev/null @@ -1,145 +0,0 @@ -/* CC0 (Public domain) - see LICENSE file for details */ -#ifndef CCAN_CONTAINER_OF_H -#define CCAN_CONTAINER_OF_H -#include - -#include "config.h" -#include - -/** - * container_of - get pointer to enclosing structure - * @member_ptr: pointer to the structure member - * @containing_type: the type this member is within - * @member: the name of this member within the structure. - * - * Given a pointer to a member of a structure, this macro does pointer - * subtraction to return the pointer to the enclosing type. - * - * Example: - * struct foo { - * int fielda, fieldb; - * // ... - * }; - * struct info { - * int some_other_field; - * struct foo my_foo; - * }; - * - * static struct info *foo_to_info(struct foo *foo) - * { - * return container_of(foo, struct info, my_foo); - * } - */ -#define container_of(member_ptr, containing_type, member) \ - ((containing_type *) \ - ((char *)(member_ptr) \ - - container_off(containing_type, member)) \ - + check_types_match(*(member_ptr), ((containing_type *)0)->member)) - - -/** - * container_of_or_null - get pointer to enclosing structure, or NULL - * @member_ptr: pointer to the structure member - * @containing_type: the type this member is within - * @member: the name of this member within the structure. - * - * Given a pointer to a member of a structure, this macro does pointer - * subtraction to return the pointer to the enclosing type, unless it - * is given NULL, in which case it also returns NULL. - * - * Example: - * struct foo { - * int fielda, fieldb; - * // ... - * }; - * struct info { - * int some_other_field; - * struct foo my_foo; - * }; - * - * static struct info *foo_to_info_allowing_null(struct foo *foo) - * { - * return container_of_or_null(foo, struct info, my_foo); - * } - */ -static inline char *container_of_or_null_(void *member_ptr, size_t offset) -{ - return member_ptr ? (char *)member_ptr - offset : NULL; -} -#define container_of_or_null(member_ptr, containing_type, member) \ - ((containing_type *) \ - container_of_or_null_(member_ptr, \ - container_off(containing_type, member)) \ - + check_types_match(*(member_ptr), ((containing_type *)0)->member)) - -/** - * container_off - get offset to enclosing structure - * @containing_type: the type this member is within - * @member: the name of this member within the structure. - * - * Given a pointer to a member of a structure, this macro does - * typechecking and figures out the offset to the enclosing type. - * - * Example: - * struct foo { - * int fielda, fieldb; - * // ... - * }; - * struct info { - * int some_other_field; - * struct foo my_foo; - * }; - * - * static struct info *foo_to_info(struct foo *foo) - * { - * size_t off = container_off(struct info, my_foo); - * return (void *)((char *)foo - off); - * } - */ -#define container_off(containing_type, member) \ - offsetof(containing_type, member) - -/** - * container_of_var - get pointer to enclosing structure using a variable - * @member_ptr: pointer to the structure member - * @container_var: a pointer of same type as this member's container - * @member: the name of this member within the structure. - * - * Given a pointer to a member of a structure, this macro does pointer - * subtraction to return the pointer to the enclosing type. - * - * Example: - * static struct info *foo_to_i(struct foo *foo) - * { - * struct info *i = container_of_var(foo, i, my_foo); - * return i; - * } - */ -#if HAVE_TYPEOF -#define container_of_var(member_ptr, container_var, member) \ - container_of(member_ptr, typeof(*container_var), member) -#else -#define container_of_var(member_ptr, container_var, member) \ - ((void *)((char *)(member_ptr) - \ - container_off_var(container_var, member))) -#endif - -/** - * container_off_var - get offset of a field in enclosing structure - * @container_var: a pointer to a container structure - * @member: the name of a member within the structure. - * - * Given (any) pointer to a structure and a its member name, this - * macro does pointer subtraction to return offset of member in a - * structure memory layout. - * - */ -#if HAVE_TYPEOF -#define container_off_var(var, member) \ - container_off(typeof(*var), member) -#else -#define container_off_var(var, member) \ - ((const char *)&(var)->member - (const char *)(var)) -#endif - -#endif /* CCAN_CONTAINER_OF_H */ diff --git a/ccan/container_of/test/compile_fail-bad-type.c b/ccan/container_of/test/compile_fail-bad-type.c deleted file mode 100644 index 55a911a..0000000 --- a/ccan/container_of/test/compile_fail-bad-type.c +++ /dev/null @@ -1,22 +0,0 @@ -#include -#include - -struct foo { - int a; - char b; -}; - -int main(void) -{ - struct foo foo = { .a = 1, .b = 2 }; - int *intp = &foo.a; - char *p; - -#ifdef FAIL - /* p is a char *, but this gives a struct foo * */ - p = container_of(intp, struct foo, a); -#else - p = (char *)intp; -#endif - return p == NULL; -} diff --git a/ccan/container_of/test/compile_fail-types.c b/ccan/container_of/test/compile_fail-types.c deleted file mode 100644 index fbb97a9..0000000 --- a/ccan/container_of/test/compile_fail-types.c +++ /dev/null @@ -1,22 +0,0 @@ -#include -#include - -struct foo { - int a; - char b; -}; - -int main(void) -{ - struct foo foo = { .a = 1, .b = 2 }, *foop; - int *intp = &foo.a; - -#ifdef FAIL - /* b is a char, but intp is an int * */ - foop = container_of(intp, struct foo, b); -#else - foop = NULL; -#endif - (void) foop; /* Suppress unused-but-set-variable warning. */ - return intp == NULL; -} diff --git a/ccan/container_of/test/compile_fail-var-types.c b/ccan/container_of/test/compile_fail-var-types.c deleted file mode 100644 index ecdd909..0000000 --- a/ccan/container_of/test/compile_fail-var-types.c +++ /dev/null @@ -1,25 +0,0 @@ -#include -#include - -struct foo { - int a; - char b; -}; - -int main(void) -{ - struct foo foo = { .a = 1, .b = 2 }, *foop; - int *intp = &foo.a; - -#ifdef FAIL - /* b is a char, but intp is an int * */ - foop = container_of_var(intp, foop, b); -#if !HAVE_TYPEOF -#error "Unfortunately we don't fail if we don't have typeof." -#endif -#else - foop = NULL; -#endif - (void) foop; /* Suppress unused-but-set-variable warning. */ - return intp == NULL; -} diff --git a/ccan/container_of/test/run.c b/ccan/container_of/test/run.c deleted file mode 100644 index 3255729..0000000 --- a/ccan/container_of/test/run.c +++ /dev/null @@ -1,30 +0,0 @@ -#include -#include - -struct foo { - int a; - char b; -}; - -int main(void) -{ - struct foo foo = { .a = 1, .b = 2 }; - int *intp = &foo.a; - char *charp = &foo.b; - - plan_tests(12); - ok1(container_of(intp, struct foo, a) == &foo); - ok1(container_of(charp, struct foo, b) == &foo); - ok1(container_of_or_null(intp, struct foo, a) == &foo); - ok1(container_of_or_null(charp, struct foo, b) == &foo); - ok1(container_of_or_null((int *)NULL, struct foo, a) == NULL); - ok1(container_of_or_null((char *)NULL, struct foo, b) == NULL); - ok1(container_of_var(intp, &foo, a) == &foo); - ok1(container_of_var(charp, &foo, b) == &foo); - - ok1(container_off(struct foo, a) == 0); - ok1(container_off(struct foo, b) == offsetof(struct foo, b)); - ok1(container_off_var(&foo, a) == 0); - ok1(container_off_var(&foo, b) == offsetof(struct foo, b)); - return exit_status(); -} -- cgit v1.2.3