]> git.draconx.ca Git - upkg.git/blobdiff - src/engine/music.c
Reorganize object hierarchy to root at "UObject".
[upkg.git] / src / engine / music.c
index f095c46a8f54bc550ef19e24e20551bae95150ee..7d57bdb9401b3bb36d6e4c10261ecbc1bad8d218 100644 (file)
@@ -2,8 +2,8 @@
 #include <string.h>
 #include <glib-object.h>
 
-#include "serializable.h"
 #include "exportable.h"
+#include "uobject.h"
 #include "music.h"
 #include "upkg.h"
 
@@ -20,6 +20,12 @@ struct music_priv {
        unsigned long nbuf;
 };
 
+static void exportable_init(UObjectExportable *);
+
+G_DEFINE_DYNAMIC_TYPE_EXTENDED(EngineMusic, engine_music, U_OBJECT_TYPE, 0,
+       G_IMPLEMENT_INTERFACE(U_OBJECT_TYPE_EXPORTABLE, exportable_init)
+);
+
 static int export(GObject *o, FILE *f)
 {
        struct music_priv *priv = MUSIC_GET_PRIV(o);
@@ -51,13 +57,13 @@ static int export_name(GObject *o, char *buf, size_t n)
        return snprintf(buf, n, "%s", priv->f ? priv->f->name : "");
 }
 
-static void exportable_init(UPkgExportable *e)
+static void exportable_init(UObjectExportable *e)
 {
        e->export      = export;
        e->export_name = export_name;
 }
 
-static int deserialize(GObject *o, struct upkg_file *f)
+static int deserialize(UObject *o, struct upkg_file *f)
 {
        struct music_priv *priv = MUSIC_GET_PRIV(o);
        EngineMusic *m = ENGINE_MUSIC(o);
@@ -65,14 +71,16 @@ static int deserialize(GObject *o, struct upkg_file *f)
 
        size_t rc;
 
+       U_OBJECT_CLASS(engine_music_parent_class)->deserialize(o, f);
+
        priv->nbuf = upkg_export_read(f, priv->buf, sizeof priv->buf);
        priv->base = 0;
 
        /* Random field #1 */
-       if (priv->nbuf - priv->base < 2)
+       if (priv->nbuf - priv->base < 1)
                return -1;
        // unpack_16_le(priv->buf+0);
-       priv->base += 2;
+       priv->base += 1;
 
        if (f->pkg->version > 61) {
                /* Random field #2 */
@@ -96,9 +104,9 @@ static int deserialize(GObject *o, struct upkg_file *f)
        return 0;
 }
 
-static void serializable_init(UPkgSerializable *s)
+void music_register(GTypeModule *m)
 {
-       s->deserialize = deserialize;
+       engine_music_register_type(m);
 }
 
 static void engine_music_init(EngineMusic *m)
@@ -107,19 +115,13 @@ static void engine_music_init(EngineMusic *m)
 
 static void engine_music_class_init(EngineMusicClass *class)
 {
+       UObjectClass *uo = U_OBJECT_CLASS(class);
+
        g_type_class_add_private(class, sizeof (struct music_priv));
-}
 
-static void engine_music_class_finalize(EngineMusicClass *class)
-{
+       uo->deserialize = deserialize;
 }
 
-G_DEFINE_DYNAMIC_TYPE_EXTENDED(EngineMusic, engine_music, G_TYPE_OBJECT, 0,
-       G_IMPLEMENT_INTERFACE(UPKG_TYPE_SERIALIZABLE, serializable_init)
-       G_IMPLEMENT_INTERFACE(UPKG_TYPE_EXPORTABLE, exportable_init)
-);
-
-void music_register(GTypeModule *m)
+static void engine_music_class_finalize(EngineMusicClass *class)
 {
-       engine_music_register_type(m);
 }