summaryrefslogtreecommitdiff
path: root/gtk/gtkcssselectorprivate.h
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2012-11-28 11:15:53 +0100
committerAlexander Larsson <alexl@redhat.com>2012-11-30 14:53:29 +0100
commitdaefb12a230d814630f999a948e57426ecd275df (patch)
treeee5daf673aaf74265b12e2d9d66bbb0d3d8034a2 /gtk/gtkcssselectorprivate.h
parent16f2b20f9610d7d6658c6b14c9e95f0bf6384fd9 (diff)
downloadgtk+-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.h14
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__ */