From: Ian Romanick Date: Fri, 2 Apr 2010 00:17:34 +0000 (-0700) Subject: Add glsl_type::element_type and glsl_type::array_size queries X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=00e517616b722d6a1f62748d8c84004eeb814756;p=mesa.git Add glsl_type::element_type and glsl_type::array_size queries The former gets the type of elements in an array, and the later gets the declared size, if any, of the array. --- diff --git a/glsl_types.h b/glsl_types.h index 6c9444cbe16..33b1c98158d 100644 --- a/glsl_types.h +++ b/glsl_types.h @@ -163,6 +163,18 @@ struct glsl_type { */ const glsl_type *get_base_type() const; + /** + * Query the type of elements in an array + * + * \return + * Pointer to the type of elements in the array for array types, or \c NULL + * for non-array types. + */ + const glsl_type *element_type() const + { + return is_array() ? fields.array : NULL; + } + /** * Get the instance of a built-in scalar, vector, or matrix type */ @@ -308,6 +320,19 @@ struct glsl_type { : error_type; } + /** + * Query the number of elements in an array type + * + * \return + * The number of elements in the array for array types or -1 for non-array + * types. If the number of elements in the array has not yet been declared, + * zero is returned. + */ + int array_size() const + { + return is_array() ? length : -1; + } + private: /** * Constructor for array types