qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH] qapi: Update docs to match recent generated changes


From: Eric Blake
Subject: [Qemu-devel] [PATCH] qapi: Update docs to match recent generated changes, part 2
Date: Fri, 8 Jan 2016 09:45:47 -0700

[Either worth squashing into a single patch with the posted
v8 14.5/35 and sinking it to the end of the series, or else
splitting it into pieces and squashing per patch that makes a
change to generated output]

Signed-off-by: Eric Blake <address@hidden>

---
v9: new patch
---
 docs/qapi-code-gen.txt | 51 ++++++++++++++++++++++++++++++--------------------
 1 file changed, 31 insertions(+), 20 deletions(-)

diff --git a/docs/qapi-code-gen.txt b/docs/qapi-code-gen.txt
index f9b1d0c..b21e247 100644
--- a/docs/qapi-code-gen.txt
+++ b/docs/qapi-code-gen.txt
@@ -820,11 +820,8 @@ Example:
     void qapi_free_UserDefOne(UserDefOne *obj);

     struct UserDefOneList {
-        union {
-            UserDefOne *value;
-            uint64_t padding;
-        };
         UserDefOneList *next;
+        UserDefOne *value;
     };

     void qapi_free_UserDefOneList(UserDefOneList *obj);
@@ -878,8 +875,10 @@ Example:
     void visit_type_UserDefOne(Visitor *v, const char *name, UserDefOne **obj, 
Error **errp)
     {
         Error *err = NULL;
+        bool allocated;

-        visit_start_struct(v, name, (void **)obj, "UserDefOne", 
sizeof(UserDefOne), &err);
+        allocated = visit_start_struct(v, name, (void **)obj, 
sizeof(UserDefOne),
+                                       &err);
         if (err) {
             goto out;
         }
@@ -887,10 +886,16 @@ Example:
             goto out_obj;
         }
         visit_type_UserDefOne_fields(v, obj, &err);
+        if (err) {
+            goto out_obj;
+        }
+        visit_check_struct(v, &err);
     out_obj:
-        error_propagate(errp, err);
-        err = NULL;
-        visit_end_struct(v, &err);
+        visit_end_struct(v);
+        if (allocated && err) {
+            qapi_free_UserDefOne(*obj);
+            *obj = NULL;
+        }
     out:
         error_propagate(errp, err);
     }
@@ -898,24 +903,30 @@ Example:
     void visit_type_UserDefOneList(Visitor *v, const char *name, 
UserDefOneList **obj, Error **errp)
     {
         Error *err = NULL;
-        GenericList *i, **prev;
+        UserDefOneList *eld;
+        bool allocated;

-        visit_start_list(v, name, &err);
+        allocated = visit_start_list(v, name, (GenericList **)obj, 
sizeof(UserDefOneList), &err);
         if (err) {
             goto out;
         }
-
-        for (prev = (GenericList **)obj;
-             !err && (i = visit_next_list(v, prev, &err)) != NULL;
-             prev = &i) {
-            UserDefOneList *native_i = (UserDefOneList *)i;
-            visit_type_UserDefOne(v, NULL, &native_i->value, &err);
+        elt = *obj;
+        while (elt) {
+            visit_type_UserDefOne(v, NULL, &elt->value, &err);
+            if (err) {
+                break;
+            }
+            elt = (UserDefOneList *)visit_next_list(v, (GenericList *)elt, 
sizeof(UserDefOneList), &err);
+            if (err) {
+                break;
+            }
         }
-
-        error_propagate(errp, err);
-        err = NULL;
-        visit_end_list(v, &err);
+        visit_end_list(v);
     out:
+        if (allocated && err) {
+            qapi_free_UserDefOneList(*obj);
+            *obj = NULL;
+        }
         error_propagate(errp, err);
     }
     $ cat qapi-generated/example-qapi-visit.h
-- 
2.4.3




reply via email to

[Prev in Thread] Current Thread [Next in Thread]