[Spice-devel] [PATCH v5 35/41] codegen: Allows to specify wireshark name for enumerators

Frediano Ziglio fziglio at redhat.com
Fri Aug 7 08:01:04 PDT 2015


Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
---
 python_modules/dissector.py    | 2 +-
 python_modules/ptypes.py       | 4 ++++
 python_modules/spice_parser.py | 2 +-
 3 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/python_modules/dissector.py b/python_modules/dissector.py
index 08adefd..8580ca8 100644
--- a/python_modules/dissector.py
+++ b/python_modules/dissector.py
@@ -736,7 +736,7 @@ def write_flags_func(writer, t, ws, tree, ti):
 
         desc = t.descs[v] if t.descs[v] else t.names[v]
         hf = HF(name, desc)
-        hf.ws_name = '%s_%s' % (t.name, t.names[v].lower())
+        hf.ws_name = '%s_%s' % (t.name, t.names[v].lower()) if not t.ws_names[v] else t.ws_names[v]
         hf.f_type = 'FT_BOOLEAN'
         hf.base = str(bits)
         hf.vals = 'TFS(&tfs_set_notset)'
diff --git a/python_modules/ptypes.py b/python_modules/ptypes.py
index 3f278a2..e317cd4 100644
--- a/python_modules/ptypes.py
+++ b/python_modules/ptypes.py
@@ -328,9 +328,11 @@ class EnumBaseType(Type):
         names = {}
         values = {}
         descs = {}
+        ws_names = {}
         for v in enums:
             name = v[0]
             desc = v[1][1]
+            ws_name = None if len(v[1]) < 3 else v[1][2]
             if len(v) > 2:
                 value = v[2]
             else:
@@ -340,11 +342,13 @@ class EnumBaseType(Type):
             assert value not in names
             names[value] = name
             descs[value] = desc
+            ws_names[value] = ws_name
             values[name] = value
 
         self.names = names
         self.values = values
         self.descs = descs
+        self.ws_names = ws_names
 
         self.attributes = fix_attributes(attribute_list)
 
diff --git a/python_modules/spice_parser.py b/python_modules/spice_parser.py
index 5326e59..3fde843 100644
--- a/python_modules/spice_parser.py
+++ b/python_modules/spice_parser.py
@@ -124,7 +124,7 @@ def SPICE_BNF():
                      int32_ ^ uint32_ ^ int64_ ^ uint64_ ^
                      typename).setName("type")
 
-        flagsBody = enumBody = Group(lbrace + delimitedList(Group (enumname + Optional(Group(ws_desc), default=[None,None]) + Optional(equals + integer))) + Optional(comma) + rbrace)
+        flagsBody = enumBody = Group(lbrace + delimitedList(Group (enumname + Optional(Group(ws | ws_desc), default=[None,None]) + Optional(equals + integer))) + Optional(comma) + rbrace)
 
         messageSpec = Group(message_ + messageBody + attributes).setParseAction(lambda toks: ptypes.MessageType(None, toks[0][1], toks[0][2])) | typename
 
-- 
2.1.0



More information about the Spice-devel mailing list