qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

qobject-output-visitor.h (1900B)


      1 /*
      2  * Output Visitor
      3  *
      4  * Copyright IBM, Corp. 2011
      5  *
      6  * Authors:
      7  *  Anthony Liguori   <aliguori@us.ibm.com>
      8  *
      9  * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
     10  * See the COPYING.LIB file in the top-level directory.
     11  *
     12  */
     13 
     14 #ifndef QOBJECT_OUTPUT_VISITOR_H
     15 #define QOBJECT_OUTPUT_VISITOR_H
     16 
     17 #include "qapi/visitor.h"
     18 
     19 typedef struct QObjectOutputVisitor QObjectOutputVisitor;
     20 
     21 /**
     22  * Create a QObject output visitor for @obj
     23  *
     24  * A QObject output visitor visit builds a QObject from QAPI Object.
     25  * This simultaneously walks the QAPI object and the QObject being
     26  * built.  The latter walk starts at @obj.
     27  *
     28  * visit_type_FOO() creates a QObject for QAPI type FOO.  It creates a
     29  * QDict for struct/union types, a QList for list types, QString for
     30  * type 'str' and enumeration types, QNum for integer and float
     31  * types, QBool for type 'bool'.  For type 'any', it increments the
     32  * QObject's reference count.  For QAPI alternate types, it creates
     33  * the QObject for the member that is in use.
     34  *
     35  * visit_start_struct() ... visit_end_struct() visits a QAPI
     36  * struct/union and creates a QDict.  Visits in between visit the
     37  * members.  visit_optional() is true when the struct/union has this
     38  * member.  visit_check_struct() does nothing.
     39  *
     40  * visit_start_list() ... visit_end_list() visits a QAPI list and
     41  * creates a QList.  Visits in between visit list members, one after
     42  * the other.  visit_next_list() returns NULL when all QAPI list
     43  * members have been visited.  visit_check_list() does nothing.
     44  *
     45  * visit_start_alternate() ... visit_end_alternate() visits a QAPI
     46  * alternate.  The visit in between creates the QObject for the
     47  * alternate member that is in use.
     48  *
     49  * Errors are not expected to happen.
     50  *
     51  * The caller is responsible for freeing the visitor with
     52  * visit_free().
     53  */
     54 Visitor *qobject_output_visitor_new(QObject **result);
     55 
     56 #endif