On 10/02/2015 11:05 AM, Markus Armbruster wrote: >> Might be doable, but then we'd have to generate the implicit object name >> prior to creating its Member objects (thus splitting >> _make_implicit_object_type() into two parts). > > def _make_implicit_object_type(self, name, role, members): > if not members: > return None > (1) name = ':obj-%s-%s' % (name, role) > if not self.lookup_entity(name, QAPISchemaObjectType): > (2) self._def_entity(QAPISchemaObjectType(name, None, None, > members, None)) > return name > > We create the implicit object type name at (1), and we associate the > type and its members in (2), by creating references from type to > members. Isn't that the natural place for creating back-references, > too? Assuming we need them.
Okay, I don't think we need a backref; a string name is good enough. And I like your idea of making the implicit object name something where the suffix is usable as-is. So I'm currently playing with: class QAPISchemaObjectTypeMember... def __init__... self.owner = None def check... assert self.owner class QAPISchemaObjectType... def __init__(..., members): for m in members: assert isinstance(m, QAPISchemaObjectTypeMember) assert not m.owner m.owner = self.name -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature