Add glsl_types::field_index to get the location of a record field
authorIan Romanick <ian.d.romanick@intel.com>
Thu, 10 Jun 2010 00:27:31 +0000 (17:27 -0700)
committerIan Romanick <ian.d.romanick@intel.com>
Fri, 11 Jun 2010 20:51:42 +0000 (13:51 -0700)
glsl_types.cpp
glsl_types.h

index 9487819a447081d838c4a0d0612b0e675ee4c687..4b6a61a13c23a79ac9d09697458daaf1a25787ff 100644 (file)
@@ -718,3 +718,18 @@ glsl_type::field_type(const char *name) const
 
    return error_type;
 }
+
+
+int
+glsl_type::field_index(const char *name) const
+{
+   if (this->base_type != GLSL_TYPE_STRUCT)
+      return -1;
+
+   for (unsigned i = 0; i < this->length; i++) {
+      if (strcmp(name, this->fields.structure[i].name) == 0)
+        return i;
+   }
+
+   return -1;
+}
index 823897df4ae112948084f6fe8e3cae343e033f8e..3265016146d52a1cc3b7ae58abafae4593471f9a 100644 (file)
@@ -355,6 +355,12 @@ struct glsl_type {
    const glsl_type *field_type(const char *name) const;
 
 
+   /**
+    * Get the location of a filed within a record type
+    */
+   int field_index(const char *name) const;
+
+
    /**
     * Query the number of elements in an array type
     *