66#define PLUGIN_PROTO(name, ...) void name(__VA_ARGS__)
69# define PLUGIN_REGISTER(name, ...) \
70 void plugin_register_##name(PLUGIN_PROTO((*func), __VA_ARGS__)) { \
71 plugin_##name##_func = func; \
74# define PLUGIN_CALL(name, ...) \
76 if (plugin_##name##_func) \
77 (*plugin_##name##_func)(__VA_ARGS__); \
80# define PLUGIN_FUNC1(name, t1, p1) \
81 PLUGIN_PROTO((*plugin_##name##_func), t1 p1); \
82 void plugin_call_##name(t1 p1) PLUGIN_CALL(name, p1) PLUGIN_REGISTER(name, t1 p1)
84# define PLUGIN_FUNC3(name, t1, p1, t2, p2, t3, p3) \
85 PLUGIN_PROTO((*plugin_##name##_func), t1 p1, t2 p2, t3 p3); \
86 void plugin_call_##name(t1 p1, t2 p2, t3 p3) PLUGIN_CALL(name, p1, p2, p3) \
87 PLUGIN_REGISTER(name, t1 p1, t2 p2, t3 p3)
89# define PLUGIN_FUNC4(name, t1, p1, t2, p2, t3, p3, t4, p4) \
90 PLUGIN_PROTO((*plugin_##name##_func), t1 p1, t2 p2, t3 p3, t4 p4); \
91 void plugin_call_##name(t1 p1, t2 p2, t3 p3, t4 p4) PLUGIN_CALL(name, p1, p2, p3, p4) \
92 PLUGIN_REGISTER(name, t1 p1, t2 p2, t3 p3, t4 p4)
101# define PLUGIN_CATEGORY(category, newargs) \
102 struct category##_priv; \
103 struct category##_methods; \
104 void plugin_register_category_##category(const char *name, struct category##_priv *(*new_)newargs) { \
105 struct name_val *nv; \
106 nv = g_new(struct name_val, 1); \
107 nv->name = g_strdup(name); \
109 plugin_categories[plugin_category_##category] = \
110 g_list_append(plugin_categories[plugin_category_##category], nv); \
113 void *plugin_get_category_##category(const char *name) { \
114 return plugin_get_category(plugin_category_##category, #category, name); \
118# define PLUGIN_FUNC1(name, t1, p1) \
119 void plugin_register_##name(void (*func)(t1 p1)); \
120 void plugin_call_##name(t1 p1);
122# define PLUGIN_FUNC3(name, t1, p1, t2, p2, t3, p3) \
123 void plugin_register_##name(void (*func)(t1 p1, t2 p2, t3 p3)); \
124 void plugin_call_##name(t1 p1, t2 p2, t3 p3);
126# define PLUGIN_FUNC4(name, t1, p1, t2, p2, t3, p3, t4, p4) \
127 void plugin_register_##name(void (*func)(t1 p1, t2 p2, t3 p3, t4 p4)); \
128 void plugin_call_##name(t1 p1, t2 p2, t3 p3, t4 p4);
130# define PLUGIN_CATEGORY(category, newargs) \
131 struct category##_priv; \
132 struct category##_methods; \
133 void plugin_register_category_##category(const char *name, struct category##_priv *(*new_)newargs); \
134 void *plugin_get_category_##category(const char *name);
141# define plugin_module_cat3(pre, mod, post) pre##mod##post
142# define plugin_module_cat2(pre, mod, post) plugin_module_cat3(pre, mod, post)
143# define plugin_module_cat(pre, post) plugin_module_cat2(pre, MODULE, post)
144# define plugin_init plugin_module_cat(module_, _init)
int plugin_load(struct plugin *pl)
Definition plugin.c:151
char * plugin_get_name(struct plugin *pl)
Definition plugin.c:181
struct plugin * plugin_new(struct attr *parent, struct attr **attrs)
Definition plugin.c:231
struct plugins * plugins_new(struct attr *, struct attr **)
Definition plugin.c:223
void * plugin_get_category(enum plugin_category category, const char *category_name, const char *name)
Definition plugin.c:354
int plugins_init(struct plugins *pls)
Definition plugin.c:303
void plugin_call_init(struct plugin *pl)
Definition plugin.c:207
void plugin_set_active(struct plugin *pl, int active)
Definition plugin.c:189
void plugin_unload(struct plugin *pl)
Definition plugin.c:211
void plugin_set_lazy(struct plugin *pl, int lazy)
Definition plugin.c:193
int plugin_get_active(struct plugin *pl)
Definition plugin.c:185
void plugins_destroy(struct plugins *pls)
Definition plugin.c:328
void plugin_destroy(struct plugin *pl)
Definition plugin.c:218
#define plugin_init
Definition plugin.h:144
plugin_category
All existing plugin categories.
Definition plugin.h:35
@ plugin_category_traffic
Definition plugin.h:53
@ plugin_category_osd
Definition plugin.h:43
@ plugin_category_font
Definition plugin.h:51
@ plugin_category_speech
Definition plugin.h:45
@ plugin_category_vehicle
Definition plugin.h:47
@ plugin_category_graphics
Definition plugin.h:37
@ plugin_category_event
Definition plugin.h:49
@ plugin_category_gui
Definition plugin.h:39
@ plugin_category_last
Definition plugin.h:55
@ plugin_category_map
Definition plugin.h:41
struct navit struct traffic_methods struct attr ** attrs
Definition plugin_def.h:36
struct attr active
Definition speech.c:77
char name[0]
Definition street.c:3
Definition gpx2navit_txt.h:50