summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChad Versace <chad.versace@intel.com>2011-01-11 16:59:24 -0800
committerChad Versace <chad.versace@intel.com>2011-01-17 09:41:24 -0800
commit0e2f8936c8ef872cb464e54a9f09ae0324487147 (patch)
tree8dc8259289ca4067512c5c73bac027d91232bdfe
parent5a64626ee57183a404827e2cda8359db3529b180 (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.h12
-rw-r--r--src/glsl/ast_type.cpp13
2 files changed, 25 insertions, 0 deletions
diff --git a/src/glsl/ast.h b/src/glsl/ast.h
index cd933cfc58..c096f9aa87 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 b7488cf6e9..a8761611d3 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;
+}