]> git.tdb.fi Git - libs/gl.git/blobdiff - source/programcompiler.h
Check the flat qualifier from the correct member
[libs/gl.git] / source / programcompiler.h
diff --git a/source/programcompiler.h b/source/programcompiler.h
deleted file mode 100644 (file)
index ecae3dc..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-#ifndef MSP_GL_PROGRAMCOMPILER_H_
-#define MSP_GL_PROGRAMCOMPILER_H_
-
-#include <set>
-#include "programparser.h"
-#include "programsyntax.h"
-
-namespace Msp {
-namespace GL {
-
-class Program;
-
-class ProgramCompiler
-{
-public:
-       struct Formatter: ProgramSyntax::NodeVisitor
-       {
-               std::string formatted;
-               unsigned indent;
-               bool parameter_list;
-               bool else_if;
-
-               Formatter();
-
-               virtual void visit(ProgramSyntax::Block &);
-               virtual void visit(ProgramSyntax::Literal &);
-               virtual void visit(ProgramSyntax::ParenthesizedExpression &);
-               virtual void visit(ProgramSyntax::VariableReference &);
-               virtual void visit(ProgramSyntax::MemberAccess &);
-               virtual void visit(ProgramSyntax::UnaryExpression &);
-               virtual void visit(ProgramSyntax::BinaryExpression &);
-               virtual void visit(ProgramSyntax::FunctionCall &);
-               virtual void visit(ProgramSyntax::ExpressionStatement &);
-               virtual void visit(ProgramSyntax::Layout &);
-               virtual void visit(ProgramSyntax::StructDeclaration &);
-               virtual void visit(ProgramSyntax::VariableDeclaration &);
-               virtual void visit(ProgramSyntax::InterfaceBlock &);
-               virtual void visit(ProgramSyntax::FunctionDeclaration &);
-               virtual void visit(ProgramSyntax::Conditional &);
-               virtual void visit(ProgramSyntax::Iteration &);
-               virtual void visit(ProgramSyntax::Return &);
-       };
-
-private:
-       struct VariableResolver: ProgramSyntax::TraversingVisitor
-       {
-               std::vector<ProgramSyntax::Block *> blocks;
-               ProgramSyntax::StructDeclaration *type;
-               bool anonymous;
-
-               VariableResolver();
-
-               virtual void visit(ProgramSyntax::Block &);
-               virtual void visit(ProgramSyntax::VariableReference &);
-               virtual void visit(ProgramSyntax::MemberAccess &);
-               virtual void visit(ProgramSyntax::BinaryExpression &);
-               virtual void visit(ProgramSyntax::StructDeclaration &);
-               virtual void visit(ProgramSyntax::VariableDeclaration &);
-               virtual void visit(ProgramSyntax::InterfaceBlock &);
-       };
-
-       struct InterfaceGenerator: ProgramSyntax::TraversingVisitor
-       {
-               ProgramSyntax::Stage *stage;
-               std::string in_prefix;
-               std::string out_prefix;
-               unsigned scope_level;
-               std::map<std::string, ProgramSyntax::NodePtr<ProgramSyntax::Node> > iface_declarations;
-               bool remove_node;
-               std::list<ProgramSyntax::NodePtr<ProgramSyntax::Node> > insert_nodes;
-
-               InterfaceGenerator();
-
-               static std::string get_out_prefix(ProgramSyntax::StageType);
-               void visit(ProgramSyntax::Stage &);
-               virtual void visit(ProgramSyntax::Block &);
-               std::string change_prefix(const std::string &, const std::string &) const;
-               bool generate_interface(ProgramSyntax::VariableDeclaration &, const std::string &, const std::string &);
-               void insert_assignment(const std::string &, ProgramSyntax::Expression *);
-               virtual void visit(ProgramSyntax::VariableReference &);
-               virtual void visit(ProgramSyntax::VariableDeclaration &);
-               virtual void visit(ProgramSyntax::Passthrough &);
-       };
-
-       struct VariableRenamer: ProgramSyntax::TraversingVisitor
-       {
-               virtual void visit(ProgramSyntax::VariableReference &);
-               virtual void visit(ProgramSyntax::VariableDeclaration &);
-       };
-
-       struct UnusedVariableLocator: ProgramSyntax::TraversingVisitor
-       {
-               ProgramSyntax::Stage *stage;
-               std::set<ProgramSyntax::Node *> unused_nodes;
-               std::map<ProgramSyntax::VariableDeclaration *, ProgramSyntax::Node *> assignments;
-               bool assignment;
-               ProgramSyntax::VariableDeclaration *assignment_target;
-
-               UnusedVariableLocator();
-
-               void visit(ProgramSyntax::Stage &);
-               virtual void visit(ProgramSyntax::VariableReference &);
-               virtual void visit(ProgramSyntax::MemberAccess &);
-               virtual void visit(ProgramSyntax::BinaryExpression &);
-               virtual void visit(ProgramSyntax::ExpressionStatement &);
-               virtual void visit(ProgramSyntax::VariableDeclaration &);
-       };
-
-       struct NodeRemover: ProgramSyntax::TraversingVisitor
-       {
-               ProgramSyntax::Stage *stage;
-               std::set<ProgramSyntax::Node *> to_remove;
-               unsigned n_removed;
-               bool immutable_block;
-               bool remove_block;
-
-               NodeRemover();
-
-               void visit(ProgramSyntax::Stage &);
-               virtual void visit(ProgramSyntax::Block &);
-               virtual void visit(ProgramSyntax::StructDeclaration &);
-               virtual void visit(ProgramSyntax::VariableDeclaration &);
-               virtual void visit(ProgramSyntax::InterfaceBlock &);
-       };
-
-       ProgramParser parser;
-       ProgramSyntax::Module *module;
-
-public:
-       ProgramCompiler();
-
-       void compile(const std::string &);
-       void compile(IO::Base &);
-       void add_shaders(Program &);
-
-private:
-       void process();
-       void generate(ProgramSyntax::Stage &);
-       void optimize(ProgramSyntax::Stage &);
-       static void inject_block(ProgramSyntax::Block &, const ProgramSyntax::Block &);
-       static void resolve_variables(ProgramSyntax::Stage &);
-       std::string format_stage(ProgramSyntax::Stage &);
-};
-
-} // namespace GL
-} // namespace Msp
-
-#endif