summaryrefslogtreecommitdiff
path: root/navit/callback.h
diff options
context:
space:
mode:
authormartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2009-01-12 07:16:39 +0000
committermartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2009-01-12 07:16:39 +0000
commitd690b630fb9b1d39db7151bc553c6afbb13ed9d2 (patch)
tree8da5de81bc7879aeeeda1174c03f246f0bb0bdad /navit/callback.h
parent67ada8c99023d96c575fdc535c98b5e58a3d005c (diff)
downloadnavit-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.h172
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