diff options
author | Benjamin Otte <otte@redhat.com> | 2016-02-05 23:47:48 +0100 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2016-02-05 23:47:48 +0100 |
commit | d48d3b359cdd0ab3cc615f7c194029d3265d9983 (patch) | |
tree | 37c184037ad196e32abdb1873dc28070014aca25 /gtk/gtkcssselector.c | |
parent | e8fca5bbbe6a40c15fd19d8c899b5f4fa7f17876 (diff) | |
download | gtk+-d48d3b359cdd0ab3cc615f7c194029d3265d9983.tar.gz |
cssselector: Remove type references
We don't use types anymore.
Diffstat (limited to 'gtk/gtkcssselector.c')
-rw-r--r-- | gtk/gtkcssselector.c | 79 |
1 files changed, 8 insertions, 71 deletions
diff --git a/gtk/gtkcssselector.c b/gtk/gtkcssselector.c index e40a8df64e..f0e91b2a5c 100644 --- a/gtk/gtkcssselector.c +++ b/gtk/gtkcssselector.c @@ -64,11 +64,6 @@ struct _GtkCssSelectorClass { guint is_simple :1; }; -typedef struct { - GType type; - const char *name; -} TypeReference; - typedef enum { POSITION_FORWARD, POSITION_BACKWARD, @@ -96,7 +91,7 @@ union _GtkCssSelector } style_class; struct { const GtkCssSelectorClass *class; - const TypeReference *reference; + const char *name; /* interned */ } name; struct { const GtkCssSelectorClass *class; @@ -568,86 +563,32 @@ DEFINE_SIMPLE_SELECTOR(any, ANY, print_any, match_any, /* NAME */ -static GHashTable *type_refs_ht = NULL; -static guint type_refs_last_serial = 0; - -static TypeReference * -get_type_reference (const char *name) -{ - TypeReference *ref; - - - if (type_refs_ht == NULL) - type_refs_ht = g_hash_table_new (g_str_hash, g_str_equal); - - ref = g_hash_table_lookup (type_refs_ht, name); - - if (ref != NULL) - return ref; - - ref = g_slice_new (TypeReference); - ref->name = g_intern_string (name); - ref->type = g_type_from_name (ref->name); - - g_hash_table_insert (type_refs_ht, - (gpointer)ref->name, ref); - - return ref; -} - -static void -update_type_references (void) -{ - GHashTableIter iter; - guint serial; - gpointer value; - - serial = g_type_get_type_registration_serial (); - - if (serial == type_refs_last_serial) - return; - - type_refs_last_serial = serial; - - if (type_refs_ht == NULL) - return; - - g_hash_table_iter_init (&iter, type_refs_ht); - while (g_hash_table_iter_next (&iter, - NULL, &value)) - { - TypeReference *ref = value; - if (ref->type == G_TYPE_INVALID) - ref->type = g_type_from_name (ref->name); - } -} - static void print_name (const GtkCssSelector *selector, GString *string) { - g_string_append (string, selector->name.reference->name); + g_string_append (string, selector->name.name); } static gboolean match_name (const GtkCssSelector *selector, const GtkCssMatcher *matcher) { - return _gtk_css_matcher_has_name (matcher, selector->name.reference->name); + return _gtk_css_matcher_has_name (matcher, selector->name.name); } static guint hash_name (const GtkCssSelector *a) { - return g_str_hash (a->name.reference->name); + return g_str_hash (a->name.name); } static int comp_name (const GtkCssSelector *a, const GtkCssSelector *b) { - return strcmp (a->name.reference->name, - b->name.reference->name); + return strcmp (a->name.name, + b->name.name); } DEFINE_SIMPLE_SELECTOR(name, NAME, print_name, match_name, hash_name, comp_name, FALSE, FALSE, TRUE) @@ -1259,7 +1200,7 @@ parse_selector_negation (GtkCssParser *parser, { selector = gtk_css_selector_new (>K_CSS_SELECTOR_NOT_NAME, selector); - selector->name.reference = get_type_reference (name); + selector->name.name = g_intern_string (name); g_free (name); } else if (_gtk_css_parser_try (parser, "*", FALSE)) @@ -1303,7 +1244,7 @@ parse_simple_selector (GtkCssParser *parser, { selector = gtk_css_selector_new (>K_CSS_SELECTOR_NAME, selector); - selector->name.reference = get_type_reference (name); + selector->name.name = g_intern_string (name); g_free (name); parsed_something = TRUE; } @@ -1439,8 +1380,6 @@ _gtk_css_selector_matches (const GtkCssSelector *selector, g_return_val_if_fail (selector != NULL, FALSE); g_return_val_if_fail (matcher != NULL, FALSE); - update_type_references (); - if (!gtk_css_selector_match (selector, matcher)) return FALSE; @@ -1589,8 +1528,6 @@ _gtk_css_selector_tree_match_all (const GtkCssSelectorTree *tree, { GPtrArray *array = NULL; - update_type_references (); - for (; tree != NULL; tree = gtk_css_selector_tree_get_sibling (tree)) gtk_css_selector_foreach (&tree->selector, matcher, gtk_css_selector_tree_match_foreach, &array); |