summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Ruprecht <maiku@pidgin.im>2009-04-01 23:43:38 +0000
committerMichael Ruprecht <maiku@pidgin.im>2009-04-01 23:43:38 +0000
commit450d32b8ebedf8cd73a5053ab0848f39e8e05b4a (patch)
tree9388c97758fcfd5a603ef8b2b0c074bed0836240
parent4bb089d1cecf7a4a85ca16be9aaf0ae825a5fe30 (diff)
downloadpidgin-450d32b8ebedf8cd73a5053ab0848f39e8e05b4a.tar.gz
Add G_DEFINE_TYPE compatibility define from gobjectification branch.
-rw-r--r--libpurple/internal.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/libpurple/internal.h b/libpurple/internal.h
index 085605f2a6..423e4c0968 100644
--- a/libpurple/internal.h
+++ b/libpurple/internal.h
@@ -222,6 +222,41 @@
# endif
#endif
+#include <glib.h>
+#include <glib-object.h>
+
+#ifndef G_DEFINE_TYPE
+#define G_DEFINE_TYPE(TypeName, type_name, TYPE_PARENT) \
+\
+static void type_name##_init (TypeName *self); \
+static void type_name##_class_init (TypeName##Class *klass); \
+static gpointer type_name##_parent_class = NULL; \
+static void type_name##_class_intern_init (gpointer klass) \
+{ \
+ type_name##_parent_class = g_type_class_peek_parent (klass); \
+ type_name##_class_init ((TypeName##Class*) klass); \
+} \
+\
+GType \
+type_name##_get_type (void) \
+{ \
+ static GType g_define_type_id = 0; \
+ if (G_UNLIKELY (g_define_type_id == 0)) \
+ { \
+ g_define_type_id = \
+ g_type_register_static_simple (TYPE_PARENT, \
+ g_intern_static_string (#TypeName), \
+ sizeof (TypeName##Class), \
+ (GClassInitFunc)type_name##_class_intern_init, \
+ sizeof (TypeName), \
+ (GInstanceInitFunc)type_name##_init, \
+ (GTypeFlags) 0); \
+ } \
+ return g_define_type_id; \
+} /* closes type_name##_get_type() */
+
+#endif
+
/* Safer ways to work with static buffers. When using non-static
* buffers, either use g_strdup_* functions (preferred) or use
* g_strlcpy/g_strlcpy directly. */