glsl: Add method ast_type_qualifier::interpolation_string()
authorChad Versace <chad.versace@intel.com>
Wed, 12 Jan 2011 00:59:24 +0000 (16:59 -0800)
committerChad Versace <chad.versace@intel.com>
Mon, 17 Jan 2011 17:41:24 +0000 (09:41 -0800)
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".

src/glsl/ast.h
src/glsl/ast_type.cpp

index cd933cfc58850cd221633d474098707e2af2c294..c096f9aa876be2ff9b1c2c75ee1ab0d569fdda3c 100644 (file)
@@ -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 {
index b7488cf6e90e7f722c690162fbc00dae9dd768dd..a8761611d364582ebcdadb95be74b816d774887e 100644 (file)
@@ -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;
+}