Marc-André Lureau <marcandre.lur...@redhat.com> writes: > Wrap generated code with #if/#endif using the ifcond_decorator. > > Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com>
In my testing, this generates repeated conditionals, e.g. diff -rup qapi-gen-24-dc1833e3fb/test-qapi-types.c qapi-gen-27-9600b4638d/test-qapi-types.c --- qapi-gen-24-dc1833e3fb/test-qapi-types.c 2017-09-06 12:02:33.440375590 +0200 +++ qapi-gen-27-9600b4638d/test-qapi-types.c 2017-09-06 12:55:08.709973386 +0200 @@ -178,6 +178,12 @@ const QEnumLookup QEnumTwo_lookup = { .size = QENUM_TWO__MAX }; +#if defined(TEST_IF_ALT) && defined(TEST_IF_STRUCT) + + +#if defined(TEST_IF_ALT) && defined(TEST_IF_STRUCT) + + void qapi_free_TestIfAlternate(TestIfAlternate *obj) { Visitor *v; @@ -191,6 +197,15 @@ void qapi_free_TestIfAlternate(TestIfAlt visit_free(v); } +#endif /* defined(TEST_IF_ALT) && defined(TEST_IF_STRUCT) */ + + +#endif /* defined(TEST_IF_ALT) && defined(TEST_IF_STRUCT) */ + + and diff -rup qapi-gen-24-dc1833e3fb/test-qapi-types.h qapi-gen-27-9600b4638d/test-qapi-types.h --- qapi-gen-24-dc1833e3fb/test-qapi-types.h 2017-09-06 12:02:27.386461287 +0200 +++ qapi-gen-27-9600b4638d/test-qapi-types.h 2017-09-06 12:55:02.365062236 +0200 [...] @@ -486,6 +498,9 @@ struct NestedEnumsOne { void qapi_free_NestedEnumsOne(NestedEnumsOne *obj); +#if defined(TEST_IF_ALT) && defined(TEST_IF_STRUCT) + + struct TestIfAlternate { QType type; union { /* union tag is @type */ @@ -494,18 +509,42 @@ struct TestIfAlternate { } u; }; +#if defined(TEST_IF_ALT) && defined(TEST_IF_STRUCT) + + void qapi_free_TestIfAlternate(TestIfAlternate *obj); +#endif /* defined(TEST_IF_ALT) && defined(TEST_IF_STRUCT) */ + + +#endif /* defined(TEST_IF_ALT) && defined(TEST_IF_STRUCT) */ + + Let's ignore this until we've made up our mind *how* to best generate conditionals.