10 #ifndef LLVM_CLANG_AST_COMMENTVISITOR_H 11 #define LLVM_CLANG_AST_COMMENTVISITOR_H 14 #include "llvm/ADT/STLExtras.h" 15 #include "llvm/Support/ErrorHandling.h" 19 template <
template <
typename>
class Ptr,
typename ImplClass,
20 typename RetTy = void,
class... ParamTys>
23 #define PTR(CLASS) typename Ptr<CLASS>::type 24 #define DISPATCH(NAME, CLASS) \ 25 return static_cast<ImplClass *>(this)->visit##NAME( \ 26 static_cast<PTR(CLASS)>(C), std::forward<ParamTys>(P)...) 33 default: llvm_unreachable(
"Unknown comment kind!");
34 #define ABSTRACT_COMMENT(COMMENT) 35 #define COMMENT(CLASS, PARENT) \ 36 case Comment::CLASS##Kind: DISPATCH(CLASS, CLASS); 37 #include "clang/AST/CommentNodes.inc" 38 #undef ABSTRACT_COMMENT 45 #define ABSTRACT_COMMENT(COMMENT) COMMENT 46 #define COMMENT(CLASS, PARENT) \ 47 RetTy visit##CLASS(PTR(CLASS) C, ParamTys... P) { DISPATCH(PARENT, PARENT); } 48 #include "clang/AST/CommentNodes.inc" 49 #undef ABSTRACT_COMMENT 58 template <
typename ImplClass,
typename RetTy = void,
class... ParamTys>
60 RetTy, ParamTys...> {};
62 template <
typename ImplClass,
typename RetTy = void,
class... ParamTys>
70 #endif // LLVM_CLANG_AST_COMMENTVISITOR_H
Dataflow Directional Tag Classes.