python: Better use iterators

In Python 2, iterators had a .next() method.

In Python 3, instead they have a .__next__() method, which is
automatically called by the next() builtin.

In addition, it is better to use the iter() builtin to create an
iterator, rather than calling its __iter__() method.

These were also introduced in Python 2.6, so using it makes the script
compatible with Python 2 and 3.

Signed-off-by: Mathieu Bridon <bochecha@daitauha.fr>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
This commit is contained in:
Mathieu Bridon
2018-07-05 15:17:39 +02:00
committed by Dylan Baker
parent 01da2feb0e
commit 022d2a381d
4 changed files with 20 additions and 17 deletions

View File

@@ -62,7 +62,7 @@ class type_signature_iter(object):
def __iter__(self): def __iter__(self):
return self return self
def next(self): def __next__(self):
if self.i < len(self.source_types): if self.i < len(self.source_types):
i = self.i i = self.i
self.i += 1 self.i += 1
@@ -76,6 +76,8 @@ class type_signature_iter(object):
else: else:
raise StopIteration() raise StopIteration()
next = __next__
uint_type = type("unsigned", "u", "GLSL_TYPE_UINT") uint_type = type("unsigned", "u", "GLSL_TYPE_UINT")
int_type = type("int", "i", "GLSL_TYPE_INT") int_type = type("int", "i", "GLSL_TYPE_INT")

View File

@@ -56,7 +56,7 @@ class VarSet(object):
def __getitem__(self, name): def __getitem__(self, name):
if name not in self.names: if name not in self.names:
assert not self.immutable, "Unknown replacement variable: " + name assert not self.immutable, "Unknown replacement variable: " + name
self.names[name] = self.ids.next() self.names[name] = next(self.ids)
return self.names[name] return self.names[name]
@@ -468,7 +468,7 @@ condition_list = ['true']
class SearchAndReplace(object): class SearchAndReplace(object):
def __init__(self, transform): def __init__(self, transform):
self.id = _optimization_ids.next() self.id = next(_optimization_ids)
search = transform[0] search = transform[0]
replace = transform[1] replace = transform[1]

View File

@@ -296,7 +296,7 @@ class glx_function(gl_XML.gl_function):
parameters.extend( temp[1] ) parameters.extend( temp[1] )
if include_variable_parameters: if include_variable_parameters:
parameters.extend( temp[2] ) parameters.extend( temp[2] )
return parameters.__iter__() return iter(parameters)
def parameterIterateCounters(self): def parameterIterateCounters(self):
@@ -304,7 +304,7 @@ class glx_function(gl_XML.gl_function):
for name in self.counter_list: for name in self.counter_list:
temp.append( self.parameters_by_name[ name ] ) temp.append( self.parameters_by_name[ name ] )
return temp.__iter__() return iter(temp)
def parameterIterateOutputs(self): def parameterIterateOutputs(self):
@@ -547,13 +547,14 @@ class glx_function_iterator(object):
return self return self
def next(self): def __next__(self):
f = self.iterator.next() while True:
f = next(self.iterator)
if f.client_supported_for_indirect(): if f.client_supported_for_indirect():
return f return f
else:
return self.next() next = __next__
class glx_api(gl_XML.gl_api): class glx_api(gl_XML.gl_api):

View File

@@ -782,9 +782,9 @@ class gl_function( gl_item ):
def parameterIterator(self, name = None): def parameterIterator(self, name = None):
if name is not None: if name is not None:
return self.entry_point_parameters[name].__iter__(); return iter(self.entry_point_parameters[name]);
else: else:
return self.parameters.__iter__(); return iter(self.parameters);
def get_parameter_string(self, entrypoint = None): def get_parameter_string(self, entrypoint = None):
@@ -996,7 +996,7 @@ class gl_api(object):
for name in names: for name in names:
functions.append(lists[func_cat_type][key][name]) functions.append(lists[func_cat_type][key][name])
return functions.__iter__() return iter(functions)
def functionIterateByOffset(self): def functionIterateByOffset(self):
@@ -1017,7 +1017,7 @@ class gl_api(object):
if temp[i]: if temp[i]:
list.append(temp[i]) list.append(temp[i])
return list.__iter__(); return iter(list);
def functionIterateAll(self): def functionIterateAll(self):
@@ -1031,7 +1031,7 @@ class gl_api(object):
for enum in keys: for enum in keys:
list.append( self.enums_by_name[ enum ] ) list.append( self.enums_by_name[ enum ] )
return list.__iter__() return iter(list)
def categoryIterate(self): def categoryIterate(self):
@@ -1049,7 +1049,7 @@ class gl_api(object):
for key in keys: for key in keys:
list.append(self.categories[cat_type][key]) list.append(self.categories[cat_type][key])
return list.__iter__() return iter(list)
def get_category_for_name( self, name ): def get_category_for_name( self, name ):