ir_print_visitor: Print out constant structure values.
authorKenneth Graunke <kenneth@whitecape.org>
Thu, 2 Dec 2010 18:11:49 +0000 (10:11 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Fri, 3 Dec 2010 21:59:21 +0000 (13:59 -0800)
In the form (constant type ((field1 value) (field2 value) ...))

src/glsl/ir_print_visitor.cpp

index 55188ee4527c8a62ebc45c8410a3012b84fc1652..0aa0b0a5d32f3a7f0e54a37eb86aba174c0cd2be 100644 (file)
@@ -318,6 +318,15 @@ void ir_print_visitor::visit(ir_constant *ir)
    if (ir->type->is_array()) {
       for (unsigned i = 0; i < ir->type->length; i++)
         ir->get_array_element(i)->accept(this);
+   } else if (ir->type->is_record()) {
+      ir_constant *value = (ir_constant *) ir->components.get_head();
+      for (unsigned i = 0; i < ir->type->length; i++) {
+        printf("(%s ", ir->type->fields.structure->name);
+        value->accept(this);
+        printf(")");
+
+        value = (ir_constant *) value->next;
+      }
    } else {
       for (unsigned i = 0; i < ir->type->components(); i++) {
         if (i != 0)