[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
- [Qemu-devel] [PATCH v9 04/27] qapi: Simplify error testing in test-qmp-*, (continued)
[Qemu-devel] [PATCH v9 21/27] qapi: Factor out QAPISchemaObjectType.check_clash(), Eric Blake, 2015/11/04
- [Qemu-devel] [PATCH RFC 0/5] qapi: Use common name mangling for enumeration constants, Markus Armbruster, 2015/11/05
- [Qemu-devel] [PATCH RFC 1/5] qapi: Generate a sed script to help eliminate camel_to_upper(), Markus Armbruster, 2015/11/05
- [Qemu-devel] [PATCH RFC 2/5] Revert "qapi: Generate a sed script to help eliminate camel_to_upper()", Markus Armbruster, 2015/11/05
- [Qemu-devel] [PATCH RFC 4/5] crypto: Drop name mangling override, Markus Armbruster, 2015/11/05
- [Qemu-devel] [PATCH RFC 5/5] Revert "qapi: allow override of default enum prefix naming",
Markus Armbruster <=
- [Qemu-devel] [PATCH RFC 3/5] qapi: Use common name mangling for enumeration constants, Markus Armbruster, 2015/11/05
- Re: [Qemu-devel] [PATCH RFC 3/5] qapi: Use common name mangling for enumeration constants, Daniel P. Berrange, 2015/11/05
- Re: [Qemu-devel] [PATCH RFC 3/5] qapi: Use common name mangling for enumeration constants, Eric Blake, 2015/11/05
- Re: [Qemu-devel] [PATCH RFC 3/5] qapi: Use common name mangling for enumeration constants, Eric Blake, 2015/11/05
- Re: [Qemu-devel] [PATCH RFC 3/5] qapi: Use common name mangling for enumeration constants, Markus Armbruster, 2015/11/06
- Re: [Qemu-devel] [PATCH RFC 3/5] qapi: Use common name mangling for enumeration constants, Markus Armbruster, 2015/11/06
- [Qemu-devel] What to do about QAPI naming convention violations (was: [PATCH RFC 3/5] qapi: Use common name mangling for enumeration constants), Markus Armbruster, 2015/11/10
- [Qemu-devel] blkdebug event names [was: What to do about QAPI naming convention violations], Eric Blake, 2015/11/16
- Re: [Qemu-devel] blkdebug event names [was: What to do about QAPI naming convention violations], Markus Armbruster, 2015/11/17
Re: [Qemu-devel] [PATCH RFC 3/5] qapi: Use common name mangling for enumeration constants, Markus Armbruster, 2015/11/09