From: Markus Armbruster <armbru@redhat.com>
To: qemu-devel@nongnu.org
Cc: mdroth@linux.vnet.ibm.com
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 [thread overview]
Message-ID: <1446737402-15597-6-git-send-email-armbru@redhat.com> (raw)
In-Reply-To: <1446737402-15597-1-git-send-email-armbru@redhat.com>
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 <armbru@redhat.com>
---
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
next prev parent reply other threads:[~2015-11-05 15:30 UTC|newest]
Thread overview: 75+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-04 6:20 [Qemu-devel] [PATCH v9 00/27] alternate layout (post-introspection cleanups, subset C) Eric Blake
2015-11-04 6:20 ` [Qemu-devel] [PATCH v9 01/27] qapi: Use generated TestStruct machinery in tests Eric Blake
2015-11-04 6:20 ` [Qemu-devel] [PATCH v9 02/27] qapi: Strengthen test of TestStructList Eric Blake
2015-11-04 6:20 ` [Qemu-devel] [PATCH v9 03/27] qapi: Plug leaks in test-qmp-* Eric Blake
2015-11-04 8:19 ` Markus Armbruster
2015-11-04 17:24 ` Eric Blake
2015-11-04 17:44 ` Markus Armbruster
2015-11-05 13:09 ` Eric Blake
2015-11-04 6:20 ` [Qemu-devel] [PATCH v9 04/27] qapi: Simplify error testing " Eric Blake
2015-11-04 8:40 ` Markus Armbruster
2015-11-04 21:05 ` Eric Blake
2015-11-05 7:53 ` Markus Armbruster
2015-11-05 15:04 ` Eric Blake
2015-11-04 6:20 ` [Qemu-devel] [PATCH v9 05/27] qapi: More tests of alternate output Eric Blake
2015-11-04 9:04 ` Markus Armbruster
2015-11-04 6:20 ` [Qemu-devel] [PATCH v9 06/27] qapi: Test failure in middle of array parse Eric Blake
2015-11-04 9:07 ` Markus Armbruster
2015-11-04 6:20 ` [Qemu-devel] [PATCH v9 07/27] qapi: More tests of input arrays Eric Blake
2015-11-04 9:11 ` Markus Armbruster
2015-11-04 6:20 ` [Qemu-devel] [PATCH v9 08/27] qapi: Provide nicer array names in introspection Eric Blake
2015-11-04 6:20 ` [Qemu-devel] [PATCH v9 09/27] qapi-introspect: Document lack of sorting Eric Blake
2015-11-04 10:09 ` Markus Armbruster
2015-11-04 6:20 ` [Qemu-devel] [PATCH v9 10/27] qapi: Track simple union tag in object.local_members Eric Blake
2015-11-04 11:02 ` Markus Armbruster
2015-11-04 6:20 ` [Qemu-devel] [PATCH v9 11/27] qapi-types: Consolidate gen_struct() and gen_union() Eric Blake
2015-11-04 6:20 ` [Qemu-devel] [PATCH v9 12/27] qapi-types: Simplify gen_struct_field[s] Eric Blake
2015-11-04 6:20 ` [Qemu-devel] [PATCH v9 13/27] qapi: Drop obsolete tag value collision assertions Eric Blake
2015-11-04 13:30 ` Markus Armbruster
2015-11-04 6:20 ` [Qemu-devel] [PATCH v9 14/27] qapi: Fix up commit 7618b91's clash sanity checking change Eric Blake
2015-11-04 13:36 ` Markus Armbruster
2015-11-04 6:20 ` [Qemu-devel] [PATCH v9 15/27] qapi: Simplify QAPISchemaObjectTypeMember.check() Eric Blake
2015-11-04 6:20 ` [Qemu-devel] [PATCH v9 16/27] qapi: Eliminate QAPISchemaObjectType.check() variable members Eric Blake
2015-11-04 6:20 ` [Qemu-devel] [PATCH v9 17/27] qapi: Clean up after previous commit Eric Blake
2015-11-04 13:43 ` Markus Armbruster
2015-11-04 23:03 ` Eric Blake
2015-11-04 6:20 ` [Qemu-devel] [PATCH v9 18/27] qapi: Factor out QAPISchemaObjectTypeMember.check_clash() Eric Blake
2015-11-04 6:20 ` [Qemu-devel] [PATCH v9 19/27] qapi: Check for qapi collisions of flat union branches Eric Blake
2015-11-04 19:01 ` Markus Armbruster
2015-11-04 23:11 ` Eric Blake
2015-11-04 23:25 ` Eric Blake
2015-11-05 7:59 ` Markus Armbruster
2015-11-04 6:20 ` [Qemu-devel] [PATCH v9 20/27] qapi: Simplify QAPISchemaObjectTypeVariants.check() Eric Blake
2015-11-04 19:02 ` Markus Armbruster
2015-11-04 23:12 ` Eric Blake
2015-11-04 6:20 ` [Qemu-devel] [PATCH v9 21/27] qapi: Factor out QAPISchemaObjectType.check_clash() Eric Blake
2015-11-05 15:29 ` [Qemu-devel] [PATCH RFC 0/5] qapi: Use common name mangling for enumeration constants Markus Armbruster
2015-11-05 15:29 ` [Qemu-devel] [PATCH RFC 1/5] qapi: Generate a sed script to help eliminate camel_to_upper() Markus Armbruster
2015-11-05 15:29 ` [Qemu-devel] [PATCH RFC 2/5] Revert "qapi: Generate a sed script to help eliminate camel_to_upper()" Markus Armbruster
2015-11-05 15:30 ` [Qemu-devel] [PATCH RFC 3/5] qapi: Use common name mangling for enumeration constants Markus Armbruster
2015-11-05 16:01 ` Daniel P. Berrange
2015-11-05 16:41 ` Eric Blake
2015-11-05 22:36 ` Eric Blake
2015-11-06 10:03 ` Markus Armbruster
2015-11-06 13:35 ` Markus Armbruster
2015-11-10 14:35 ` [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-16 22:13 ` [Qemu-devel] blkdebug event names [was: What to do about QAPI naming convention violations] Eric Blake
2015-11-17 7:38 ` Markus Armbruster
2015-11-09 9:34 ` [Qemu-devel] [PATCH RFC 3/5] qapi: Use common name mangling for enumeration constants Markus Armbruster
2015-11-09 10:53 ` Daniel P. Berrange
2015-11-05 15:30 ` [Qemu-devel] [PATCH RFC 4/5] crypto: Drop name mangling override Markus Armbruster
2015-11-05 15:30 ` Markus Armbruster [this message]
2015-11-04 6:20 ` [Qemu-devel] [PATCH v9 22/27] qapi: Remove outdated tests related to QMP/branch collisions Eric Blake
2015-11-04 6:20 ` [Qemu-devel] [PATCH v9 23/27] qapi: Simplify visiting of alternate types Eric Blake
2015-11-05 17:01 ` Markus Armbruster
2015-11-04 6:20 ` [Qemu-devel] [PATCH v9 24/27] qapi: Fix alternates that accept 'number' but not 'int' Eric Blake
2015-11-04 6:20 ` [Qemu-devel] [PATCH v9 25/27] qapi: Add positive tests to qapi-schema-test Eric Blake
2015-11-05 18:44 ` Markus Armbruster
2015-11-04 6:20 ` [Qemu-devel] [PATCH v9 26/27] qapi: Remove dead visitor code Eric Blake
2015-11-05 19:05 ` Markus Armbruster
2015-11-11 6:13 ` Eric Blake
2015-11-04 6:20 ` [Qemu-devel] [PATCH v9 27/27] qapi: Simplify visits of optional fields Eric Blake
2015-11-04 10:22 ` [Qemu-devel] [PATCH v9 00/27] alternate layout (post-introspection cleanups, subset C) Markus Armbruster
2015-11-04 15:06 ` Eric Blake
2015-11-04 18:04 ` Markus Armbruster
2015-11-05 19:45 ` Markus Armbruster
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1446737402-15597-6-git-send-email-armbru@redhat.com \
--to=armbru@redhat.com \
--cc=mdroth@linux.vnet.ibm.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).