diff options
| author | Alexander Wauck <awauck@codeweavers.com> | 2015-03-31 12:44:09 -0500 |
|---|---|---|
| committer | Christophe Fergeau <cfergeau@redhat.com> | 2015-04-01 13:39:03 +0200 |
| commit | ba52c4cae204c4fc7104b14ac446d4d5a65a26f8 (patch) | |
| tree | 12ac2dc1916f69f524b6b4bc588c476941759c19 /python_modules/demarshal.py | |
| parent | 14218d7d6b9524e4f7854c27bab8b5fdf3b4e88a (diff) | |
| download | spice-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.py | 12 |
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]) |
