]> git.ozlabs.org Git - ccan/blobdiff - ccan/opt/opt.h
various: add LICENSE comments.
[ccan] / ccan / opt / opt.h
index 539a0a664de155962f3d2efdf116eca52d25fcee..643c18de336ba17cdcec3f3f7161dee6b3b513ae 100644 (file)
@@ -1,3 +1,4 @@
+/* Licensed under GPLv3+ - see LICENSE file for details */
 #ifndef CCAN_OPT_H
 #define CCAN_OPT_H
 #include <ccan/compiler/compiler.h>
@@ -315,21 +316,22 @@ struct opt_table {
 /* Resolves to the four parameters for non-arg callbacks. */
 #define OPT_CB_NOARG(cb, arg)                          \
        OPT_NOARG,                                      \
-       cast_if_any(char *(*)(void *), (cb), (cb)+0,    \
-                   char *(*)(typeof(*(arg))*),         \
-                   char *(*)(const typeof(*(arg))*),   \
-                   char *(*)(const void *)),           \
+       typesafe_cb_cast3(char *(*)(void *),    \
+                         char *(*)(typeof(*(arg))*),   \
+                         char *(*)(const typeof(*(arg))*),     \
+                         char *(*)(const void *), (cb)),       \
        NULL, NULL
 
 /* Resolves to the four parameters for arg callbacks. */
 #define OPT_CB_ARG(cb, show, arg)                                      \
        OPT_HASARG, NULL,                                               \
-       cast_if_any(char *(*)(const char *,void *), (cb), (cb)+0,       \
-                   char *(*)(const char *, typeof(*(arg))*),           \
-                   char *(*)(const char *, const typeof(*(arg))*),     \
-                   char *(*)(const char *, const void *)),             \
-       cast_if_type(void (*)(char buf[], const void *), (show), (show)+0, \
-                    void (*)(char buf[], const typeof(*(arg))*))
+       typesafe_cb_cast3(char *(*)(const char *,void *),       \
+                         char *(*)(const char *, typeof(*(arg))*),     \
+                         char *(*)(const char *, const typeof(*(arg))*), \
+                         char *(*)(const char *, const void *),        \
+                         (cb)),                                        \
+       typesafe_cb_cast(void (*)(char buf[], const void *),            \
+                        void (*)(char buf[], const typeof(*(arg))*), (show))
 
 /* Non-typesafe register function. */
 void _opt_register(const char *names, enum opt_type type,