[gtk+] Add an auxiliary ident parsing function



commit 6420dd934fafb770d7fdccadb86bd01dd6fc710c
Author: Matthias Clasen <mclasen redhat com>
Date:   Mon Sep 18 10:55:36 2017 -0400

    Add an auxiliary ident parsing function
    
    This lets us conveniently create ident values from
    multiple candidates.

 gtk/gtkcssstringvalue.c        |   28 ++++++++++++++++++++++++++++
 gtk/gtkcssstringvalueprivate.h |    3 +++
 2 files changed, 31 insertions(+), 0 deletions(-)
---
diff --git a/gtk/gtkcssstringvalue.c b/gtk/gtkcssstringvalue.c
index c12eb76..ad29def 100644
--- a/gtk/gtkcssstringvalue.c
+++ b/gtk/gtkcssstringvalue.c
@@ -203,6 +203,34 @@ _gtk_css_ident_value_try_parse (GtkCssParser *parser)
   return _gtk_css_ident_value_new_take (ident);
 }
 
+GtkCssValue *
+_gtk_css_ident_value_try (GtkCssParser *parser,
+                          const char   *ident,
+                          ...)
+{
+  va_list args;
+  const char *name;
+  GtkCssValue *value = NULL;
+
+  name = ident;
+
+  va_start (args, ident);
+
+  while (name)
+    {
+      if (_gtk_css_parser_try (parser, name, TRUE))
+        {
+          value = _gtk_css_ident_value_new (name);
+          break;
+        }
+      ident = va_arg (args, const char *);
+    }
+
+  va_end (args);
+
+  return value;
+}
+
 const char *
 _gtk_css_ident_value_get (const GtkCssValue *value)
 {
diff --git a/gtk/gtkcssstringvalueprivate.h b/gtk/gtkcssstringvalueprivate.h
index 5fb703b..0aaa9ec 100644
--- a/gtk/gtkcssstringvalueprivate.h
+++ b/gtk/gtkcssstringvalueprivate.h
@@ -29,6 +29,9 @@ G_BEGIN_DECLS
 GtkCssValue *   _gtk_css_ident_value_new            (const char             *ident);
 GtkCssValue *   _gtk_css_ident_value_new_take       (char                   *ident);
 GtkCssValue *   _gtk_css_ident_value_try_parse      (GtkCssParser           *parser);
+GtkCssValue *   _gtk_css_ident_value_try            (GtkCssParser           *parser,
+                                                     const char             *ident,
+                                                     ...);
 
 const char *    _gtk_css_ident_value_get            (const GtkCssValue      *ident);
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]