[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 30/33] json: Use GString instead of QString to accumulate strings
From: |
Markus Armbruster |
Subject: |
[PULL 30/33] json: Use GString instead of QString to accumulate strings |
Date: |
Sat, 19 Dec 2020 11:55:29 +0100 |
QString supports modifying its string, but it's quite limited: you can
only append. The remaining callers use it for building an initial
string, never for modifying it later.
Change parse_string() to do build the initial string with GString.
This is another step towards making QString immutable.
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20201211171152.146877-18-armbru@redhat.com>
---
qobject/json-parser.c | 30 +++++++++++++++---------------
1 file changed, 15 insertions(+), 15 deletions(-)
diff --git a/qobject/json-parser.c b/qobject/json-parser.c
index c0f521b56b..d351039b10 100644
--- a/qobject/json-parser.c
+++ b/qobject/json-parser.c
@@ -130,7 +130,7 @@ static int cvt4hex(const char *s)
static QString *parse_string(JSONParserContext *ctxt, JSONToken *token)
{
const char *ptr = token->str;
- QString *str;
+ GString *str;
char quote;
const char *beg;
int cp, trailing;
@@ -140,7 +140,7 @@ static QString *parse_string(JSONParserContext *ctxt,
JSONToken *token)
assert(*ptr == '"' || *ptr == '\'');
quote = *ptr++;
- str = qstring_new();
+ str = g_string_new(NULL);
while (*ptr != quote) {
assert(*ptr);
@@ -149,31 +149,31 @@ static QString *parse_string(JSONParserContext *ctxt,
JSONToken *token)
beg = ptr++;
switch (*ptr++) {
case '"':
- qstring_append_chr(str, '"');
+ g_string_append_c(str, '"');
break;
case '\'':
- qstring_append_chr(str, '\'');
+ g_string_append_c(str, '\'');
break;
case '\\':
- qstring_append_chr(str, '\\');
+ g_string_append_c(str, '\\');
break;
case '/':
- qstring_append_chr(str, '/');
+ g_string_append_c(str, '/');
break;
case 'b':
- qstring_append_chr(str, '\b');
+ g_string_append_c(str, '\b');
break;
case 'f':
- qstring_append_chr(str, '\f');
+ g_string_append_c(str, '\f');
break;
case 'n':
- qstring_append_chr(str, '\n');
+ g_string_append_c(str, '\n');
break;
case 'r':
- qstring_append_chr(str, '\r');
+ g_string_append_c(str, '\r');
break;
case 't':
- qstring_append_chr(str, '\t');
+ g_string_append_c(str, '\t');
break;
case 'u':
cp = cvt4hex(ptr);
@@ -200,7 +200,7 @@ static QString *parse_string(JSONParserContext *ctxt,
JSONToken *token)
(int)(ptr - beg), beg);
goto out;
}
- qstring_append(str, utf8_buf);
+ g_string_append(str, utf8_buf);
break;
default:
parse_error(ctxt, token, "invalid escape sequence in string");
@@ -225,14 +225,14 @@ static QString *parse_string(JSONParserContext *ctxt,
JSONToken *token)
ptr = end;
len = mod_utf8_encode(utf8_buf, sizeof(utf8_buf), cp);
assert(len >= 0);
- qstring_append(str, utf8_buf);
+ g_string_append(str, utf8_buf);
}
}
- return str;
+ return qstring_from_gstring(str);
out:
- qobject_unref(str);
+ g_string_free(str, true);
return NULL;
}
--
2.26.2
- [PULL 26/33] qobject: Drop qstring_get_try_str(), (continued)
- [PULL 26/33] qobject: Drop qstring_get_try_str(), Markus Armbruster, 2020/12/19
- [PULL 13/33] test-visitor-serialization: Clean up test_primitives(), Markus Armbruster, 2020/12/19
- [PULL 19/33] Revert "qstring: add qstring_free()", Markus Armbruster, 2020/12/19
- [PULL 16/33] qobject: Make qobject_to_json_pretty() take a pretty argument, Markus Armbruster, 2020/12/19
- [PULL 15/33] monitor: Use GString instead of QString for output buffer, Markus Armbruster, 2020/12/19
- [PULL 22/33] qmp: Fix tracing of non-string command IDs, Markus Armbruster, 2020/12/19
- [PULL 20/33] hw/rdma: Replace QList by GQueue, Markus Armbruster, 2020/12/19
- [PULL 23/33] block: Avoid qobject_get_try_str(), Markus Armbruster, 2020/12/19
- [PULL 28/33] qobject: Factor JSON writer out of qobject_to_json(), Markus Armbruster, 2020/12/19
- [PULL 25/33] qobject: Drop qobject_get_try_str(), Markus Armbruster, 2020/12/19
- [PULL 30/33] json: Use GString instead of QString to accumulate strings,
Markus Armbruster <=
- [PULL 31/33] keyval: Use GString to accumulate value strings, Markus Armbruster, 2020/12/19
- [PULL 18/33] qobject: Change qobject_to_json()'s value to GString, Markus Armbruster, 2020/12/19
- [PULL 33/33] qobject: Make QString immutable, Markus Armbruster, 2020/12/19
- [PULL 27/33] qobject: Factor quoted_str() out of to_json(), Markus Armbruster, 2020/12/19
- [PULL 29/33] migration: Replace migration's JSON writer by the general one, Markus Armbruster, 2020/12/19
- [PULL 32/33] block: Use GString instead of QString to build filenames, Markus Armbruster, 2020/12/19
- [PULL 21/33] qobject: Move internals to qobject-internal.h, Markus Armbruster, 2020/12/19
- [PULL 14/33] hmp: Simplify how qmp_human_monitor_command() gets output, Markus Armbruster, 2020/12/19
- [PULL 17/33] qobject: Use GString instead of QString to accumulate JSON, Markus Armbruster, 2020/12/19
- [PULL 03/33] qapi: Use QAPI_LIST_PREPEND() where possible, Markus Armbruster, 2020/12/19