]>
Commit | Line | Data |
---|---|---|
e4e6aa14 MR |
1 | /* |
2 | * Output Visitor | |
3 | * | |
4 | * Copyright IBM, Corp. 2011 | |
5 | * | |
6 | * Authors: | |
7 | * Anthony Liguori <[email protected]> | |
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 | ||
b3db211f DB |
14 | #ifndef QOBJECT_OUTPUT_VISITOR_H |
15 | #define QOBJECT_OUTPUT_VISITOR_H | |
e4e6aa14 | 16 | |
7b1b5d19 PB |
17 | #include "qapi/visitor.h" |
18 | #include "qapi/qmp/qobject.h" | |
e4e6aa14 | 19 | |
7d5e199a | 20 | typedef struct QObjectOutputVisitor QObjectOutputVisitor; |
e4e6aa14 | 21 | |
aa3a982e MA |
22 | /** |
23 | * Create a QObject output visitor for @obj | |
24 | * | |
25 | * A QObject output visitor visit builds a QObject from QAPI Object. | |
26 | * This simultaneously walks the QAPI object and the QObject being | |
27 | * built. The latter walk starts at @obj. | |
28 | * | |
29 | * visit_type_FOO() creates a QObject for QAPI type FOO. It creates a | |
30 | * QDict for struct/union types, a QList for list types, QString for | |
31 | * type 'str' and enumeration types, QInt for integer types, QFloat | |
32 | * for type 'number', QBool for type 'bool'. For type 'any', it | |
33 | * increments the QObject's reference count. For QAPI alternate | |
34 | * types, it creates the QObject for the member that is in use. | |
35 | * | |
36 | * visit_start_struct() ... visit_end_struct() visits a QAPI | |
37 | * struct/union and creates a QDict. Visits in between visit the | |
38 | * members. visit_optional() is true when the struct/union has this | |
39 | * member. visit_check_struct() does nothing. | |
40 | * | |
41 | * visit_start_list() ... visit_end_list() visits a QAPI list and | |
42 | * creates a QList. Visits in between visit list members, one after | |
43 | * the other. visit_next_list() returns NULL when all QAPI list | |
44 | * members have been visited. visit_check_list() does nothing. | |
45 | * | |
46 | * visit_start_alternate() ... visit_end_alternate() visits a QAPI | |
47 | * alternate. The visit in between creates the QObject for the | |
48 | * alternate member that is in use. | |
49 | * | |
50 | * Errors are not expected to happen. | |
3b098d56 | 51 | * |
aa3a982e MA |
52 | * The caller is responsible for freeing the visitor with |
53 | * visit_free(). | |
3b098d56 | 54 | */ |
7d5e199a | 55 | Visitor *qobject_output_visitor_new(QObject **result); |
e4e6aa14 MR |
56 | |
57 | #endif |