summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Turner <[email protected]>2013-06-26 15:53:12 -0700
committerMatt Turner <[email protected]>2013-07-11 20:58:59 -0700
commit8d45caaebaa017e910ae985e005fadc6b626de7d (patch)
tree387d04eec10a9d4e9ad5a0b6ed2d61af3e07b06f
parent5df807b06f20d53063af9cfc5b4fc867f5fb810a (diff)
glsl: Add an is_declaration field to ast_struct_specifier.
Will be used in a later commit to differentiate between a structure type declaration and a variable declaration of a struct type. I.e., the difference between struct S { float x; }; (is_declaration = true) and S s; (is_declaration = false) Also note that is_declaration = true for struct S { float x; } s; Reviewed-by: Ian Romanick <[email protected]>
-rw-r--r--src/glsl/ast.h4
-rw-r--r--src/glsl/glsl_parser_extras.cpp1
2 files changed, 4 insertions, 1 deletions
diff --git a/src/glsl/ast.h b/src/glsl/ast.h
index 87f987682cd..8abea5225f0 100644
--- a/src/glsl/ast.h
+++ b/src/glsl/ast.h
@@ -460,7 +460,8 @@ public:
* be modified. Zeros the inherited ast_node's fields.
*/
ast_struct_specifier(const ast_struct_specifier& that):
- ast_node(), name(that.name), declarations(that.declarations)
+ ast_node(), name(that.name), declarations(that.declarations),
+ is_declaration(that.is_declaration)
{
/* empty */
}
@@ -475,6 +476,7 @@ public:
const char *name;
/* List of ast_declarator_list * */
exec_list declarations;
+ bool is_declaration;
};
diff --git a/src/glsl/glsl_parser_extras.cpp b/src/glsl/glsl_parser_extras.cpp
index 664f8d15917..aa5a435fa95 100644
--- a/src/glsl/glsl_parser_extras.cpp
+++ b/src/glsl/glsl_parser_extras.cpp
@@ -1236,6 +1236,7 @@ ast_struct_specifier::ast_struct_specifier(const char *identifier,
}
name = identifier;
this->declarations.push_degenerate_list_at_head(&declarator_list->link);
+ is_declaration = true;
}
extern "C" {