kDB: Knowledge DataBase
Loading...
Searching...
No Matches
NodeVisitorImplementation.h
1#pragma once
2
3#include "AbstractNodeVisitor.h"
4
5#include <knowCore/Global.h>
6
7#define __KDB_SPARQL_ALGEBRA_NODE_VISITOR_OVERLOAD(_NAME_, _I_) \
8 Return visit(_NAME_##CSP _node, const Parameter& _parameter);
9
10#define KDB_SPARQL_ALGEBRA_NODE_VISITOR_OVERLOAD(...) \
11 KNOWCORE_FOREACH(__KDB_SPARQL_ALGEBRA_NODE_VISITOR_OVERLOAD, __VA_ARGS__)
12
13namespace kDB::SPARQL::Algebra
14{
19 // TODO rename to DefaultNodeVisitor?
20 template<typename _TR_, typename... _TArgs_>
21 class NodeVisitorImplementation : public AbstractNodeVisitor<_TR_, _TArgs_...>
22 {
23 protected:
24 virtual _TR_ visitDefault(NodeCSP _node, const _TArgs_&...) = 0;
25#define KDB_SPARQL_ALGEBRA_GENERATE(_KLASS_NAME_, _MEMBER_DEF_) \
26 _TR_ visit(_KLASS_NAME_##CSP _node, const _TArgs_&... _args) override \
27 { \
28 return visitDefault(_node, _args...); \
29 }
30#include "NodesDefs.h"
31#undef KDB_SPARQL_ALGEBRA_GENERATE
32 };
33} // namespace kDB::SPARQL::Algebra
Definition NodeVisitorImplementation.h:22