xref: /qemu/tests/qapi-schema/qapi-schema-test.out (revision a17dbc4b79a28ffb9511f192474ffefd88214cde)
1e2bbc4eaSJohn Snowmodule ./builtin
28a84767cSMarkus Armbrusterobject q_empty
31e381b65SMarc-André Lureauenum QType
48a84767cSMarkus Armbruster    prefix QTYPE
51e381b65SMarc-André Lureau    member none
61e381b65SMarc-André Lureau    member qnull
71e381b65SMarc-André Lureau    member qnum
81e381b65SMarc-André Lureau    member qstring
91e381b65SMarc-André Lureau    member qdict
101e381b65SMarc-André Lureau    member qlist
111e381b65SMarc-André Lureau    member qbool
12cf40a0a5SMarkus Armbrustermodule qapi-schema-test.json
138a84767cSMarkus Armbrusterobject TestStruct
148a84767cSMarkus Armbruster    member integer: int optional=False
158a84767cSMarkus Armbruster    member boolean: bool optional=False
168a84767cSMarkus Armbruster    member string: str optional=False
178a84767cSMarkus Armbrusterobject NestedEnumsOne
188a84767cSMarkus Armbruster    member enum1: EnumOne optional=False
198a84767cSMarkus Armbruster    member enum2: EnumOne optional=True
208a84767cSMarkus Armbruster    member enum3: EnumOne optional=False
218a84767cSMarkus Armbruster    member enum4: EnumOne optional=True
221e381b65SMarc-André Lureauenum MyEnum
238a84767cSMarkus Armbrusterobject Empty1
248a84767cSMarkus Armbrusterobject Empty2
258a84767cSMarkus Armbruster    base Empty1
260ced9531SMarkus Armbrusterobject q_obj_Union-base
270ced9531SMarkus Armbruster    member type: EnumOne optional=False
280ced9531SMarkus Armbrusterobject Union
290ced9531SMarkus Armbruster    base q_obj_Union-base
300ced9531SMarkus Armbruster    tag type
310ced9531SMarkus Armbruster    case value1: q_empty
320ced9531SMarkus Armbruster    case value2: q_empty
330ced9531SMarkus Armbruster    case value3: q_empty
340ced9531SMarkus Armbruster    case value4: q_empty
3505ebf841SMarkus Armbrustercommand user-def-cmd0 Empty2 -> Empty2
367b13f2c2SIgor Mammedov    gen=True success_response=True boxed=False oob=False preconfig=False
371e381b65SMarc-André Lureauenum QEnumTwo
388a84767cSMarkus Armbruster    prefix QENUM_TWO
391e381b65SMarc-André Lureau    member value1
401e381b65SMarc-André Lureau    member value2
418a84767cSMarkus Armbrusterobject UserDefOne
428a84767cSMarkus Armbruster    base UserDefZero
438a84767cSMarkus Armbruster    member string: str optional=False
448a84767cSMarkus Armbruster    member enum1: EnumOne optional=True
451e381b65SMarc-André Lureauenum EnumOne
461e381b65SMarc-André Lureau    member value1
471e381b65SMarc-André Lureau    member value2
481e381b65SMarc-André Lureau    member value3
491e381b65SMarc-André Lureau    member value4
508a84767cSMarkus Armbrusterobject UserDefZero
518a84767cSMarkus Armbruster    member integer: int optional=False
528a84767cSMarkus Armbrusterobject UserDefTwoDictDict
538a84767cSMarkus Armbruster    member userdef: UserDefOne optional=False
548a84767cSMarkus Armbruster    member string: str optional=False
558a84767cSMarkus Armbrusterobject UserDefTwoDict
568a84767cSMarkus Armbruster    member string1: str optional=False
578a84767cSMarkus Armbruster    member dict2: UserDefTwoDictDict optional=False
588a84767cSMarkus Armbruster    member dict3: UserDefTwoDictDict optional=True
598a84767cSMarkus Armbrusterobject UserDefTwo
608a84767cSMarkus Armbruster    member string0: str optional=False
618a84767cSMarkus Armbruster    member dict1: UserDefTwoDict optional=False
62967c8851SMarc-André Lureauobject UserDefThree
63967c8851SMarc-André Lureau    member string0: str optional=False
64ca0ac758SMarkus Armbrusterarray UserDefOneList UserDefOne
65ca0ac758SMarkus Armbrusterarray UserDefTwoList UserDefTwo
66ca0ac758SMarkus Armbrusterarray TestStructList TestStruct
678a84767cSMarkus Armbrusterobject ForceArrays
688a84767cSMarkus Armbruster    member unused1: UserDefOneList optional=False
698a84767cSMarkus Armbruster    member unused2: UserDefTwoList optional=False
708a84767cSMarkus Armbruster    member unused3: TestStructList optional=False
718a84767cSMarkus Armbrusterobject UserDefA
728a84767cSMarkus Armbruster    member boolean: bool optional=False
738a84767cSMarkus Armbruster    member a_b: int optional=True
748a84767cSMarkus Armbrusterobject UserDefB
758a84767cSMarkus Armbruster    member intb: int optional=False
768a84767cSMarkus Armbruster    member a-b: bool optional=True
778a84767cSMarkus Armbrusterobject UserDefFlatUnion
788a84767cSMarkus Armbruster    base UserDefUnionBase
798a84767cSMarkus Armbruster    tag enum1
808a84767cSMarkus Armbruster    case value1: UserDefA
818a84767cSMarkus Armbruster    case value2: UserDefB
828a84767cSMarkus Armbruster    case value3: UserDefB
83800877bbSAnton Nefedov    case value4: q_empty
848a84767cSMarkus Armbrusterobject UserDefUnionBase
858a84767cSMarkus Armbruster    base UserDefZero
868a84767cSMarkus Armbruster    member string: str optional=False
878a84767cSMarkus Armbruster    member enum1: EnumOne optional=False
888a84767cSMarkus Armbrusterobject q_obj_UserDefFlatUnion2-base
898a84767cSMarkus Armbruster    member integer: int optional=True
908a84767cSMarkus Armbruster    member string: str optional=False
918a84767cSMarkus Armbruster    member enum1: QEnumTwo optional=False
928a84767cSMarkus Armbrusterobject UserDefFlatUnion2
938a84767cSMarkus Armbruster    base q_obj_UserDefFlatUnion2-base
948a84767cSMarkus Armbruster    tag enum1
958a84767cSMarkus Armbruster    case value1: UserDefC
968a84767cSMarkus Armbruster    case value2: UserDefB
978a84767cSMarkus Armbrusterobject WrapAlternate
988a84767cSMarkus Armbruster    member alt: UserDefAlternate optional=False
998a84767cSMarkus Armbrusteralternate UserDefAlternate
1008a84767cSMarkus Armbruster    tag type
1018a84767cSMarkus Armbruster    case udfu: UserDefFlatUnion
1028a84767cSMarkus Armbruster    case e: EnumOne
1038a84767cSMarkus Armbruster    case i: int
1048a84767cSMarkus Armbruster    case n: null
1058a84767cSMarkus Armbrusterobject UserDefC
1068a84767cSMarkus Armbruster    member string1: str optional=False
1078a84767cSMarkus Armbruster    member string2: str optional=False
108*a17dbc4bSDaniel P. Berrangéenum TestUnionEnum
109*a17dbc4bSDaniel P. Berrangé    member value-a
110*a17dbc4bSDaniel P. Berrangé    member value-b
111*a17dbc4bSDaniel P. Berrangéenum TestUnionEnumA
112*a17dbc4bSDaniel P. Berrangé    member value-a1
113*a17dbc4bSDaniel P. Berrangé    member value-a2
114*a17dbc4bSDaniel P. Berrangéobject TestUnionTypeA1
115*a17dbc4bSDaniel P. Berrangé    member integer: int optional=False
116*a17dbc4bSDaniel P. Berrangé    member name: str optional=False
117*a17dbc4bSDaniel P. Berrangéobject TestUnionTypeA2
118*a17dbc4bSDaniel P. Berrangé    member integer: int optional=False
119*a17dbc4bSDaniel P. Berrangé    member size: int optional=False
120*a17dbc4bSDaniel P. Berrangéobject q_obj_TestUnionTypeA-base
121*a17dbc4bSDaniel P. Berrangé    member type-a: TestUnionEnumA optional=False
122*a17dbc4bSDaniel P. Berrangéobject TestUnionTypeA
123*a17dbc4bSDaniel P. Berrangé    base q_obj_TestUnionTypeA-base
124*a17dbc4bSDaniel P. Berrangé    tag type-a
125*a17dbc4bSDaniel P. Berrangé    case value-a1: TestUnionTypeA1
126*a17dbc4bSDaniel P. Berrangé    case value-a2: TestUnionTypeA2
127*a17dbc4bSDaniel P. Berrangéobject TestUnionTypeB
128*a17dbc4bSDaniel P. Berrangé    member integer: int optional=False
129*a17dbc4bSDaniel P. Berrangé    member onoff: bool optional=False
130*a17dbc4bSDaniel P. Berrangéobject q_obj_TestUnionInUnion-base
131*a17dbc4bSDaniel P. Berrangé    member type: TestUnionEnum optional=False
132*a17dbc4bSDaniel P. Berrangéobject TestUnionInUnion
133*a17dbc4bSDaniel P. Berrangé    base q_obj_TestUnionInUnion-base
134*a17dbc4bSDaniel P. Berrangé    tag type
135*a17dbc4bSDaniel P. Berrangé    case value-a: TestUnionTypeA
136*a17dbc4bSDaniel P. Berrangé    case value-b: TestUnionTypeB
1378168ca8eSMarkus Armbrusteralternate AltEnumBool
1388168ca8eSMarkus Armbruster    tag type
1398168ca8eSMarkus Armbruster    case e: EnumOne
1408168ca8eSMarkus Armbruster    case b: bool
1418168ca8eSMarkus Armbrusteralternate AltEnumNum
1428168ca8eSMarkus Armbruster    tag type
1438168ca8eSMarkus Armbruster    case e: EnumOne
1448168ca8eSMarkus Armbruster    case n: number
1458168ca8eSMarkus Armbrusteralternate AltNumEnum
1468168ca8eSMarkus Armbruster    tag type
1478168ca8eSMarkus Armbruster    case n: number
1488168ca8eSMarkus Armbruster    case e: EnumOne
1498a84767cSMarkus Armbrusteralternate AltEnumInt
1508a84767cSMarkus Armbruster    tag type
1518a84767cSMarkus Armbruster    case e: EnumOne
1528a84767cSMarkus Armbruster    case i: int
15379db9948SPaolo Bonzinialternate AltListInt
15479db9948SPaolo Bonzini    tag type
15579db9948SPaolo Bonzini    case l: intList
15679db9948SPaolo Bonzini    case i: int
157c0644771SMarkus Armbrusteralternate AltStrObj
158da9cb193SEric Blake    tag type
1599c51b441SEric Blake    case s: str
160c0644771SMarkus Armbruster    case o: TestStruct
161dffd8ff9SMarkus Armbrusterobject ArrayStruct
162dffd8ff9SMarkus Armbruster    member integer: intList optional=False
163dffd8ff9SMarkus Armbruster    member s8: int8List optional=False
164dffd8ff9SMarkus Armbruster    member s16: int16List optional=False
165dffd8ff9SMarkus Armbruster    member s32: int32List optional=False
166dffd8ff9SMarkus Armbruster    member s64: int64List optional=False
167dffd8ff9SMarkus Armbruster    member u8: uint8List optional=False
168dffd8ff9SMarkus Armbruster    member u16: uint16List optional=False
169dffd8ff9SMarkus Armbruster    member u32: uint32List optional=False
170dffd8ff9SMarkus Armbruster    member u64: uint64List optional=False
171dffd8ff9SMarkus Armbruster    member number: numberList optional=False
172dffd8ff9SMarkus Armbruster    member boolean: boolList optional=False
173dffd8ff9SMarkus Armbruster    member string: strList optional=False
174dffd8ff9SMarkus Armbruster    member sz: sizeList optional=True
175dffd8ff9SMarkus Armbruster    member any: anyList optional=True
176dffd8ff9SMarkus Armbruster    member user: StatusList optional=True
177709395f8SMarkus Armbrusterinclude include/sub-module.json
17805ebf841SMarkus Armbrustercommand user-def-cmd None -> None
1797b13f2c2SIgor Mammedov    gen=True success_response=True boxed=False oob=False preconfig=False
18005ebf841SMarkus Armbrusterobject q_obj_user-def-cmd1-arg
1818a84767cSMarkus Armbruster    member ud1a: UserDefOne optional=False
18205ebf841SMarkus Armbrustercommand user-def-cmd1 q_obj_user-def-cmd1-arg -> None
1837b13f2c2SIgor Mammedov    gen=True success_response=True boxed=False oob=False preconfig=False
18405ebf841SMarkus Armbrusterobject q_obj_user-def-cmd2-arg
1858a84767cSMarkus Armbruster    member ud1a: UserDefOne optional=False
1868a84767cSMarkus Armbruster    member ud1b: UserDefOne optional=True
18705ebf841SMarkus Armbrustercommand user-def-cmd2 q_obj_user-def-cmd2-arg -> UserDefTwo
1887b13f2c2SIgor Mammedov    gen=True success_response=True boxed=False oob=False preconfig=False
189ae6bf766SMarc-André Lureaucommand cmd-success-response None -> None
190ae6bf766SMarc-André Lureau    gen=True success_response=False boxed=False oob=False preconfig=False
19104f22362SKevin Wolfcommand coroutine-cmd None -> None
19204f22362SKevin Wolf    gen=True success_response=True boxed=False oob=False preconfig=False coroutine=True
1938a84767cSMarkus Armbrusterobject q_obj_guest-get-time-arg
1948a84767cSMarkus Armbruster    member a: int optional=False
1958a84767cSMarkus Armbruster    member b: int optional=True
1968a84767cSMarkus Armbrustercommand guest-get-time q_obj_guest-get-time-arg -> int
1977b13f2c2SIgor Mammedov    gen=True success_response=True boxed=False oob=False preconfig=False
1988a84767cSMarkus Armbrusterobject q_obj_guest-sync-arg
1998a84767cSMarkus Armbruster    member arg: any optional=False
2008a84767cSMarkus Armbrustercommand guest-sync q_obj_guest-sync-arg -> any
2017b13f2c2SIgor Mammedov    gen=True success_response=True boxed=False oob=False preconfig=False
2028a84767cSMarkus Armbrustercommand boxed-struct UserDefZero -> None
2037b13f2c2SIgor Mammedov    gen=True success_response=True boxed=True oob=False preconfig=False
2041e65e16cSMarkus Armbrustercommand boxed-union UserDefFlatUnion -> None
2057b13f2c2SIgor Mammedov    gen=True success_response=True boxed=True oob=False preconfig=False
206675b214bSMarkus Armbrustercommand boxed-empty Empty1 -> None
207675b214bSMarkus Armbruster    gen=True success_response=True boxed=True oob=False preconfig=False
2087b13f2c2SIgor Mammedovcommand test-flags-command None -> None
2097b13f2c2SIgor Mammedov    gen=True success_response=True boxed=False oob=True preconfig=True
210156402e5SMarkus Armbrusterobject UserDefOptions
211156402e5SMarkus Armbruster    member i64: intList optional=True
212156402e5SMarkus Armbruster    member u64: uint64List optional=True
213156402e5SMarkus Armbruster    member u16: uint16List optional=True
214156402e5SMarkus Armbruster    member i64x: int optional=True
215156402e5SMarkus Armbruster    member u64x: uint64 optional=True
2168a84767cSMarkus Armbrusterobject EventStructOne
2178a84767cSMarkus Armbruster    member struct1: UserDefOne optional=False
218156402e5SMarkus Armbruster    member string: str optional=False
2198a84767cSMarkus Armbruster    member enum2: EnumOne optional=True
2208a84767cSMarkus Armbrusterevent EVENT_A None
22148825ca4SEric Blake    boxed=False
2228a84767cSMarkus Armbrusterevent EVENT_B None
2238a84767cSMarkus Armbruster    boxed=False
2247599697cSEric Blakeobject q_obj_EVENT_C-arg
2257599697cSEric Blake    member a: int optional=True
2267599697cSEric Blake    member b: UserDefOne optional=True
2277599697cSEric Blake    member c: str optional=False
2288a84767cSMarkus Armbrusterevent EVENT_C q_obj_EVENT_C-arg
2298a84767cSMarkus Armbruster    boxed=False
2307599697cSEric Blakeobject q_obj_EVENT_D-arg
2317599697cSEric Blake    member a: EventStructOne optional=False
2327599697cSEric Blake    member b: str optional=False
2337599697cSEric Blake    member c: str optional=True
2347599697cSEric Blake    member enum3: EnumOne optional=True
2358a84767cSMarkus Armbrusterevent EVENT_D q_obj_EVENT_D-arg
2368a84767cSMarkus Armbruster    boxed=False
2378a84767cSMarkus Armbrusterevent EVENT_E UserDefZero
2388a84767cSMarkus Armbruster    boxed=True
239b22e8658SMarkus Armbrusterevent EVENT_F UserDefFlatUnion
2408a84767cSMarkus Armbruster    boxed=True
241675b214bSMarkus Armbrusterevent EVENT_G Empty1
242675b214bSMarkus Armbruster    boxed=True
2431e381b65SMarc-André Lureauenum __org.qemu_x-Enum
2441e381b65SMarc-André Lureau    member __org.qemu_x-value
2458a84767cSMarkus Armbrusterobject __org.qemu_x-Base
2468a84767cSMarkus Armbruster    member __org.qemu_x-member1: __org.qemu_x-Enum optional=False
2478a84767cSMarkus Armbrusterobject __org.qemu_x-Struct
2488a84767cSMarkus Armbruster    base __org.qemu_x-Base
2498a84767cSMarkus Armbruster    member __org.qemu_x-member2: str optional=False
2508a84767cSMarkus Armbruster    member wchar-t: int optional=True
251f0325536SMarkus Armbrusteralternate __org.qemu_x-Alt1
252f0325536SMarkus Armbruster    tag type
253f0325536SMarkus Armbruster    case __org.qemu_x-branch: str
254bb5821ddSMarkus Armbrusterarray __org.qemu_x-UnionList __org.qemu_x-Union
2558a84767cSMarkus Armbrusterobject __org.qemu_x-Struct2
256bb5821ddSMarkus Armbruster    member array: __org.qemu_x-UnionList optional=False
257bb5821ddSMarkus Armbrusterobject __org.qemu_x-Union
2588a84767cSMarkus Armbruster    base __org.qemu_x-Base
2598a84767cSMarkus Armbruster    tag __org.qemu_x-member1
2608a84767cSMarkus Armbruster    case __org.qemu_x-value: __org.qemu_x-Struct2
2618a84767cSMarkus Armbrusteralternate __org.qemu_x-Alt
2628a84767cSMarkus Armbruster    tag type
263f0325536SMarkus Armbruster    case __org.qemu_x-branch: __org.qemu_x-Base
2648a84767cSMarkus Armbrusterevent __ORG.QEMU_X-EVENT __org.qemu_x-Struct
2658a84767cSMarkus Armbruster    boxed=False
266ca0ac758SMarkus Armbrusterarray __org.qemu_x-EnumList __org.qemu_x-Enum
267ca0ac758SMarkus Armbrusterarray __org.qemu_x-StructList __org.qemu_x-Struct
2687599697cSEric Blakeobject q_obj___org.qemu_x-command-arg
2697599697cSEric Blake    member a: __org.qemu_x-EnumList optional=False
2707599697cSEric Blake    member b: __org.qemu_x-StructList optional=False
271bb5821ddSMarkus Armbruster    member c: __org.qemu_x-Union optional=False
2727599697cSEric Blake    member d: __org.qemu_x-Alt optional=False
273bb5821ddSMarkus Armbrustercommand __org.qemu_x-command q_obj___org.qemu_x-command-arg -> None
2747b13f2c2SIgor Mammedov    gen=True success_response=True boxed=False oob=False preconfig=False
275967c8851SMarc-André Lureauobject TestIfStruct
276967c8851SMarc-André Lureau    member foo: int optional=False
277ccadd6bcSMarc-André Lureau    member bar: int optional=False
27840e350f0SMarkus Armbruster        if TEST_IF_STRUCT_MEMBER
279fa32eb90SMarkus Armbruster    member baz: str optional=True
280fa32eb90SMarkus Armbruster        if TEST_IF_STRUCT_MEMBER
2818a9f1e1dSMarc-André Lureau    if TEST_IF_STRUCT
2821e381b65SMarc-André Lureauenum TestIfEnum
2831e381b65SMarc-André Lureau    member foo
2841e381b65SMarc-André Lureau    member bar
28540e350f0SMarkus Armbruster        if TEST_IF_ENUM_MEMBER
28639d2cc8eSMarkus Armbruster    if TEST_IF_UNION
28754501863SMarkus Armbrusterobject q_obj_TestIfUnion-base
28854501863SMarkus Armbruster    member type: TestIfEnum optional=False
2899c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_UNION', 'TEST_IF_STRUCT']}
290967c8851SMarc-André Lureauobject TestIfUnion
29154501863SMarkus Armbruster    base q_obj_TestIfUnion-base
292967c8851SMarc-André Lureau    tag type
29354501863SMarkus Armbruster    case foo: TestStruct
29454501863SMarkus Armbruster    case bar: UserDefZero
29540e350f0SMarkus Armbruster        if TEST_IF_ENUM_MEMBER
2969c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_UNION', 'TEST_IF_STRUCT']}
29705ebf841SMarkus Armbrusterobject q_obj_test-if-union-cmd-arg
2985aceeac0SMarkus Armbruster    member union-cmd-arg: TestIfUnion optional=False
2999c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_UNION', 'TEST_IF_STRUCT']}
30005ebf841SMarkus Armbrustercommand test-if-union-cmd q_obj_test-if-union-cmd-arg -> None
301f8c4fdd6SMarc-André Lureau    gen=True success_response=True boxed=False oob=False preconfig=False
3029c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_UNION', 'TEST_IF_STRUCT']}
303967c8851SMarc-André Lureaualternate TestIfAlternate
304967c8851SMarc-André Lureau    tag type
305967c8851SMarc-André Lureau    case foo: int
306967c8851SMarc-André Lureau    case bar: TestStruct
30740e350f0SMarkus Armbruster        if TEST_IF_ALT_MEMBER
3089c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_ALT', 'TEST_IF_STRUCT']}
30905ebf841SMarkus Armbrusterobject q_obj_test-if-alternate-cmd-arg
3105aceeac0SMarkus Armbruster    member alt-cmd-arg: TestIfAlternate optional=False
3119c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_ALT', 'TEST_IF_STRUCT']}
31205ebf841SMarkus Armbrustercommand test-if-alternate-cmd q_obj_test-if-alternate-cmd-arg -> None
313f8c4fdd6SMarc-André Lureau    gen=True success_response=True boxed=False oob=False preconfig=False
3149c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_ALT', 'TEST_IF_STRUCT']}
315de3b3f52SMarkus Armbrustercommand test-if-cmd TestIfStruct -> UserDefThree
316de3b3f52SMarkus Armbruster    gen=True success_response=True boxed=True oob=False preconfig=False
3179c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_CMD', 'TEST_IF_STRUCT']}
31805ebf841SMarkus Armbrustercommand test-cmd-return-def-three None -> UserDefThree
319967c8851SMarc-André Lureau    gen=True success_response=True boxed=False oob=False preconfig=False
320de3b3f52SMarkus Armbrusterevent TEST_IF_EVENT TestIfStruct
321de3b3f52SMarkus Armbruster    boxed=True
3229c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_EVT', 'TEST_IF_STRUCT']}
323dd044023SMarkus Armbrusterevent TEST_IF_EVENT2 None
324dd044023SMarkus Armbruster    boxed=False
3259c629fa8SMarkus Armbruster    if {'not': {'any': [{'not': 'TEST_IF_EVT'}, {'not': 'TEST_IF_STRUCT'}]}}
3268aa3a33eSKevin Wolfobject FeatureStruct0
3278aa3a33eSKevin Wolf    member foo: int optional=False
3288aa3a33eSKevin Wolfobject FeatureStruct1
3298aa3a33eSKevin Wolf    member foo: int optional=False
330f965e8feSMarkus Armbruster        feature deprecated
3318aa3a33eSKevin Wolf    feature feature1
3328aa3a33eSKevin Wolfobject FeatureStruct2
3338aa3a33eSKevin Wolf    member foo: int optional=False
334a3c45b3eSMarkus Armbruster        feature unstable
3358aa3a33eSKevin Wolf    feature feature1
3368aa3a33eSKevin Wolfobject FeatureStruct3
3378aa3a33eSKevin Wolf    member foo: int optional=False
3388aa3a33eSKevin Wolf    feature feature1
3398aa3a33eSKevin Wolf    feature feature2
3408aa3a33eSKevin Wolfobject FeatureStruct4
3418aa3a33eSKevin Wolf    member namespace-test: int optional=False
3428aa3a33eSKevin Wolf    feature namespace-test
3438aa3a33eSKevin Wolf    feature int
3448aa3a33eSKevin Wolf    feature name
3458aa3a33eSKevin Wolf    feature if
3468aa3a33eSKevin Wolfobject CondFeatureStruct1
3478aa3a33eSKevin Wolf    member foo: int optional=False
3488aa3a33eSKevin Wolf    feature feature1
3498a9f1e1dSMarc-André Lureau        if TEST_IF_FEATURE_1
3508aa3a33eSKevin Wolfobject CondFeatureStruct2
3518aa3a33eSKevin Wolf    member foo: int optional=False
3528aa3a33eSKevin Wolf    feature feature1
3538a9f1e1dSMarc-André Lureau        if TEST_IF_FEATURE_1
3548aa3a33eSKevin Wolf    feature feature2
3558a9f1e1dSMarc-André Lureau        if TEST_IF_FEATURE_2
3568aa3a33eSKevin Wolfobject CondFeatureStruct3
3578aa3a33eSKevin Wolf    member foo: int optional=False
3588aa3a33eSKevin Wolf    feature feature1
3599c629fa8SMarkus Armbruster        if {'all': ['TEST_IF_COND_1', 'TEST_IF_COND_2']}
3603ad64edfSMarc-André Lureauobject CondFeatureStruct4
3613ad64edfSMarc-André Lureau    member foo: int optional=False
3623ad64edfSMarc-André Lureau    feature feature1
3639c629fa8SMarkus Armbruster        if {'any': ['TEST_IF_COND_1', 'TEST_IF_COND_2']}
364013b4efcSMarkus Armbrusterenum FeatureEnum1
365013b4efcSMarkus Armbruster    member eins
366013b4efcSMarkus Armbruster    member zwei
367013b4efcSMarkus Armbruster    member drei
368b6c18755SMarkus Armbruster        feature deprecated
369013b4efcSMarkus Armbruster    feature feature1
370013b4efcSMarkus Armbrusterobject q_obj_FeatureUnion1-base
371013b4efcSMarkus Armbruster    member tag: FeatureEnum1 optional=False
372013b4efcSMarkus Armbrusterobject FeatureUnion1
373013b4efcSMarkus Armbruster    base q_obj_FeatureUnion1-base
374013b4efcSMarkus Armbruster    tag tag
375013b4efcSMarkus Armbruster    case eins: FeatureStruct1
376013b4efcSMarkus Armbruster    case zwei: q_empty
377013b4efcSMarkus Armbruster    case drei: q_empty
378013b4efcSMarkus Armbruster    feature feature1
379013b4efcSMarkus Armbrusteralternate FeatureAlternate1
380013b4efcSMarkus Armbruster    tag type
381013b4efcSMarkus Armbruster    case eins: FeatureStruct1
382013b4efcSMarkus Armbruster    feature feature1
383013b4efcSMarkus Armbrusterobject q_obj_test-features0-arg
38491fa93e5SMarkus Armbruster    member fs0: FeatureStruct0 optional=True
38591fa93e5SMarkus Armbruster    member fs1: FeatureStruct1 optional=True
38691fa93e5SMarkus Armbruster    member fs2: FeatureStruct2 optional=True
38791fa93e5SMarkus Armbruster    member fs3: FeatureStruct3 optional=True
38891fa93e5SMarkus Armbruster    member fs4: FeatureStruct4 optional=True
38991fa93e5SMarkus Armbruster    member cfs1: CondFeatureStruct1 optional=True
39091fa93e5SMarkus Armbruster    member cfs2: CondFeatureStruct2 optional=True
39191fa93e5SMarkus Armbruster    member cfs3: CondFeatureStruct3 optional=True
3923ad64edfSMarc-André Lureau    member cfs4: CondFeatureStruct4 optional=True
39391fa93e5SMarkus Armbrustercommand test-features0 q_obj_test-features0-arg -> FeatureStruct1
3942e2e0df2SPeter Krempa    gen=True success_response=True boxed=False oob=False preconfig=False
3952e2e0df2SPeter Krempacommand test-command-features1 None -> None
3962e2e0df2SPeter Krempa    gen=True success_response=True boxed=False oob=False preconfig=False
397f965e8feSMarkus Armbruster    feature deprecated
3982e2e0df2SPeter Krempacommand test-command-features3 None -> None
3992e2e0df2SPeter Krempa    gen=True success_response=True boxed=False oob=False preconfig=False
400a3c45b3eSMarkus Armbruster    feature unstable
4012e2e0df2SPeter Krempa    feature feature1
4022e2e0df2SPeter Krempa    feature feature2
4032e2e0df2SPeter Krempacommand test-command-cond-features1 None -> None
4042e2e0df2SPeter Krempa    gen=True success_response=True boxed=False oob=False preconfig=False
4052e2e0df2SPeter Krempa    feature feature1
4068a9f1e1dSMarc-André Lureau        if TEST_IF_FEATURE_1
4072e2e0df2SPeter Krempacommand test-command-cond-features2 None -> None
4082e2e0df2SPeter Krempa    gen=True success_response=True boxed=False oob=False preconfig=False
4092e2e0df2SPeter Krempa    feature feature1
4108a9f1e1dSMarc-André Lureau        if TEST_IF_FEATURE_1
4112e2e0df2SPeter Krempa    feature feature2
4128a9f1e1dSMarc-André Lureau        if TEST_IF_FEATURE_2
4132e2e0df2SPeter Krempacommand test-command-cond-features3 None -> None
4142e2e0df2SPeter Krempa    gen=True success_response=True boxed=False oob=False preconfig=False
4152e2e0df2SPeter Krempa    feature feature1
4169c629fa8SMarkus Armbruster        if {'all': ['TEST_IF_COND_1', 'TEST_IF_COND_2']}
417d4f4cae8SMarkus Armbrusterevent TEST_EVENT_FEATURES0 FeatureStruct1
418a291a38fSMarkus Armbruster    boxed=False
419d4f4cae8SMarkus Armbrusterevent TEST_EVENT_FEATURES1 None
420013b4efcSMarkus Armbruster    boxed=False
421f965e8feSMarkus Armbruster    feature deprecated
422a3c45b3eSMarkus Armbrusterevent TEST_EVENT_FEATURES2 None
423a3c45b3eSMarkus Armbruster    boxed=False
424a3c45b3eSMarkus Armbruster    feature unstable
4253e7fb581SMarkus Armbrustermodule include/sub-module.json
4263e7fb581SMarkus Armbrusterinclude sub-sub-module.json
4273e7fb581SMarkus Armbrusterobject SecondArrayRef
4283e7fb581SMarkus Armbruster    member s: StatusList optional=False
4293e7fb581SMarkus Armbrustermodule sub-sub-module.json
4303e7fb581SMarkus Armbrusterarray StatusList Status
4313e7fb581SMarkus Armbrusterenum Status
4323e7fb581SMarkus Armbruster    member good
4333e7fb581SMarkus Armbruster    member bad
4343e7fb581SMarkus Armbruster    member ugly
435