summaryrefslogtreecommitdiff
path: root/gtk/gtkcssvalueprivate.h
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2012-03-26 06:13:57 +0200
committerBenjamin Otte <otte@redhat.com>2012-04-17 08:59:11 +0200
commitb728cfd3e8af1b07fb5f15a22ed9b144b190d37e (patch)
tree0f5f6510f233bde45f4d670a938ff142fa67b246 /gtk/gtkcssvalueprivate.h
parent3cdb9c91caf920324cdd47318c0e47a55f50b3dd (diff)
downloadgtk+-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.h19
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);