On 25 October 2011 16:55, Kenneth Graunke <span dir="ltr">&lt;<a href="mailto:kenneth@whitecape.org">kenneth@whitecape.org</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im">On 10/25/2011 04:47 PM, Paul Berry wrote:<br>
&gt; This function is similar to get_base_type(), but when called on<br>
&gt; arrays, it returns the scalar type composing the array.  For example,<br>
&gt; glsl_type(vec4[]) =&gt; float_type.<br>
&gt; ---<br>
&gt;  src/glsl/glsl_types.cpp |   23 +++++++++++++++++++++++<br>
&gt;  src/glsl/glsl_types.h   |   11 +++++++++++<br>
&gt;  2 files changed, 34 insertions(+), 0 deletions(-)<br>
&gt;<br>
&gt; diff --git a/src/glsl/glsl_types.cpp b/src/glsl/glsl_types.cpp<br>
&gt; index c94aec0..03e9987 100644<br>
&gt; --- a/src/glsl/glsl_types.cpp<br>
&gt; +++ b/src/glsl/glsl_types.cpp<br>
&gt; @@ -258,6 +258,29 @@ const glsl_type *glsl_type::get_base_type() const<br>
&gt;  }<br>
&gt;<br>
&gt;<br>
&gt; +const glsl_type *glsl_type::get_scalar_type() const<br>
&gt; +{<br>
&gt; +   const glsl_type *type = this;<br>
&gt; +<br>
&gt; +   /* Handle arrays */<br>
&gt; +   while (type-&gt;base_type == GLSL_TYPE_ARRAY)<br>
&gt; +      type = type-&gt;fields.array;<br>
<br>
</div>This is going to be a very short loop; in fact, it&#39;s actually equivalent to:<br>
<br>
   if (type-&gt;base_type == GLSL_TYPE_ARRAY)<br>
      type = type-&gt;fields.array;<br>
<br>
since GLSL explicitly disallows arrays of arrays.  That said, it doesn&#39;t<br>
really hurt anything, so I&#39;m more observing this than objecting to the code.<br>
<div><br></div></blockquote><div><br>That&#39;s a fair point.  I think I prefer to leave it as originally written, on the theory that if arrays of arrays are ever allowed, then the loop will be required.  But it&#39;s not a strong preference.<br>
</div></div>