[Mesa-dev] [PATCH 22/41] glapi: gl_XML.py: convert gl_api.functionIterateByOffset to a generator

Brian Paul brianp at vmware.com
Fri Apr 1 15:28:57 UTC 2016


On 03/31/2016 06:04 PM, Dylan Baker wrote:
> This implementation is somewhat more efficient than the previous, and is
> less code. It works by replacing one of the list building functions with
> a generator, so that the last list can be avoided. It also decreases the
> size of the list that remains by using sorting instead of a sparse list.
>
> Signed-off-by: Dylan Baker <dylanx.c.baker at intel.com>
> ---
>   src/mapi/glapi/gen/gl_XML.py | 14 ++++++--------
>   1 file changed, 6 insertions(+), 8 deletions(-)
>
> diff --git a/src/mapi/glapi/gen/gl_XML.py b/src/mapi/glapi/gen/gl_XML.py
> index f96e44a..221bd18 100644
> --- a/src/mapi/glapi/gen/gl_XML.py
> +++ b/src/mapi/glapi/gen/gl_XML.py
> @@ -940,17 +940,15 @@ class gl_api(object):
>       def functionIterateByOffset(self):
>           max_offset = max(f.offset for f in self.functions_by_name.itervalues())
>
> -        temp = [None for i in range(max_offset + 1)]
> +        temp = []
>           for func in self.functions_by_name.itervalues():
>               if func.offset != -1:
> -                temp[func.offset] = func
> +                temp.append((func.offset, func))
>
> -        list = []
> -        for i in range(max_offset + 1):
> -            if temp[i]:
> -                list.append(temp[i])
> -
> -        return iter(list)
> +        for i, (_, func) in enumerate(sorted(temp, key=lambda i: i[0])):
> +            yield func
> +            if i > max_offset:
> +                break
>
>       def functionIterateAll(self):
>           return self.functions_by_name.itervalues()
>

Knowing Python, but not all the newer/fancier techniques, I would have 
no idea what this code is doing.  Could you at least add a comment 
explaining what's going on?

Same thing for patches 23, 40.

-Brian



More information about the mesa-dev mailing list