X-Git-Url: https://git.draconx.ca/gitweb/upkg.git/blobdiff_plain/667aab241e387ac32ab734a1f79caffe7ee20947..4cac9f15932adee255ed2be1f6d419ffe068c438:/src/uobject/uobject.h?ds=sidebyside diff --git a/src/uobject/uobject.h b/src/uobject/uobject.h new file mode 100644 index 0000000..ce5e326 --- /dev/null +++ b/src/uobject/uobject.h @@ -0,0 +1,62 @@ +/* + * upkg: tool for manipulating Unreal Tournament packages. + * Copyright (C) 2009 Nick Bowler + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef UOBJECT_UOBJECT_H_ +#define UOBJECT_UOBJECT_H_ + +#include +#include "upkg.h" + +#define U_OBJECT_TYPE u_object_get_type() +#define U_OBJECT(obj) \ + G_TYPE_CHECK_INSTANCE_CAST(obj, U_OBJECT_TYPE, UObject) +#define U_OBJECT_CLASS(class) \ + G_TYPE_CHECK_CLASS_CAST(class, U_OBJECT_TYPE, UObjectClass) +#define IS_U_OBJECT(obj) \ + G_TYPE_CHECK_INSTANCE_TYPE(obj, U_OBJECT_TYPE) +#define IS_U_OBJECT_CLASS(class) \ + G_TYPE_CHECK_CLASS_TYPE(class, U_OBJECT_TYPE, UObjectClass) +#define U_OBJECT_GET_CLASS(obj) \ + G_TYPE_INSTANCE_GET_CLASS(obj, U_OBJECT_TYPE, UObjectClass) + +typedef struct UObject UObject; +typedef struct UObjectClass UObjectClass; + +struct UObject { + GObject parent; + + struct upkg *pkg; + struct upkg_file *pkg_file; + unsigned long pkg_idx; +}; + +struct UObjectClass { + GObjectClass parent; + + int (*deserialize)(UObject *obj, struct upkg_file *f); +}; + +GType u_object_get_type(void); + +const GValue *u_object_get_property(UObject *obj, const char *name); +void u_object_set_property(UObject *obj, const char *name, const GValue *val); + +int u_object_deserialize(GObject *obj, struct upkg *pkg, unsigned long idx); + +#endif