[json-glib] Use new macros when compiling against new GLib



commit 3fd47359707dfc15277cef505d4008c10d8455e9
Author: Emmanuele Bassi <ebassi gnome org>
Date:   Thu Jul 11 17:04:13 2013 +0100

    Use new macros when compiling against new GLib
    
    If we're being compiled against a newer version of GLib, we should use
    the new macros that add instance private data.
    
    Since this is a stable branch, we cannot bump the GLib requirement; so
    we use version checks to conditionally compile the new code.

 json-glib/json-builder.c   |   15 ++++++++++++---
 json-glib/json-generator.c |   15 ++++++++++++---
 json-glib/json-parser.c    |   12 +++++++++++-
 json-glib/json-reader.c    |   10 ++++++++++
 4 files changed, 45 insertions(+), 7 deletions(-)
---
diff --git a/json-glib/json-builder.c b/json-glib/json-builder.c
index d2f5391..82e3ec7 100644
--- a/json-glib/json-builder.c
+++ b/json-glib/json-builder.c
@@ -48,8 +48,11 @@
 
 #include "json-builder.h"
 
-#define JSON_BUILDER_GET_PRIVATE(obj) \
-        (G_TYPE_INSTANCE_GET_PRIVATE ((obj), JSON_TYPE_BUILDER, JsonBuilderPrivate))
+#if GLIB_CHECK_VERSION (2, 37, 3)
+# define JSON_BUILDER_GET_PRIVATE(obj)   ((JsonBuilderPrivate *) json_builder_get_instance_private 
((JsonBuilder *) (obj)))
+#else
+# define JSON_BUILDER_GET_PRIVATE(obj)   (G_TYPE_INSTANCE_GET_PRIVATE ((obj), JSON_TYPE_BUILDER, 
JsonBuilderPrivate))
+#endif
 
 struct _JsonBuilderPrivate
 {
@@ -104,7 +107,11 @@ json_builder_state_free (JsonBuilderState *state)
     }
 }
 
-G_DEFINE_TYPE (JsonBuilder, json_builder, G_TYPE_OBJECT);
+#if GLIB_CHECK_VERSION (2, 37, 3)
+G_DEFINE_TYPE_WITH_PRIVATE (JsonBuilder, json_builder, G_TYPE_OBJECT)
+#else
+G_DEFINE_TYPE (JsonBuilder, json_builder, G_TYPE_OBJECT)
+#endif
 
 static void
 json_builder_free_all_state (JsonBuilder *builder)
@@ -142,7 +149,9 @@ json_builder_class_init (JsonBuilderClass *klass)
 {
   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
 
+#if !GLIB_CHECK_VERSION (2, 37, 3)
   g_type_class_add_private (klass, sizeof (JsonBuilderPrivate));
+#endif
 
   gobject_class->finalize = json_builder_finalize;
 }
diff --git a/json-glib/json-generator.c b/json-glib/json-generator.c
index 097f2a9..04beaf4 100644
--- a/json-glib/json-generator.c
+++ b/json-glib/json-generator.c
@@ -41,8 +41,11 @@
 #include "json-marshal.h"
 #include "json-generator.h"
 
-#define JSON_GENERATOR_GET_PRIVATE(obj) \
-        (G_TYPE_INSTANCE_GET_PRIVATE ((obj), JSON_TYPE_GENERATOR, JsonGeneratorPrivate))
+#if GLIB_CHECK_VERSION (2, 37, 3)
+# define JSON_GENERATOR_GET_PRIVATE(obj) ((JsonGeneratorPrivate *) json_generator_get_instance_private 
((JsonGenerator *) (obj)))
+#else
+# define JSON_GENERATOR_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), JSON_TYPE_GENERATOR, 
JsonGeneratorPrivate))
+#endif
 
 struct _JsonGeneratorPrivate
 {
@@ -109,7 +112,11 @@ static const char json_exceptions[] = {
 
 static GParamSpec *generator_props[PROP_LAST] = { NULL, };
 
-G_DEFINE_TYPE (JsonGenerator, json_generator, G_TYPE_OBJECT);
+#if GLIB_CHECK_VERSION (2, 37, 3)
+G_DEFINE_TYPE_WITH_PRIVATE (JsonGenerator, json_generator, G_TYPE_OBJECT)
+#else
+G_DEFINE_TYPE (JsonGenerator, json_generator, G_TYPE_OBJECT)
+#endif
 
 static gchar *
 json_strescape (const gchar *str)
@@ -193,7 +200,9 @@ json_generator_class_init (JsonGeneratorClass *klass)
 {
   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
 
+#if !GLIB_CHECK_VERSION (2, 37, 3)
   g_type_class_add_private (klass, sizeof (JsonGeneratorPrivate));
+#endif
 
   /**
    * JsonGenerator:pretty:
diff --git a/json-glib/json-parser.c b/json-glib/json-parser.c
index 593258c..1600e90 100644
--- a/json-glib/json-parser.c
+++ b/json-glib/json-parser.c
@@ -45,7 +45,11 @@
 #include "json-parser.h"
 #include "json-scanner.h"
 
-#define JSON_PARSER_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), JSON_TYPE_PARSER, 
JsonParserPrivate))
+#if GLIB_CHECK_VERSION (2, 37, 3)
+# define JSON_PARSER_GET_PRIVATE(obj) ((JsonParserPrivate *) json_parser_get_instance_private ((JsonParser 
*) (obj)))
+#else
+# define JSON_PARSER_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), JSON_TYPE_PARSER, 
JsonParserPrivate))
+#endif
 
 struct _JsonParserPrivate
 {
@@ -102,7 +106,11 @@ static guint parser_signals[LAST_SIGNAL] = { 0, };
 
 G_DEFINE_QUARK (json-parser-error-quark, json_parser_error)
 
+#if GLIB_CHECK_VERSION (2, 37, 3)
+G_DEFINE_TYPE_WITH_PRIVATE (JsonParser, json_parser, G_TYPE_OBJECT)
+#else
 G_DEFINE_TYPE (JsonParser, json_parser, G_TYPE_OBJECT)
+#endif
 
 static guint json_parse_array  (JsonParser   *parser,
                                 JsonScanner  *scanner,
@@ -156,7 +164,9 @@ json_parser_class_init (JsonParserClass *klass)
 {
   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
 
+#if !GLIB_CHECK_VERSION (2, 37, 3)
   g_type_class_add_private (klass, sizeof (JsonParserPrivate));
+#endif
 
   gobject_class->dispose = json_parser_dispose;
   gobject_class->finalize = json_parser_finalize;
diff --git a/json-glib/json-reader.c b/json-glib/json-reader.c
index b2a9f7f..6b7751f 100644
--- a/json-glib/json-reader.c
+++ b/json-glib/json-reader.c
@@ -109,7 +109,11 @@ enum
 
 static GParamSpec *reader_properties[PROP_LAST] = { NULL, };
 
+#if GLIB_CHECK_VERSION (2, 37, 3)
+G_DEFINE_TYPE_WITH_PRIVATE (JsonReader, json_reader, G_TYPE_OBJECT)
+#else
 G_DEFINE_TYPE (JsonReader, json_reader, G_TYPE_OBJECT)
+#endif
 
 G_DEFINE_QUARK (json-reader-error-quark, json_reader_error)
 
@@ -170,7 +174,9 @@ json_reader_class_init (JsonReaderClass *klass)
 {
   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
 
+#if !GLIB_CHECK_VERSION (2, 37, 3)
   g_type_class_add_private (klass, sizeof (JsonReaderPrivate));
+#endif
 
   /**
    * JsonReader:root:
@@ -197,8 +203,12 @@ json_reader_class_init (JsonReaderClass *klass)
 static void
 json_reader_init (JsonReader *self)
 {
+#if GLIB_CHECK_VERSION (2, 37, 3)
+  self->priv = json_reader_get_instance_private (self);
+#else
   self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, JSON_TYPE_READER,
                                             JsonReaderPrivate);
+#endif
 }
 
 /**


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]