void compare(Node &, Node &);
template<typename T>
T *multi_visit(T &);
+ virtual void visit(Literal &);
+ virtual void visit(VariableReference &);
virtual void visit(BasicTypeDeclaration &);
virtual void visit(ImageTypeDeclaration &);
virtual void visit(StructDeclaration &);
private:
std::set<Node *> dependencies;
std::set<Node *> locals;
+ std::set<FunctionDeclaration *> visited_functions;
public:
std::set<Node *> apply(FunctionDeclaration &);
virtual void visit(InterfaceBlockReference &);
virtual void visit(FunctionCall &);
virtual void visit(VariableDeclaration &);
+ virtual void visit(FunctionDeclaration &);
};
} // namespace SL