xref: /qemu/tests/qapi-schema/qapi-schema-test.out (revision b8eada54b2ad8a7d98d93d5ab4d3e888c5880097)
1e2bbc4eaSJohn Snowmodule ./builtin
28a84767cSMarkus Armbrusterobject q_empty
31e381b65SMarc-André Lureauenum QType
41e381b65SMarc-André Lureau    member none
51e381b65SMarc-André Lureau    member qnull
61e381b65SMarc-André Lureau    member qnum
71e381b65SMarc-André Lureau    member qstring
81e381b65SMarc-André Lureau    member qdict
91e381b65SMarc-André Lureau    member qlist
101e381b65SMarc-André Lureau    member qbool
11cf40a0a5SMarkus Armbrustermodule qapi-schema-test.json
128a84767cSMarkus Armbrusterobject TestStruct
138a84767cSMarkus Armbruster    member integer: int optional=False
148a84767cSMarkus Armbruster    member boolean: bool optional=False
158a84767cSMarkus Armbruster    member string: str optional=False
168a84767cSMarkus Armbrusterobject NestedEnumsOne
178a84767cSMarkus Armbruster    member enum1: EnumOne optional=False
188a84767cSMarkus Armbruster    member enum2: EnumOne optional=True
198a84767cSMarkus Armbruster    member enum3: EnumOne optional=False
208a84767cSMarkus Armbruster    member enum4: EnumOne optional=True
211e381b65SMarc-André Lureauenum MyEnum
228a84767cSMarkus Armbrusterobject Empty1
238a84767cSMarkus Armbrusterobject Empty2
248a84767cSMarkus Armbruster    base Empty1
250ced9531SMarkus Armbrusterobject q_obj_Union-base
260ced9531SMarkus Armbruster    member type: EnumOne optional=False
270ced9531SMarkus Armbrusterobject Union
280ced9531SMarkus Armbruster    base q_obj_Union-base
290ced9531SMarkus Armbruster    tag type
300ced9531SMarkus Armbruster    case value1: q_empty
310ced9531SMarkus Armbruster    case value2: q_empty
320ced9531SMarkus Armbruster    case value3: q_empty
330ced9531SMarkus Armbruster    case value4: q_empty
3405ebf841SMarkus Armbrustercommand user-def-cmd0 Empty2 -> Empty2
357b13f2c2SIgor Mammedov    gen=True success_response=True boxed=False oob=False preconfig=False
361e381b65SMarc-André Lureauenum QEnumTwo
378a84767cSMarkus Armbruster    prefix QENUM_TWO
381e381b65SMarc-André Lureau    member value1
391e381b65SMarc-André Lureau    member value2
408a84767cSMarkus Armbrusterobject UserDefOne
418a84767cSMarkus Armbruster    base UserDefZero
428a84767cSMarkus Armbruster    member string: str optional=False
438a84767cSMarkus Armbruster    member enum1: EnumOne optional=True
441e381b65SMarc-André Lureauenum EnumOne
451e381b65SMarc-André Lureau    member value1
461e381b65SMarc-André Lureau    member value2
471e381b65SMarc-André Lureau    member value3
481e381b65SMarc-André Lureau    member value4
498a84767cSMarkus Armbrusterobject UserDefZero
508a84767cSMarkus Armbruster    member integer: int optional=False
518a84767cSMarkus Armbrusterobject UserDefTwoDictDict
528a84767cSMarkus Armbruster    member userdef: UserDefOne optional=False
538a84767cSMarkus Armbruster    member string: str optional=False
548a84767cSMarkus Armbrusterobject UserDefTwoDict
558a84767cSMarkus Armbruster    member string1: str optional=False
568a84767cSMarkus Armbruster    member dict2: UserDefTwoDictDict optional=False
578a84767cSMarkus Armbruster    member dict3: UserDefTwoDictDict optional=True
588a84767cSMarkus Armbrusterobject UserDefTwo
598a84767cSMarkus Armbruster    member string0: str optional=False
608a84767cSMarkus Armbruster    member dict1: UserDefTwoDict optional=False
61967c8851SMarc-André Lureauobject UserDefThree
62967c8851SMarc-André Lureau    member string0: str optional=False
63ca0ac758SMarkus Armbrusterarray UserDefOneList UserDefOne
64ca0ac758SMarkus Armbrusterarray UserDefTwoList UserDefTwo
65ca0ac758SMarkus Armbrusterarray TestStructList TestStruct
668a84767cSMarkus Armbrusterobject ForceArrays
678a84767cSMarkus Armbruster    member unused1: UserDefOneList optional=False
688a84767cSMarkus Armbruster    member unused2: UserDefTwoList optional=False
698a84767cSMarkus Armbruster    member unused3: TestStructList optional=False
708a84767cSMarkus Armbrusterobject UserDefA
718a84767cSMarkus Armbruster    member boolean: bool optional=False
728a84767cSMarkus Armbruster    member a_b: int optional=True
738a84767cSMarkus Armbrusterobject UserDefB
748a84767cSMarkus Armbruster    member intb: int optional=False
758a84767cSMarkus Armbruster    member a-b: bool optional=True
768a84767cSMarkus Armbrusterobject UserDefFlatUnion
778a84767cSMarkus Armbruster    base UserDefUnionBase
788a84767cSMarkus Armbruster    tag enum1
798a84767cSMarkus Armbruster    case value1: UserDefA
808a84767cSMarkus Armbruster    case value2: UserDefB
818a84767cSMarkus Armbruster    case value3: UserDefB
82800877bbSAnton Nefedov    case value4: q_empty
838a84767cSMarkus Armbrusterobject UserDefUnionBase
848a84767cSMarkus Armbruster    base UserDefZero
858a84767cSMarkus Armbruster    member string: str optional=False
868a84767cSMarkus Armbruster    member enum1: EnumOne optional=False
878a84767cSMarkus Armbrusterobject q_obj_UserDefFlatUnion2-base
888a84767cSMarkus Armbruster    member integer: int optional=True
898a84767cSMarkus Armbruster    member string: str optional=False
908a84767cSMarkus Armbruster    member enum1: QEnumTwo optional=False
918a84767cSMarkus Armbrusterobject UserDefFlatUnion2
928a84767cSMarkus Armbruster    base q_obj_UserDefFlatUnion2-base
938a84767cSMarkus Armbruster    tag enum1
948a84767cSMarkus Armbruster    case value1: UserDefC
958a84767cSMarkus Armbruster    case value2: UserDefB
968a84767cSMarkus Armbrusterobject WrapAlternate
978a84767cSMarkus Armbruster    member alt: UserDefAlternate optional=False
988a84767cSMarkus Armbrusteralternate UserDefAlternate
998a84767cSMarkus Armbruster    tag type
1008a84767cSMarkus Armbruster    case udfu: UserDefFlatUnion
1018a84767cSMarkus Armbruster    case e: EnumOne
1028a84767cSMarkus Armbruster    case i: int
1038a84767cSMarkus Armbruster    case n: null
1048a84767cSMarkus Armbrusterobject UserDefC
1058a84767cSMarkus Armbruster    member string1: str optional=False
1068a84767cSMarkus Armbruster    member string2: str optional=False
107*a17dbc4bSDaniel P. Berrangéenum TestUnionEnum
108*a17dbc4bSDaniel P. Berrangé    member value-a
109*a17dbc4bSDaniel P. Berrangé    member value-b
110*a17dbc4bSDaniel P. Berrangéenum TestUnionEnumA
111*a17dbc4bSDaniel P. Berrangé    member value-a1
112*a17dbc4bSDaniel P. Berrangé    member value-a2
113*a17dbc4bSDaniel P. Berrangéobject TestUnionTypeA1
114*a17dbc4bSDaniel P. Berrangé    member integer: int optional=False
115*a17dbc4bSDaniel P. Berrangé    member name: str optional=False
116*a17dbc4bSDaniel P. Berrangéobject TestUnionTypeA2
117*a17dbc4bSDaniel P. Berrangé    member integer: int optional=False
118*a17dbc4bSDaniel P. Berrangé    member size: int optional=False
119*a17dbc4bSDaniel P. Berrangéobject q_obj_TestUnionTypeA-base
120*a17dbc4bSDaniel P. Berrangé    member type-a: TestUnionEnumA optional=False
121*a17dbc4bSDaniel P. Berrangéobject TestUnionTypeA
122*a17dbc4bSDaniel P. Berrangé    base q_obj_TestUnionTypeA-base
123*a17dbc4bSDaniel P. Berrangé    tag type-a
124*a17dbc4bSDaniel P. Berrangé    case value-a1: TestUnionTypeA1
125*a17dbc4bSDaniel P. Berrangé    case value-a2: TestUnionTypeA2
126*a17dbc4bSDaniel P. Berrangéobject TestUnionTypeB
127*a17dbc4bSDaniel P. Berrangé    member integer: int optional=False
128*a17dbc4bSDaniel P. Berrangé    member onoff: bool optional=False
129*a17dbc4bSDaniel P. Berrangéobject q_obj_TestUnionInUnion-base
130*a17dbc4bSDaniel P. Berrangé    member type: TestUnionEnum optional=False
131*a17dbc4bSDaniel P. Berrangéobject TestUnionInUnion
132*a17dbc4bSDaniel P. Berrangé    base q_obj_TestUnionInUnion-base
133*a17dbc4bSDaniel P. Berrangé    tag type
134*a17dbc4bSDaniel P. Berrangé    case value-a: TestUnionTypeA
135*a17dbc4bSDaniel P. Berrangé    case value-b: TestUnionTypeB
1368168ca8eSMarkus Armbrusteralternate AltEnumBool
1378168ca8eSMarkus Armbruster    tag type
1388168ca8eSMarkus Armbruster    case e: EnumOne
1398168ca8eSMarkus Armbruster    case b: bool
1408168ca8eSMarkus Armbrusteralternate AltEnumNum
1418168ca8eSMarkus Armbruster    tag type
1428168ca8eSMarkus Armbruster    case e: EnumOne
1438168ca8eSMarkus Armbruster    case n: number
1448168ca8eSMarkus Armbrusteralternate AltNumEnum
1458168ca8eSMarkus Armbruster    tag type
1468168ca8eSMarkus Armbruster    case n: number
1478168ca8eSMarkus Armbruster    case e: EnumOne
1488a84767cSMarkus Armbrusteralternate AltEnumInt
1498a84767cSMarkus Armbruster    tag type
1508a84767cSMarkus Armbruster    case e: EnumOne
1518a84767cSMarkus Armbruster    case i: int
15279db9948SPaolo Bonzinialternate AltListInt
15379db9948SPaolo Bonzini    tag type
15479db9948SPaolo Bonzini    case l: intList
15579db9948SPaolo Bonzini    case i: int
156c0644771SMarkus Armbrusteralternate AltStrObj
157da9cb193SEric Blake    tag type
1589c51b441SEric Blake    case s: str
159c0644771SMarkus Armbruster    case o: TestStruct
160dffd8ff9SMarkus Armbrusterobject ArrayStruct
161dffd8ff9SMarkus Armbruster    member integer: intList optional=False
162dffd8ff9SMarkus Armbruster    member s8: int8List optional=False
163dffd8ff9SMarkus Armbruster    member s16: int16List optional=False
164dffd8ff9SMarkus Armbruster    member s32: int32List optional=False
165dffd8ff9SMarkus Armbruster    member s64: int64List optional=False
166dffd8ff9SMarkus Armbruster    member u8: uint8List optional=False
167dffd8ff9SMarkus Armbruster    member u16: uint16List optional=False
168dffd8ff9SMarkus Armbruster    member u32: uint32List optional=False
169dffd8ff9SMarkus Armbruster    member u64: uint64List optional=False
170dffd8ff9SMarkus Armbruster    member number: numberList optional=False
171dffd8ff9SMarkus Armbruster    member boolean: boolList optional=False
172dffd8ff9SMarkus Armbruster    member string: strList optional=False
173dffd8ff9SMarkus Armbruster    member sz: sizeList optional=True
174dffd8ff9SMarkus Armbruster    member any: anyList optional=True
175dffd8ff9SMarkus Armbruster    member user: StatusList optional=True
176709395f8SMarkus Armbrusterinclude include/sub-module.json
17705ebf841SMarkus Armbrustercommand user-def-cmd None -> None
1787b13f2c2SIgor Mammedov    gen=True success_response=True boxed=False oob=False preconfig=False
17905ebf841SMarkus Armbrusterobject q_obj_user-def-cmd1-arg
1808a84767cSMarkus Armbruster    member ud1a: UserDefOne optional=False
18105ebf841SMarkus Armbrustercommand user-def-cmd1 q_obj_user-def-cmd1-arg -> None
1827b13f2c2SIgor Mammedov    gen=True success_response=True boxed=False oob=False preconfig=False
18305ebf841SMarkus Armbrusterobject q_obj_user-def-cmd2-arg
1848a84767cSMarkus Armbruster    member ud1a: UserDefOne optional=False
1858a84767cSMarkus Armbruster    member ud1b: UserDefOne optional=True
18605ebf841SMarkus Armbrustercommand user-def-cmd2 q_obj_user-def-cmd2-arg -> UserDefTwo
1877b13f2c2SIgor Mammedov    gen=True success_response=True boxed=False oob=False preconfig=False
188ae6bf766SMarc-André Lureaucommand cmd-success-response None -> None
189ae6bf766SMarc-André Lureau    gen=True success_response=False boxed=False oob=False preconfig=False
19004f22362SKevin Wolfcommand coroutine-cmd None -> None
19104f22362SKevin Wolf    gen=True success_response=True boxed=False oob=False preconfig=False coroutine=True
1928a84767cSMarkus Armbrusterobject q_obj_guest-get-time-arg
1938a84767cSMarkus Armbruster    member a: int optional=False
1948a84767cSMarkus Armbruster    member b: int optional=True
1958a84767cSMarkus Armbrustercommand guest-get-time q_obj_guest-get-time-arg -> int
1967b13f2c2SIgor Mammedov    gen=True success_response=True boxed=False oob=False preconfig=False
1978a84767cSMarkus Armbrusterobject q_obj_guest-sync-arg
1988a84767cSMarkus Armbruster    member arg: any optional=False
1998a84767cSMarkus Armbrustercommand guest-sync q_obj_guest-sync-arg -> any
2007b13f2c2SIgor Mammedov    gen=True success_response=True boxed=False oob=False preconfig=False
2018a84767cSMarkus Armbrustercommand boxed-struct UserDefZero -> None
2027b13f2c2SIgor Mammedov    gen=True success_response=True boxed=True oob=False preconfig=False
2031e65e16cSMarkus Armbrustercommand boxed-union UserDefFlatUnion -> None
2047b13f2c2SIgor Mammedov    gen=True success_response=True boxed=True oob=False preconfig=False
205675b214bSMarkus Armbrustercommand boxed-empty Empty1 -> None
206675b214bSMarkus Armbruster    gen=True success_response=True boxed=True oob=False preconfig=False
2077b13f2c2SIgor Mammedovcommand test-flags-command None -> None
2087b13f2c2SIgor Mammedov    gen=True success_response=True boxed=False oob=True preconfig=True
209156402e5SMarkus Armbrusterobject UserDefOptions
210156402e5SMarkus Armbruster    member i64: intList optional=True
211156402e5SMarkus Armbruster    member u64: uint64List optional=True
212156402e5SMarkus Armbruster    member u16: uint16List optional=True
213156402e5SMarkus Armbruster    member i64x: int optional=True
214156402e5SMarkus Armbruster    member u64x: uint64 optional=True
2158a84767cSMarkus Armbrusterobject EventStructOne
2168a84767cSMarkus Armbruster    member struct1: UserDefOne optional=False
217156402e5SMarkus Armbruster    member string: str optional=False
2188a84767cSMarkus Armbruster    member enum2: EnumOne optional=True
2198a84767cSMarkus Armbrusterevent EVENT_A None
22048825ca4SEric Blake    boxed=False
2218a84767cSMarkus Armbrusterevent EVENT_B None
2228a84767cSMarkus Armbruster    boxed=False
2237599697cSEric Blakeobject q_obj_EVENT_C-arg
2247599697cSEric Blake    member a: int optional=True
2257599697cSEric Blake    member b: UserDefOne optional=True
2267599697cSEric Blake    member c: str optional=False
2278a84767cSMarkus Armbrusterevent EVENT_C q_obj_EVENT_C-arg
2288a84767cSMarkus Armbruster    boxed=False
2297599697cSEric Blakeobject q_obj_EVENT_D-arg
2307599697cSEric Blake    member a: EventStructOne optional=False
2317599697cSEric Blake    member b: str optional=False
2327599697cSEric Blake    member c: str optional=True
2337599697cSEric Blake    member enum3: EnumOne optional=True
2348a84767cSMarkus Armbrusterevent EVENT_D q_obj_EVENT_D-arg
2358a84767cSMarkus Armbruster    boxed=False
2368a84767cSMarkus Armbrusterevent EVENT_E UserDefZero
2378a84767cSMarkus Armbruster    boxed=True
238b22e8658SMarkus Armbrusterevent EVENT_F UserDefFlatUnion
2398a84767cSMarkus Armbruster    boxed=True
240675b214bSMarkus Armbrusterevent EVENT_G Empty1
241675b214bSMarkus Armbruster    boxed=True
2421e381b65SMarc-André Lureauenum __org.qemu_x-Enum
2431e381b65SMarc-André Lureau    member __org.qemu_x-value
2448a84767cSMarkus Armbrusterobject __org.qemu_x-Base
2458a84767cSMarkus Armbruster    member __org.qemu_x-member1: __org.qemu_x-Enum optional=False
2468a84767cSMarkus Armbrusterobject __org.qemu_x-Struct
2478a84767cSMarkus Armbruster    base __org.qemu_x-Base
2488a84767cSMarkus Armbruster    member __org.qemu_x-member2: str optional=False
2498a84767cSMarkus Armbruster    member wchar-t: int optional=True
250f0325536SMarkus Armbrusteralternate __org.qemu_x-Alt1
251f0325536SMarkus Armbruster    tag type
252f0325536SMarkus Armbruster    case __org.qemu_x-branch: str
253bb5821ddSMarkus Armbrusterarray __org.qemu_x-UnionList __org.qemu_x-Union
2548a84767cSMarkus Armbrusterobject __org.qemu_x-Struct2
255bb5821ddSMarkus Armbruster    member array: __org.qemu_x-UnionList optional=False
256bb5821ddSMarkus Armbrusterobject __org.qemu_x-Union
2578a84767cSMarkus Armbruster    base __org.qemu_x-Base
2588a84767cSMarkus Armbruster    tag __org.qemu_x-member1
2598a84767cSMarkus Armbruster    case __org.qemu_x-value: __org.qemu_x-Struct2
2608a84767cSMarkus Armbrusteralternate __org.qemu_x-Alt
2618a84767cSMarkus Armbruster    tag type
262f0325536SMarkus Armbruster    case __org.qemu_x-branch: __org.qemu_x-Base
2638a84767cSMarkus Armbrusterevent __ORG.QEMU_X-EVENT __org.qemu_x-Struct
2648a84767cSMarkus Armbruster    boxed=False
265ca0ac758SMarkus Armbrusterarray __org.qemu_x-EnumList __org.qemu_x-Enum
266ca0ac758SMarkus Armbrusterarray __org.qemu_x-StructList __org.qemu_x-Struct
2677599697cSEric Blakeobject q_obj___org.qemu_x-command-arg
2687599697cSEric Blake    member a: __org.qemu_x-EnumList optional=False
2697599697cSEric Blake    member b: __org.qemu_x-StructList optional=False
270bb5821ddSMarkus Armbruster    member c: __org.qemu_x-Union optional=False
2717599697cSEric Blake    member d: __org.qemu_x-Alt optional=False
272bb5821ddSMarkus Armbrustercommand __org.qemu_x-command q_obj___org.qemu_x-command-arg -> None
2737b13f2c2SIgor Mammedov    gen=True success_response=True boxed=False oob=False preconfig=False
274967c8851SMarc-André Lureauobject TestIfStruct
275967c8851SMarc-André Lureau    member foo: int optional=False
276ccadd6bcSMarc-André Lureau    member bar: int optional=False
27740e350f0SMarkus Armbruster        if TEST_IF_STRUCT_MEMBER
278fa32eb90SMarkus Armbruster    member baz: str optional=True
279fa32eb90SMarkus Armbruster        if TEST_IF_STRUCT_MEMBER
2808a9f1e1dSMarc-André Lureau    if TEST_IF_STRUCT
2811e381b65SMarc-André Lureauenum TestIfEnum
2821e381b65SMarc-André Lureau    member foo
2831e381b65SMarc-André Lureau    member bar
28440e350f0SMarkus Armbruster        if TEST_IF_ENUM_MEMBER
28539d2cc8eSMarkus Armbruster    if TEST_IF_UNION
28654501863SMarkus Armbrusterobject q_obj_TestIfUnion-base
28754501863SMarkus Armbruster    member type: TestIfEnum optional=False
2889c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_UNION', 'TEST_IF_STRUCT']}
289967c8851SMarc-André Lureauobject TestIfUnion
29054501863SMarkus Armbruster    base q_obj_TestIfUnion-base
291967c8851SMarc-André Lureau    tag type
29254501863SMarkus Armbruster    case foo: TestStruct
29354501863SMarkus Armbruster    case bar: UserDefZero
29440e350f0SMarkus Armbruster        if TEST_IF_ENUM_MEMBER
2959c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_UNION', 'TEST_IF_STRUCT']}
29605ebf841SMarkus Armbrusterobject q_obj_test-if-union-cmd-arg
2975aceeac0SMarkus Armbruster    member union-cmd-arg: TestIfUnion optional=False
2989c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_UNION', 'TEST_IF_STRUCT']}
29905ebf841SMarkus Armbrustercommand test-if-union-cmd q_obj_test-if-union-cmd-arg -> None
300f8c4fdd6SMarc-André Lureau    gen=True success_response=True boxed=False oob=False preconfig=False
3019c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_UNION', 'TEST_IF_STRUCT']}
302967c8851SMarc-André Lureaualternate TestIfAlternate
303967c8851SMarc-André Lureau    tag type
304967c8851SMarc-André Lureau    case foo: int
305967c8851SMarc-André Lureau    case bar: TestStruct
30640e350f0SMarkus Armbruster        if TEST_IF_ALT_MEMBER
3079c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_ALT', 'TEST_IF_STRUCT']}
30805ebf841SMarkus Armbrusterobject q_obj_test-if-alternate-cmd-arg
3095aceeac0SMarkus Armbruster    member alt-cmd-arg: TestIfAlternate optional=False
3109c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_ALT', 'TEST_IF_STRUCT']}
31105ebf841SMarkus Armbrustercommand test-if-alternate-cmd q_obj_test-if-alternate-cmd-arg -> None
312f8c4fdd6SMarc-André Lureau    gen=True success_response=True boxed=False oob=False preconfig=False
3139c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_ALT', 'TEST_IF_STRUCT']}
314de3b3f52SMarkus Armbrustercommand test-if-cmd TestIfStruct -> UserDefThree
315de3b3f52SMarkus Armbruster    gen=True success_response=True boxed=True oob=False preconfig=False
3169c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_CMD', 'TEST_IF_STRUCT']}
31705ebf841SMarkus Armbrustercommand test-cmd-return-def-three None -> UserDefThree
318967c8851SMarc-André Lureau    gen=True success_response=True boxed=False oob=False preconfig=False
319de3b3f52SMarkus Armbrusterevent TEST_IF_EVENT TestIfStruct
320de3b3f52SMarkus Armbruster    boxed=True
3219c629fa8SMarkus Armbruster    if {'all': ['TEST_IF_EVT', 'TEST_IF_STRUCT']}
322dd044023SMarkus Armbrusterevent TEST_IF_EVENT2 None
323dd044023SMarkus Armbruster    boxed=False
3249c629fa8SMarkus Armbruster    if {'not': {'any': [{'not': 'TEST_IF_EVT'}, {'not': 'TEST_IF_STRUCT'}]}}
3258aa3a33eSKevin Wolfobject FeatureStruct0
3268aa3a33eSKevin Wolf    member foo: int optional=False
3278aa3a33eSKevin Wolfobject FeatureStruct1
3288aa3a33eSKevin Wolf    member foo: int optional=False
329f965e8feSMarkus Armbruster        feature deprecated
3308aa3a33eSKevin Wolf    feature feature1
3318aa3a33eSKevin Wolfobject FeatureStruct2
3328aa3a33eSKevin Wolf    member foo: int optional=False
333a3c45b3eSMarkus Armbruster        feature unstable
3348aa3a33eSKevin Wolf    feature feature1
3358aa3a33eSKevin Wolfobject FeatureStruct3
3368aa3a33eSKevin Wolf    member foo: int optional=False
3378aa3a33eSKevin Wolf    feature feature1
3388aa3a33eSKevin Wolf    feature feature2
3398aa3a33eSKevin Wolfobject FeatureStruct4
3408aa3a33eSKevin Wolf    member namespace-test: int optional=False
3418aa3a33eSKevin Wolf    feature namespace-test
3428aa3a33eSKevin Wolf    feature int
3438aa3a33eSKevin Wolf    feature name
3448aa3a33eSKevin Wolf    feature if
3458aa3a33eSKevin Wolfobject CondFeatureStruct1
3468aa3a33eSKevin Wolf    member foo: int optional=False
3478aa3a33eSKevin Wolf    feature feature1
3488a9f1e1dSMarc-André Lureau        if TEST_IF_FEATURE_1
3498aa3a33eSKevin Wolfobject CondFeatureStruct2
3508aa3a33eSKevin Wolf    member foo: int optional=False
3518aa3a33eSKevin Wolf    feature feature1
3528a9f1e1dSMarc-André Lureau        if TEST_IF_FEATURE_1
3538aa3a33eSKevin Wolf    feature feature2
3548a9f1e1dSMarc-André Lureau        if TEST_IF_FEATURE_2
3558aa3a33eSKevin Wolfobject CondFeatureStruct3
3568aa3a33eSKevin Wolf    member foo: int optional=False
3578aa3a33eSKevin Wolf    feature feature1
3589c629fa8SMarkus Armbruster        if {'all': ['TEST_IF_COND_1', 'TEST_IF_COND_2']}
3593ad64edfSMarc-André Lureauobject CondFeatureStruct4
3603ad64edfSMarc-André Lureau    member foo: int optional=False
3613ad64edfSMarc-André Lureau    feature feature1
3629c629fa8SMarkus Armbruster        if {'any': ['TEST_IF_COND_1', 'TEST_IF_COND_2']}
363013b4efcSMarkus Armbrusterenum FeatureEnum1
364013b4efcSMarkus Armbruster    member eins
365013b4efcSMarkus Armbruster    member zwei
366013b4efcSMarkus Armbruster    member drei
367b6c18755SMarkus Armbruster        feature deprecated
368013b4efcSMarkus Armbruster    feature feature1
369013b4efcSMarkus Armbrusterobject q_obj_FeatureUnion1-base
370013b4efcSMarkus Armbruster    member tag: FeatureEnum1 optional=False
371013b4efcSMarkus Armbrusterobject FeatureUnion1
372013b4efcSMarkus Armbruster    base q_obj_FeatureUnion1-base
373013b4efcSMarkus Armbruster    tag tag
374013b4efcSMarkus Armbruster    case eins: FeatureStruct1
375013b4efcSMarkus Armbruster    case zwei: q_empty
376013b4efcSMarkus Armbruster    case drei: q_empty
377013b4efcSMarkus Armbruster    feature feature1
378013b4efcSMarkus Armbrusteralternate FeatureAlternate1
379013b4efcSMarkus Armbruster    tag type
380013b4efcSMarkus Armbruster    case eins: FeatureStruct1
381013b4efcSMarkus Armbruster    feature feature1
382013b4efcSMarkus Armbrusterobject q_obj_test-features0-arg
38391fa93e5SMarkus Armbruster    member fs0: FeatureStruct0 optional=True
38491fa93e5SMarkus Armbruster    member fs1: FeatureStruct1 optional=True
38591fa93e5SMarkus Armbruster    member fs2: FeatureStruct2 optional=True
38691fa93e5SMarkus Armbruster    member fs3: FeatureStruct3 optional=True
38791fa93e5SMarkus Armbruster    member fs4: FeatureStruct4 optional=True
38891fa93e5SMarkus Armbruster    member cfs1: CondFeatureStruct1 optional=True
38991fa93e5SMarkus Armbruster    member cfs2: CondFeatureStruct2 optional=True
39091fa93e5SMarkus Armbruster    member cfs3: CondFeatureStruct3 optional=True
3913ad64edfSMarc-André Lureau    member cfs4: CondFeatureStruct4 optional=True
39291fa93e5SMarkus Armbrustercommand test-features0 q_obj_test-features0-arg -> FeatureStruct1
3932e2e0df2SPeter Krempa    gen=True success_response=True boxed=False oob=False preconfig=False
3942e2e0df2SPeter Krempacommand test-command-features1 None -> None
3952e2e0df2SPeter Krempa    gen=True success_response=True boxed=False oob=False preconfig=False
396f965e8feSMarkus Armbruster    feature deprecated
3972e2e0df2SPeter Krempacommand test-command-features3 None -> None
3982e2e0df2SPeter Krempa    gen=True success_response=True boxed=False oob=False preconfig=False
399a3c45b3eSMarkus Armbruster    feature unstable
4002e2e0df2SPeter Krempa    feature feature1
4012e2e0df2SPeter Krempa    feature feature2
4022e2e0df2SPeter Krempacommand test-command-cond-features1 None -> None
4032e2e0df2SPeter Krempa    gen=True success_response=True boxed=False oob=False preconfig=False
4042e2e0df2SPeter Krempa    feature feature1
4058a9f1e1dSMarc-André Lureau        if TEST_IF_FEATURE_1
4062e2e0df2SPeter Krempacommand test-command-cond-features2 None -> None
4072e2e0df2SPeter Krempa    gen=True success_response=True boxed=False oob=False preconfig=False
4082e2e0df2SPeter Krempa    feature feature1
4098a9f1e1dSMarc-André Lureau        if TEST_IF_FEATURE_1
4102e2e0df2SPeter Krempa    feature feature2
4118a9f1e1dSMarc-André Lureau        if TEST_IF_FEATURE_2
4122e2e0df2SPeter Krempacommand test-command-cond-features3 None -> None
4132e2e0df2SPeter Krempa    gen=True success_response=True boxed=False oob=False preconfig=False
4142e2e0df2SPeter Krempa    feature feature1
4159c629fa8SMarkus Armbruster        if {'all': ['TEST_IF_COND_1', 'TEST_IF_COND_2']}
416d4f4cae8SMarkus Armbrusterevent TEST_EVENT_FEATURES0 FeatureStruct1
417a291a38fSMarkus Armbruster    boxed=False
418d4f4cae8SMarkus Armbrusterevent TEST_EVENT_FEATURES1 None
419013b4efcSMarkus Armbruster    boxed=False
420f965e8feSMarkus Armbruster    feature deprecated
421a3c45b3eSMarkus Armbrusterevent TEST_EVENT_FEATURES2 None
422a3c45b3eSMarkus Armbruster    boxed=False
423a3c45b3eSMarkus Armbruster    feature unstable
4243e7fb581SMarkus Armbrustermodule include/sub-module.json
4253e7fb581SMarkus Armbrusterinclude sub-sub-module.json
4263e7fb581SMarkus Armbrusterobject SecondArrayRef
4273e7fb581SMarkus Armbruster    member s: StatusList optional=False
4283e7fb581SMarkus Armbrustermodule sub-sub-module.json
4293e7fb581SMarkus Armbrusterarray StatusList Status
4303e7fb581SMarkus Armbrusterenum Status
4313e7fb581SMarkus Armbruster    member good
4323e7fb581SMarkus Armbruster    member bad
4333e7fb581SMarkus Armbruster    member ugly
434