diff options
author | Alexander Larsson <alexl@redhat.com> | 2012-11-28 11:15:53 +0100 |
---|---|---|
committer | Alexander Larsson <alexl@redhat.com> | 2012-11-30 14:53:29 +0100 |
commit | daefb12a230d814630f999a948e57426ecd275df (patch) | |
tree | ee5daf673aaf74265b12e2d9d66bbb0d3d8034a2 /gtk/gtkcssselectorprivate.h | |
parent | 16f2b20f9610d7d6658c6b14c9e95f0bf6384fd9 (diff) | |
download | gtk+-daefb12a230d814630f999a948e57426ecd275df.tar.gz |
css: Add GtkCssSelectorTree creation and matching
From a set of GtkCssSelectors and the rulesets they match to
we create a large decision tree that lets us efficitently match
against all the rules and return the set of matched rulesets.
The tree is created such that at each level we pick the initial rule[1]
in all the considered selectors for that level and use put the
one that is in most selectors in the node. All selectors matching that
are put in the previous part of the tree.
Diffstat (limited to 'gtk/gtkcssselectorprivate.h')
-rw-r--r-- | gtk/gtkcssselectorprivate.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/gtk/gtkcssselectorprivate.h b/gtk/gtkcssselectorprivate.h index 5c12c6df86..e4c09976d5 100644 --- a/gtk/gtkcssselectorprivate.h +++ b/gtk/gtkcssselectorprivate.h @@ -24,6 +24,8 @@ G_BEGIN_DECLS typedef struct _GtkCssSelector GtkCssSelector; +typedef struct _GtkCssSelectorTree GtkCssSelectorTree; +typedef struct _GtkCssSelectorTreeBuilder GtkCssSelectorTreeBuilder; GtkCssSelector * _gtk_css_selector_parse (GtkCssParser *parser); void _gtk_css_selector_free (GtkCssSelector *selector); @@ -38,6 +40,18 @@ gboolean _gtk_css_selector_matches (const GtkCssSelector *sel int _gtk_css_selector_compare (const GtkCssSelector *a, const GtkCssSelector *b); + +void _gtk_css_selector_tree_free (GtkCssSelectorTree *tree); +GPtrArray *_gtk_css_selector_tree_match_all (GtkCssSelectorTree *tree, + const GtkCssMatcher *matcher); + +GtkCssSelectorTreeBuilder *_gtk_css_selector_tree_builder_new (void); +void _gtk_css_selector_tree_builder_add (GtkCssSelectorTreeBuilder *builder, + GtkCssSelector *selectors, + gpointer match); +GtkCssSelectorTree * _gtk_css_selector_tree_builder_build (GtkCssSelectorTreeBuilder *builder); +void _gtk_css_selector_tree_builder_free (GtkCssSelectorTreeBuilder *builder); + G_END_DECLS #endif /* __GTK_CSS_SELECTOR_PRIVATE_H__ */ |