virtual void visit(Block &);
virtual void visit(FunctionDeclaration &);
virtual void visit(VariableDeclaration &);
- using TraversingVisitor::visit;
};
class BlockResolver: private TraversingVisitor
{
public:
- void apply(Stage &s) { visit(s.content); }
+ void apply(Stage &s) { s.content.visit(*this); }
private:
virtual void visit(Block &);
virtual void visit(InterfaceBlock &);
- using TraversingVisitor::visit;
};
class VariableResolver: private TraversingVisitor
virtual void visit(InterfaceBlock &);
virtual void visit(FunctionDeclaration &);
virtual void visit(Iteration &);
- using TraversingVisitor::visit;
};
class FunctionResolver: private TraversingVisitor
std::map<std::string, std::vector<FunctionDeclaration *> > functions;
public:
- void apply(Stage &s) { visit(s.content); }
+ void apply(Stage &s) { s.content.visit(*this); }
private:
virtual void visit(FunctionCall &);
virtual void visit(FunctionDeclaration &);
- using TraversingVisitor::visit;
};
class InterfaceGenerator: private TraversingVisitor
virtual void visit(VariableReference &);
virtual void visit(VariableDeclaration &);
virtual void visit(Passthrough &);
- using TraversingVisitor::visit;
};
class DeclarationReorderer: private TraversingVisitor
public:
DeclarationReorderer();
- void apply(Stage &s) { visit(s.content); }
+ void apply(Stage &s) { s.content.visit(*this); }
private:
virtual void visit(Block &);
virtual void visit(VariableDeclaration &);
virtual void visit(InterfaceBlock &) { kind = VARIABLE; }
virtual void visit(FunctionDeclaration &);
- using TraversingVisitor::visit;
};
} // namespace SL