X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fprogramcompiler.h;h=8681d3638a032cabd389879922fe7378c4a45a76;hb=859015dce969a0d9ba2bc603d6dbb2685159e393;hp=f585ba92347ae52e580eec7c5d42ce993fc8c483;hpb=ba97b71564cadd322fe1bf3d8afe556b38ef0647;p=libs%2Fgl.git diff --git a/source/programcompiler.h b/source/programcompiler.h index f585ba92..8681d363 100644 --- a/source/programcompiler.h +++ b/source/programcompiler.h @@ -108,6 +108,14 @@ private: virtual void visit(ProgramSyntax::InterfaceBlock &); }; + struct FunctionResolver: Visitor + { + std::map > functions; + + virtual void visit(ProgramSyntax::FunctionCall &); + virtual void visit(ProgramSyntax::FunctionDeclaration &); + }; + struct InterfaceGenerator: Visitor { std::string in_prefix; @@ -207,6 +215,18 @@ private: virtual void visit(ProgramSyntax::Iteration &); }; + struct UnusedFunctionLocator: Visitor + { + typedef std::set ResultType; + + std::set unused_nodes; + std::set used_definitions; + + const ResultType &get_result() const { return unused_nodes; } + virtual void visit(ProgramSyntax::FunctionCall &); + virtual void visit(ProgramSyntax::FunctionDeclaration &); + }; + struct NodeRemover: Visitor { std::set to_remove;