#define U_OBJECT_H_
#include <glib-object.h>
+#include <stdarg.h>
#include "upkg.h"
#define U_TYPE_OBJECT u_object_get_type()
struct UObject {
GObject parent;
- struct upkg *pkg;
+ GTypeModule *pkg;
struct upkg_file *pkg_file;
+ char *pkg_name;
};
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