qapi: Consistent generated code: prefer visitor 'v'
We had some pointless differences in the generated code for visit, command marshalling, and events; unifying them makes it easier for future patches to consolidate to common helper functions. This is one patch of a series to clean up these differences. This patch names the local visitor variable 'v' rather than 'm'. Related objects, such as 'QapiDeallocVisitor', are also named by their initials instead of an unrelated leading m. No change in semantics to the generated code. Signed-off-by: Eric Blake <eblake@redhat.com> Message-Id: <1443565276-4535-12-git-send-email-eblake@redhat.com> Signed-off-by: Markus Armbruster <armbru@redhat.com>
This commit is contained in:
parent
2a0f50e8d9
commit
f8b7f1a8ea
@ -740,32 +740,32 @@ Example:
|
||||
|
||||
void qapi_free_UserDefOne(UserDefOne *obj)
|
||||
{
|
||||
QapiDeallocVisitor *md;
|
||||
QapiDeallocVisitor *qdv;
|
||||
Visitor *v;
|
||||
|
||||
if (!obj) {
|
||||
return;
|
||||
}
|
||||
|
||||
md = qapi_dealloc_visitor_new();
|
||||
v = qapi_dealloc_get_visitor(md);
|
||||
qdv = qapi_dealloc_visitor_new();
|
||||
v = qapi_dealloc_get_visitor(qdv);
|
||||
visit_type_UserDefOne(v, &obj, NULL, NULL);
|
||||
qapi_dealloc_visitor_cleanup(md);
|
||||
qapi_dealloc_visitor_cleanup(qdv);
|
||||
}
|
||||
|
||||
void qapi_free_UserDefOneList(UserDefOneList *obj)
|
||||
{
|
||||
QapiDeallocVisitor *md;
|
||||
QapiDeallocVisitor *qdv;
|
||||
Visitor *v;
|
||||
|
||||
if (!obj) {
|
||||
return;
|
||||
}
|
||||
|
||||
md = qapi_dealloc_visitor_new();
|
||||
v = qapi_dealloc_get_visitor(md);
|
||||
qdv = qapi_dealloc_visitor_new();
|
||||
v = qapi_dealloc_get_visitor(qdv);
|
||||
visit_type_UserDefOneList(v, &obj, NULL, NULL);
|
||||
qapi_dealloc_visitor_cleanup(md);
|
||||
qapi_dealloc_visitor_cleanup(qdv);
|
||||
}
|
||||
$ cat qapi-generated/example-qapi-types.h
|
||||
[Uninteresting stuff omitted...]
|
||||
@ -823,15 +823,15 @@ Example:
|
||||
$ cat qapi-generated/example-qapi-visit.c
|
||||
[Uninteresting stuff omitted...]
|
||||
|
||||
static void visit_type_UserDefOne_fields(Visitor *m, UserDefOne **obj, Error **errp)
|
||||
static void visit_type_UserDefOne_fields(Visitor *v, UserDefOne **obj, Error **errp)
|
||||
{
|
||||
Error *err = NULL;
|
||||
|
||||
visit_type_int(m, &(*obj)->integer, "integer", &err);
|
||||
visit_type_int(v, &(*obj)->integer, "integer", &err);
|
||||
if (err) {
|
||||
goto out;
|
||||
}
|
||||
visit_type_str(m, &(*obj)->string, "string", &err);
|
||||
visit_type_str(v, &(*obj)->string, "string", &err);
|
||||
if (err) {
|
||||
goto out;
|
||||
}
|
||||
@ -840,40 +840,40 @@ Example:
|
||||
error_propagate(errp, err);
|
||||
}
|
||||
|
||||
void visit_type_UserDefOne(Visitor *m, UserDefOne **obj, const char *name, Error **errp)
|
||||
void visit_type_UserDefOne(Visitor *v, UserDefOne **obj, const char *name, Error **errp)
|
||||
{
|
||||
Error *err = NULL;
|
||||
|
||||
visit_start_struct(m, (void **)obj, "UserDefOne", name, sizeof(UserDefOne), &err);
|
||||
visit_start_struct(v, (void **)obj, "UserDefOne", name, sizeof(UserDefOne), &err);
|
||||
if (!err) {
|
||||
if (*obj) {
|
||||
visit_type_UserDefOne_fields(m, obj, errp);
|
||||
visit_type_UserDefOne_fields(v, obj, errp);
|
||||
}
|
||||
visit_end_struct(m, &err);
|
||||
visit_end_struct(v, &err);
|
||||
}
|
||||
error_propagate(errp, err);
|
||||
}
|
||||
|
||||
void visit_type_UserDefOneList(Visitor *m, UserDefOneList **obj, const char *name, Error **errp)
|
||||
void visit_type_UserDefOneList(Visitor *v, UserDefOneList **obj, const char *name, Error **errp)
|
||||
{
|
||||
Error *err = NULL;
|
||||
GenericList *i, **prev;
|
||||
|
||||
visit_start_list(m, name, &err);
|
||||
visit_start_list(v, name, &err);
|
||||
if (err) {
|
||||
goto out;
|
||||
}
|
||||
|
||||
for (prev = (GenericList **)obj;
|
||||
!err && (i = visit_next_list(m, prev, &err)) != NULL;
|
||||
!err && (i = visit_next_list(v, prev, &err)) != NULL;
|
||||
prev = &i) {
|
||||
UserDefOneList *native_i = (UserDefOneList *)i;
|
||||
visit_type_UserDefOne(m, &native_i->value, NULL, &err);
|
||||
visit_type_UserDefOne(v, &native_i->value, NULL, &err);
|
||||
}
|
||||
|
||||
error_propagate(errp, err);
|
||||
err = NULL;
|
||||
visit_end_list(m, &err);
|
||||
visit_end_list(v, &err);
|
||||
out:
|
||||
error_propagate(errp, err);
|
||||
}
|
||||
@ -885,8 +885,8 @@ Example:
|
||||
|
||||
[Visitors for built-in types omitted...]
|
||||
|
||||
void visit_type_UserDefOne(Visitor *m, UserDefOne **obj, const char *name, Error **errp);
|
||||
void visit_type_UserDefOneList(Visitor *m, UserDefOneList **obj, const char *name, Error **errp);
|
||||
void visit_type_UserDefOne(Visitor *v, UserDefOne **obj, const char *name, Error **errp);
|
||||
void visit_type_UserDefOneList(Visitor *v, UserDefOneList **obj, const char *name, Error **errp);
|
||||
|
||||
#endif
|
||||
|
||||
@ -917,36 +917,36 @@ Example:
|
||||
static void qmp_marshal_output_UserDefOne(UserDefOne *ret_in, QObject **ret_out, Error **errp)
|
||||
{
|
||||
Error *err = NULL;
|
||||
QmpOutputVisitor *mo = qmp_output_visitor_new();
|
||||
QapiDeallocVisitor *md;
|
||||
QmpOutputVisitor *qov = qmp_output_visitor_new();
|
||||
QapiDeallocVisitor *qdv;
|
||||
Visitor *v;
|
||||
|
||||
v = qmp_output_get_visitor(mo);
|
||||
v = qmp_output_get_visitor(qov);
|
||||
visit_type_UserDefOne(v, &ret_in, "unused", &err);
|
||||
if (err) {
|
||||
goto out;
|
||||
}
|
||||
*ret_out = qmp_output_get_qobject(mo);
|
||||
*ret_out = qmp_output_get_qobject(qov);
|
||||
|
||||
out:
|
||||
error_propagate(errp, err);
|
||||
qmp_output_visitor_cleanup(mo);
|
||||
md = qapi_dealloc_visitor_new();
|
||||
v = qapi_dealloc_get_visitor(md);
|
||||
qmp_output_visitor_cleanup(qov);
|
||||
qdv = qapi_dealloc_visitor_new();
|
||||
v = qapi_dealloc_get_visitor(qdv);
|
||||
visit_type_UserDefOne(v, &ret_in, "unused", NULL);
|
||||
qapi_dealloc_visitor_cleanup(md);
|
||||
qapi_dealloc_visitor_cleanup(qdv);
|
||||
}
|
||||
|
||||
static void qmp_marshal_my_command(QDict *args, QObject **ret, Error **errp)
|
||||
{
|
||||
Error *err = NULL;
|
||||
UserDefOne *retval;
|
||||
QmpInputVisitor *mi = qmp_input_visitor_new_strict(QOBJECT(args));
|
||||
QapiDeallocVisitor *md;
|
||||
QmpInputVisitor *qiv = qmp_input_visitor_new_strict(QOBJECT(args));
|
||||
QapiDeallocVisitor *qdv;
|
||||
Visitor *v;
|
||||
UserDefOne *arg1 = NULL;
|
||||
|
||||
v = qmp_input_get_visitor(mi);
|
||||
v = qmp_input_get_visitor(qiv);
|
||||
visit_type_UserDefOne(v, &arg1, "arg1", &err);
|
||||
if (err) {
|
||||
goto out;
|
||||
@ -961,11 +961,11 @@ Example:
|
||||
|
||||
out:
|
||||
error_propagate(errp, err);
|
||||
qmp_input_visitor_cleanup(mi);
|
||||
md = qapi_dealloc_visitor_new();
|
||||
v = qapi_dealloc_get_visitor(md);
|
||||
qmp_input_visitor_cleanup(qiv);
|
||||
qdv = qapi_dealloc_visitor_new();
|
||||
v = qapi_dealloc_get_visitor(qdv);
|
||||
visit_type_UserDefOne(v, &arg1, "arg1", NULL);
|
||||
qapi_dealloc_visitor_cleanup(md);
|
||||
qapi_dealloc_visitor_cleanup(qdv);
|
||||
}
|
||||
|
||||
static void qmp_init_marshal(void)
|
||||
|
18
qom/object.c
18
qom/object.c
@ -1167,31 +1167,31 @@ out:
|
||||
void object_property_parse(Object *obj, const char *string,
|
||||
const char *name, Error **errp)
|
||||
{
|
||||
StringInputVisitor *mi;
|
||||
mi = string_input_visitor_new(string);
|
||||
object_property_set(obj, string_input_get_visitor(mi), name, errp);
|
||||
StringInputVisitor *siv;
|
||||
siv = string_input_visitor_new(string);
|
||||
object_property_set(obj, string_input_get_visitor(siv), name, errp);
|
||||
|
||||
string_input_visitor_cleanup(mi);
|
||||
string_input_visitor_cleanup(siv);
|
||||
}
|
||||
|
||||
char *object_property_print(Object *obj, const char *name, bool human,
|
||||
Error **errp)
|
||||
{
|
||||
StringOutputVisitor *mo;
|
||||
StringOutputVisitor *sov;
|
||||
char *string = NULL;
|
||||
Error *local_err = NULL;
|
||||
|
||||
mo = string_output_visitor_new(human);
|
||||
object_property_get(obj, string_output_get_visitor(mo), name, &local_err);
|
||||
sov = string_output_visitor_new(human);
|
||||
object_property_get(obj, string_output_get_visitor(sov), name, &local_err);
|
||||
if (local_err) {
|
||||
error_propagate(errp, local_err);
|
||||
goto out;
|
||||
}
|
||||
|
||||
string = string_output_get_string(mo);
|
||||
string = string_output_get_string(sov);
|
||||
|
||||
out:
|
||||
string_output_visitor_cleanup(mo);
|
||||
string_output_visitor_cleanup(sov);
|
||||
return string;
|
||||
}
|
||||
|
||||
|
@ -19,11 +19,11 @@
|
||||
void object_property_set_qobject(Object *obj, QObject *value,
|
||||
const char *name, Error **errp)
|
||||
{
|
||||
QmpInputVisitor *mi;
|
||||
mi = qmp_input_visitor_new(value);
|
||||
object_property_set(obj, qmp_input_get_visitor(mi), name, errp);
|
||||
QmpInputVisitor *qiv;
|
||||
qiv = qmp_input_visitor_new(value);
|
||||
object_property_set(obj, qmp_input_get_visitor(qiv), name, errp);
|
||||
|
||||
qmp_input_visitor_cleanup(mi);
|
||||
qmp_input_visitor_cleanup(qiv);
|
||||
}
|
||||
|
||||
QObject *object_property_get_qobject(Object *obj, const char *name,
|
||||
@ -31,14 +31,14 @@ QObject *object_property_get_qobject(Object *obj, const char *name,
|
||||
{
|
||||
QObject *ret = NULL;
|
||||
Error *local_err = NULL;
|
||||
QmpOutputVisitor *mo;
|
||||
QmpOutputVisitor *qov;
|
||||
|
||||
mo = qmp_output_visitor_new();
|
||||
object_property_get(obj, qmp_output_get_visitor(mo), name, &local_err);
|
||||
qov = qmp_output_visitor_new();
|
||||
object_property_get(obj, qmp_output_get_visitor(qov), name, &local_err);
|
||||
if (!local_err) {
|
||||
ret = qmp_output_get_qobject(mo);
|
||||
ret = qmp_output_get_qobject(qov);
|
||||
}
|
||||
error_propagate(errp, local_err);
|
||||
qmp_output_visitor_cleanup(mo);
|
||||
qmp_output_visitor_cleanup(qov);
|
||||
return ret;
|
||||
}
|
||||
|
@ -82,8 +82,8 @@ def gen_marshal_vars(arg_type, ret_type):
|
||||
|
||||
if arg_type:
|
||||
ret += mcgen('''
|
||||
QmpInputVisitor *mi = qmp_input_visitor_new_strict(QOBJECT(args));
|
||||
QapiDeallocVisitor *md;
|
||||
QmpInputVisitor *qiv = qmp_input_visitor_new_strict(QOBJECT(args));
|
||||
QapiDeallocVisitor *qdv;
|
||||
Visitor *v;
|
||||
''')
|
||||
|
||||
@ -122,15 +122,15 @@ def gen_marshal_input_visit(arg_type, dealloc=False):
|
||||
errparg = 'NULL'
|
||||
errarg = None
|
||||
ret += mcgen('''
|
||||
qmp_input_visitor_cleanup(mi);
|
||||
md = qapi_dealloc_visitor_new();
|
||||
v = qapi_dealloc_get_visitor(md);
|
||||
qmp_input_visitor_cleanup(qiv);
|
||||
qdv = qapi_dealloc_visitor_new();
|
||||
v = qapi_dealloc_get_visitor(qdv);
|
||||
''')
|
||||
else:
|
||||
errparg = '&err'
|
||||
errarg = 'err'
|
||||
ret += mcgen('''
|
||||
v = qmp_input_get_visitor(mi);
|
||||
v = qmp_input_get_visitor(qiv);
|
||||
''')
|
||||
|
||||
for memb in arg_type.members:
|
||||
@ -160,7 +160,7 @@ visit_type_%(c_type)s(v, &%(c_name)s, "%(name)s", %(errp)s);
|
||||
|
||||
if dealloc:
|
||||
ret += mcgen('''
|
||||
qapi_dealloc_visitor_cleanup(md);
|
||||
qapi_dealloc_visitor_cleanup(qdv);
|
||||
''')
|
||||
pop_indent()
|
||||
return ret
|
||||
@ -172,24 +172,24 @@ def gen_marshal_output(ret_type):
|
||||
static void qmp_marshal_output_%(c_name)s(%(c_type)s ret_in, QObject **ret_out, Error **errp)
|
||||
{
|
||||
Error *err = NULL;
|
||||
QmpOutputVisitor *mo = qmp_output_visitor_new();
|
||||
QapiDeallocVisitor *md;
|
||||
QmpOutputVisitor *qov = qmp_output_visitor_new();
|
||||
QapiDeallocVisitor *qdv;
|
||||
Visitor *v;
|
||||
|
||||
v = qmp_output_get_visitor(mo);
|
||||
v = qmp_output_get_visitor(qov);
|
||||
visit_type_%(c_name)s(v, &ret_in, "unused", &err);
|
||||
if (err) {
|
||||
goto out;
|
||||
}
|
||||
*ret_out = qmp_output_get_qobject(mo);
|
||||
*ret_out = qmp_output_get_qobject(qov);
|
||||
|
||||
out:
|
||||
error_propagate(errp, err);
|
||||
qmp_output_visitor_cleanup(mo);
|
||||
md = qapi_dealloc_visitor_new();
|
||||
v = qapi_dealloc_get_visitor(md);
|
||||
qmp_output_visitor_cleanup(qov);
|
||||
qdv = qapi_dealloc_visitor_new();
|
||||
v = qapi_dealloc_get_visitor(qdv);
|
||||
visit_type_%(c_name)s(v, &ret_in, "unused", NULL);
|
||||
qapi_dealloc_visitor_cleanup(md);
|
||||
qapi_dealloc_visitor_cleanup(qdv);
|
||||
}
|
||||
''',
|
||||
c_type=ret_type.c_type(), c_name=ret_type.c_name())
|
||||
|
@ -188,17 +188,17 @@ def gen_type_cleanup(name):
|
||||
|
||||
void qapi_free_%(c_name)s(%(c_name)s *obj)
|
||||
{
|
||||
QapiDeallocVisitor *md;
|
||||
QapiDeallocVisitor *qdv;
|
||||
Visitor *v;
|
||||
|
||||
if (!obj) {
|
||||
return;
|
||||
}
|
||||
|
||||
md = qapi_dealloc_visitor_new();
|
||||
v = qapi_dealloc_get_visitor(md);
|
||||
qdv = qapi_dealloc_visitor_new();
|
||||
v = qapi_dealloc_get_visitor(qdv);
|
||||
visit_type_%(c_name)s(v, &obj, NULL, NULL);
|
||||
qapi_dealloc_visitor_cleanup(md);
|
||||
qapi_dealloc_visitor_cleanup(qdv);
|
||||
}
|
||||
''',
|
||||
c_name=c_name(name))
|
||||
|
@ -24,7 +24,7 @@ def gen_visit_decl(name, scalar=False):
|
||||
if not scalar:
|
||||
c_type += '*'
|
||||
return mcgen('''
|
||||
void visit_type_%(c_name)s(Visitor *m, %(c_type)sobj, const char *name, Error **errp);
|
||||
void visit_type_%(c_name)s(Visitor *v, %(c_type)sobj, const char *name, Error **errp);
|
||||
''',
|
||||
c_name=c_name(name), c_type=c_type)
|
||||
|
||||
@ -39,20 +39,20 @@ def gen_visit_implicit_struct(typ):
|
||||
# Need a forward declaration
|
||||
ret += mcgen('''
|
||||
|
||||
static void visit_type_%(c_type)s_fields(Visitor *m, %(c_type)s **obj, Error **errp);
|
||||
static void visit_type_%(c_type)s_fields(Visitor *v, %(c_type)s **obj, Error **errp);
|
||||
''',
|
||||
c_type=typ.c_name())
|
||||
|
||||
ret += mcgen('''
|
||||
|
||||
static void visit_type_implicit_%(c_type)s(Visitor *m, %(c_type)s **obj, Error **errp)
|
||||
static void visit_type_implicit_%(c_type)s(Visitor *v, %(c_type)s **obj, Error **errp)
|
||||
{
|
||||
Error *err = NULL;
|
||||
|
||||
visit_start_implicit_struct(m, (void **)obj, sizeof(%(c_type)s), &err);
|
||||
visit_start_implicit_struct(v, (void **)obj, sizeof(%(c_type)s), &err);
|
||||
if (!err) {
|
||||
visit_type_%(c_type)s_fields(m, obj, errp);
|
||||
visit_end_implicit_struct(m, &err);
|
||||
visit_type_%(c_type)s_fields(v, obj, errp);
|
||||
visit_end_implicit_struct(v, &err);
|
||||
}
|
||||
error_propagate(errp, err);
|
||||
}
|
||||
@ -71,7 +71,7 @@ def gen_visit_struct_fields(name, base, members):
|
||||
|
||||
ret += mcgen('''
|
||||
|
||||
static void visit_type_%(c_name)s_fields(Visitor *m, %(c_name)s **obj, Error **errp)
|
||||
static void visit_type_%(c_name)s_fields(Visitor *v, %(c_name)s **obj, Error **errp)
|
||||
{
|
||||
Error *err = NULL;
|
||||
|
||||
@ -81,7 +81,7 @@ static void visit_type_%(c_name)s_fields(Visitor *m, %(c_name)s **obj, Error **e
|
||||
|
||||
if base:
|
||||
ret += mcgen('''
|
||||
visit_type_implicit_%(c_type)s(m, &(*obj)->%(c_name)s, &err);
|
||||
visit_type_implicit_%(c_type)s(v, &(*obj)->%(c_name)s, &err);
|
||||
if (err) {
|
||||
goto out;
|
||||
}
|
||||
@ -91,14 +91,14 @@ if (err) {
|
||||
for memb in members:
|
||||
if memb.optional:
|
||||
ret += mcgen('''
|
||||
visit_optional(m, &(*obj)->has_%(c_name)s, "%(name)s", &err);
|
||||
visit_optional(v, &(*obj)->has_%(c_name)s, "%(name)s", &err);
|
||||
if (!err && (*obj)->has_%(c_name)s) {
|
||||
''',
|
||||
c_name=c_name(memb.name), name=memb.name)
|
||||
push_indent()
|
||||
|
||||
ret += mcgen('''
|
||||
visit_type_%(c_type)s(m, &(*obj)->%(c_name)s, "%(name)s", &err);
|
||||
visit_type_%(c_type)s(v, &(*obj)->%(c_name)s, "%(name)s", &err);
|
||||
''',
|
||||
c_type=memb.type.c_name(), c_name=c_name(memb.name),
|
||||
name=memb.name)
|
||||
@ -136,16 +136,16 @@ def gen_visit_struct(name, base, members):
|
||||
# call qapi_free_FOO() to avoid a memory leak of the partial FOO.
|
||||
ret += mcgen('''
|
||||
|
||||
void visit_type_%(c_name)s(Visitor *m, %(c_name)s **obj, const char *name, Error **errp)
|
||||
void visit_type_%(c_name)s(Visitor *v, %(c_name)s **obj, const char *name, Error **errp)
|
||||
{
|
||||
Error *err = NULL;
|
||||
|
||||
visit_start_struct(m, (void **)obj, "%(name)s", name, sizeof(%(c_name)s), &err);
|
||||
visit_start_struct(v, (void **)obj, "%(name)s", name, sizeof(%(c_name)s), &err);
|
||||
if (!err) {
|
||||
if (*obj) {
|
||||
visit_type_%(c_name)s_fields(m, obj, errp);
|
||||
visit_type_%(c_name)s_fields(v, obj, errp);
|
||||
}
|
||||
visit_end_struct(m, &err);
|
||||
visit_end_struct(v, &err);
|
||||
}
|
||||
error_propagate(errp, err);
|
||||
}
|
||||
@ -158,26 +158,26 @@ void visit_type_%(c_name)s(Visitor *m, %(c_name)s **obj, const char *name, Error
|
||||
def gen_visit_list(name, element_type):
|
||||
return mcgen('''
|
||||
|
||||
void visit_type_%(c_name)s(Visitor *m, %(c_name)s **obj, const char *name, Error **errp)
|
||||
void visit_type_%(c_name)s(Visitor *v, %(c_name)s **obj, const char *name, Error **errp)
|
||||
{
|
||||
Error *err = NULL;
|
||||
GenericList *i, **prev;
|
||||
|
||||
visit_start_list(m, name, &err);
|
||||
visit_start_list(v, name, &err);
|
||||
if (err) {
|
||||
goto out;
|
||||
}
|
||||
|
||||
for (prev = (GenericList **)obj;
|
||||
!err && (i = visit_next_list(m, prev, &err)) != NULL;
|
||||
!err && (i = visit_next_list(v, prev, &err)) != NULL;
|
||||
prev = &i) {
|
||||
%(c_name)s *native_i = (%(c_name)s *)i;
|
||||
visit_type_%(c_elt_type)s(m, &native_i->value, NULL, &err);
|
||||
visit_type_%(c_elt_type)s(v, &native_i->value, NULL, &err);
|
||||
}
|
||||
|
||||
error_propagate(errp, err);
|
||||
err = NULL;
|
||||
visit_end_list(m, &err);
|
||||
visit_end_list(v, &err);
|
||||
out:
|
||||
error_propagate(errp, err);
|
||||
}
|
||||
@ -188,9 +188,9 @@ out:
|
||||
def gen_visit_enum(name):
|
||||
return mcgen('''
|
||||
|
||||
void visit_type_%(c_name)s(Visitor *m, %(c_name)s *obj, const char *name, Error **errp)
|
||||
void visit_type_%(c_name)s(Visitor *v, %(c_name)s *obj, const char *name, Error **errp)
|
||||
{
|
||||
visit_type_enum(m, (int *)obj, %(c_name)s_lookup, "%(name)s", name, errp);
|
||||
visit_type_enum(v, (int *)obj, %(c_name)s_lookup, "%(name)s", name, errp);
|
||||
}
|
||||
''',
|
||||
c_name=c_name(name), name=name)
|
||||
@ -199,15 +199,15 @@ void visit_type_%(c_name)s(Visitor *m, %(c_name)s *obj, const char *name, Error
|
||||
def gen_visit_alternate(name, variants):
|
||||
ret = mcgen('''
|
||||
|
||||
void visit_type_%(c_name)s(Visitor *m, %(c_name)s **obj, const char *name, Error **errp)
|
||||
void visit_type_%(c_name)s(Visitor *v, %(c_name)s **obj, const char *name, Error **errp)
|
||||
{
|
||||
Error *err = NULL;
|
||||
|
||||
visit_start_implicit_struct(m, (void**) obj, sizeof(%(c_name)s), &err);
|
||||
visit_start_implicit_struct(v, (void**) obj, sizeof(%(c_name)s), &err);
|
||||
if (err) {
|
||||
goto out;
|
||||
}
|
||||
visit_get_next_type(m, (int*) &(*obj)->kind, %(c_name)s_qtypes, name, &err);
|
||||
visit_get_next_type(v, (int*) &(*obj)->kind, %(c_name)s_qtypes, name, &err);
|
||||
if (err) {
|
||||
goto out_end;
|
||||
}
|
||||
@ -218,7 +218,7 @@ void visit_type_%(c_name)s(Visitor *m, %(c_name)s **obj, const char *name, Error
|
||||
for var in variants.variants:
|
||||
ret += mcgen('''
|
||||
case %(case)s:
|
||||
visit_type_%(c_type)s(m, &(*obj)->%(c_name)s, name, &err);
|
||||
visit_type_%(c_type)s(v, &(*obj)->%(c_name)s, name, &err);
|
||||
break;
|
||||
''',
|
||||
case=c_enum_const(variants.tag_member.type.name,
|
||||
@ -233,7 +233,7 @@ void visit_type_%(c_name)s(Visitor *m, %(c_name)s **obj, const char *name, Error
|
||||
out_end:
|
||||
error_propagate(errp, err);
|
||||
err = NULL;
|
||||
visit_end_implicit_struct(m, &err);
|
||||
visit_end_implicit_struct(v, &err);
|
||||
out:
|
||||
error_propagate(errp, err);
|
||||
}
|
||||
@ -256,11 +256,11 @@ def gen_visit_union(name, base, variants):
|
||||
|
||||
ret += mcgen('''
|
||||
|
||||
void visit_type_%(c_name)s(Visitor *m, %(c_name)s **obj, const char *name, Error **errp)
|
||||
void visit_type_%(c_name)s(Visitor *v, %(c_name)s **obj, const char *name, Error **errp)
|
||||
{
|
||||
Error *err = NULL;
|
||||
|
||||
visit_start_struct(m, (void **)obj, "%(name)s", name, sizeof(%(c_name)s), &err);
|
||||
visit_start_struct(v, (void **)obj, "%(name)s", name, sizeof(%(c_name)s), &err);
|
||||
if (err) {
|
||||
goto out;
|
||||
}
|
||||
@ -270,7 +270,7 @@ void visit_type_%(c_name)s(Visitor *m, %(c_name)s **obj, const char *name, Error
|
||||
|
||||
if base:
|
||||
ret += mcgen('''
|
||||
visit_type_%(c_name)s_fields(m, obj, &err);
|
||||
visit_type_%(c_name)s_fields(v, obj, &err);
|
||||
if (err) {
|
||||
goto out_obj;
|
||||
}
|
||||
@ -282,11 +282,11 @@ void visit_type_%(c_name)s(Visitor *m, %(c_name)s **obj, const char *name, Error
|
||||
# we pointlessly use a different key for simple unions
|
||||
tag_key = 'type'
|
||||
ret += mcgen('''
|
||||
visit_type_%(c_type)s(m, &(*obj)->%(c_name)s, "%(name)s", &err);
|
||||
visit_type_%(c_type)s(v, &(*obj)->%(c_name)s, "%(name)s", &err);
|
||||
if (err) {
|
||||
goto out_obj;
|
||||
}
|
||||
if (!visit_start_union(m, !!(*obj)->data, &err) || err) {
|
||||
if (!visit_start_union(v, !!(*obj)->data, &err) || err) {
|
||||
goto out_obj;
|
||||
}
|
||||
switch ((*obj)->%(c_name)s) {
|
||||
@ -308,13 +308,13 @@ void visit_type_%(c_name)s(Visitor *m, %(c_name)s **obj, const char *name, Error
|
||||
var.name))
|
||||
if simple_union_type:
|
||||
ret += mcgen('''
|
||||
visit_type_%(c_type)s(m, &(*obj)->%(c_name)s, "data", &err);
|
||||
visit_type_%(c_type)s(v, &(*obj)->%(c_name)s, "data", &err);
|
||||
''',
|
||||
c_type=simple_union_type.c_name(),
|
||||
c_name=c_name(var.name))
|
||||
else:
|
||||
ret += mcgen('''
|
||||
visit_type_implicit_%(c_type)s(m, &(*obj)->%(c_name)s, &err);
|
||||
visit_type_implicit_%(c_type)s(v, &(*obj)->%(c_name)s, &err);
|
||||
''',
|
||||
c_type=var.type.c_name(),
|
||||
c_name=c_name(var.name))
|
||||
@ -329,11 +329,11 @@ void visit_type_%(c_name)s(Visitor *m, %(c_name)s **obj, const char *name, Error
|
||||
out_obj:
|
||||
error_propagate(errp, err);
|
||||
err = NULL;
|
||||
visit_end_union(m, !!(*obj)->data, &err);
|
||||
visit_end_union(v, !!(*obj)->data, &err);
|
||||
error_propagate(errp, err);
|
||||
err = NULL;
|
||||
}
|
||||
visit_end_struct(m, &err);
|
||||
visit_end_struct(v, &err);
|
||||
out:
|
||||
error_propagate(errp, err);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user