]> git.draconx.ca Git - upkg.git/blobdiff - src/loadable.c
uobject: Implement an interface for loading/unloading.
[upkg.git] / src / loadable.c
diff --git a/src/loadable.c b/src/loadable.c
new file mode 100644 (file)
index 0000000..26b81fd
--- /dev/null
@@ -0,0 +1,31 @@
+#include <stdio.h>
+#include <glib-object.h>
+#include "loadable.h"
+
+GType u_object_loadable_get_type(void)
+{
+       static GType type = 0;
+       if (type == 0) {
+               static const GTypeInfo info = {
+                       sizeof (UObjectLoadable),
+                       NULL,
+                       NULL,
+               };
+
+               type = g_type_register_static(G_TYPE_INTERFACE,
+                       "UObjectLoadable", &info, 0);
+       }
+       return type;
+}
+
+int u_object_load(GObject *obj)
+{
+       g_return_val_if_fail(U_OBJECT_IS_LOADABLE(obj), -1);
+       return U_OBJECT_LOADABLE_GET_INTERFACE(obj)->load(obj);
+}
+
+void u_object_unload(GObject *obj)
+{
+       g_return_if_fail(U_OBJECT_IS_LOADABLE(obj));
+       U_OBJECT_LOADABLE_GET_INTERFACE(obj)->unload(obj);
+}