X-Git-Url: https://git.draconx.ca/gitweb/upkg.git/blobdiff_plain/bb9c28745ae254b832805e5d41f2a5e6c3cb8f40..e3726c0480d74840dd9104850cba0f3e5f93beed:/src/uobject/uobject.h diff --git a/src/uobject/uobject.h b/src/uobject/uobject.h index 7319ee6..e91bf5b 100644 --- a/src/uobject/uobject.h +++ b/src/uobject/uobject.h @@ -20,19 +20,20 @@ #define U_OBJECT_H_ #include +#include #include "upkg.h" -#define U_OBJECT_TYPE u_object_get_type() +#define U_TYPE_OBJECT u_object_get_type() #define U_OBJECT(obj) \ - G_TYPE_CHECK_INSTANCE_CAST(obj, U_OBJECT_TYPE, UObject) + G_TYPE_CHECK_INSTANCE_CAST(obj, U_TYPE_OBJECT, UObject) #define U_OBJECT_CLASS(class) \ - G_TYPE_CHECK_CLASS_CAST(class, U_OBJECT_TYPE, UObjectClass) + G_TYPE_CHECK_CLASS_CAST(class, U_TYPE_OBJECT, UObjectClass) #define IS_U_OBJECT(obj) \ - G_TYPE_CHECK_INSTANCE_TYPE(obj, U_OBJECT_TYPE) + G_TYPE_CHECK_INSTANCE_TYPE(obj, U_TYPE_OBJECT) #define IS_U_OBJECT_CLASS(class) \ - G_TYPE_CHECK_CLASS_TYPE(class, U_OBJECT_TYPE, UObjectClass) + G_TYPE_CHECK_CLASS_TYPE(class, U_TYPE_OBJECT, UObjectClass) #define U_OBJECT_GET_CLASS(obj) \ - G_TYPE_INSTANCE_GET_CLASS(obj, U_OBJECT_TYPE, UObjectClass) + G_TYPE_INSTANCE_GET_CLASS(obj, U_TYPE_OBJECT, UObjectClass) typedef struct UObject UObject; typedef struct UObjectClass UObjectClass; @@ -54,4 +55,14 @@ GType u_object_get_type(void); 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