From: Nick Bowler Date: Sat, 12 Mar 2011 01:55:50 +0000 (-0500) Subject: uobject: Remove the file parameter from deserialize. X-Git-Url: http://git.draconx.ca/gitweb/upkg.git/commitdiff_plain/c49355663c73c1775c179ec6360d09ce0978bb97 uobject: Remove the file parameter from deserialize. The UObject class already has a file member; restructure the code to use that instead. --- diff --git a/src/engine/music.c b/src/engine/music.c index ae2db1e..f59e4a9 100644 --- a/src/engine/music.c +++ b/src/engine/music.c @@ -121,14 +121,15 @@ static void loadable_init(UObjectLoadable *l) l->unload = unload; } -static int deserialize(UObject *o, struct upkg_file *f) +static int deserialize(UObject *uo) { - struct music_priv *priv = MUSIC_GET_PRIV(o); + struct music_priv *priv = MUSIC_GET_PRIV(uo); + struct upkg_file *f = uo->pkg_file; size_t rc, pos = 0, buflen; unsigned char buf[32]; long size; - U_OBJECT_CLASS(engine_music_parent_class)->deserialize(o, f); + U_OBJECT_CLASS(engine_music_parent_class)->deserialize(uo); buflen = upkg_export_read(f, buf, sizeof buf); diff --git a/src/engine/texture.c b/src/engine/texture.c index 2ac18a6..362b0cb 100644 --- a/src/engine/texture.c +++ b/src/engine/texture.c @@ -50,12 +50,12 @@ void exportable_init(UObjectExportable *e) G_DEFINE_DYNAMIC_TYPE(EngineTexture, engine_texture, U_OBJECT_TYPE); -static int deserialize(UObject *o, struct upkg_file *f) +static int deserialize(UObject *uo) { - struct texture_priv *priv = TEXTURE_GET_PRIV(o); - EngineTexture *t = ENGINE_TEXTURE(o); + struct texture_priv *priv = TEXTURE_GET_PRIV(uo); + EngineTexture *t = ENGINE_TEXTURE(uo); - U_OBJECT_CLASS(engine_texture_parent_class)->deserialize(o, f); + U_OBJECT_CLASS(engine_texture_parent_class)->deserialize(uo); printf("Texture size: %ux%u\n", t->usize, t->vsize); diff --git a/src/uobject/uobject.c b/src/uobject/uobject.c index e5b500b..4bc1655 100644 --- a/src/uobject/uobject.c +++ b/src/uobject/uobject.c @@ -141,9 +141,10 @@ decode_property(UObject *o, const char *name, struct upkg_file *f, unsigned long } /* Deserialize properties from an Unreal package. */ -static int deserialize(UObject *o, struct upkg_file *f) +static int deserialize(UObject *uo) { - struct u_object_priv *priv = U_OBJECT_GET_PRIV(o); + struct u_object_priv *priv = U_OBJECT_GET_PRIV(uo); + struct upkg_file *f = uo->pkg_file; unsigned long rc, tot_len = 0; while (1) { @@ -175,7 +176,7 @@ static int deserialize(UObject *o, struct upkg_file *f) break; } - rc = decode_property(U_OBJECT(o), name, f, len); + rc = decode_property(uo, name, f, len); if (rc == 0) return -1; len = rc; @@ -203,12 +204,13 @@ int u_object_deserialize(GObject *obj, struct upkg *pkg, unsigned long idx) return -1; } - rc = U_OBJECT_GET_CLASS(obj)->deserialize(uo, f); + uo->pkg = pkg; + uo->pkg_file = f; + + rc = U_OBJECT_GET_CLASS(obj)->deserialize(uo); if (rc != 0) { upkg_export_close(f); - } else { - uo->pkg = pkg; - uo->pkg_file = f; + uo->pkg_file = NULL; } return rc; diff --git a/src/uobject/uobject.h b/src/uobject/uobject.h index 139b537..b9e16fa 100644 --- a/src/uobject/uobject.h +++ b/src/uobject/uobject.h @@ -47,7 +47,7 @@ struct UObject { struct UObjectClass { GObjectClass parent; - int (*deserialize)(UObject *obj, struct upkg_file *f); + int (*deserialize)(UObject *obj); }; GType u_object_get_type(void);