Update changelog and bump version to 0.0.17-2.
[tweakr] / libtweakr-section / tweakr-module.h
1 /*
2  * vim:ts=4:sw=4:et:cindent:cino=(0
3  */ 
4
5 #ifndef __TWEAKR_MODULE_H__
6 #define __TWEAKR_MODULE_H__
7
8 #include <glib-object.h>
9
10 G_BEGIN_DECLS
11
12
13 #define TWEAKR_TYPE_MODULE \
14         (tweakr_module_get_type ())
15 #define TWEAKR_MODULE(o) \
16         (G_TYPE_CHECK_INSTANCE_CAST ((o), TWEAKR_TYPE_MODULE, \
17         TweakrModule))
18 #define TWEAKR_MODULE_CLASS(k) \
19         (G_TYPE_CHECK_CLASS_CAST((k), TWEAKR_TYPE_MODULE, \
20         TweakrModuleClass))
21 #define TWEAKR_IS_MODULE(o) \
22         (G_TYPE_CHECK_INSTANCE_TYPE ((o), TWEAKR_TYPE_MODULE))
23 #define TWEAKR_IS_MODULE_CLASS(k) \
24         (G_TYPE_CHECK_CLASS_TYPE ((k), TWEAKR_TYPE_MODULE))
25 #define TWEAKR_MODULE_GET_CLASS(o) \
26         (G_TYPE_INSTANCE_GET_CLASS ((o), TWEAKR_TYPE_MODULE, \
27         TweakrModuleClass))
28
29 typedef struct _TweakrModule      TweakrModule;
30 typedef struct _TweakrModuleClass TweakrModuleClass;
31
32 struct _TweakrModule
33 {
34     GTypeModule  parent_instance;
35
36     gchar       *filename;
37     GModule     *library;
38
39     /*  module symbols  */
40     void (* load)   (TweakrModule *module);
41     void (* unload) (TweakrModule *module);
42 };
43
44 struct _TweakrModuleClass
45 {
46     GTypeModuleClass  parent_class;
47 };
48
49 GType tweakr_module_get_type (void) G_GNUC_CONST;
50
51 TweakrModule * tweakr_module_new      (const gchar *filename);
52
53
54 /* API for the modules to implement */
55
56 void        tweakr_module_load     (TweakrModule   *module);
57 void        tweakr_module_unload   (TweakrModule   *module);
58
59
60 G_END_DECLS
61
62 #endif /* __TWEAKR_MODULE_H_ */