1/* GTK - The GIMP Toolkit
2 * Copyright (C) 2011 Benjamin Otte <otte@gnome.org>
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef __GTK_CSS_SELECTOR_PRIVATE_H__
19#define __GTK_CSS_SELECTOR_PRIVATE_H__
20
21#include <gtk/css/gtkcss.h>
22#include "gtk/css/gtkcsstokenizerprivate.h"
23#include "gtk/css/gtkcssparserprivate.h"
24#include "gtk/gtkcountingbloomfilterprivate.h"
25#include "gtk/gtkcsstypesprivate.h"
26
27#define GDK_ARRAY_ELEMENT_TYPE gpointer
28#define GDK_ARRAY_TYPE_NAME GtkCssSelectorMatches
29#define GDK_ARRAY_NAME gtk_css_selector_matches
30#define GDK_ARRAY_PREALLOC 32
31#include "gdk/gdkarrayimpl.c"
32
33G_BEGIN_DECLS
34
35typedef union _GtkCssSelector GtkCssSelector;
36typedef struct _GtkCssSelectorTree GtkCssSelectorTree;
37typedef struct _GtkCssSelectorTreeBuilder GtkCssSelectorTreeBuilder;
38
39GtkCssSelector * _gtk_css_selector_parse (GtkCssParser *parser);
40void _gtk_css_selector_free (GtkCssSelector *selector);
41
42char * _gtk_css_selector_to_string (const GtkCssSelector *selector);
43void _gtk_css_selector_print (const GtkCssSelector *selector,
44 GString *str);
45
46gboolean gtk_css_selector_matches (const GtkCssSelector *selector,
47 GtkCssNode *node);
48GtkCssChange _gtk_css_selector_get_change (const GtkCssSelector *selector);
49int _gtk_css_selector_compare (const GtkCssSelector *a,
50 const GtkCssSelector *b);
51
52void _gtk_css_selector_tree_free (GtkCssSelectorTree *tree);
53void _gtk_css_selector_tree_match_all (const GtkCssSelectorTree *tree,
54 const GtkCountingBloomFilter *filter,
55 GtkCssNode *node,
56 GtkCssSelectorMatches *out_tree_rules);
57GtkCssChange gtk_css_selector_tree_get_change_all (const GtkCssSelectorTree *tree,
58 const GtkCountingBloomFilter *filter,
59 GtkCssNode *node);
60void _gtk_css_selector_tree_match_print (const GtkCssSelectorTree *tree,
61 GString *str);
62gboolean _gtk_css_selector_tree_is_empty (const GtkCssSelectorTree *tree) G_GNUC_CONST;
63
64
65
66GtkCssSelectorTreeBuilder *_gtk_css_selector_tree_builder_new (void);
67void _gtk_css_selector_tree_builder_add (GtkCssSelectorTreeBuilder *builder,
68 GtkCssSelector *selectors,
69 GtkCssSelectorTree **selector_match,
70 gpointer match);
71GtkCssSelectorTree * _gtk_css_selector_tree_builder_build (GtkCssSelectorTreeBuilder *builder);
72void _gtk_css_selector_tree_builder_free (GtkCssSelectorTreeBuilder *builder);
73
74G_END_DECLS
75
76#endif /* __GTK_CSS_SELECTOR_PRIVATE_H__ */
77

source code of gtk/gtk/gtkcssselectorprivate.h