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)
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
int plugins_init(struct plugins *pls)
Definition: plugin.c:303
void * plugin_get_category(enum plugin_category category, const char *category_name, const char *name)
Definition: plugin.c:354
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
struct plugins * plugins_new(struct attr *, struct attr **)
Definition: plugin.c:223
void plugins_destroy(struct plugins *pls)
Definition: plugin.c:328
void plugin_destroy(struct plugin *pl)
Definition: plugin.c:218
#define plugin_init
register vehicle_gypsy
Definition: plugin.h:150
struct _GList GList
Definition: navit.h:30
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 attr active
Definition: speech.c:77
char name[0]
Definition: street.c:3
Definition: gpx2navit_txt.h:51