summaryrefslogtreecommitdiffstats
path: root/python_modules/demarshal.py
diff options
context:
space:
mode:
authorAlexander Wauck <awauck@codeweavers.com>2015-03-31 12:44:09 -0500
committerChristophe Fergeau <cfergeau@redhat.com>2015-04-01 13:39:03 +0200
commitba52c4cae204c4fc7104b14ac446d4d5a65a26f8 (patch)
tree12ac2dc1916f69f524b6b4bc588c476941759c19 /python_modules/demarshal.py
parent14218d7d6b9524e4f7854c27bab8b5fdf3b4e88a (diff)
downloadspice-common-ba52c4cae204c4fc7104b14ac446d4d5a65a26f8.tar.gz
spice-common-ba52c4cae204c4fc7104b14ac446d4d5a65a26f8.tar.xz
spice-common-ba52c4cae204c4fc7104b14ac446d4d5a65a26f8.zip
Make spice_codegen.py work on both Python 2 and 3
This is a new version of my previous patch that does not include six.py. It's still kind of big, but at least it's all spice-common changes now. There are also a few other fixes that Christophe brought to my attention. Note that six now needs to be installed on the system (python-six on Fedora and Debian, six on PyPI). This *should* be enough to make spice_codegen.py work on both Python 2 and Python 3. The major changes are as follows: * cStringIO.StringIO -> io.StringIO * str vs. unicode updates (io.StringIO doesn't like str) * integer division * foo.has_key(bar) -> bar in foo * import internal_thing -> from . import internal_thing * removed from __future__ import with_statement (might break Python 2.5?) * changed some lambdas to list comprehensions (done by 2to3) * cast some_dict.keys() to list where needed (e.g. for sorting) * use normal type names with isinstance instead of types.WhateverType Signed-off-by: Alexander Wauck <awauck@codeweavers.com>
Diffstat (limited to 'python_modules/demarshal.py')
-rw-r--r--python_modules/demarshal.py12
1 files changed, 6 insertions, 6 deletions
diff --git a/python_modules/demarshal.py b/python_modules/demarshal.py
index 109f5e6..209eafc 100644
--- a/python_modules/demarshal.py
+++ b/python_modules/demarshal.py
@@ -1,6 +1,6 @@
-from __future__ import with_statement
-import ptypes
-import codegen
+
+from . import ptypes
+from . import codegen
# The handling of sizes is somewhat complex, as there are several types of size:
# * nw_size
@@ -68,7 +68,7 @@ def write_parser_helpers(writer):
scope = writer.function("SPICE_GNUC_UNUSED consume_%s" % type, ctype, "uint8_t **ptr", True)
scope.variable_def(ctype, "val")
writer.assign("val", "read_%s(*ptr)" % type)
- writer.increment("*ptr", size / 8)
+ writer.increment("*ptr", size // 8)
writer.statement("return val")
writer.end_block()
@@ -1119,7 +1119,7 @@ def write_channel_parser(writer, channel, server):
ids2 = ids.copy()
while len(ids2) > 0:
end = start = min(ids2.keys())
- while ids2.has_key(end):
+ while end in ids2:
del ids2[end]
end = end + 1
@@ -1181,7 +1181,7 @@ def write_get_channel_parser(writer, channel_parsers, max_channel, is_server):
writer.begin_block()
channel = None
for i in range(0, max_channel + 1):
- if channel_parsers.has_key(i):
+ if i in channel_parsers:
channel = channel_parsers[i][0]
if channel.has_attr("ifdef"):
writer.ifdef(channel.attributes["ifdef"][0])