From 00e517616b722d6a1f62748d8c84004eeb814756 Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Thu, 1 Apr 2010 17:17:34 -0700 Subject: [PATCH] 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. --- glsl_types.h | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) 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