X-Git-Url: http://git.draconx.ca/gitweb/upkg.git/blobdiff_plain/7a9046e942bc1f880f121f0be7e05ef80a0270c8..73121d6a9327147a3e2b706f0dd10e2e8cd6800f:/src/uobject/uobject.h diff --git a/src/uobject/uobject.h b/src/uobject/uobject.h index 2f70940..4347800 100644 --- a/src/uobject/uobject.h +++ b/src/uobject/uobject.h @@ -20,6 +20,7 @@ #define U_OBJECT_H_ #include +#include #include "upkg.h" #define U_TYPE_OBJECT u_object_get_type() @@ -40,8 +41,9 @@ typedef struct UObjectClass UObjectClass; struct UObject { GObject parent; - struct upkg *pkg; + GTypeModule *pkg; struct upkg_file *pkg_file; + char *pkg_name; }; struct UObjectClass { @@ -52,8 +54,21 @@ struct UObjectClass { GType u_object_get_type(void); -int u_object_deserialize(GObject *obj, struct upkg *pkg, unsigned long idx); +int u_object_deserialize(GObject *obj, GTypeModule *pkg, unsigned long idx); -GObject *u_object_new_from_package(struct upkg *pkg, unsigned long idx); +float u_unpack_binary32_le(const unsigned char *buf); + +GObject *u_object_new_from_package(GTypeModule *pkg, unsigned long idx); + +/* Resolve an object reference from one object to another. */ +GObject *u_object_get_by_link(GObject *obj, long link); + +/* 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