Convert is_glsl_type_matrix to glsl_type::is_matrix
authorIan Romanick <ian.d.romanick@intel.com>
Tue, 9 Mar 2010 23:58:52 +0000 (15:58 -0800)
committerIan Romanick <ian.d.romanick@intel.com>
Tue, 9 Mar 2010 23:58:52 +0000 (15:58 -0800)
ast_to_hir.cpp
glsl_types.h

index 1de5824591363a8a54335886c6e52800962c1ffe..5811d73586a8e294db70383e6faad3e1c6e77bfa 100644 (file)
@@ -169,14 +169,14 @@ arithmetic_result_type(const struct glsl_type *type_a,
     *      more detail how vectors and matrices are operated on."
     */
    if (! multiply) {
-      if (is_glsl_type_matrix(type_a) && is_glsl_type_matrix(type_b)
+      if (type_a->is_matrix() && type_b->is_matrix()
          && (type_a->vector_elements == type_b->vector_elements)
          && (type_a->matrix_rows == type_b->matrix_rows))
         return type_a;
       else
         return glsl_error_type;
    } else {
-      if (is_glsl_type_matrix(type_a) && is_glsl_type_matrix(type_b)) {
+      if (type_a->is_matrix() && type_b->is_matrix()) {
         if (type_a->vector_elements == type_b->matrix_rows) {
            char type_name[7];
            const struct glsl_type *t;
@@ -199,14 +199,14 @@ arithmetic_result_type(const struct glsl_type *type_a,
               _mesa_symbol_table_find_symbol(state->symbols, 0, type_name);
            return (t != NULL) ? t : glsl_error_type;
         }
-      } else if (is_glsl_type_matrix(type_a)) {
+      } else if (type_a->is_matrix()) {
         /* A is a matrix and B is a column vector.  Columns of A must match
          * rows of B.
          */
         if (type_a->vector_elements == type_b->vector_elements)
            return type_b;
       } else {
-        assert(is_glsl_type_matrix(type_b));
+        assert(type_b->is_matrix());
 
         /* A is a row vector and B is a matrix.  Columns of A must match
          * rows of B.
index 2b660168bdd4cde5161c703deb9a16cf6a383ac2..f26dcd6b53838787b05811bfe4691215560bf42b 100644 (file)
@@ -156,11 +156,16 @@ struct glsl_type {
         && (base_type >= GLSL_TYPE_UINT)
         && (base_type <= GLSL_TYPE_BOOL);
    }
-};
 
-#define is_glsl_type_matrix(t)                 \
-   (((t)->matrix_rows > 0)                     \
-    && ((t)->base_type == GLSL_TYPE_FLOAT)) /* GLSL only has float matrices. */
+   /**
+    * Query whether or not a type is a matrix
+    */
+   bool is_matrix() const
+   {
+      /* GLSL only has float matrices. */
+      return (matrix_rows > 0) && (base_type == GLSL_TYPE_FLOAT);
+   }
+};
 
 struct glsl_struct_field {
    const struct glsl_type *type;