[visitors] ported llvm asm generator
[ozulis.git] / src / ozulis / visitors / visitor.hh
blob38d2b62f275931f73b0a508978e840b899449334
1 #ifndef VISITOR_VISITOR_HH
2 # define VISITOR_VISITOR_HH
4 # include <ozulis/core/id-visitor.hh>
5 # include <ozulis/ast/ast.hh>
7 namespace ozulis
9 namespace visitors
11 class GetNodeId
13 public:
14 static inline id_t id(const ast::Node & node)
16 return node.nodeType;
20 template <class T, class Node, typename ...Args>
21 class VisitorBase : public core::IdVisitor<T, Node, GetNodeId, T &, Args...>
25 template <class T, typename ...Args>
26 class Visitor : public VisitorBase<T, ast::Node, Args...>
28 public:
29 typedef Visitor<T, Args...> Visitor_t;
32 template <class T, typename ...Args>
33 class ConstVisitor : public VisitorBase<T, const ast::Node, Args...>
35 public:
36 typedef ConstVisitor<T, Args...> ConstVisitor_t;
41 #endif /* !VISITORS_VISITOR_HH */