10 #ifndef LLVM_CLANG_AST_COMMENTVISITOR_H
11 #define LLVM_CLANG_AST_COMMENTVISITOR_H
14 #include "llvm/Support/ErrorHandling.h"
22 template<
template <
typename>
class Ptr,
typename ImplClass,
typename RetTy=
void>
25 #define PTR(CLASS) typename Ptr<CLASS>::type
26 #define DISPATCH(NAME, CLASS) \
27 return static_cast<ImplClass*>(this)->visit ## NAME(static_cast<PTR(CLASS)>(C))
34 default: llvm_unreachable(
"Unknown comment kind!");
35 #define ABSTRACT_COMMENT(COMMENT)
36 #define COMMENT(CLASS, PARENT) \
37 case Comment::CLASS##Kind: DISPATCH(CLASS, CLASS);
38 #include "clang/AST/CommentNodes.inc"
39 #undef ABSTRACT_COMMENT
46 #define ABSTRACT_COMMENT(COMMENT) COMMENT
47 #define COMMENT(CLASS, PARENT) \
48 RetTy visit ## CLASS(PTR(CLASS) C) { DISPATCH(PARENT, PARENT); }
49 #include "clang/AST/CommentNodes.inc"
50 #undef ABSTRACT_COMMENT
59 template<
typename ImplClass,
typename RetTy=
void>
63 template<
typename ImplClass,
typename RetTy=
void>