Replace ugly macros with ugly boilerplate
authorAndy Spencer <andy753421@gmail.com>
Mon, 8 Feb 2010 22:07:08 +0000 (22:07 +0000)
committerAndy Spencer <andy753421@gmail.com>
Mon, 8 Feb 2010 22:07:08 +0000 (22:07 +0000)
src/data/gis-http.c
src/objects/gis-callback.c
src/objects/gis-callback.h
src/objects/gis-marker.c
src/objects/gis-marker.h
src/objects/gis-object.c
src/objects/gis-object.h
src/objects/gis-tile.c
src/objects/gis-tile.h

index 1f1c270..78251be 100644 (file)
@@ -97,7 +97,7 @@ gchar *gis_http_fetch(GisHttp *http, const gchar *uri, const char *local,
                FILE *fp = fopen_p(path, "a");
 
                /* Make temp data */
-               struct _cache_info info = {
+               struct _CacheInfo info = {
                        .fp        = fp,
                        .path      = path,
                        .callback  = callback,
index 79d8300..05fa746 100644 (file)
 
 /* GisCallback */
 G_DEFINE_TYPE(GisCallback, gis_callback, GIS_TYPE_OBJECT);
-static void gis_callback_init(GisCallback *cb) { }
-static void gis_callback_class_init(GisCallbackClass *klass) { }
+static void gis_callback_init(GisCallback *cb)
+{
+}
+
+static void gis_callback_class_init(GisCallbackClass *klass)
+{
+}
 
 GisCallback *gis_callback_new(GisCallbackFunc callback, gpointer user_data)
 {
index 8677fa6..f3eee6d 100644 (file)
 #include "gis-object.h"
 
 /* GisCallback */
-#define GIS_TYPE_CALLBACK (gis_callback_get_type())
+#define GIS_TYPE_CALLBACK            (gis_callback_get_type())
+#define GIS_CALLBACK(obj)            (G_TYPE_CHECK_INSTANCE_CAST((obj),   GIS_TYPE_CALLBACK, GisCallback))
+#define GIS_IS_CALLBACK(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj),   GIS_TYPE_CALLBACK))
+#define GIS_CALLBACK_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST   ((klass), GIS_TYPE_CALLBACK, GisCallbackClass))
+#define GIS_IS_CALLBACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE   ((klass), GIS_TYPE_CALLBACK))
+#define GIS_CALLBACK_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj),   GIS_TYPE_CALLBACK, GisCallbackClass))
 
-GOBJECT_HEAD(
-       GIS, CALLBACK,
-       Gis, Callback,
-       gis, callback);
+typedef struct _GisCallback      GisCallback;
+typedef struct _GisCallbackClass GisCallbackClass;
 
 typedef gpointer (*GisCallbackFunc)(GisCallback *callback, gpointer user_data);
 
@@ -42,6 +45,8 @@ struct _GisCallbackClass {
        GisObjectClass parent_class;
 };
 
+GType gis_callback_get_type(void);
+
 GisCallback *gis_callback_new(GisCallbackFunc callback, gpointer user_data);
 
 #endif
index 69e8ad5..f3a5079 100644 (file)
@@ -42,7 +42,9 @@ GisMarker *gis_marker_new(const gchar *label)
 }
 
 G_DEFINE_TYPE(GisMarker, gis_marker, GIS_TYPE_OBJECT);
-static void gis_marker_init(GisMarker *marker) { }
+static void gis_marker_init(GisMarker *marker)
+{
+}
 
 static void gis_marker_finalize(GObject *_marker)
 {
index c712759..fac4680 100644 (file)
 #include "gis-object.h"
 
 /* GisMarker */
-#define GIS_TYPE_MARKER (gis_marker_get_type())
+#define GIS_TYPE_MARKER            (gis_marker_get_type())
+#define GIS_MARKER(obj)            (G_TYPE_CHECK_INSTANCE_CAST((obj),   GIS_TYPE_MARKER, GisMarker))
+#define GIS_IS_MARKER(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj),   GIS_TYPE_MARKER))
+#define GIS_MARKER_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST   ((klass), GIS_TYPE_MARKER, GisMarkerClass))
+#define GIS_IS_MARKER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE   ((klass), GIS_TYPE_MARKER))
+#define GIS_MARKER_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj),   GIS_TYPE_MARKER, GisMarkerClass))
 
-GOBJECT_HEAD(
-       GIS, MARKER,
-       Gis, Marker,
-       gis, marker);
+typedef struct _GisMarker      GisMarker;
+typedef struct _GisMarkerClass GisMarkerClass;
 
 struct _GisMarker {
        GisObject  parent_instance;
@@ -43,6 +46,8 @@ struct _GisMarkerClass {
        GisObjectClass parent_class;
 };
 
+GType gis_marker_get_type(void);
+
 GisMarker *gis_marker_new(const gchar *label);
 
 #endif
index e7f4b06..ac01a29 100644 (file)
@@ -18,6 +18,7 @@
 #include <config.h>
 #include "gis-object.h"
 
+
 /* GisPoint */
 GisPoint *gis_point_new()
 {
@@ -38,6 +39,11 @@ void gis_point_free(GisPoint *point)
 
 
 /* GisObject */
-G_DEFINE_TYPE(GisObject, gis_object, G_TYPE_OBJECT);
-static void gis_object_init(GisObject *object) { }
-static void gis_object_class_init(GisObjectClass *klass) { }
+G_DEFINE_ABSTRACT_TYPE(GisObject, gis_object, G_TYPE_OBJECT);
+static void gis_object_init(GisObject *object)
+{
+}
+
+static void gis_object_class_init(GisObjectClass *klass)
+{
+}
index 4055d87..b823161 100644 (file)
 #include <glib.h>
 #include <glib-object.h>
 
-/* Take that GLib boilerplate! */
-#define GOBJECT_HEAD( \
-               MAM, BAR, \
-               Mam, Bar, \
-               mam, bar) \
-GType mam##_##bar##_get_type(void); \
-typedef struct _##Mam##Bar Mam##Bar; \
-typedef struct _##Mam##Bar##Class Mam##Bar##Class; \
-static inline Mam##Bar *MAM##_##BAR(gpointer obj) { \
-       return G_TYPE_CHECK_INSTANCE_CAST(obj, MAM##_TYPE_##BAR, Mam##Bar); \
-} \
-static inline gboolean MAM##_IS_##BAR(gpointer obj) { \
-       return G_TYPE_CHECK_INSTANCE_TYPE(obj, MAM##_TYPE_##BAR); \
-} \
-static inline Mam##Bar##Class *MAM##_##BAR##_CLASS(gpointer klass) { \
-       return G_TYPE_CHECK_CLASS_CAST(klass, MAM##_TYPE_##BAR, Mam##Bar##Class); \
-} \
-static inline gboolean MAM##_IS_##BAR##_CLASS(gpointer klass) { \
-       return G_TYPE_CHECK_CLASS_TYPE(klass, MAM##_TYPE_##BAR); \
-} \
-static inline Mam##Bar##Class *MAM##_##BAR##_GET_CLASS(gpointer obj) { \
-       return G_TYPE_INSTANCE_GET_CLASS(obj, MAM##_TYPE_##BAR, Mam##Bar##Class); \
-}
-
-#define GOBJECT_BODY( \
-               parent_type, \
-               MAM, BAR, \
-               Mam, Bar, \
-               mam, bar) \
-G_DEFINE_TYPE(Mam##Bar, mam##_##bar, parent_type); \
-static void mam##_##bar##_init(Mam##Bar *mambar) { \
-} \
-static void mam##_##bar##_class_init(Mam##Bar##Class *klass) { \
-} \
-static Mam##Bar *mam##_##bar##_new() { \
-       return g_object_new(MAM##_TYPE_##BAR, NULL); \
-}
-
-
 /* GisPoint */
 typedef struct _GisPoint GisPoint;
 
@@ -73,15 +34,18 @@ void gis_point_free(GisPoint *point);
 
 
 /* GisObject */
-#define GIS_TYPE_OBJECT (gis_object_get_type())
+#define GIS_TYPE_OBJECT            (gis_object_get_type())
+#define GIS_OBJECT(obj)            (G_TYPE_CHECK_INSTANCE_CAST((obj),   GIS_TYPE_OBJECT, GisObject))
+#define GIS_IS_OBJECT(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj),   GIS_TYPE_OBJECT))
+#define GIS_OBJECT_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST   ((klass), GIS_TYPE_OBJECT, GisObjectClass))
+#define GIS_IS_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE   ((klass), GIS_TYPE_OBJECT))
+#define GIS_OBJECT_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj),   GIS_TYPE_OBJECT, GisObjectClass))
 
-GOBJECT_HEAD(
-       GIS, OBJECT,
-       Gis, Object,
-       gis, object);
+typedef struct _GisObject      GisObject;
+typedef struct _GisObjectClass GisObjectClass;
 
 struct _GisObject {
-       GObject parent_instance;
+       GObject  parent_instance;
        GisPoint center;
        gdouble  lod;
 };
@@ -90,6 +54,8 @@ struct _GisObjectClass {
        GObjectClass parent_class;
 };
 
+GType gis_object_get_type(void);
+
 static inline GisPoint *gis_object_center(GisObject *object)
 {
        return &GIS_OBJECT(object)->center;
index fce15e5..d7f8ac7 100644 (file)
@@ -194,5 +194,10 @@ void gis_tile_free(GisTile *tile, GisTileFreeFunc free_func, gpointer user_data)
 
 /* GObject code */
 G_DEFINE_TYPE(GisTile, gis_tile, GIS_TYPE_OBJECT);
-static void gis_tile_init(GisTile *tile) { }
-static void gis_tile_class_init(GisTileClass *klass) { }
+static void gis_tile_init(GisTile *tile)
+{
+}
+
+static void gis_tile_class_init(GisTileClass *klass)
+{
+}
index 698c0c4..c1e3ea7 100644 (file)
 #include <glib-object.h>
 #include "gis-object.h"
 
-#define GIS_TYPE_TILE (gis_tile_get_type())
+#define GIS_TYPE_TILE            (gis_tile_get_type())
+#define GIS_TILE(obj)            (G_TYPE_CHECK_INSTANCE_CAST((obj),   GIS_TYPE_TILE, GisTile))
+#define GIS_IS_TILE(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj),   GIS_TYPE_TILE))
+#define GIS_TILE_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST   ((klass), GIS_TYPE_TILE, GisTileClass))
+#define GIS_IS_TILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE   ((klass), GIS_TYPE_TILE))
+#define GIS_TILE_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj),   GIS_TYPE_TILE, GisTileClass))
 
-GOBJECT_HEAD(
-       GIS, TILE,
-       Gis, Tile,
-       gis, tile);
+typedef struct _GisTile      GisTile;
+typedef struct _GisTileClass GisTileClass;
 
 struct _GisTile {
        GisObject  parent_instance;
@@ -68,6 +71,8 @@ typedef void (*GisTileFreeFunc)(GisTile *tile, gpointer user_data);
 /* Path to string table, keep in sync with tile->children */
 extern gchar *gis_tile_path_table[2][2];
 
+GType gis_tile_get_type(void);
+
 /* Allocate a new Tile */
 GisTile *gis_tile_new(GisTile *parent,
        gdouble n, gdouble s, gdouble e, gdouble w);