Commit c49d3411 authored by Peter Maydell's avatar Peter Maydell
Browse files

Merge remote-tracking branch 'remotes/armbru/tags/pull-qapi-2015-10-12' into staging



QAPI patches

# gpg: Signature made Mon 12 Oct 2015 18:56:35 BST using RSA key ID EB918653
# gpg: Good signature from "Markus Armbruster <armbru@redhat.com>"
# gpg:                 aka "Markus Armbruster <armbru@pond.sub.org>"

* remotes/armbru/tags/pull-qapi-2015-10-12:
  qapi: Simplify gen_visit_fields() error handling
  qapi: Share gen_visit_fields()
  qapi: Share gen_err_check()
  qapi: Consistent generated code: minimize push_indent() usage
  qapi: Consistent generated code: prefer common indentation
  qapi: Consistent generated code: prefer common labels
  qapi: Consistent generated code: prefer visitor 'v'
  qapi: Consistent generated code: prefer error 'err'
  qapi: Reuse code for flat union base validation
  qapi: Test use of 'number' within alternates
  qapi: Add tests for empty unions
  qapi: Avoid assertion failure on union 'type' collision
  qapi: Test for various name collisions
  qapi: Clean up qapi.py per pep8
  qapi: Invoke exception superclass initializer
  qapi: Improve 'include' error message
  qapi: Sort qapi-schema tests
  MAINTAINERS: Specify QAPI include and test files
  MAINTAINERS: Specify QObject include and test files
  docs: Move files from docs/qmp/ to docs/

Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
parents 5451316e 18bdbc3a
Loading
Loading
Loading
Loading
+14 −1
Original line number Diff line number Diff line
@@ -1054,7 +1054,12 @@ M: Michael Roth <mdroth@linux.vnet.ibm.com>
S: Supported
F: qapi/
X: qapi/*.json
F: include/qapi/
X: include/qapi/qmp/
F: include/qapi/qmp/dispatch.h
F: tests/qapi-schema/
F: tests/test-*-visitor.c
F: tests/test-qmp-*.c
F: scripts/qapi*
F: docs/qapi*
T: git git://repo.or.cz/qemu/armbru.git qapi-next
@@ -1071,6 +1076,14 @@ QObject
M: Luiz Capitulino <lcapitulino@redhat.com>
S: Maintained
F: qobject/
F: include/qapi/qmp/
X: include/qapi/qmp/dispatch.h
F: tests/check-qdict.c
F: tests/check-qfloat.c
F: tests/check-qint.c
F: tests/check-qjson.c
F: tests/check-qlist.c
F: tests/check-qstring.c
T: git git://repo.or.cz/qemu/qmp-unstable.git queue/qmp

QEMU Guest Agent
@@ -1095,7 +1108,7 @@ S: Supported
F: qmp.c
F: monitor.c
F: qmp-commands.hx
F: docs/qmp/
F: docs/*qmp-*
F: scripts/qmp/
T: git git://repo.or.cz/qemu/armbru.git qapi-next

+51 −51
Original line number Diff line number Diff line
@@ -740,32 +740,32 @@ Example:

    void qapi_free_UserDefOne(UserDefOne *obj)
    {
        QapiDeallocVisitor *md;
        QapiDeallocVisitor *qdv;
        Visitor *v;

        if (!obj) {
            return;
        }

        md = qapi_dealloc_visitor_new();
        v = qapi_dealloc_get_visitor(md);
        qdv = qapi_dealloc_visitor_new();
        v = qapi_dealloc_get_visitor(qdv);
        visit_type_UserDefOne(v, &obj, NULL, NULL);
        qapi_dealloc_visitor_cleanup(md);
        qapi_dealloc_visitor_cleanup(qdv);
    }

    void qapi_free_UserDefOneList(UserDefOneList *obj)
    {
        QapiDeallocVisitor *md;
        QapiDeallocVisitor *qdv;
        Visitor *v;

        if (!obj) {
            return;
        }

        md = qapi_dealloc_visitor_new();
        v = qapi_dealloc_get_visitor(md);
        qdv = qapi_dealloc_visitor_new();
        v = qapi_dealloc_get_visitor(qdv);
        visit_type_UserDefOneList(v, &obj, NULL, NULL);
        qapi_dealloc_visitor_cleanup(md);
        qapi_dealloc_visitor_cleanup(qdv);
    }
    $ cat qapi-generated/example-qapi-types.h
[Uninteresting stuff omitted...]
@@ -823,15 +823,15 @@ Example:
    $ cat qapi-generated/example-qapi-visit.c
[Uninteresting stuff omitted...]

    static void visit_type_UserDefOne_fields(Visitor *m, UserDefOne **obj, Error **errp)
    static void visit_type_UserDefOne_fields(Visitor *v, UserDefOne **obj, Error **errp)
    {
        Error *err = NULL;

        visit_type_int(m, &(*obj)->integer, "integer", &err);
        visit_type_int(v, &(*obj)->integer, "integer", &err);
        if (err) {
            goto out;
        }
        visit_type_str(m, &(*obj)->string, "string", &err);
        visit_type_str(v, &(*obj)->string, "string", &err);
        if (err) {
            goto out;
        }
@@ -840,40 +840,40 @@ Example:
        error_propagate(errp, err);
    }

    void visit_type_UserDefOne(Visitor *m, UserDefOne **obj, const char *name, Error **errp)
    void visit_type_UserDefOne(Visitor *v, UserDefOne **obj, const char *name, Error **errp)
    {
        Error *err = NULL;

        visit_start_struct(m, (void **)obj, "UserDefOne", name, sizeof(UserDefOne), &err);
        visit_start_struct(v, (void **)obj, "UserDefOne", name, sizeof(UserDefOne), &err);
        if (!err) {
            if (*obj) {
                visit_type_UserDefOne_fields(m, obj, errp);
                visit_type_UserDefOne_fields(v, obj, errp);
            }
            visit_end_struct(m, &err);
            visit_end_struct(v, &err);
        }
        error_propagate(errp, err);
    }

    void visit_type_UserDefOneList(Visitor *m, UserDefOneList **obj, const char *name, Error **errp)
    void visit_type_UserDefOneList(Visitor *v, UserDefOneList **obj, const char *name, Error **errp)
    {
        Error *err = NULL;
        GenericList *i, **prev;

        visit_start_list(m, name, &err);
        visit_start_list(v, name, &err);
        if (err) {
            goto out;
        }

        for (prev = (GenericList **)obj;
             !err && (i = visit_next_list(m, prev, &err)) != NULL;
             !err && (i = visit_next_list(v, prev, &err)) != NULL;
             prev = &i) {
            UserDefOneList *native_i = (UserDefOneList *)i;
            visit_type_UserDefOne(m, &native_i->value, NULL, &err);
            visit_type_UserDefOne(v, &native_i->value, NULL, &err);
        }

        error_propagate(errp, err);
        err = NULL;
        visit_end_list(m, &err);
        visit_end_list(v, &err);
    out:
        error_propagate(errp, err);
    }
@@ -885,8 +885,8 @@ Example:

[Visitors for built-in types omitted...]

    void visit_type_UserDefOne(Visitor *m, UserDefOne **obj, const char *name, Error **errp);
    void visit_type_UserDefOneList(Visitor *m, UserDefOneList **obj, const char *name, Error **errp);
    void visit_type_UserDefOne(Visitor *v, UserDefOne **obj, const char *name, Error **errp);
    void visit_type_UserDefOneList(Visitor *v, UserDefOneList **obj, const char *name, Error **errp);

    #endif

@@ -916,56 +916,56 @@ Example:

    static void qmp_marshal_output_UserDefOne(UserDefOne *ret_in, QObject **ret_out, Error **errp)
    {
        Error *local_err = NULL;
        QmpOutputVisitor *mo = qmp_output_visitor_new();
        QapiDeallocVisitor *md;
        Error *err = NULL;
        QmpOutputVisitor *qov = qmp_output_visitor_new();
        QapiDeallocVisitor *qdv;
        Visitor *v;

        v = qmp_output_get_visitor(mo);
        visit_type_UserDefOne(v, &ret_in, "unused", &local_err);
        if (local_err) {
        v = qmp_output_get_visitor(qov);
        visit_type_UserDefOne(v, &ret_in, "unused", &err);
        if (err) {
            goto out;
        }
        *ret_out = qmp_output_get_qobject(mo);
        *ret_out = qmp_output_get_qobject(qov);

    out:
        error_propagate(errp, local_err);
        qmp_output_visitor_cleanup(mo);
        md = qapi_dealloc_visitor_new();
        v = qapi_dealloc_get_visitor(md);
        error_propagate(errp, err);
        qmp_output_visitor_cleanup(qov);
        qdv = qapi_dealloc_visitor_new();
        v = qapi_dealloc_get_visitor(qdv);
        visit_type_UserDefOne(v, &ret_in, "unused", NULL);
        qapi_dealloc_visitor_cleanup(md);
        qapi_dealloc_visitor_cleanup(qdv);
    }

    static void qmp_marshal_my_command(QDict *args, QObject **ret, Error **errp)
    {
        Error *local_err = NULL;
        Error *err = NULL;
        UserDefOne *retval;
        QmpInputVisitor *mi = qmp_input_visitor_new_strict(QOBJECT(args));
        QapiDeallocVisitor *md;
        QmpInputVisitor *qiv = qmp_input_visitor_new_strict(QOBJECT(args));
        QapiDeallocVisitor *qdv;
        Visitor *v;
        UserDefOne *arg1 = NULL;

        v = qmp_input_get_visitor(mi);
        visit_type_UserDefOne(v, &arg1, "arg1", &local_err);
        if (local_err) {
        v = qmp_input_get_visitor(qiv);
        visit_type_UserDefOne(v, &arg1, "arg1", &err);
        if (err) {
            goto out;
        }

        retval = qmp_my_command(arg1, &local_err);
        if (local_err) {
        retval = qmp_my_command(arg1, &err);
        if (err) {
            goto out;
        }

        qmp_marshal_output_UserDefOne(retval, ret, &local_err);
        qmp_marshal_output_UserDefOne(retval, ret, &err);

    out:
        error_propagate(errp, local_err);
        qmp_input_visitor_cleanup(mi);
        md = qapi_dealloc_visitor_new();
        v = qapi_dealloc_get_visitor(md);
        error_propagate(errp, err);
        qmp_input_visitor_cleanup(qiv);
        qdv = qapi_dealloc_visitor_new();
        v = qapi_dealloc_get_visitor(qdv);
        visit_type_UserDefOne(v, &arg1, "arg1", NULL);
        qapi_dealloc_visitor_cleanup(md);
        qapi_dealloc_visitor_cleanup(qdv);
    }

    static void qmp_init_marshal(void)
@@ -1007,7 +1007,7 @@ Example:
    void qapi_event_send_my_event(Error **errp)
    {
        QDict *qmp;
        Error *local_err = NULL;
        Error *err = NULL;
        QMPEventFuncEmit emit;
        emit = qmp_event_get_func_emit();
        if (!emit) {
@@ -1016,9 +1016,9 @@ Example:

        qmp = qmp_event_build_dict("MY_EVENT");

        emit(EXAMPLE_QAPI_EVENT_MY_EVENT, qmp, &local_err);
        emit(EXAMPLE_QAPI_EVENT_MY_EVENT, qmp, &err);

        error_propagate(errp, local_err);
        error_propagate(errp, err);
        QDECREF(qmp);
    }

+0 −0

File moved.

+0 −0

File moved.

+0 −0

File moved.

Loading