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