aboutsummaryrefslogtreecommitdiff
path: root/qapi
diff options
context:
space:
mode:
authorMarkus Armbruster <armbru@redhat.com>2021-10-25 06:24:03 +0200
committerMarkus Armbruster <armbru@redhat.com>2021-10-27 17:19:15 +0200
commited29bb28f8b0b17e965efcc2535fc32e101e3ceb (patch)
tree1bfd2967f141c4d71fc7bb08f71481b25cc1d6b9 /qapi
parentb6c18755e41f7b40aad4c2c8188fb1719535699d (diff)
downloadqemu-ed29bb28f8b0b17e965efcc2535fc32e101e3ceb.zip
qemu-ed29bb28f8b0b17e965efcc2535fc32e101e3ceb.tar.gz
qemu-ed29bb28f8b0b17e965efcc2535fc32e101e3ceb.tar.bz2
qapi: Move compat policy from QObject to generic visitor
The next commit needs to access compat policy from the generic visitor core. Move it there from qobject input and output visitor. Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Message-Id: <20211025042405.3762351-4-armbru@redhat.com>
Diffstat (limited to 'qapi')
-rw-r--r--qapi/qapi-visit-core.c9
-rw-r--r--qapi/qmp-dispatch.c4
-rw-r--r--qapi/qobject-input-visitor.c14
-rw-r--r--qapi/qobject-output-visitor.c14
4 files changed, 13 insertions, 28 deletions
diff --git a/qapi/qapi-visit-core.c b/qapi/qapi-visit-core.c
index 7310f0a..93fb154 100644
--- a/qapi/qapi-visit-core.c
+++ b/qapi/qapi-visit-core.c
@@ -19,6 +19,10 @@
#include "qapi/visitor-impl.h"
#include "trace.h"
+/* Zero-initialization must result in default policy */
+QEMU_BUILD_BUG_ON(COMPAT_POLICY_INPUT_ACCEPT || COMPAT_POLICY_OUTPUT_ACCEPT);
+
+
void visit_complete(Visitor *v, void *opaque)
{
assert(v->type != VISITOR_OUTPUT || v->complete);
@@ -153,6 +157,11 @@ bool visit_deprecated(Visitor *v, const char *name)
return true;
}
+void visit_set_policy(Visitor *v, CompatPolicy *policy)
+{
+ v->compat_policy = *policy;
+}
+
bool visit_is_input(Visitor *v)
{
return v->type == VISITOR_INPUT;
diff --git a/qapi/qmp-dispatch.c b/qapi/qmp-dispatch.c
index 5960021..7e943a0 100644
--- a/qapi/qmp-dispatch.c
+++ b/qapi/qmp-dispatch.c
@@ -32,7 +32,7 @@ Visitor *qobject_input_visitor_new_qmp(QObject *obj)
{
Visitor *v = qobject_input_visitor_new(obj);
- qobject_input_visitor_set_policy(v, compat_policy.deprecated_input);
+ visit_set_policy(v, &compat_policy);
return v;
}
@@ -40,7 +40,7 @@ Visitor *qobject_output_visitor_new_qmp(QObject **result)
{
Visitor *v = qobject_output_visitor_new(result);
- qobject_output_visitor_set_policy(v, compat_policy.deprecated_output);
+ visit_set_policy(v, &compat_policy);
return v;
}
diff --git a/qapi/qobject-input-visitor.c b/qapi/qobject-input-visitor.c
index 04b7904..71b24a4 100644
--- a/qapi/qobject-input-visitor.c
+++ b/qapi/qobject-input-visitor.c
@@ -14,7 +14,6 @@
#include "qemu/osdep.h"
#include <math.h>
-#include "qapi/compat-policy.h"
#include "qapi/error.h"
#include "qapi/qobject-input-visitor.h"
#include "qapi/visitor-impl.h"
@@ -44,7 +43,6 @@ typedef struct StackObject {
struct QObjectInputVisitor {
Visitor visitor;
- CompatPolicyInput deprecated_policy;
/* Root of visit at visitor creation. */
QObject *root;
@@ -667,9 +665,7 @@ static void qobject_input_optional(Visitor *v, const char *name, bool *present)
static bool qobject_input_deprecated_accept(Visitor *v, const char *name,
Error **errp)
{
- QObjectInputVisitor *qiv = to_qiv(v);
-
- switch (qiv->deprecated_policy) {
+ switch (v->compat_policy.deprecated_input) {
case COMPAT_POLICY_INPUT_ACCEPT:
return true;
case COMPAT_POLICY_INPUT_REJECT:
@@ -739,14 +735,6 @@ Visitor *qobject_input_visitor_new(QObject *obj)
return &v->visitor;
}
-void qobject_input_visitor_set_policy(Visitor *v,
- CompatPolicyInput deprecated)
-{
- QObjectInputVisitor *qiv = to_qiv(v);
-
- qiv->deprecated_policy = deprecated;
-}
-
Visitor *qobject_input_visitor_new_keyval(QObject *obj)
{
QObjectInputVisitor *v = qobject_input_visitor_base_new(obj);
diff --git a/qapi/qobject-output-visitor.c b/qapi/qobject-output-visitor.c
index e487330..9b7f510 100644
--- a/qapi/qobject-output-visitor.c
+++ b/qapi/qobject-output-visitor.c
@@ -13,7 +13,6 @@
*/
#include "qemu/osdep.h"
-#include "qapi/compat-policy.h"
#include "qapi/qobject-output-visitor.h"
#include "qapi/visitor-impl.h"
#include "qemu/queue.h"
@@ -32,7 +31,6 @@ typedef struct QStackEntry {
struct QObjectOutputVisitor {
Visitor visitor;
- CompatPolicyOutput deprecated_policy;
QSLIST_HEAD(, QStackEntry) stack; /* Stack of unfinished containers */
QObject *root; /* Root of the output visit */
@@ -212,9 +210,7 @@ static bool qobject_output_type_null(Visitor *v, const char *name,
static bool qobject_output_deprecated(Visitor *v, const char *name)
{
- QObjectOutputVisitor *qov = to_qov(v);
-
- return qov->deprecated_policy != COMPAT_POLICY_OUTPUT_HIDE;
+ return v->compat_policy.deprecated_output != COMPAT_POLICY_OUTPUT_HIDE;
}
/* Finish building, and return the root object.
@@ -275,11 +271,3 @@ Visitor *qobject_output_visitor_new(QObject **result)
return &v->visitor;
}
-
-void qobject_output_visitor_set_policy(Visitor *v,
- CompatPolicyOutput deprecated)
-{
- QObjectOutputVisitor *qov = to_qov(v);
-
- qov->deprecated_policy = deprecated;
-}