[Spice-devel] [PATCH v3 14/51] Decorate writer class to make easier ifdef/endif handling
Frediano Ziglio
fziglio at redhat.com
Thu Jul 23 05:05:43 PDT 2015
I'm generating code for dissector from demarshaller.
Make simple to hangle ifdef/endif not having to check manually attribute.
Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
---
python_modules/dissector.py | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
Changed:
- compatibility for Python 3
diff --git a/python_modules/dissector.py b/python_modules/dissector.py
index 52234fc..e088cb6 100644
--- a/python_modules/dissector.py
+++ b/python_modules/dissector.py
@@ -2,6 +2,9 @@
from . import codegen
import re
+import sys
+import types
+
# generate a new tree identifier
ett_writer = None
@@ -95,10 +98,28 @@ def write_protocol_definitions(writer):
writer.end_block()
+def decorate_writer(writer):
+ cls = writer.__class__
+
+ def create(old):
+ def ifdef(self, member):
+ if member.has_attr("ifdef"):
+ old(self, member.attributes["ifdef"][0])
+ if sys.version_info[0] == 2:
+ return types.MethodType(ifdef, None, cls)
+ return ifdef
+
+ cls.ifdef = create(cls.ifdef)
+ cls.ifdef_else = create(cls.ifdef_else)
+ cls.endif = create(cls.endif)
+
+
def write_protocol_parser(writer, proto):
global hf_writer
global ett_writer
+ decorate_writer(writer)
+
write_parser_helpers(writer)
# put fields declaration first
--
2.1.0
More information about the Spice-devel
mailing list