from .common import (
c_enum_const,
c_name,
- gen_endif,
- gen_if,
indent,
mcgen,
)
-from .gen import QAPISchemaModularCVisitor, ifcontext
+from .gen import QAPISchemaModularCVisitor, gen_special_features, ifcontext
from .schema import (
QAPISchema,
QAPISchemaEnumMember,
c_type=base.c_name())
for memb in members:
- deprecated = 'deprecated' in [f.name for f in memb.features]
- ret += gen_if(memb.ifcond.ifcond)
+ ret += memb.ifcond.gen_if()
if memb.optional:
ret += mcgen('''
if (visit_optional(v, "%(name)s", &obj->has_%(c_name)s)) {
''',
name=memb.name, c_name=c_name(memb.name))
indent.increase()
- if deprecated:
+ special_features = gen_special_features(memb.features)
+ if special_features != '0':
ret += mcgen('''
- if (!visit_deprecated_accept(v, "%(name)s", errp)) {
+ if (visit_policy_reject(v, "%(name)s", %(special_features)s, errp)) {
return false;
}
- if (visit_deprecated(v, "%(name)s")) {
+ if (!visit_policy_skip(v, "%(name)s", %(special_features)s)) {
''',
- name=memb.name)
+ name=memb.name, special_features=special_features)
indent.increase()
ret += mcgen('''
if (!visit_type_%(c_type)s(v, "%(name)s", &obj->%(c_name)s, errp)) {
''',
c_type=memb.type.c_name(), name=memb.name,
c_name=c_name(memb.name))
- if deprecated:
+ if special_features != '0':
indent.decrease()
ret += mcgen('''
}
ret += mcgen('''
}
''')
- ret += gen_endif(memb.ifcond.ifcond)
+ ret += memb.ifcond.gen_endif()
if variants:
tag_member = variants.tag_member
for var in variants.variants:
case_str = c_enum_const(tag_member.type.name, var.name,
tag_member.type.prefix)
- ret += gen_if(var.ifcond.ifcond)
+ ret += var.ifcond.gen_if()
if var.type.name == 'q_empty':
# valid variant and nothing to do
ret += mcgen('''
case=case_str,
c_type=var.type.c_name(), c_name=c_name(var.name))
- ret += gen_endif(var.ifcond.ifcond)
+ ret += var.ifcond.gen_endif()
ret += mcgen('''
default:
abort();
c_name=c_name(name))
for var in variants.variants:
- ret += gen_if(var.ifcond.ifcond)
+ ret += var.ifcond.gen_if()
ret += mcgen('''
case %(case)s:
''',
ret += mcgen('''
break;
''')
- ret += gen_endif(var.ifcond.ifcond)
+ ret += var.ifcond.gen_endif()
ret += mcgen('''
case QTYPE_NONE: