virtual void visit(ProgramSyntax::InterfaceBlock &);
};
+ struct FunctionResolver: Visitor
+ {
+ std::map<std::string, std::vector<ProgramSyntax::FunctionDeclaration *> > functions;
+
+ virtual void visit(ProgramSyntax::FunctionCall &);
+ virtual void visit(ProgramSyntax::FunctionDeclaration &);
+ };
+
struct InterfaceGenerator: Visitor
{
std::string in_prefix;
virtual void visit(ProgramSyntax::Iteration &);
};
+ struct UnusedFunctionLocator: Visitor
+ {
+ typedef std::set<ProgramSyntax::Node *> ResultType;
+
+ std::set<ProgramSyntax::Node *> unused_nodes;
+ std::set<ProgramSyntax::FunctionDeclaration *> 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<ProgramSyntax::Node *> to_remove;