qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v6 06/12] qapi: Track owner of each object membe


From: Eric Blake
Subject: Re: [Qemu-devel] [PATCH v6 06/12] qapi: Track owner of each object member
Date: Fri, 2 Oct 2015 16:35:59 -0600
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.2.0

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

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]