diff options
-rw-r--r-- | include/qapi/qmp/qstring.h | 8 | ||||
-rw-r--r-- | qobject/qstring.c | 65 | ||||
-rw-r--r-- | tests/check-qobject.c | 3 | ||||
-rw-r--r-- | tests/check-qstring.c | 16 |
4 files changed, 4 insertions, 88 deletions
diff --git a/include/qapi/qmp/qstring.h b/include/qapi/qmp/qstring.h index 53567db..1d8ba46 100644 --- a/include/qapi/qmp/qstring.h +++ b/include/qapi/qmp/qstring.h @@ -17,19 +17,13 @@ struct QString { struct QObjectBase_ base; - char *string; - size_t length; - size_t capacity; + const char *string; }; QString *qstring_new(void); QString *qstring_from_str(const char *str); QString *qstring_from_substr(const char *str, size_t start, size_t end); QString *qstring_from_gstring(GString *gstr); -size_t qstring_get_length(const QString *qstring); const char *qstring_get_str(const QString *qstring); -void qstring_append_int(QString *qstring, int64_t value); -void qstring_append(QString *qstring, const char *str); -void qstring_append_chr(QString *qstring, int c); #endif /* QSTRING_H */ 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); } diff --git a/tests/check-qobject.c b/tests/check-qobject.c index 6b6deae..c1713d1 100644 --- a/tests/check-qobject.c +++ b/tests/check-qobject.c @@ -155,8 +155,7 @@ static void qobject_is_equal_string_test(void) str_case = qstring_from_str("Foo"); /* Should yield "foo" */ - str_built = qstring_from_substr("form", 0, 2); - qstring_append_chr(str_built, 'o'); + str_built = qstring_from_substr("buffoon", 3, 6); check_unequal(str_base, str_whitespace_0, str_whitespace_1, str_whitespace_2, str_whitespace_3, str_case); diff --git a/tests/check-qstring.c b/tests/check-qstring.c index 2d07992..4bf9772 100644 --- a/tests/check-qstring.c +++ b/tests/check-qstring.c @@ -47,21 +47,6 @@ static void qstring_get_str_test(void) qobject_unref(qstring); } -static void qstring_append_chr_test(void) -{ - int i; - QString *qstring; - const char *str = "qstring append char unit-test"; - - qstring = qstring_new(); - - for (i = 0; str[i]; i++) - qstring_append_chr(qstring, str[i]); - - g_assert(strcmp(str, qstring_get_str(qstring)) == 0); - qobject_unref(qstring); -} - static void qstring_from_substr_test(void) { QString *qs; @@ -90,7 +75,6 @@ int main(int argc, char **argv) g_test_add_func("/public/from_str", qstring_from_str_test); g_test_add_func("/public/get_str", qstring_get_str_test); - g_test_add_func("/public/append_chr", qstring_append_chr_test); g_test_add_func("/public/from_substr", qstring_from_substr_test); g_test_add_func("/public/to_qstring", qobject_to_qstring_test); |