qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PULL 36/40] qapi: Prepare new QAPISchemaMember base class


From: Markus Armbruster
Subject: [Qemu-devel] [PULL 36/40] qapi: Prepare new QAPISchemaMember base class
Date: Thu, 17 Dec 2015 09:33:41 +0100

From: Eric Blake <address@hidden>

We want to share some clash detection code between enum values
and object type members.  To assist with that, split off part
of QAPISchemaObjectTypeMember into a new base class
QAPISchemaMember that tracks name, owner, and common clash
detection code; while the former keeps the additional fields
for type and optional flag.

Signed-off-by: Eric Blake <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Markus Armbruster <address@hidden>
---
 scripts/qapi.py | 29 +++++++++++++++++------------
 1 file changed, 17 insertions(+), 12 deletions(-)

diff --git a/scripts/qapi.py b/scripts/qapi.py
index 58ecdf2..168463a 100644
--- a/scripts/qapi.py
+++ b/scripts/qapi.py
@@ -1018,28 +1018,18 @@ class QAPISchemaObjectType(QAPISchemaType):
                                        self.members, self.variants)
 
 
-class QAPISchemaObjectTypeMember(object):
+class QAPISchemaMember(object):
     role = 'member'
 
-    def __init__(self, name, typ, optional):
+    def __init__(self, name):
         assert isinstance(name, str)
-        assert isinstance(typ, str)
-        assert isinstance(optional, bool)
         self.name = name
-        self._type_name = typ
-        self.type = None
-        self.optional = optional
         self.owner = None
 
     def set_owner(self, name):
         assert not self.owner
         self.owner = name
 
-    def check(self, schema):
-        assert self.owner
-        self.type = schema.lookup_type(self._type_name)
-        assert self.type
-
     def check_clash(self, info, seen):
         cname = c_name(self.name)
         if cname in seen:
@@ -1066,6 +1056,21 @@ class QAPISchemaObjectTypeMember(object):
         return "'%s' %s" % (self.name, self._pretty_owner())
 
 
+class QAPISchemaObjectTypeMember(QAPISchemaMember):
+    def __init__(self, name, typ, optional):
+        QAPISchemaMember.__init__(self, name)
+        assert isinstance(typ, str)
+        assert isinstance(optional, bool)
+        self._type_name = typ
+        self.type = None
+        self.optional = optional
+
+    def check(self, schema):
+        assert self.owner
+        self.type = schema.lookup_type(self._type_name)
+        assert self.type
+
+
 class QAPISchemaObjectTypeVariants(object):
     def __init__(self, tag_name, tag_member, variants):
         # Flat unions pass tag_name but not tag_member.
-- 
2.4.3




reply via email to

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