65 #undef PLUGIN_CATEGORY 66 #define PLUGIN_PROTO(name,...) void name(__VA_ARGS__) 69 #define PLUGIN_REGISTER(name,...) \ 71 plugin_register_##name(PLUGIN_PROTO((*func),__VA_ARGS__)) \ 73 plugin_##name##_func=func; \ 76 #define PLUGIN_CALL(name,...) \ 78 if (plugin_##name##_func) \ 79 (*plugin_##name##_func)(__VA_ARGS__); \ 82 #define PLUGIN_FUNC1(name,t1,p1) \ 83 PLUGIN_PROTO((*plugin_##name##_func),t1 p1); \ 84 void plugin_call_##name(t1 p1) PLUGIN_CALL(name,p1) \ 85 PLUGIN_REGISTER(name,t1 p1) 87 #define PLUGIN_FUNC3(name,t1,p1,t2,p2,t3,p3) \ 88 PLUGIN_PROTO((*plugin_##name##_func),t1 p1,t2 p2,t3 p3); \ 89 void plugin_call_##name(t1 p1,t2 p2, t3 p3) PLUGIN_CALL(name,p1,p2,p3) \ 90 PLUGIN_REGISTER(name,t1 p1,t2 p2,t3 p3) 92 #define PLUGIN_FUNC4(name,t1,p1,t2,p2,t3,p3,t4,p4) \ 93 PLUGIN_PROTO((*plugin_##name##_func),t1 p1,t2 p2,t3 p3,t4 p4); \ 94 void plugin_call_##name(t1 p1,t2 p2, t3 p3, t4 p4) PLUGIN_CALL(name,p1,p2,p3,p4) \ 95 PLUGIN_REGISTER(name,t1 p1,t2 p2,t3 p3,t4 p4) 104 #define PLUGIN_CATEGORY(category,newargs) \ 105 struct category##_priv; \ 106 struct category##_methods; \ 108 plugin_register_category_##category(const char *name, struct category##_priv *(*new_) newargs) \ 110 struct name_val *nv; \ 111 nv=g_new(struct name_val, 1); \ 112 nv->name=g_strdup(name); \ 114 plugin_categories[plugin_category_##category]=g_list_append(plugin_categories[plugin_category_##category], nv); \ 118 plugin_get_category_##category(const char *name) \ 120 return plugin_get_category(plugin_category_##category, #category, name); \ 124 #define PLUGIN_FUNC1(name,t1,p1) \ 125 void plugin_register_##name(void(*func)(t1 p1)); \ 126 void plugin_call_##name(t1 p1); 128 #define PLUGIN_FUNC3(name,t1,p1,t2,p2,t3,p3) \ 129 void plugin_register_##name(void(*func)(t1 p1,t2 p2,t3 p3)); \ 130 void plugin_call_##name(t1 p1,t2 p2,t3 p3); 132 #define PLUGIN_FUNC4(name,t1,p1,t2,p2,t3,p3,t4,p4) \ 133 void plugin_register_##name(void(*func)(t1 p1,t2 p2,t3 p3,t4 p4)); \ 134 void plugin_call_##name(t1 p1,t2 p2,t3 p3,t4 p4); 136 #define PLUGIN_CATEGORY(category,newargs) \ 137 struct category##_priv; \ 138 struct category##_methods; \ 139 void plugin_register_category_##category(const char *name, struct category##_priv *(*new_) newargs); \ 140 void *plugin_get_category_##category(const char *name); 147 #define plugin_module_cat3(pre,mod,post) pre##mod##post 148 #define plugin_module_cat2(pre,mod,post) plugin_module_cat3(pre,mod,post) 149 #define plugin_module_cat(pre,post) plugin_module_cat2(pre,MODULE,post) 150 #define plugin_init plugin_module_cat(module_,_init)
struct attr active
Definition: speech.c:77
void plugin_set_active(struct plugin *pl, int active)
Definition: plugin.c:189
struct plugins * plugins_new(struct attr *, struct attr **)
Definition: plugin.c:223
#define plugin_init
Definition: plugin.h:150
Definition: gpx2navit_txt.h:51
struct plugin * plugin_new(struct attr *parent, struct attr **attrs)
Definition: plugin.c:231
plugin_category
All existing plugin categories.
Definition: plugin.h:35
void plugin_unload(struct plugin *pl)
Definition: plugin.c:211
int plugin_load(struct plugin *pl)
Definition: plugin.c:151
struct _GList GList
Definition: navit.h:30
void * plugin_get_category(enum plugin_category category, const char *category_name, const char *name)
Definition: plugin.c:354
void plugin_set_lazy(struct plugin *pl, int lazy)
Definition: plugin.c:193
int plugins_init(struct plugins *pls)
Definition: plugin.c:303
char name[0]
Definition: street.c:496
int plugin_get_active(struct plugin *pl)
Definition: plugin.c:185
void plugins_destroy(struct plugins *pls)
Definition: plugin.c:328
char * plugin_get_name(struct plugin *pl)
Definition: plugin.c:181
void plugin_call_init(struct plugin *pl)
Definition: plugin.c:207
void plugin_destroy(struct plugin *pl)
Definition: plugin.c:218