diff options
author | martin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2009-01-12 07:16:39 +0000 |
---|---|---|
committer | martin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2009-01-12 07:16:39 +0000 |
commit | d690b630fb9b1d39db7151bc553c6afbb13ed9d2 (patch) | |
tree | 8da5de81bc7879aeeeda1174c03f246f0bb0bdad /navit/callback.h | |
parent | 67ada8c99023d96c575fdc535c98b5e58a3d005c (diff) | |
download | navit-d690b630fb9b1d39db7151bc553c6afbb13ed9d2.tar.gz |
Fix:Core:Cleaned up callback handling
git-svn-id: http://svn.code.sf.net/p/navit/code/trunk/navit@1926 ffa7fe5e-494d-0410-b361-a75ebd5db220
Diffstat (limited to 'navit/callback.h')
-rw-r--r-- | navit/callback.h | 172 |
1 files changed, 34 insertions, 138 deletions
diff --git a/navit/callback.h b/navit/callback.h index 99c3addbc..b0f4b9f81 100644 --- a/navit/callback.h +++ b/navit/callback.h @@ -32,7 +32,9 @@ struct callback; struct callback_list; struct callback_list *callback_list_new(void); struct callback *callback_new_attr(void (*func)(void), enum attr_type type, int pcount, void **p); +struct callback *callback_new_attr_args(void (*func)(void), enum attr_type type, int count, ...); struct callback *callback_new(void (*func)(void), int pcount, void **p); +struct callback *callback_new_args(void (*func)(void), int count, ...); void callback_destroy(struct callback *cb); void callback_set_arg(struct callback *cb, int arg, void *p); void callback_list_add(struct callback_list *l, struct callback *cb); @@ -40,149 +42,43 @@ struct callback *callback_list_add_new(struct callback_list *l, void (*func)(voi void callback_list_remove(struct callback_list *l, struct callback *cb); void callback_list_remove_destroy(struct callback_list *l, struct callback *cb); void callback_call(struct callback *cb, int pcount, void **p); +void callback_call_args(struct callback *cb, int count, ...); void callback_list_call_attr(struct callback_list *l, enum attr_type type, int pcount, void **p); +void callback_list_call_attr_args(struct callback_list *cbl, enum attr_type type, int count, ...); void callback_list_call(struct callback_list *l, int pcount, void **p); +void callback_list_call_args(struct callback_list *cbl, int count, ...); void callback_list_destroy(struct callback_list *l); /* end of prototypes */ -static inline struct callback *callback_new_attr_0(void (*func)(void), enum attr_type type) -{ - return callback_new_attr(func, type, 0, NULL); -} - -static inline struct callback *callback_new_0(void (*func)(void)) -{ - return callback_new(func, 0, NULL); -} - -static inline struct callback *callback_new_attr_1(void (*func)(void), enum attr_type type, void *p1) -{ - void *p[1]; - p[0]=p1; - return callback_new_attr(func, type, 1, p); -} - -static inline struct callback *callback_new_1(void (*func)(void), void *p1) -{ - void *p[1]; - p[0]=p1; - return callback_new(func, 1, p); -} - -static inline struct callback *callback_new_attr_2(void (*func)(void), enum attr_type type, void *p1, void *p2) -{ - void *p[2]; - p[0]=p1; - p[1]=p2; - return callback_new_attr(func, type, 2, p); -} - -static inline struct callback *callback_new_2(void (*func)(void), void *p1, void *p2) -{ - void *p[2]; - p[0]=p1; - p[1]=p2; - return callback_new(func, 2, p); -} - -static inline struct callback *callback_new_3(void (*func)(void), void *p1, void *p2, void *p3) -{ - void *p[3]; - p[0]=p1; - p[1]=p2; - p[2]=p3; - return callback_new(func, 3, p); -} - -static inline struct callback *callback_new_4(void (*func)(void), void *p1, void *p2, void *p3, void *p4) -{ - void *p[4]; - p[0]=p1; - p[1]=p2; - p[2]=p3; - p[3]=p4; - return callback_new(func, 4, p); -} - -static inline void callback_call_0(struct callback *cb) -{ - callback_call(cb, 0, NULL); -} - -static inline void callback_call_1(struct callback *cb, void *p1) -{ - void *p[1]; - p[0]=p1; - callback_call(cb, 1, p); -} - -static inline void callback_call_2(struct callback *cb, void *p1, void *p2) -{ - void *p[2]; - p[0]=p1; - p[1]=p2; - callback_call(cb, 2, p); -} - -static inline void callback_list_call_0(struct callback_list *l) -{ - callback_list_call(l, 0, NULL); -} - -static inline void callback_list_call_attr_0(struct callback_list *l, enum attr_type type) -{ - callback_list_call_attr(l, type, 0, NULL); -} - -static inline void callback_list_call_attr_1(struct callback_list *l, enum attr_type type, void *p1) -{ - void *p[1]; - p[0]=p1; - callback_list_call_attr(l, type, 1, p); -} - -static inline void callback_list_call_1(struct callback_list *l, void *p1) -{ - void *p[1]; - p[0]=p1; - callback_list_call(l, 1, p); -} - -static inline void callback_list_call_attr_2(struct callback_list *l, enum attr_type type, void *p1, void *p2) -{ - void *p[2]; - p[0]=p1; - p[1]=p2; - callback_list_call_attr(l, type, 2, p); -} - -static inline void callback_list_call_2(struct callback_list *l, void *p1, void *p2) -{ - void *p[2]; - p[0]=p1; - p[1]=p2; - callback_list_call(l, 2, p); -} - -static inline void callback_list_call_attr_3(struct callback_list *l, enum attr_type type, void *p1, void *p2, void *p3) -{ - void *p[3]; - p[0]=p1; - p[1]=p2; - p[2]=p3; - callback_list_call_attr(l, type, 3, p); -} - -static inline void callback_list_call_attr_4(struct callback_list *l, enum attr_type type, void *p1, void *p2, void *p3, void *p4) -{ - void *p[4]; - p[0]=p1; - p[1]=p2; - p[2]=p3; - p[3]=p4; - callback_list_call_attr(l, type, 4, p); -} - +#define callback_new_0(func) callback_new_args(func, 0) +#define callback_new_1(func,p1) callback_new_args(func, 1, p1) +#define callback_new_2(func,p1,p2) callback_new_args(func, 2, p1, p2) +#define callback_new_3(func,p1,p2,p3) callback_new_args(func, 3, p1, p2, p3) +#define callback_new_4(func,p1,p2,p3,p4) callback_new_args(func, 4, p1, p2, p3, p4) + +#define callback_new_attr_0(func,type) callback_new_attr_args(func, type, 0) +#define callback_new_attr_1(func,type,p1) callback_new_attr_args(func, type, 1, p1) +#define callback_new_attr_2(func,type,p1,p2) callback_new_attr_args(func, type, 2, p1, p2) +#define callback_new_attr_3(func,type,p1,p2,p3) callback_new_attr_args(func, type, 3, p1, p2, p3) +#define callback_new_attr_4(func,type,p1,p2,p3,p4) callback_new_attr_args(func, type, 4, p1, p2, p3, p4) + +#define callback_call_0(cb) callback_call_args(cb, 0) +#define callback_call_1(cb,p1) callback_call_args(cb, 1, p1) +#define callback_call_2(cb,p1,p2) callback_call_args(cb, 2, p1, p2) +#define callback_call_3(cb,p1,p2,p3) callback_call_args(cb, 3, p1, p2, p3) +#define callback_call_4(cb,p1,p2,p3,p4) callback_call_args(cb, 4, p1, p2, p3, p4) + +#define callback_list_call_0(cbl) callback_list_call_args(cbl, 0) +#define callback_list_call_1(cbl,p1) callback_list_call_args(cbl, 1, p1) +#define callback_list_call_2(cbl,p1,p2) callback_list_call_args(cbl, 2, p1, p2) +#define callback_list_call_3(cbl,p1,p2,p3) callback_list_call_args(cbl, 3, p1, p2, p3) +#define callback_list_call_4(cbl,p1,p2,p3,p4) callback_list_call_args(cbl, 4, p1, p2, p3, p4) + +#define callback_list_call_attr_0(cbl,type) callback_list_call_attr_args(cbl,type, 0) +#define callback_list_call_attr_1(cbl,type,p1) callback_list_call_attr_args(cbl, type, 1, p1) +#define callback_list_call_attr_2(cbl,type,p1,p2) callback_list_call_attr_args(cbl, type, 2, p1, p2) +#define callback_list_call_attr_3(cbl,type,p1,p2,p3) callback_list_call_attr_args(cbl, type, 3, p1, p2, p3) +#define callback_list_call_attr_4(cbl,type,p1,p2,p3,p4) callback_list_call_attr_args(cbl, type, 4, p1, p2, p3, p4) #define callback_cast(x) (void (*)(void))(x) #ifdef __cplusplus |