Revision 15e43e64
b/scripts/qapi-commands.py | ||
---|---|---|
17 | 17 |
import getopt |
18 | 18 |
import errno |
19 | 19 |
|
20 |
def type_visitor(name): |
|
21 |
if type(name) == list: |
|
22 |
return 'visit_type_%sList' % name[0] |
|
23 |
else: |
|
24 |
return 'visit_type_%s' % name |
|
25 |
|
|
20 | 26 |
def generate_decl_enum(name, members, genlist=True): |
21 | 27 |
return mcgen(''' |
22 | 28 |
|
23 |
void visit_type_%(name)s(Visitor *m, %(name)s * obj, const char *name, Error **errp);
|
|
29 |
void %(visitor)s(Visitor *m, %(name)s * obj, const char *name, Error **errp);
|
|
24 | 30 |
''', |
25 |
name=name)
|
|
31 |
visitor=type_visitor(name))
|
|
26 | 32 |
|
27 | 33 |
def generate_command_decl(name, args, ret_type): |
28 | 34 |
arglist="" |
... | ... | |
146 | 152 |
c_name=c_var(argname), name=argname) |
147 | 153 |
push_indent() |
148 | 154 |
ret += mcgen(''' |
149 |
visit_type_%(argtype)s(v, &%(c_name)s, "%(name)s", errp);
|
|
155 |
%(visitor)s(v, &%(c_name)s, "%(name)s", errp);
|
|
150 | 156 |
''', |
151 |
c_name=c_var(argname), name=argname, argtype=argtype) |
|
157 |
c_name=c_var(argname), name=argname, argtype=argtype, |
|
158 |
visitor=type_visitor(argtype)) |
|
152 | 159 |
if optional: |
153 | 160 |
pop_indent() |
154 | 161 |
ret += mcgen(''' |
... | ... | |
179 | 186 |
Visitor *v; |
180 | 187 |
|
181 | 188 |
v = qmp_output_get_visitor(mo); |
182 |
visit_type_%(ret_type)s(v, &ret_in, "unused", errp);
|
|
189 |
%(visitor)s(v, &ret_in, "unused", errp);
|
|
183 | 190 |
if (!error_is_set(errp)) { |
184 | 191 |
*ret_out = qmp_output_get_qobject(mo); |
185 | 192 |
} |
186 | 193 |
qmp_output_visitor_cleanup(mo); |
187 | 194 |
v = qapi_dealloc_get_visitor(md); |
188 |
visit_type_%(ret_type)s(v, &ret_in, "unused", errp);
|
|
195 |
%(visitor)s(v, &ret_in, "unused", errp);
|
|
189 | 196 |
qapi_dealloc_visitor_cleanup(md); |
190 | 197 |
} |
191 | 198 |
''', |
192 |
c_ret_type=c_type(ret_type), c_name=c_var(name),
|
|
193 |
ret_type=ret_type)
|
|
199 |
c_ret_type=c_type(ret_type), c_name=c_var(name), |
|
200 |
visitor=type_visitor(ret_type))
|
|
194 | 201 |
|
195 | 202 |
return ret |
196 | 203 |
|
Also available in: Unified diff