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.
This commit is contained in:
Ian Romanick 2010-04-01 17:17:34 -07:00
parent ebfdef7a83
commit 00e517616b
1 changed files with 25 additions and 0 deletions

View File

@ -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