diff options
author | Benjamin Otte <otte@redhat.com> | 2012-03-26 06:13:57 +0200 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2012-04-17 08:59:11 +0200 |
commit | b728cfd3e8af1b07fb5f15a22ed9b144b190d37e (patch) | |
tree | 0f5f6510f233bde45f4d670a938ff142fa67b246 /gtk/gtkcssvalueprivate.h | |
parent | 3cdb9c91caf920324cdd47318c0e47a55f50b3dd (diff) | |
download | gtk+-b728cfd3e8af1b07fb5f15a22ed9b144b190d37e.tar.gz |
cssvalue: Make the structure vtable-based
Don't use real classes, just a vtable.
Diffstat (limited to 'gtk/gtkcssvalueprivate.h')
-rw-r--r-- | gtk/gtkcssvalueprivate.h | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/gtk/gtkcssvalueprivate.h b/gtk/gtkcssvalueprivate.h index d925b71e7f..7fcb06661b 100644 --- a/gtk/gtkcssvalueprivate.h +++ b/gtk/gtkcssvalueprivate.h @@ -35,13 +35,30 @@ G_BEGIN_DECLS #define GTK_IS_CSS_VALUE_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE (obj, GTK_TYPE_CSS_VALUE)) #define GTK_CSS_VALUE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_CSS_VALUE, GtkCssValueClass)) +/* A GtkCssValue is a refcounted immutable value type */ + typedef struct _GtkCssValue GtkCssValue; +typedef struct _GtkCssValueBase GtkCssValueBase; +typedef struct _GtkCssValueClass GtkCssValueClass; -/* A GtkCssValue is a refcounted immutable value type */ +/* using define instead of struct here so compilers get the packing right */ +#define GTK_CSS_VALUE_BASE \ + const GtkCssValueClass *class; \ + volatile gint ref_count; + +struct _GtkCssValueClass { + void (* free) (GtkCssValue *value); +}; GType _gtk_css_value_get_type (void) G_GNUC_CONST; + +GtkCssValue *_gtk_css_value_alloc (const GtkCssValueClass *klass, + gsize size); +#define _gtk_css_value_new(_name, _klass) ((_name *) _gtk_css_value_alloc ((_klass), sizeof (_name))) + GtkCssValue *_gtk_css_value_ref (GtkCssValue *value); void _gtk_css_value_unref (GtkCssValue *value); + GType _gtk_css_value_get_content_type (GtkCssValue *value); gboolean _gtk_css_value_holds (GtkCssValue *value, GType type); |