[gtk+/wip/otte/tokenizer: 50/78] cssdefinecolorrule: Rework parser
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/otte/tokenizer: 50/78] cssdefinecolorrule: Rework parser
- Date: Fri, 25 Nov 2016 22:35:55 +0000 (UTC)
commit 7a36b5df9082834f7f8d4c08cb5b1e18b91e2b34
Author: Benjamin Otte <otte redhat com>
Date: Wed Mar 23 06:08:57 2016 +0100
cssdefinecolorrule: Rework parser
Actually store the values that get parsed. And change the parsing code
to construct the rule in advance so that it can be set as the consumer
while parsing.
gtk/gtkcssdefinecolorrule.c | 50 ++++++++++++++++++++++++++----------
gtk/gtkcssdefinecolorruleprivate.h | 3 ++
2 files changed, 39 insertions(+), 14 deletions(-)
---
diff --git a/gtk/gtkcssdefinecolorrule.c b/gtk/gtkcssdefinecolorrule.c
index 8f22023..66fc36b 100644
--- a/gtk/gtkcssdefinecolorrule.c
+++ b/gtk/gtkcssdefinecolorrule.c
@@ -60,9 +60,7 @@ gtk_css_define_color_rule_init (GtkCssDefineColorRule *define_color_rule)
static GtkCssRule *
gtk_css_define_color_rule_new (GtkCssRule *parent_rule,
- GtkCssStyleSheet *parent_style_sheet,
- const char *name,
- GtkCssValue *color)
+ GtkCssStyleSheet *parent_style_sheet)
{
return g_object_new (GTK_TYPE_CSS_DEFINE_COLOR_RULE,
"parent-rule", parent_rule,
@@ -75,21 +73,25 @@ gtk_css_define_color_rule_new_parse (GtkCssTokenSource *source,
GtkCssRule *parent_rule,
GtkCssStyleSheet *parent_style_sheet)
{
+ GtkCssDefineColorRulePrivate *priv;
const GtkCssToken *token;
GtkCssRule *result;
- GtkCssValue *color;
- char *name;
g_return_val_if_fail (source != NULL, NULL);
g_return_val_if_fail (parent_rule == NULL || GTK_IS_CSS_RULE (parent_rule), NULL);
g_return_val_if_fail (GTK_IS_CSS_STYLE_SHEET (parent_style_sheet), NULL);
+ result = gtk_css_define_color_rule_new (parent_rule, parent_style_sheet);
+ priv = gtk_css_define_color_rule_get_instance_private (GTK_CSS_DEFINE_COLOR_RULE (result));
+ gtk_css_token_source_set_consumer (source, G_OBJECT (result));
+
token = gtk_css_token_source_get_token (source);
if (token->type != GTK_CSS_TOKEN_AT_KEYWORD ||
g_ascii_strcasecmp (token->string.string, "define-color") != 0)
{
gtk_css_token_source_error (source, "Expected '@define-color'");
gtk_css_token_source_consume_all (source);
+ g_object_unref (result);
return NULL;
}
gtk_css_token_source_consume_token (source);
@@ -99,15 +101,16 @@ gtk_css_define_color_rule_new_parse (GtkCssTokenSource *source,
{
gtk_css_token_source_error (source, "Expected name of color");
gtk_css_token_source_consume_all (source);
+ g_object_unref (result);
return NULL;
}
- name = g_strdup (token->string.string);
+ priv->name = g_strdup (token->string.string);
gtk_css_token_source_consume_token (source);
- color = gtk_css_color_value_token_parse (source);
- if (color == NULL)
+ priv->color = gtk_css_color_value_token_parse (source);
+ if (priv->color == NULL)
{
- g_free (name);
+ g_object_unref (result);
return NULL;
}
@@ -116,15 +119,34 @@ gtk_css_define_color_rule_new_parse (GtkCssTokenSource *source,
{
gtk_css_token_source_error (source, "Expected ';' at end of @define-color");
gtk_css_token_source_consume_all (source);
- g_free (name);
- _gtk_css_value_unref (color);
+ g_object_unref (result);
return NULL;
}
gtk_css_token_source_consume_token (source);
- result = gtk_css_define_color_rule_new (parent_rule, parent_style_sheet, name, color);
- g_free (name);
- _gtk_css_value_unref (color);
return result;
}
+const char *
+gtk_css_define_color_rule_get_name (GtkCssDefineColorRule *rule)
+{
+ GtkCssDefineColorRulePrivate *priv;
+
+ g_return_val_if_fail (GTK_IS_CSS_DEFINE_COLOR_RULE (rule), NULL);
+
+ priv = gtk_css_define_color_rule_get_instance_private (rule);
+
+ return priv->name;
+}
+
+GtkCssValue *
+gtk_css_define_color_rule_get_value (GtkCssDefineColorRule *rule)
+{
+ GtkCssDefineColorRulePrivate *priv;
+
+ g_return_val_if_fail (GTK_IS_CSS_DEFINE_COLOR_RULE (rule), NULL);
+
+ priv = gtk_css_define_color_rule_get_instance_private (rule);
+
+ return priv->color;
+}
diff --git a/gtk/gtkcssdefinecolorruleprivate.h b/gtk/gtkcssdefinecolorruleprivate.h
index 3076726..383d755 100644
--- a/gtk/gtkcssdefinecolorruleprivate.h
+++ b/gtk/gtkcssdefinecolorruleprivate.h
@@ -51,6 +51,9 @@ GtkCssRule * gtk_css_define_color_rule_new_parse (GtkCssTokenSour
GtkCssRule *parent_rule,
GtkCssStyleSheet *parent_style_sheet);
+const char * gtk_css_define_color_rule_get_name (GtkCssDefineColorRule *rule);
+GtkCssValue * gtk_css_define_color_rule_get_value (GtkCssDefineColorRule *rule);
+
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]