From 7d7d6ae0531a85361ce0d8b997d988b653282847 Mon Sep 17 00:00:00 2001 From: Andy Spencer Date: Mon, 8 Feb 2010 22:07:08 +0000 Subject: [PATCH] Replace ugly macros with ugly boilerplate --- src/data/gis-http.c | 2 +- src/objects/gis-callback.c | 9 ++++-- src/objects/gis-callback.h | 15 ++++++---- src/objects/gis-marker.c | 4 ++- src/objects/gis-marker.h | 15 ++++++---- src/objects/gis-object.c | 12 ++++++-- src/objects/gis-object.h | 56 ++++++++------------------------------ src/objects/gis-tile.c | 9 ++++-- src/objects/gis-tile.h | 15 ++++++---- 9 files changed, 68 insertions(+), 69 deletions(-) diff --git a/src/data/gis-http.c b/src/data/gis-http.c index 1f1c270..78251be 100644 --- a/src/data/gis-http.c +++ b/src/data/gis-http.c @@ -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, diff --git a/src/objects/gis-callback.c b/src/objects/gis-callback.c index 79d8300..05fa746 100644 --- a/src/objects/gis-callback.c +++ b/src/objects/gis-callback.c @@ -20,8 +20,13 @@ /* 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) { diff --git a/src/objects/gis-callback.h b/src/objects/gis-callback.h index 8677fa6..f3eee6d 100644 --- a/src/objects/gis-callback.h +++ b/src/objects/gis-callback.h @@ -23,12 +23,15 @@ #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 diff --git a/src/objects/gis-marker.c b/src/objects/gis-marker.c index 69e8ad5..f3a5079 100644 --- a/src/objects/gis-marker.c +++ b/src/objects/gis-marker.c @@ -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) { diff --git a/src/objects/gis-marker.h b/src/objects/gis-marker.h index c712759..fac4680 100644 --- a/src/objects/gis-marker.h +++ b/src/objects/gis-marker.h @@ -24,12 +24,15 @@ #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 diff --git a/src/objects/gis-object.c b/src/objects/gis-object.c index e7f4b06..ac01a29 100644 --- a/src/objects/gis-object.c +++ b/src/objects/gis-object.c @@ -18,6 +18,7 @@ #include #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) +{ +} diff --git a/src/objects/gis-object.h b/src/objects/gis-object.h index 4055d87..b823161 100644 --- a/src/objects/gis-object.h +++ b/src/objects/gis-object.h @@ -21,45 +21,6 @@ #include #include -/* 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; diff --git a/src/objects/gis-tile.c b/src/objects/gis-tile.c index fce15e5..d7f8ac7 100644 --- a/src/objects/gis-tile.c +++ b/src/objects/gis-tile.c @@ -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) +{ +} diff --git a/src/objects/gis-tile.h b/src/objects/gis-tile.h index 698c0c4..c1e3ea7 100644 --- a/src/objects/gis-tile.h +++ b/src/objects/gis-tile.h @@ -22,12 +22,15 @@ #include #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); -- 2.41.0