1 void plugin_load(void);
10 #define PLUGIN_PROTO(name,args...) void name(args)
13 #define PLUGIN_REGISTER(name,args...) \
15 plugin_register_##name(PLUGIN_PROTO((*func),args)) \
17 plugin_##name##_func=func; \
20 #define PLUGIN_CALL(name,args...) \
22 if (plugin_##name##_func) \
23 (*plugin_##name##_func)(args); \
26 #define PLUGIN_FUNC1(name,t1,p1) \
27 PLUGIN_PROTO((*plugin_##name##_func),t1 p1); \
28 void plugin_call_##name(t1 p1) PLUGIN_CALL(name,p1) \
29 PLUGIN_REGISTER(name,t1 p1)
31 #define PLUGIN_FUNC3(name,t1,p1,t2,p2,t3,p3) \
32 PLUGIN_PROTO((*plugin_##name##_func),t1 p1,t2 p2,t3 p3); \
33 void plugin_call_##name(t1 p1,t2 p2, t3 p3) PLUGIN_CALL(name,p1,p2,p3) \
34 PLUGIN_REGISTER(name,t1 p1,t2 p2,t3 p3)
36 #define PLUGIN_FUNC4(name,t1,p1,t2,p2,t3,p3,t4,p4) \
37 PLUGIN_PROTO((*plugin_##name##_func),t1 p1,t2 p2,t3 p3,t4 p4); \
38 void plugin_call_##name(t1 p1,t2 p2, t3 p3, t4 p4) PLUGIN_CALL(name,p1,p2,p3,p4) \
39 PLUGIN_REGISTER(name,t1 p1,t2 p2,t3 p3,t4 p4)
42 #define PLUGIN_FUNC1(name,t1,p1) \
43 void plugin_register_##name(void(*func)(t1 p1)); \
44 void plugin_call_##name(t1 p1);
46 #define PLUGIN_FUNC3(name,t1,p1,t2,p2,t3,p3) \
47 void plugin_register_##name(void(*func)(t1 p1,t2 p2,t3 p3)); \
48 void plugin_call_##name(t1 p1,t2 p2,t3 p3);
50 #define PLUGIN_FUNC4(name,t1,p1,t2,p2,t3,p3,t4,p4) \
51 void plugin_register_##name(void(*func)(t1 p1,t2 p2,t3 p3,t4 p4)); \
52 void plugin_call_##name(t1 p1,t2 p2,t3 p3,t4 p4);
55 PLUGIN_FUNC1(draw, struct container *, co)
56 PLUGIN_FUNC3(popup, struct container *, map, struct popup *, p, struct popup_item **, list)