X-Git-Url: https://git.draconx.ca/gitweb/upkg.git/blobdiff_plain/c6537566467e27e40028254b4c7da145417682cf..06d82616a1fdc44191265284ac46dda5dbdb5eb9:/src/uobject.c diff --git a/src/uobject.c b/src/uobject.c index e271a67..64e7c4c 100644 --- a/src/uobject.c +++ b/src/uobject.c @@ -27,8 +27,8 @@ #include "upkg.h" #include "pack.h" -#define UOBJECT_GET_PRIV(o) \ - G_TYPE_INSTANCE_GET_PRIVATE(o, UOBJECT_TYPE, struct uobject_priv) +#define U_OBJECT_GET_PRIV(o) \ + G_TYPE_INSTANCE_GET_PRIVATE(o, U_OBJECT_TYPE, struct u_object_priv) enum { PROPERTY_BYTE = 1, @@ -48,12 +48,7 @@ enum { PROPERTY_FIXEDARRAY, }; -struct uobject_property { - const char *name; - GValue val; -}; - -struct uobject_priv { +struct u_object_priv { struct upkg_file *f; size_t base, len; @@ -61,7 +56,7 @@ struct uobject_priv { unsigned long nbuf; }; -G_DEFINE_TYPE(UObject, uobject, G_TYPE_OBJECT); +G_DEFINE_TYPE(UObject, u_object, G_TYPE_OBJECT); static unsigned long get_real_size(unsigned long *real, unsigned size, unsigned char *buf, size_t n) @@ -95,7 +90,7 @@ get_real_size(unsigned long *real, unsigned size, unsigned char *buf, size_t n) static unsigned long decode_property(UObject *o, const char *name, struct upkg_file *f, unsigned long len) { - struct uobject_priv *priv = UOBJECT_GET_PRIV(o); + struct u_object_priv *priv = U_OBJECT_GET_PRIV(o); unsigned long real_size, rc; int type, size, top; GValue val = {0}; @@ -149,7 +144,7 @@ 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) { - struct uobject_priv *priv = UOBJECT_GET_PRIV(o); + struct u_object_priv *priv = U_OBJECT_GET_PRIV(o); unsigned long rc, tot_len = 0; while (1) { @@ -162,7 +157,7 @@ static int deserialize(UObject *o, struct upkg_file *f) void *buf = priv->buf + priv->nbuf; size_t amt = sizeof priv->buf - priv->nbuf; rc = upkg_export_read(f, buf, amt); - if (rc == 0) + if (rc == 0 && priv->nbuf == 0) return -1; priv->nbuf += rc; } @@ -181,7 +176,7 @@ static int deserialize(UObject *o, struct upkg_file *f) break; } - rc = decode_property(UOBJECT(o), name, f, len); + rc = decode_property(U_OBJECT(o), name, f, len); if (rc == 0) return -1; len = rc; @@ -196,10 +191,10 @@ static int deserialize(UObject *o, struct upkg_file *f) return 0; } -int uobject_deserialize(GObject *obj, struct upkg *pkg, unsigned long idx) +int u_object_deserialize(GObject *obj, struct upkg *pkg, unsigned long idx) { - g_return_val_if_fail(IS_UOBJECT(obj), -1); - UObject *uo = UOBJECT(obj); + g_return_val_if_fail(IS_U_OBJECT(obj), -1); + UObject *uo = U_OBJECT(obj); struct upkg_file *f; int rc; @@ -209,7 +204,7 @@ int uobject_deserialize(GObject *obj, struct upkg *pkg, unsigned long idx) return -1; } - rc = UOBJECT_GET_CLASS(obj)->deserialize(uo, f); + rc = U_OBJECT_GET_CLASS(obj)->deserialize(uo, f); if (rc != 0) { upkg_export_close(f); } else { @@ -221,29 +216,29 @@ int uobject_deserialize(GObject *obj, struct upkg *pkg, unsigned long idx) return rc; } -static void uobject_init(UObject *o) +static void u_object_init(UObject *o) { o->pkg = NULL; o->pkg_file = NULL; o->pkg_idx = 0; } -static void uobject_finalize(GObject *o) +static void u_object_finalize(GObject *o) { - UObject *uo = UOBJECT(o); + UObject *uo = U_OBJECT(o); if (uo->pkg_file) { upkg_export_close(uo->pkg_file); } - G_OBJECT_CLASS(uobject_parent_class)->finalize(o); + G_OBJECT_CLASS(u_object_parent_class)->finalize(o); } -static void uobject_class_init(UObjectClass *class) +static void u_object_class_init(UObjectClass *class) { - g_type_class_add_private(class, sizeof (struct uobject_priv)); + g_type_class_add_private(class, sizeof (struct u_object_priv)); GObjectClass *go = G_OBJECT_CLASS(class); class->deserialize = deserialize; - go->finalize = uobject_finalize; + go->finalize = u_object_finalize; }