X-Git-Url: https://git.draconx.ca/gitweb/upkg.git/blobdiff_plain/c6537566467e27e40028254b4c7da145417682cf..e3726c0480d74840dd9104850cba0f3e5f93beed:/src/uobject/uobject.h diff --git a/src/uobject/uobject.h b/src/uobject/uobject.h index dfca528..e91bf5b 100644 --- a/src/uobject/uobject.h +++ b/src/uobject/uobject.h @@ -1,10 +1,10 @@ /* * upkg: tool for manipulating Unreal Tournament packages. - * Copyright (C) 2009 Nick Bowler + * Copyright © 2009-2011 Nick Bowler * - * This program is free software; you can redistribute it and/or modify + * 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 + * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, @@ -13,27 +13,27 @@ * 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 + * along with this program. If not, see . */ -#ifndef UOBJECT_UOBJECT_H_ -#define UOBJECT_UOBJECT_H_ +#ifndef U_OBJECT_H_ +#define U_OBJECT_H_ #include +#include #include "upkg.h" -#define UOBJECT_TYPE uobject_get_type() -#define UOBJECT(obj) \ - G_TYPE_CHECK_INSTANCE_CAST(obj, UOBJECT_TYPE, UObject) -#define UOBJECT_CLASS(class) \ - G_TYPE_CHECK_CLASS_CAST(class, UOBJECT_TYPE, UObjectClass) -#define IS_UOBJECT(obj) \ - G_TYPE_CHECK_INSTANCE_TYPE(obj, UOBJECT_TYPE) -#define IS_UOBJECT_CLASS(class) \ - G_TYPE_CHECK_CLASS_TYPE(class, UOBJECT_TYPE, UObjectClass) -#define UOBJECT_GET_CLASS(obj) \ - G_TYPE_INSTANCE_GET_CLASS(obj, UOBJECT_TYPE, UObjectClass) +#define U_TYPE_OBJECT u_object_get_type() +#define U_OBJECT(obj) \ + G_TYPE_CHECK_INSTANCE_CAST(obj, U_TYPE_OBJECT, UObject) +#define U_OBJECT_CLASS(class) \ + G_TYPE_CHECK_CLASS_CAST(class, U_TYPE_OBJECT, UObjectClass) +#define IS_U_OBJECT(obj) \ + G_TYPE_CHECK_INSTANCE_TYPE(obj, U_TYPE_OBJECT) +#define IS_U_OBJECT_CLASS(class) \ + G_TYPE_CHECK_CLASS_TYPE(class, U_TYPE_OBJECT, UObjectClass) +#define U_OBJECT_GET_CLASS(obj) \ + G_TYPE_INSTANCE_GET_CLASS(obj, U_TYPE_OBJECT, UObjectClass) typedef struct UObject UObject; typedef struct UObjectClass UObjectClass; @@ -43,17 +43,26 @@ struct UObject { struct upkg *pkg; struct upkg_file *pkg_file; - unsigned long pkg_idx; }; struct UObjectClass { GObjectClass parent; - int (*deserialize)(UObject *obj, struct upkg_file *f); + int (*deserialize)(UObject *obj); }; -GType uobject_get_type(void); +GType u_object_get_type(void); -int uobject_deserialize(GObject *obj, struct upkg *pkg, unsigned long idx); +int u_object_deserialize(GObject *obj, struct upkg *pkg, unsigned long idx); + +GObject *u_object_new_from_package(struct upkg *pkg, unsigned long idx); + +/* Logging helpers for UObject class implementations. */ +void u_vlog_full(GObject *o, GLogLevelFlags level, const char *fmt, va_list ap); +void u_log_full(GObject *o, GLogLevelFlags level, const char *fmt, ...); + +#define u_log(uo, ...) u_log_full(G_OBJECT(uo), G_LOG_LEVEL_MESSAGE, __VA_ARGS__) +#define u_warn(uo, ...) u_log_full(G_OBJECT(uo), G_LOG_LEVEL_WARNING, __VA_ARGS__) +#define u_err(uo, ...) u_log_full(G_OBJECT(uo), G_LOG_LEVEL_CRITICAL, __VA_ARGS__) #endif