From: Mathieu Bridon Date: Thu, 5 Jul 2018 13:17:39 +0000 (+0200) Subject: python: Better use iterators X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=022d2a381d32d24aabe2c54704a5a5e2440a75e9;p=mesa.git 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 Reviewed-by: Eric Engestrom Reviewed-by: Dylan Baker --- diff --git a/src/compiler/glsl/ir_expression_operation.py b/src/compiler/glsl/ir_expression_operation.py index d8542925a0a..b3dac3da3f7 100644 --- a/src/compiler/glsl/ir_expression_operation.py +++ b/src/compiler/glsl/ir_expression_operation.py @@ -62,7 +62,7 @@ class type_signature_iter(object): def __iter__(self): return self - def next(self): + def __next__(self): if self.i < len(self.source_types): i = self.i self.i += 1 @@ -76,6 +76,8 @@ class type_signature_iter(object): else: raise StopIteration() + next = __next__ + uint_type = type("unsigned", "u", "GLSL_TYPE_UINT") int_type = type("int", "i", "GLSL_TYPE_INT") diff --git a/src/compiler/nir/nir_algebraic.py b/src/compiler/nir/nir_algebraic.py index 8c0b530f698..fda72d3c69e 100644 --- a/src/compiler/nir/nir_algebraic.py +++ b/src/compiler/nir/nir_algebraic.py @@ -56,7 +56,7 @@ class VarSet(object): def __getitem__(self, name): if name not in self.names: assert not self.immutable, "Unknown replacement variable: " + name - self.names[name] = self.ids.next() + self.names[name] = next(self.ids) return self.names[name] @@ -468,7 +468,7 @@ condition_list = ['true'] class SearchAndReplace(object): def __init__(self, transform): - self.id = _optimization_ids.next() + self.id = next(_optimization_ids) search = transform[0] replace = transform[1] diff --git a/src/mapi/glapi/gen/glX_XML.py b/src/mapi/glapi/gen/glX_XML.py index e10c8b0a097..ff0011bf9ce 100644 --- a/src/mapi/glapi/gen/glX_XML.py +++ b/src/mapi/glapi/gen/glX_XML.py @@ -296,7 +296,7 @@ class glx_function(gl_XML.gl_function): parameters.extend( temp[1] ) if include_variable_parameters: parameters.extend( temp[2] ) - return parameters.__iter__() + return iter(parameters) def parameterIterateCounters(self): @@ -304,7 +304,7 @@ class glx_function(gl_XML.gl_function): for name in self.counter_list: temp.append( self.parameters_by_name[ name ] ) - return temp.__iter__() + return iter(temp) def parameterIterateOutputs(self): @@ -547,13 +547,14 @@ class glx_function_iterator(object): return self - def next(self): - f = self.iterator.next() + def __next__(self): + while True: + f = next(self.iterator) - if f.client_supported_for_indirect(): - return f - else: - return self.next() + if f.client_supported_for_indirect(): + return f + + next = __next__ class glx_api(gl_XML.gl_api): diff --git a/src/mapi/glapi/gen/gl_XML.py b/src/mapi/glapi/gen/gl_XML.py index 7bd5a1f4e43..b4aa6be985e 100644 --- a/src/mapi/glapi/gen/gl_XML.py +++ b/src/mapi/glapi/gen/gl_XML.py @@ -782,9 +782,9 @@ class gl_function( gl_item ): def parameterIterator(self, name = None): if name is not None: - return self.entry_point_parameters[name].__iter__(); + return iter(self.entry_point_parameters[name]); else: - return self.parameters.__iter__(); + return iter(self.parameters); def get_parameter_string(self, entrypoint = None): @@ -996,7 +996,7 @@ class gl_api(object): for name in names: functions.append(lists[func_cat_type][key][name]) - return functions.__iter__() + return iter(functions) def functionIterateByOffset(self): @@ -1017,7 +1017,7 @@ class gl_api(object): if temp[i]: list.append(temp[i]) - return list.__iter__(); + return iter(list); def functionIterateAll(self): @@ -1031,7 +1031,7 @@ class gl_api(object): for enum in keys: list.append( self.enums_by_name[ enum ] ) - return list.__iter__() + return iter(list) def categoryIterate(self): @@ -1049,7 +1049,7 @@ class gl_api(object): for key in keys: list.append(self.categories[cat_type][key]) - return list.__iter__() + return iter(list) def get_category_for_name( self, name ):