diff options
author | Markus Armbruster <armbru@redhat.com> | 2020-12-11 18:11:52 +0100 |
---|---|---|
committer | Markus Armbruster <armbru@redhat.com> | 2020-12-19 10:39:41 +0100 |
commit | 4ac76ba414ecb94f086d73621775d8b38b6f0a43 (patch) | |
tree | 14a3da0ae64a62bcbe23d122e34b750902284b27 /qobject/qstring.c | |
parent | 18cf67c5e1d6e23042b752831aa6f9e4e478787b (diff) | |
download | qemu-4ac76ba414ecb94f086d73621775d8b38b6f0a43.zip qemu-4ac76ba414ecb94f086d73621775d8b38b6f0a43.tar.gz qemu-4ac76ba414ecb94f086d73621775d8b38b6f0a43.tar.bz2 |
qobject: Make QString immutable
The functions to modify a QString's string are all unused now. Drop
them, and make the string immutable. Saves 16 bytes per QString on my
system.
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20201211171152.146877-21-armbru@redhat.com>
Diffstat (limited to 'qobject/qstring.c')
-rw-r--r-- | qobject/qstring.c | 65 |
1 files changed, 2 insertions, 63 deletions
diff --git a/qobject/qstring.c b/qobject/qstring.c index ea86d80..b461389 100644 --- a/qobject/qstring.c +++ b/qobject/qstring.c @@ -25,14 +25,6 @@ QString *qstring_new(void) } /** - * qstring_get_length(): Get the length of a QString - */ -size_t qstring_get_length(const QString *qstring) -{ - return qstring->length; -} - -/** * qstring_from_substr(): Create a new QString from a C string substring * * Return string reference @@ -42,18 +34,9 @@ QString *qstring_from_substr(const char *str, size_t start, size_t end) QString *qstring; assert(start <= end); - qstring = g_malloc(sizeof(*qstring)); qobject_init(QOBJECT(qstring), QTYPE_QSTRING); - - qstring->length = end - start; - qstring->capacity = qstring->length; - - assert(qstring->capacity < SIZE_MAX); - qstring->string = g_malloc(qstring->capacity + 1); - memcpy(qstring->string, str + start, qstring->length); - qstring->string[qstring->length] = 0; - + qstring->string = g_strndup(str + start, end - start); return qstring; } @@ -79,55 +62,11 @@ QString *qstring_from_gstring(GString *gstr) qstring = g_malloc(sizeof(*qstring)); qobject_init(QOBJECT(qstring), QTYPE_QSTRING); - qstring->length = gstr->len; - qstring->capacity = gstr->allocated_len; qstring->string = g_string_free(gstr, false); return qstring; } -static void capacity_increase(QString *qstring, size_t len) -{ - if (qstring->capacity < (qstring->length + len)) { - assert(len <= SIZE_MAX - qstring->capacity); - qstring->capacity += len; - assert(qstring->capacity <= SIZE_MAX / 2); - qstring->capacity *= 2; /* use exponential growth */ - - qstring->string = g_realloc(qstring->string, qstring->capacity + 1); - } -} - -/* qstring_append(): Append a C string to a QString - */ -void qstring_append(QString *qstring, const char *str) -{ - size_t len = strlen(str); - - capacity_increase(qstring, len); - memcpy(qstring->string + qstring->length, str, len); - qstring->length += len; - qstring->string[qstring->length] = 0; -} - -void qstring_append_int(QString *qstring, int64_t value) -{ - char num[32]; - - snprintf(num, sizeof(num), "%" PRId64, value); - qstring_append(qstring, num); -} - -/** - * qstring_append_chr(): Append a C char to a QString - */ -void qstring_append_chr(QString *qstring, int c) -{ - capacity_increase(qstring, 1); - qstring->string[qstring->length++] = c; - qstring->string[qstring->length] = 0; -} - /** * qstring_get_str(): Return a pointer to the stored string * @@ -158,6 +97,6 @@ void qstring_destroy_obj(QObject *obj) assert(obj != NULL); qs = qobject_to(QString, obj); - g_free(qs->string); + g_free((char *)qs->string); g_free(qs); } |