include/qapi: add g_autoptr support for qobject types
authorMarc-André Lureau <marcandre.lureau@redhat.com>
Wed, 23 Mar 2022 15:57:20 +0000 (19:57 +0400)
committerPaolo Bonzini <pbonzini@redhat.com>
Wed, 6 Apr 2022 08:50:38 +0000 (10:50 +0200)
Need wrappers for qobject_unref() calls, which is a macro.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20220323155743.1585078-10-marcandre.lureau@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
12 files changed:
include/qapi/qmp/qbool.h
include/qapi/qmp/qdict.h
include/qapi/qmp/qlist.h
include/qapi/qmp/qnull.h
include/qapi/qmp/qnum.h
include/qapi/qmp/qstring.h
qobject/qbool.c
qobject/qdict.c
qobject/qlist.c
qobject/qnull.c
qobject/qnum.c
qobject/qstring.c

index 2f888d10573f785b5a2a61fe9163d98b3fd257d6..0d09726939b9904ea5f4fe06f196d09f2c1b132a 100644 (file)
@@ -21,6 +21,10 @@ struct QBool {
     bool value;
 };
 
+void qbool_unref(QBool *q);
+
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(QBool, qbool_unref)
+
 QBool *qbool_from_bool(bool value);
 bool qbool_get_bool(const QBool *qb);
 
index d5b5430e21a90afdf93a5e46df72d2e3909208d9..882d950bde89a9637f709688499c8bdbdb06a288 100644 (file)
@@ -30,6 +30,10 @@ struct QDict {
     QLIST_HEAD(,QDictEntry) table[QDICT_BUCKET_MAX];
 };
 
+void qdict_unref(QDict *q);
+
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(QDict, qdict_unref)
+
 /* Object API */
 QDict *qdict_new(void);
 const char *qdict_entry_key(const QDictEntry *entry);
index 06e98ad5f498f83280ad27941d11bfb93bccf3d0..e4e985d4356d28e19edd43d11ad455edf53fd05c 100644 (file)
@@ -26,6 +26,10 @@ struct QList {
     QTAILQ_HEAD(,QListEntry) head;
 };
 
+void qlist_unref(QList *q);
+
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(QList, qlist_unref)
+
 #define qlist_append(qlist, obj) \
         qlist_append_obj(qlist, QOBJECT(obj))
 
index e84ecceedbcbfacf622f271073db9076cc7bf228..7feb7c7d830d9e39022530f78775a5df2b27a8ff 100644 (file)
@@ -26,4 +26,8 @@ static inline QNull *qnull(void)
     return qobject_ref(&qnull_);
 }
 
+void qnull_unref(QNull *q);
+
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(QNull, qnull_unref)
+
 #endif /* QNULL_H */
index 7f84e20bfb2c0e770c75d9a80c309efcd040cc04..e86788dd2e3aeb0ae5a1d5625b0c4d78b391ff9a 100644 (file)
@@ -54,6 +54,10 @@ struct QNum {
     } u;
 };
 
+void qnum_unref(QNum *q);
+
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(QNum, qnum_unref)
+
 QNum *qnum_from_int(int64_t value);
 QNum *qnum_from_uint(uint64_t value);
 QNum *qnum_from_double(double value);
index 1d8ba469368f20b633bdf211c2338135f92be91d..318d815d6a437e805adab78ab133f14183b75990 100644 (file)
@@ -20,6 +20,10 @@ struct QString {
     const char *string;
 };
 
+void qstring_unref(QString *q);
+
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(QString, qstring_unref)
+
 QString *qstring_new(void);
 QString *qstring_from_str(const char *str);
 QString *qstring_from_substr(const char *str, size_t start, size_t end);
index 16a600abb93fd8ae8efa421772ee5e618dc101dd..c7049c0c501b0eecd95a56177e6ae5695c95ba59 100644 (file)
@@ -56,3 +56,8 @@ void qbool_destroy_obj(QObject *obj)
     assert(obj != NULL);
     g_free(qobject_to(QBool, obj));
 }
+
+void qbool_unref(QBool *q)
+{
+    qobject_unref(q);
+}
index 0216ca7ac1680b2ef28f2dddd6473311110ddd5e..8faff230d39152fb42894266a8d49fa5a612ac3c 100644 (file)
@@ -442,3 +442,8 @@ void qdict_destroy_obj(QObject *obj)
 
     g_free(qdict);
 }
+
+void qdict_unref(QDict *q)
+{
+    qobject_unref(q);
+}
index 60562a1f52690a1c12056089c71a92ec74772c95..356ad946b00c59b645612c4268085bcba522ccf3 100644 (file)
@@ -182,3 +182,8 @@ void qlist_destroy_obj(QObject *obj)
 
     g_free(qlist);
 }
+
+void qlist_unref(QList *q)
+{
+    qobject_unref(q);
+}
index b26b36821905be3e886143328363c1fc056fd474..445a5db7f36f83b568e30bf619e5a2d49d7f610e 100644 (file)
@@ -29,3 +29,8 @@ bool qnull_is_equal(const QObject *x, const QObject *y)
 {
     return true;
 }
+
+void qnull_unref(QNull *q)
+{
+    qobject_unref(q);
+}
index 5dd66938dd84dcb77c184bf2dd69e1473d3ec5d7..2bbeaedc7b44768fb1c5e22abd83430565acf8eb 100644 (file)
@@ -239,3 +239,8 @@ void qnum_destroy_obj(QObject *obj)
     assert(obj != NULL);
     g_free(qobject_to(QNum, obj));
 }
+
+void qnum_unref(QNum *q)
+{
+    qobject_unref(q);
+}
index b4613899b9793789395deb2b1e0f0d71cc2585b1..794f8c93578a831a5feecfc9a0d8dfa50335ff48 100644 (file)
@@ -100,3 +100,8 @@ void qstring_destroy_obj(QObject *obj)
     g_free((char *)qs->string);
     g_free(qs);
 }
+
+void qstring_unref(QString *q)
+{
+    qobject_unref(q);
+}