codegen: Fix enums.h generation with python3

Trying to generate enums.h with python3 results in
Traceback (most recent call last):
  File "./spice_codegen.py", line 217, in <module>
    write_enums(writer, options.generate_dissector)
  File "./spice_codegen.py", line 99, in write_enums
    write_channel_enums(writer, c, False, False)
  File "./spice_codegen.py", line 17, in write_channel_enums
    if len(messages) == 0:
TypeError: object of type 'filter' has no len()

filter() returns an enumerator object in python3 while it used to return
a list in python2. Using list(filter()) instead fixes that error.
I've checked that the generated enums.h is identical with python2 and
python3.
This commit is contained in:
Christophe Fergeau 2015-07-22 12:48:55 +02:00
parent 5adcb1c340
commit 9625b45edb

View File

@ -12,8 +12,8 @@ from python_modules import marshal
import six
def write_channel_enums(writer, channel, client, describe):
messages = filter(lambda m : m.channel == channel, \
channel.client_messages if client else channel.server_messages)
messages = list(filter(lambda m : m.channel == channel, \
channel.client_messages if client else channel.server_messages))
if len(messages) == 0:
return
if client: