[gtk+] css: Split out a common function



commit b356d814106bd33448a141423b4059e60db9b377
Author: Benjamin Otte <otte redhat com>
Date:   Thu May 1 19:47:58 2014 +0200

    css: Split out a common function
    
    It's used in two places already, and Iwant to use it in a third one.

 gtk/gtkcssparser.c        |   44 ++++++++++++++++++++++++++++++++++++++++++++
 gtk/gtkcssparserprivate.h |    5 +++++
 gtk/gtkcssstringvalue.c   |   38 ++------------------------------------
 gtk/gtkcssstylefuncs.c    |   32 +-------------------------------
 4 files changed, 52 insertions(+), 67 deletions(-)
---
diff --git a/gtk/gtkcssparser.c b/gtk/gtkcssparser.c
index ab38fc9..16505a3 100644
--- a/gtk/gtkcssparser.c
+++ b/gtk/gtkcssparser.c
@@ -1012,3 +1012,47 @@ _gtk_css_parser_resync (GtkCssParser *parser,
 
   gtk_css_parser_resync_internal (parser, sync_at_semicolon, TRUE, terminator);
 }
+
+void
+_gtk_css_print_string (GString    *str,
+                       const char *string)
+{
+  gsize len;
+
+  g_return_if_fail (str != NULL);
+  g_return_if_fail (string != NULL);
+
+  g_string_append_c (str, '"');
+
+  do {
+    len = strcspn (string, "\"\n\r\f");
+    g_string_append_len (str, string, len);
+    string += len;
+    switch (*string)
+      {
+      case '\0':
+        break;
+      case '\n':
+        g_string_append (str, "\\A ");
+        break;
+      case '\r':
+        g_string_append (str, "\\D ");
+        break;
+      case '\f':
+        g_string_append (str, "\\C ");
+        break;
+      case '\"':
+        g_string_append (str, "\\\"");
+        break;
+      case '\\':
+        g_string_append (str, "\\\\");
+        break;
+      default:
+        g_assert_not_reached ();
+        break;
+      }
+  } while (*string);
+
+  g_string_append_c (str, '"');
+}
+
diff --git a/gtk/gtkcssparserprivate.h b/gtk/gtkcssparserprivate.h
index ea6a09c..5bc2ad6 100644
--- a/gtk/gtkcssparserprivate.h
+++ b/gtk/gtkcssparserprivate.h
@@ -97,6 +97,11 @@ void            _gtk_css_parser_resync            (GtkCssParser          *parser
                                                    gboolean               sync_at_semicolon,
                                                    char                   terminator);
 
+/* XXX: Find better place to put it? */
+void            _gtk_css_print_string             (GString               *str,
+                                                   const char            *string);
+
+
 G_END_DECLS
 
 #endif /* __GTK_CSS_PARSER_PRIVATE_H__ */
diff --git a/gtk/gtkcssstringvalue.c b/gtk/gtkcssstringvalue.c
index f97b512..11a893a 100644
--- a/gtk/gtkcssstringvalue.c
+++ b/gtk/gtkcssstringvalue.c
@@ -65,47 +65,13 @@ static void
 gtk_css_value_string_print (const GtkCssValue *value,
                             GString           *str)
 {
-  char *string = value->string;
-  gsize len;
-
-  if (string == NULL)
+  if (value->string == NULL)
     {
       g_string_append (str, "none");
       return;
     }
 
-  g_string_append_c (str, '"');
-
-  do {
-    len = strcspn (string, "\"\n\r\f");
-    g_string_append_len (str, string, len);
-    string += len;
-    switch (*string)
-      {
-      case '\0':
-        break;
-      case '\n':
-        g_string_append (str, "\\A ");
-        break;
-      case '\r':
-        g_string_append (str, "\\D ");
-        break;
-      case '\f':
-        g_string_append (str, "\\C ");
-        break;
-      case '\"':
-        g_string_append (str, "\\\"");
-        break;
-      case '\\':
-        g_string_append (str, "\\\\");
-        break;
-      default:
-        g_assert_not_reached ();
-        break;
-      }
-  } while (*string);
-
-  g_string_append_c (str, '"');
+  _gtk_css_print_string (str, value->string);
 }
 
 static void
diff --git a/gtk/gtkcssstylefuncs.c b/gtk/gtkcssstylefuncs.c
index 426d3ee..9bb5406 100644
--- a/gtk/gtkcssstylefuncs.c
+++ b/gtk/gtkcssstylefuncs.c
@@ -89,37 +89,7 @@ static void
 string_append_string (GString    *str,
                       const char *string)
 {
-  gsize len;
-
-  g_string_append_c (str, '"');
-
-  do {
-    len = strcspn (string, "\"\n\r\f");
-    g_string_append (str, string);
-    string += len;
-    switch (*string)
-      {
-      case '\0':
-        break;
-      case '\n':
-        g_string_append (str, "\\A ");
-        break;
-      case '\r':
-        g_string_append (str, "\\D ");
-        break;
-      case '\f':
-        g_string_append (str, "\\C ");
-        break;
-      case '\"':
-        g_string_append (str, "\\\"");
-        break;
-      default:
-        g_assert_not_reached ();
-        break;
-      }
-  } while (*string);
-
-  g_string_append_c (str, '"');
+  _gtk_css_print_string (str, string);
 }
 
 /*** IMPLEMENTATIONS ***/


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