]> git.draconx.ca Git - upkg.git/blob - src/loadable.h
uobject: Implement an interface for loading/unloading.
[upkg.git] / src / loadable.h
1 #ifndef LOADABLE_H_
2 #define LOADABLE_H_
3
4 #include <stdio.h>
5 #include <glib-object.h>
6
7 #define U_OBJECT_TYPE_LOADABLE (u_object_loadable_get_type())
8 #define U_OBJECT_LOADABLE(obj) G_TYPE_CHECK_INSTANCE_CAST(obj, \
9         U_OBJECT_TYPE_LOADABLE, UObjectLoadable)
10 #define U_OBJECT_IS_LOADABLE(obj) G_TYPE_CHECK_INSTANCE_TYPE(obj, \
11         U_OBJECT_TYPE_LOADABLE)
12 #define U_OBJECT_LOADABLE_GET_INTERFACE(inst) G_TYPE_INSTANCE_GET_INTERFACE \
13         (inst, U_OBJECT_TYPE_LOADABLE, UObjectLoadable)
14
15 typedef struct UObjectLoadable UObjectLoadable;
16
17 struct UObjectLoadable {
18         GTypeInterface parent;
19
20         int (*load)(GObject *obj);
21         void (*unload)(GObject *obj);
22 };
23
24 GType u_object_loadable_get_type(void);
25
26 int u_object_load(GObject *obj);
27 void u_object_unload(GObject *obj);
28
29 #endif