|
@@ -68,6 +68,7 @@
|
|
# TypedDict constructs, so they are broadly typed here as simple
|
|
# TypedDict constructs, so they are broadly typed here as simple
|
|
# Python Dicts.
|
|
# Python Dicts.
|
|
SchemaInfo = Dict[str, object]
|
|
SchemaInfo = Dict[str, object]
|
|
|
|
+SchemaInfoEnumMember = Dict[str, object]
|
|
SchemaInfoObject = Dict[str, object]
|
|
SchemaInfoObject = Dict[str, object]
|
|
SchemaInfoObjectVariant = Dict[str, object]
|
|
SchemaInfoObjectVariant = Dict[str, object]
|
|
SchemaInfoObjectMember = Dict[str, object]
|
|
SchemaInfoObjectMember = Dict[str, object]
|
|
@@ -274,8 +275,16 @@ def _gen_tree(self, name: str, mtype: str, obj: Dict[str, object],
|
|
obj['features'] = self._gen_features(features)
|
|
obj['features'] = self._gen_features(features)
|
|
self._trees.append(Annotated(obj, ifcond, comment))
|
|
self._trees.append(Annotated(obj, ifcond, comment))
|
|
|
|
|
|
- def _gen_member(self, member: QAPISchemaObjectTypeMember
|
|
|
|
- ) -> Annotated[SchemaInfoObjectMember]:
|
|
|
|
|
|
+ @staticmethod
|
|
|
|
+ def _gen_enum_member(member: QAPISchemaEnumMember
|
|
|
|
+ ) -> Annotated[SchemaInfoEnumMember]:
|
|
|
|
+ obj: SchemaInfoEnumMember = {
|
|
|
|
+ 'name': member.name,
|
|
|
|
+ }
|
|
|
|
+ return Annotated(obj, member.ifcond)
|
|
|
|
+
|
|
|
|
+ def _gen_object_member(self, member: QAPISchemaObjectTypeMember
|
|
|
|
+ ) -> Annotated[SchemaInfoObjectMember]:
|
|
obj: SchemaInfoObjectMember = {
|
|
obj: SchemaInfoObjectMember = {
|
|
'name': member.name,
|
|
'name': member.name,
|
|
'type': self._use_type(member.type)
|
|
'type': self._use_type(member.type)
|
|
@@ -305,7 +314,8 @@ def visit_enum_type(self, name: str, info: Optional[QAPISourceInfo],
|
|
prefix: Optional[str]) -> None:
|
|
prefix: Optional[str]) -> None:
|
|
self._gen_tree(
|
|
self._gen_tree(
|
|
name, 'enum',
|
|
name, 'enum',
|
|
- {'values': [Annotated(m.name, m.ifcond) for m in members]},
|
|
|
|
|
|
+ {'members': [self._gen_enum_member(m) for m in members],
|
|
|
|
+ 'values': [Annotated(m.name, m.ifcond) for m in members]},
|
|
ifcond, features
|
|
ifcond, features
|
|
)
|
|
)
|
|
|
|
|
|
@@ -322,7 +332,7 @@ def visit_object_type_flat(self, name: str, info: Optional[QAPISourceInfo],
|
|
members: List[QAPISchemaObjectTypeMember],
|
|
members: List[QAPISchemaObjectTypeMember],
|
|
variants: Optional[QAPISchemaVariants]) -> None:
|
|
variants: Optional[QAPISchemaVariants]) -> None:
|
|
obj: SchemaInfoObject = {
|
|
obj: SchemaInfoObject = {
|
|
- 'members': [self._gen_member(m) for m in members]
|
|
|
|
|
|
+ 'members': [self._gen_object_member(m) for m in members]
|
|
}
|
|
}
|
|
if variants:
|
|
if variants:
|
|
obj['tag'] = variants.tag_member.name
|
|
obj['tag'] = variants.tag_member.name
|