diff mbox

[v4,19/28] qapi: Use qstring_append_chr() where appropriate

Message ID 1463632874-28559-20-git-send-email-eblake@redhat.com
State New
Headers show

Commit Message

Eric Blake May 19, 2016, 4:41 a.m. UTC
qstring_append_chr() is more efficient than qstring_append()
when dealing with a one-byte string (including the case of a
temporary 2-byte buffer just for creating a dynamic one-byte
string).

Signed-off-by: Eric Blake <eblake@redhat.com>

---
v4: also convert qstring_append() of one-byte strings
v3: no change
v2: no change
---
 qobject/json-parser.c  | 25 ++++++++++---------------
 qobject/qobject-json.c | 12 ++++++------
 2 files changed, 16 insertions(+), 21 deletions(-)
diff mbox

Patch

diff --git a/qobject/json-parser.c b/qobject/json-parser.c
index c18e48a..5c23740 100644
--- a/qobject/json-parser.c
+++ b/qobject/json-parser.c
@@ -143,39 +143,39 @@  static QString *qstring_from_escaped_str(JSONParserContext *ctxt,

             switch (*ptr) {
             case '"':
-                qstring_append(str, "\"");
+                qstring_append_chr(str, '"');
                 ptr++;
                 break;
             case '\'':
-                qstring_append(str, "'");
+                qstring_append_chr(str, '\'');
                 ptr++;
                 break;
             case '\\':
-                qstring_append(str, "\\");
+                qstring_append_chr(str, '\\');
                 ptr++;
                 break;
             case '/':
-                qstring_append(str, "/");
+                qstring_append_chr(str, '/');
                 ptr++;
                 break;
             case 'b':
-                qstring_append(str, "\b");
+                qstring_append_chr(str, '\b');
                 ptr++;
                 break;
             case 'f':
-                qstring_append(str, "\f");
+                qstring_append_chr(str, '\f');
                 ptr++;
                 break;
             case 'n':
-                qstring_append(str, "\n");
+                qstring_append_chr(str, '\n');
                 ptr++;
                 break;
             case 'r':
-                qstring_append(str, "\r");
+                qstring_append_chr(str, '\r');
                 ptr++;
                 break;
             case 't':
-                qstring_append(str, "\t");
+                qstring_append_chr(str, '\t');
                 ptr++;
                 break;
             case 'u': {
@@ -204,12 +204,7 @@  static QString *qstring_from_escaped_str(JSONParserContext *ctxt,
                 goto out;
             }
         } else {
-            char dummy[2];
-
-            dummy[0] = *ptr++;
-            dummy[1] = 0;
-
-            qstring_append(str, dummy);
+            qstring_append_chr(str, *ptr++);
         }
     }

diff --git a/qobject/qobject-json.c b/qobject/qobject-json.c
index 769816d..95de587 100644
--- a/qobject/qobject-json.c
+++ b/qobject/qobject-json.c
@@ -140,12 +140,12 @@  static void to_json(const QObject *obj, QString *str, int pretty, int indent)
         s.str = str;
         s.indent = indent + 1;
         s.pretty = pretty;
-        qstring_append(str, "{");
+        qstring_append_chr(str, '{');
         qdict_iter(val, to_json_dict_iter, &s);
         if (pretty) {
             qstring_append_printf(str, "\n%*s", 4 * indent, "");
         }
-        qstring_append(str, "}");
+        qstring_append_chr(str, '}');
         break;
     }
     case QTYPE_QLIST: {
@@ -156,12 +156,12 @@  static void to_json(const QObject *obj, QString *str, int pretty, int indent)
         s.str = str;
         s.indent = indent + 1;
         s.pretty = pretty;
-        qstring_append(str, "[");
+        qstring_append_chr(str, '[');
         qlist_iter(val, (void *)to_json_list_iter, &s);
         if (pretty) {
             qstring_append_printf(str, "\n%*s", 4 * indent, "");
         }
-        qstring_append(str, "]");
+        qstring_append_chr(str, ']');
         break;
     }
     case QTYPE_QFLOAT: {
@@ -217,7 +217,7 @@  int qstring_append_json_string(QString *qstring, const char *str)
     char *end;
     int result = 0;

-    qstring_append(qstring, "\"");
+    qstring_append_chr(qstring, '"');

     for (ptr = str; *ptr; ptr = end) {
         cp = mod_utf8_codepoint(ptr, 6, &end);
@@ -261,7 +261,7 @@  int qstring_append_json_string(QString *qstring, const char *str)
         }
     };

-    qstring_append(qstring, "\"");
+    qstring_append_chr(qstring, '"');
     return result;
 }