#include <string.h>
#include <glib-object.h>
-#include "serializable.h"
#include "exportable.h"
+#include "uobject.h"
#include "music.h"
#include "upkg.h"
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);
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);
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 */
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)
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);
}