glsl: Create AST data structures for switch statement and case label

Data structures for switch statement and case label are created that parallel
the structure of other AST data.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
Dan McCabe
2011-11-07 15:05:16 -08:00
parent a69da5c0ce
commit 19daba5470

View File

@@ -629,13 +629,19 @@ public:
class ast_case_label : public ast_node { class ast_case_label : public ast_node {
public: public:
ast_case_label(ast_expression *test_value);
virtual void print(void) const;
virtual ir_rvalue *hir(exec_list *instructions,
struct _mesa_glsl_parse_state *state);
/** /**
* An expression of NULL means 'default'. * An test value of NULL means 'default'.
*/ */
ast_expression *expression; ast_expression *test_value;
}; };
class ast_selection_statement : public ast_node { class ast_selection_statement : public ast_node {
public: public:
ast_selection_statement(ast_expression *condition, ast_selection_statement(ast_expression *condition,
@@ -654,8 +660,18 @@ public:
class ast_switch_statement : public ast_node { class ast_switch_statement : public ast_node {
public: public:
ast_expression *expression; ast_switch_statement(ast_expression *test_expression,
exec_list statements; ast_node *body);
virtual void print(void) const;
virtual ir_rvalue *hir(exec_list *instructions,
struct _mesa_glsl_parse_state *state);
ast_expression *test_expression;
ast_node *body;
protected:
void test_to_hir(exec_list *, struct _mesa_glsl_parse_state *);
}; };
class ast_iteration_statement : public ast_node { class ast_iteration_statement : public ast_node {