summaryrefslogtreecommitdiff
path: root/ccan/check_type
diff options
context:
space:
mode:
Diffstat (limited to 'ccan/check_type')
l---------ccan/check_type/LICENSE1
-rw-r--r--ccan/check_type/_info33
-rw-r--r--ccan/check_type/check_type.h64
-rw-r--r--ccan/check_type/test/compile_fail-check_type.c11
-rw-r--r--ccan/check_type/test/compile_fail-check_type_unsigned.c16
-rw-r--r--ccan/check_type/test/compile_fail-check_types_match.c11
-rw-r--r--ccan/check_type/test/run.c23
7 files changed, 0 insertions, 159 deletions
diff --git a/ccan/check_type/LICENSE b/ccan/check_type/LICENSE
deleted file mode 120000
index b7951da..0000000
--- a/ccan/check_type/LICENSE
+++ /dev/null
@@ -1 +0,0 @@
-../../licenses/CC0 \ No newline at end of file
diff --git a/ccan/check_type/_info b/ccan/check_type/_info
deleted file mode 100644
index cc42673..0000000
--- a/ccan/check_type/_info
+++ /dev/null
@@ -1,33 +0,0 @@
-#include "config.h"
-#include <stdio.h>
-#include <string.h>
-
-/**
- * check_type - routines for compile time type checking
- *
- * C has fairly weak typing: ints get automatically converted to longs, signed
- * to unsigned, etc. There are some cases where this is best avoided, and
- * these macros provide methods for evoking warnings (or build errors) when
- * a precise type isn't used.
- *
- * On compilers which don't support typeof() these routines are less effective,
- * since they have to use sizeof() which can only distiguish between types of
- * different size.
- *
- * License: CC0 (Public domain)
- * Author: Rusty Russell <rusty@rustcorp.com.au>
- */
-int main(int argc, char *argv[])
-{
- if (argc != 2)
- return 1;
-
- if (strcmp(argv[1], "depends") == 0) {
-#if !HAVE_TYPEOF
- printf("ccan/build_assert\n");
-#endif
- return 0;
- }
-
- return 1;
-}
diff --git a/ccan/check_type/check_type.h b/ccan/check_type/check_type.h
deleted file mode 100644
index 837aef7..0000000
--- a/ccan/check_type/check_type.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/* CC0 (Public domain) - see LICENSE file for details */
-#ifndef CCAN_CHECK_TYPE_H
-#define CCAN_CHECK_TYPE_H
-#include "config.h"
-
-/**
- * check_type - issue a warning or build failure if type is not correct.
- * @expr: the expression whose type we should check (not evaluated).
- * @type: the exact type we expect the expression to be.
- *
- * This macro is usually used within other macros to try to ensure that a macro
- * argument is of the expected type. No type promotion of the expression is
- * done: an unsigned int is not the same as an int!
- *
- * check_type() always evaluates to 0.
- *
- * If your compiler does not support typeof, then the best we can do is fail
- * to compile if the sizes of the types are unequal (a less complete check).
- *
- * Example:
- * // They should always pass a 64-bit value to _set_some_value!
- * #define set_some_value(expr) \
- * _set_some_value((check_type((expr), uint64_t), (expr)))
- */
-
-/**
- * check_types_match - issue a warning or build failure if types are not same.
- * @expr1: the first expression (not evaluated).
- * @expr2: the second expression (not evaluated).
- *
- * This macro is usually used within other macros to try to ensure that
- * arguments are of identical types. No type promotion of the expressions is
- * done: an unsigned int is not the same as an int!
- *
- * check_types_match() always evaluates to 0.
- *
- * If your compiler does not support typeof, then the best we can do is fail
- * to compile if the sizes of the types are unequal (a less complete check).
- *
- * Example:
- * // Do subtraction to get to enclosing type, but make sure that
- * // pointer is of correct type for that member.
- * #define container_of(mbr_ptr, encl_type, mbr) \
- * (check_types_match((mbr_ptr), &((encl_type *)0)->mbr), \
- * ((encl_type *) \
- * ((char *)(mbr_ptr) - offsetof(encl_type, mbr))))
- */
-#if HAVE_TYPEOF
-#define check_type(expr, type) \
- ((typeof(expr) *)0 != (type *)0)
-
-#define check_types_match(expr1, expr2) \
- ((typeof(expr1) *)0 != (typeof(expr2) *)0)
-#else
-#include <ccan/build_assert/build_assert.h>
-/* Without typeof, we can only test the sizes. */
-#define check_type(expr, type) \
- BUILD_ASSERT_OR_ZERO(sizeof(expr) == sizeof(type))
-
-#define check_types_match(expr1, expr2) \
- BUILD_ASSERT_OR_ZERO(sizeof(expr1) == sizeof(expr2))
-#endif /* HAVE_TYPEOF */
-
-#endif /* CCAN_CHECK_TYPE_H */
diff --git a/ccan/check_type/test/compile_fail-check_type.c b/ccan/check_type/test/compile_fail-check_type.c
deleted file mode 100644
index 4c22c65..0000000
--- a/ccan/check_type/test/compile_fail-check_type.c
+++ /dev/null
@@ -1,11 +0,0 @@
-#include <ccan/check_type/check_type.h>
-
-int main(int argc, char *argv[])
-{
- (void)argc;
- (void)argv;
-#ifdef FAIL
- check_type(argc, char);
-#endif
- return 0;
-}
diff --git a/ccan/check_type/test/compile_fail-check_type_unsigned.c b/ccan/check_type/test/compile_fail-check_type_unsigned.c
deleted file mode 100644
index 795e760..0000000
--- a/ccan/check_type/test/compile_fail-check_type_unsigned.c
+++ /dev/null
@@ -1,16 +0,0 @@
-#include <ccan/check_type/check_type.h>
-
-int main(int argc, char *argv[])
-{
- (void)argc;
- (void)argv;
-#ifdef FAIL
-#if HAVE_TYPEOF
- check_type(argc, unsigned int);
-#else
- /* This doesn't work without typeof, so just fail */
-#error "Fail without typeof"
-#endif
-#endif
- return 0;
-}
diff --git a/ccan/check_type/test/compile_fail-check_types_match.c b/ccan/check_type/test/compile_fail-check_types_match.c
deleted file mode 100644
index fb83738..0000000
--- a/ccan/check_type/test/compile_fail-check_types_match.c
+++ /dev/null
@@ -1,11 +0,0 @@
-#include <ccan/check_type/check_type.h>
-
-int main(int argc, char *argv[])
-{
- unsigned char x = argc;
- (void)argv;
-#ifdef FAIL
- check_types_match(argc, x);
-#endif
- return x;
-}
diff --git a/ccan/check_type/test/run.c b/ccan/check_type/test/run.c
deleted file mode 100644
index 09fd363..0000000
--- a/ccan/check_type/test/run.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include <ccan/check_type/check_type.h>
-#include <ccan/tap/tap.h>
-
-int main(int argc, char *argv[])
-{
- int x = 0, y = 0;
-
- (void)argv;
- plan_tests(9);
-
- ok1(check_type(argc, int) == 0);
- ok1(check_type(&argc, int *) == 0);
- ok1(check_types_match(argc, argc) == 0);
- ok1(check_types_match(argc, x) == 0);
- ok1(check_types_match(&argc, &x) == 0);
-
- ok1(check_type(x++, int) == 0);
- ok(x == 0, "check_type does not evaluate expression");
- ok1(check_types_match(x++, y++) == 0);
- ok(x == 0 && y == 0, "check_types_match does not evaluate expressions");
-
- return exit_status();
-}