memgraph/cypher/ast/ast_node.hpp

34 lines
579 B
C++
Raw Normal View History

#ifndef MEMGRAPH_CYPHER_AST_AST_NODE_HPP
#define MEMGRAPH_CYPHER_AST_AST_NODE_HPP
#include <memory>
#include "utils/visitor/visitable.hpp"
#include "utils/crtp.hpp"
#include "ast_visitor.hpp"
namespace ast
{
struct AstVisitor;
struct AstVisitable : public Visitable<AstVisitor>
{
using uptr = std::unique_ptr<AstVisitable>;
};
template <class Derived>
struct AstNode : public Crtp<Derived>, public AstVisitable
{
using uptr = std::unique_ptr<Derived>;
2015-10-19 01:44:00 +08:00
void accept(AstVisitor& visitor) override
{
visitor.visit(this->derived());
}
};
}
#endif