glsl: Fix handling of function calls inside nested loops.
[mesa.git] / src / glsl / glsl_symbol_table.h
index 9f5602787f083c1a077b8bb93d18debb28ebbe18..0e62448e2e7ca6c4ff5df1a3ce44afa4ddc5b6e2 100644 (file)
@@ -98,7 +98,10 @@ public:
    /*@{*/
    bool add_variable(ir_variable *v);
    bool add_type(const char *name, const glsl_type *t);
+   bool add_type_ast(const char *name, const class ast_type_specifier *t);
    bool add_function(ir_function *f);
+   bool add_interface(const char *name, const glsl_type *i,
+                      enum ir_variable_mode mode);
    /*@}*/
 
    /**
@@ -112,9 +115,20 @@ public:
    /*@{*/
    ir_variable *get_variable(const char *name);
    const glsl_type *get_type(const char *name);
+   const class ast_type_specifier *get_type_ast(const char *name);
    ir_function *get_function(const char *name);
+   const glsl_type *get_interface(const char *name,
+                                  enum ir_variable_mode mode);
    /*@}*/
 
+   /**
+    * Disable a previously-added variable so that it no longer appears to be
+    * in the symbol table.  This is necessary when gl_PerVertex is redeclared,
+    * to ensure that previously-available built-in variables are no longer
+    * available.
+    */
+   void disable_variable(const char *name);
+
 private:
    symbol_table_entry *get_entry(const char *name);