#ifndef AST_H
#define AST_H
-#include "main/simple_list.h"
#include "list.h"
#include "glsl_parser_extras.h"
struct YYLTYPE;
-class ast_node : public simple_node {
+class ast_node {
public:
virtual ~ast_node();
virtual void print(void) const;
unsigned column;
} location;
+ exec_node link;
+
protected:
ast_node(void);
};
/**
- * List of expressions for an \c ast_sequence.
+ * List of expressions for an \c ast_sequence or parameters for an
+ * \c ast_function_call
*/
- struct simple_node expressions;
+ exec_list expressions;
};
class ast_expression_bin : public ast_expression {
struct _mesa_glsl_parse_state *state);
int new_scope;
- struct simple_node statements;
+ exec_list statements;
};
class ast_declaration : public ast_node {
ast_struct_specifier(char *identifier, ast_node *declarator_list);
virtual void print(void) const;
+ virtual ir_rvalue *hir(exec_list *instructions,
+ struct _mesa_glsl_parse_state *state);
+
char *name;
- struct simple_node declarations;
+ exec_list declarations;
};
virtual void print(void) const;
+ ir_rvalue *hir(exec_list *, struct _mesa_glsl_parse_state *);
+
enum ast_types type_specifier;
const char *type_name;
struct _mesa_glsl_parse_state *state);
ast_fully_specified_type *type;
- struct simple_node declarations;
+ exec_list declarations;
/**
* Special flag for vertex shader "invariant" declarations.
int is_array;
ast_expression *array_size;
- static void parameters_to_hir(simple_node *ast_parameters,
+ static void parameters_to_hir(exec_list *ast_parameters,
bool formal, exec_list *ir_parameters,
struct _mesa_glsl_parse_state *state);
ast_fully_specified_type *return_type;
char *identifier;
- struct simple_node parameters;
+ exec_list parameters;
private:
/**
class ast_switch_statement : public ast_node {
public:
ast_expression *expression;
- struct simple_node statements;
+ exec_list statements;
};
class ast_iteration_statement : public ast_node {