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:
@@ -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 {
|
||||||
|
Reference in New Issue
Block a user