X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Ftypesafe_cb%2Ftest%2Fcompile_ok-typesafe_cb-const.c;fp=ccan%2Ftypesafe_cb%2Ftest%2Fcompile_ok-typesafe_cb-const.c;h=fe3a34171b1e0b3f8ad6c9dc02c869c67912eaaf;hb=11e4a54f54b4f1f39eeabc390ae51b93b7f08e36;hp=0000000000000000000000000000000000000000;hpb=e5ee09b20d276ea2e86d0a5c7e9b1469f83f0ac1;p=ccan diff --git a/ccan/typesafe_cb/test/compile_ok-typesafe_cb-const.c b/ccan/typesafe_cb/test/compile_ok-typesafe_cb-const.c new file mode 100644 index 00000000..fe3a3417 --- /dev/null +++ b/ccan/typesafe_cb/test/compile_ok-typesafe_cb-const.c @@ -0,0 +1,45 @@ +#include "typesafe_cb/typesafe_cb.h" +#include + +/* const args in callbacks should be OK. */ + +static void _register_callback(void (*cb)(void *arg), void *arg) +{ +} + +#define register_callback(cb, arg) \ + _register_callback(typesafe_cb(void, (cb), (arg)), (arg)) + +static void _register_callback_pre(void (*cb)(int x, void *arg), void *arg) +{ +} + +#define register_callback_pre(cb, arg) \ + _register_callback_pre(typesafe_cb_preargs(void, (cb), (arg), int), (arg)) + +static void _register_callback_post(void (*cb)(void *arg, int x), void *arg) +{ +} + +#define register_callback_post(cb, arg) \ + _register_callback_post(typesafe_cb_postargs(void, (cb), (arg), int), (arg)) + +static void my_callback(const char *p) +{ +} + +static void my_callback_pre(int x, const char *p) +{ +} + +static void my_callback_post(const char *p, int x) +{ +} + +int main(int argc, char *argv[]) +{ + register_callback(my_callback, "hello world"); + register_callback_pre(my_callback_pre, "hello world"); + register_callback_post(my_callback_post, "hello world"); + return 0; +}