diff options
author | Chad Versace <[email protected]> | 2011-01-11 16:59:24 -0800 |
---|---|---|
committer | Chad Versace <[email protected]> | 2011-01-17 09:41:24 -0800 |
commit | 0e2f8936c8ef872cb464e54a9f09ae0324487147 (patch) | |
tree | 8dc8259289ca4067512c5c73bac027d91232bdfe | |
parent | 5a64626ee57183a404827e2cda8359db3529b180 (diff) |
glsl: Add method ast_type_qualifier::interpolation_string()
If an interpolation qualifier is present, then the method returns that
qualifier's string representation. For example, if the noperspective bit
is set, then it returns "noperspective".
-rw-r--r-- | src/glsl/ast.h | 12 | ||||
-rw-r--r-- | src/glsl/ast_type.cpp | 13 |
2 files changed, 25 insertions, 0 deletions
diff --git a/src/glsl/ast.h b/src/glsl/ast.h index cd933cfc588..c096f9aa876 100644 --- a/src/glsl/ast.h +++ b/src/glsl/ast.h @@ -364,6 +364,18 @@ struct ast_type_qualifier { * This field is only valid if \c explicit_location is set. */ unsigned location; + + /** + * \brief Return string representation of interpolation qualifier. + * + * If an interpolation qualifier is present, then return that qualifier's + * string representation. Otherwise, return null. For example, if the + * noperspective bit is set, then this returns "noperspective". + * + * If multiple interpolation qualifiers are somehow present, then the + * returned string is undefined but not null. + */ + const char *interpolation_string() const; }; class ast_struct_specifier : public ast_node { diff --git a/src/glsl/ast_type.cpp b/src/glsl/ast_type.cpp index b7488cf6e90..a8761611d36 100644 --- a/src/glsl/ast_type.cpp +++ b/src/glsl/ast_type.cpp @@ -116,3 +116,16 @@ ast_fully_specified_type::has_qualifiers() const { return this->qualifier.flags.i != 0; } + +const char* +ast_type_qualifier::interpolation_string() const +{ + if (this->flags.q.smooth) + return "smooth"; + else if (this->flags.q.flat) + return "flat"; + else if (this->flags.q.noperspective) + return "noperspective"; + else + return NULL; +} |