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