qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PATCH RFC 5/5] Revert "qapi: allow override of default enu


From: Markus Armbruster
Subject: [Qemu-devel] [PATCH RFC 5/5] Revert "qapi: allow override of default enum prefix naming"
Date: Thu, 5 Nov 2015 16:30:02 +0100

This reverts commit 351d36e454cddc67a1675740916636a7ccbf1c4b.

The previous commit removed the feature's lone user.  The common name
mangling should do going forward.

Conflicts:
        docs/qapi-code-gen.txt
        scripts/qapi-types.py
        scripts/qapi.py
        tests/Makefile
        tests/qapi-schema/qapi-schema-test.out

Signed-off-by: Markus Armbruster <address@hidden>
---
 docs/qapi-code-gen.txt                  |  9 --------
 scripts/qapi-introspect.py              |  2 +-
 scripts/qapi-types.py                   |  6 +++---
 scripts/qapi-visit.py                   |  2 +-
 scripts/qapi.py                         | 37 ++++++++++++---------------------
 tests/Makefile                          |  1 -
 tests/qapi-schema/enum-bad-prefix.err   |  1 -
 tests/qapi-schema/enum-bad-prefix.exit  |  1 -
 tests/qapi-schema/enum-bad-prefix.json  |  2 --
 tests/qapi-schema/enum-bad-prefix.out   |  0
 tests/qapi-schema/qapi-schema-test.json |  5 -----
 tests/qapi-schema/qapi-schema-test.out  |  2 --
 tests/qapi-schema/test-qapi.py          |  4 +---
 13 files changed, 19 insertions(+), 53 deletions(-)
 delete mode 100644 tests/qapi-schema/enum-bad-prefix.err
 delete mode 100644 tests/qapi-schema/enum-bad-prefix.exit
 delete mode 100644 tests/qapi-schema/enum-bad-prefix.json
 delete mode 100644 tests/qapi-schema/enum-bad-prefix.out

diff --git a/docs/qapi-code-gen.txt b/docs/qapi-code-gen.txt
index 24ab324..01b52de 100644
--- a/docs/qapi-code-gen.txt
+++ b/docs/qapi-code-gen.txt
@@ -245,7 +245,6 @@ both fields like this:
 === Enumeration types ===
 
 Usage: { 'enum': STRING, 'data': ARRAY-OF-STRING }
-       { 'enum': STRING, '*prefix': STRING, 'data': ARRAY-OF-STRING }
 
 An enumeration type is a dictionary containing a single 'data' key
 whose value is a list of strings.  An example enumeration is:
@@ -257,14 +256,6 @@ useful.  The list of strings should be lower case; if an 
enum name
 represents multiple words, use '-' between words.  The string 'max' is
 not allowed as an enum value, and values should not be repeated.
 
-FIXME obsolete, rewrite
-The enum constants will be named by using a heuristic to turn the
-type name into a set of underscore separated words. For the example
-above, 'MyEnum' will turn into 'MY_ENUM' giving a constant name
-of 'MY_ENUM_VALUE1' for the first value. If the default heuristic
-does not result in a desirable name, the optional 'prefix' field
-can be used when defining the enum.
-
 The enumeration values are passed as strings over the Client JSON
 Protocol, but are encoded as C enum integral values in generated code.
 While the C code starts numbering at 0, it is better to use explicit
diff --git a/scripts/qapi-introspect.py b/scripts/qapi-introspect.py
index 64f2cd0..f693c49 100644
--- a/scripts/qapi-introspect.py
+++ b/scripts/qapi-introspect.py
@@ -134,7 +134,7 @@ const char %(c_name)s[] = %(c_string)s;
     def visit_builtin_type(self, name, info, json_type):
         self._gen_json(name, 'builtin', {'json-type': json_type})
 
-    def visit_enum_type(self, name, info, values, prefix):
+    def visit_enum_type(self, name, info, values):
         self._gen_json(name, 'enum', {'values': values})
 
     def visit_array_type(self, name, info, element_type):
diff --git a/scripts/qapi-types.py b/scripts/qapi-types.py
index 2f2f7df..247ea4f 100644
--- a/scripts/qapi-types.py
+++ b/scripts/qapi-types.py
@@ -232,9 +232,9 @@ class QAPISchemaGenTypeVisitor(QAPISchemaVisitor):
         self.decl += gen_type_cleanup_decl(name)
         self.defn += gen_type_cleanup(name)
 
-    def visit_enum_type(self, name, info, values, prefix):
-        self._fwdecl += gen_enum(name, values, prefix)
-        self._fwdefn += gen_enum_lookup(name, values, prefix)
+    def visit_enum_type(self, name, info, values):
+        self._fwdecl += gen_enum(name, values)
+        self._fwdefn += gen_enum_lookup(name, values)
 
     def visit_array_type(self, name, info, element_type):
         if isinstance(element_type, QAPISchemaBuiltinType):
diff --git a/scripts/qapi-visit.py b/scripts/qapi-visit.py
index 94cd113..a8b3cd7 100644
--- a/scripts/qapi-visit.py
+++ b/scripts/qapi-visit.py
@@ -346,7 +346,7 @@ class QAPISchemaGenVisitVisitor(QAPISchemaVisitor):
         return not (entity.is_implicit() and
                     isinstance(entity, QAPISchemaObjectType))
 
-    def visit_enum_type(self, name, info, values, prefix):
+    def visit_enum_type(self, name, info, values):
         self.decl += gen_visit_decl(name, scalar=True)
         self.defn += gen_visit_enum(name)
 
diff --git a/scripts/qapi.py b/scripts/qapi.py
index 8e935d7..e761e33 100644
--- a/scripts/qapi.py
+++ b/scripts/qapi.py
@@ -666,15 +666,11 @@ def check_alternate(expr, expr_info):
 def check_enum(expr, expr_info):
     name = expr['enum']
     members = expr.get('data')
-    prefix = expr.get('prefix')
     values = {'MAX': '(automatic)'}
 
     if not isinstance(members, list):
         raise QAPIExprError(expr_info,
                             "Enum '%s' requires an array for 'data'" % name)
-    if prefix is not None and not isinstance(prefix, str):
-        raise QAPIExprError(expr_info,
-                            "Enum '%s' requires a string for 'prefix'" % name)
     for member in members:
         check_name(expr_info, "Member of enum '%s'" % name, member,
                    enum_member=True)
@@ -732,7 +728,7 @@ def check_exprs(exprs):
         expr = expr_elem['expr']
         info = expr_elem['info']
         if 'enum' in expr:
-            check_keys(expr_elem, 'enum', ['data'], ['prefix'])
+            check_keys(expr_elem, 'enum', ['data'])
             add_enum(expr['enum'], info, expr['data'])
         elif 'union' in expr:
             check_keys(expr_elem, 'union', ['data'],
@@ -831,7 +827,7 @@ class QAPISchemaVisitor(object):
     def visit_builtin_type(self, name, info, json_type):
         pass
 
-    def visit_enum_type(self, name, info, values, prefix):
+    def visit_enum_type(self, name, info, values):
         pass
 
     def visit_array_type(self, name, info, element_type):
@@ -904,13 +900,11 @@ class QAPISchemaBuiltinType(QAPISchemaType):
 
 
 class QAPISchemaEnumType(QAPISchemaType):
-    def __init__(self, name, info, values, prefix):
+    def __init__(self, name, info, values):
         QAPISchemaType.__init__(self, name, info)
         for v in values:
             assert isinstance(v, str)
-        assert prefix is None or isinstance(prefix, str)
         self.values = values
-        self.prefix = prefix
 
     def check(self, schema):
         assert len(set(self.values)) == len(self.values)
@@ -923,15 +917,13 @@ class QAPISchemaEnumType(QAPISchemaType):
         return c_name(self.name)
 
     def c_null(self):
-        return c_enum_const(self.name, (self.values + ['MAX'])[0],
-                            self.prefix)
+        return c_enum_const(self.name, (self.values + ['MAX'])[0])
 
     def json_type(self):
         return 'string'
 
     def visit(self, visitor):
-        visitor.visit_enum_type(self.name, self.info,
-                                self.values, self.prefix)
+        visitor.visit_enum_type(self.name, self.info, self.values)
 
 
 class QAPISchemaArrayType(QAPISchemaType):
@@ -1209,7 +1201,7 @@ class QAPISchema(object):
 
     def _make_implicit_enum_type(self, name, info, values):
         name = name + 'Kind'   # Use namespace reserved by add_name()
-        self._def_entity(QAPISchemaEnumType(name, info, values, None))
+        self._def_entity(QAPISchemaEnumType(name, info, values))
         return name
 
     def _make_array_type(self, element_type, info):
@@ -1230,8 +1222,7 @@ class QAPISchema(object):
     def _def_enum_type(self, expr, info):
         name = expr['enum']
         data = expr['data']
-        prefix = expr.get('prefix')
-        self._def_entity(QAPISchemaEnumType(name, info, data, prefix))
+        self._def_entity(QAPISchemaEnumType(name, info, data))
 
     def _make_member(self, name, typ, info):
         optional = False
@@ -1362,9 +1353,7 @@ class QAPISchema(object):
 # Code generation helpers
 #
 
-def c_enum_const(type_name, const_name, prefix=None):
-    if prefix is not None:
-        type_name = prefix
+def c_enum_const(type_name, const_name):
     return c_name(type_name + '_' + const_name)
 
 c_name_trans = string.maketrans('.-', '__')
@@ -1477,20 +1466,20 @@ def guardend(name):
                  name=guardname(name))
 
 
-def gen_enum_lookup(name, values, prefix=None):
+def gen_enum_lookup(name, values):
     ret = mcgen('''
 
 const char *const %(c_name)s_lookup[] = {
 ''',
                 c_name=c_name(name))
     for value in values:
-        index = c_enum_const(name, value, prefix)
+        index = c_enum_const(name, value)
         ret += mcgen('''
     [%(index)s] = "%(value)s",
 ''',
                      index=index, value=value)
 
-    max_index = c_enum_const(name, 'MAX', prefix)
+    max_index = c_enum_const(name, 'MAX')
     ret += mcgen('''
     [%(max_index)s] = NULL,
 };
@@ -1499,7 +1488,7 @@ const char *const %(c_name)s_lookup[] = {
     return ret
 
 
-def gen_enum(name, values, prefix=None):
+def gen_enum(name, values):
     # append automatically generated _MAX value
     enum_values = values + ['MAX']
 
@@ -1514,7 +1503,7 @@ typedef enum %(c_name)s {
         ret += mcgen('''
     %(c_enum)s = %(i)d,
 ''',
-                     c_enum=c_enum_const(name, value, prefix),
+                     c_enum=c_enum_const(name, value),
                      i=i)
         i += 1
 
diff --git a/tests/Makefile b/tests/Makefile
index 92969e8..1c8c8bf 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -259,7 +259,6 @@ qapi-schema += double-type.json
 qapi-schema += duplicate-key.json
 qapi-schema += empty.json
 qapi-schema += enum-bad-name.json
-qapi-schema += enum-bad-prefix.json
 qapi-schema += enum-clash-member.json
 qapi-schema += enum-dict-member.json
 qapi-schema += enum-int-member.json
diff --git a/tests/qapi-schema/enum-bad-prefix.err 
b/tests/qapi-schema/enum-bad-prefix.err
deleted file mode 100644
index 399f5f7..0000000
--- a/tests/qapi-schema/enum-bad-prefix.err
+++ /dev/null
@@ -1 +0,0 @@
-tests/qapi-schema/enum-bad-prefix.json:2: Enum 'MyEnum' requires a string for 
'prefix'
diff --git a/tests/qapi-schema/enum-bad-prefix.exit 
b/tests/qapi-schema/enum-bad-prefix.exit
deleted file mode 100644
index d00491f..0000000
--- a/tests/qapi-schema/enum-bad-prefix.exit
+++ /dev/null
@@ -1 +0,0 @@
-1
diff --git a/tests/qapi-schema/enum-bad-prefix.json 
b/tests/qapi-schema/enum-bad-prefix.json
deleted file mode 100644
index 996f628..0000000
--- a/tests/qapi-schema/enum-bad-prefix.json
+++ /dev/null
@@ -1,2 +0,0 @@
-# The prefix must be a string type
-{ 'enum': 'MyEnum', 'data': [ 'one' ], 'prefix': [ 'fish' ] }
diff --git a/tests/qapi-schema/enum-bad-prefix.out 
b/tests/qapi-schema/enum-bad-prefix.out
deleted file mode 100644
index e69de29..0000000
diff --git a/tests/qapi-schema/qapi-schema-test.json 
b/tests/qapi-schema/qapi-schema-test.json
index 44638da..3b53b6a 100644
--- a/tests/qapi-schema/qapi-schema-test.json
+++ b/tests/qapi-schema/qapi-schema-test.json
@@ -18,11 +18,6 @@
 { 'struct': 'Empty1', 'data': { } }
 { 'struct': 'Empty2', 'base': 'Empty1', 'data': { } }
 
-# for testing override of default naming heuristic
-{ 'enum': 'QEnumTwo',
-  'prefix': 'QENUM_TWO',
-  'data': [ 'value1', 'value2' ] }
-
 # for testing nested structs
 { 'struct': 'UserDefOne',
   'base': 'UserDefZero',        # intentional forward reference
diff --git a/tests/qapi-schema/qapi-schema-test.out 
b/tests/qapi-schema/qapi-schema-test.out
index 786024e..41e87dd 100644
--- a/tests/qapi-schema/qapi-schema-test.out
+++ b/tests/qapi-schema/qapi-schema-test.out
@@ -99,8 +99,6 @@ object NestedEnumsOne
     member enum2: EnumOne optional=True
     member enum3: EnumOne optional=False
     member enum4: EnumOne optional=True
-enum QEnumTwo ['value1', 'value2']
-    prefix QENUM_TWO
 object TestStruct
     member integer: int optional=False
     member boolean: bool optional=False
diff --git a/tests/qapi-schema/test-qapi.py b/tests/qapi-schema/test-qapi.py
index 649677e..4602da7 100644
--- a/tests/qapi-schema/test-qapi.py
+++ b/tests/qapi-schema/test-qapi.py
@@ -17,10 +17,8 @@ import sys
 
 
 class QAPISchemaTestVisitor(QAPISchemaVisitor):
-    def visit_enum_type(self, name, info, values, prefix):
+    def visit_enum_type(self, name, info, values):
         print 'enum %s %s' % (name, values)
-        if prefix:
-            print '    prefix %s' % prefix
 
     def visit_object_type(self, name, info, base, members, variants):
         print 'object %s' % name
-- 
2.4.3




reply via email to

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