14 #ifndef LLVM_CLANG_AST_TEMPLATEARGUMENTVISITOR_H 15 #define LLVM_CLANG_AST_TEMPLATEARGUMENTVISITOR_H 21 namespace templateargumentvisitor {
24 template <
template <
typename>
class Ref,
typename ImplClass,
25 typename RetTy = void,
typename... ParamTys>
28 #define REF(CLASS) typename Ref<CLASS>::type 29 #define DISPATCH(NAME) \ 30 case TemplateArgument::NAME: \ 31 return static_cast<ImplClass *>(this)->Visit##NAME##TemplateArgument( \ 32 TA, std::forward<ParamTys>(P)...) 46 llvm_unreachable(
"TemplateArgument is not covered in switch!");
52 #define VISIT_METHOD(CATEGORY) \ 53 RetTy Visit##CATEGORY##TemplateArgument(REF(TemplateArgument) TA, \ 55 return VisitTemplateArgument(TA, std::forward<ParamTys>(P)...); \ 83 template <
typename ImplClass,
typename RetTy = void,
typename... ParamTys>
86 RetTy, ParamTys...> {};
92 template <
typename ImplClass,
typename RetTy = void,
typename... ParamTys>
95 RetTy, ParamTys...> {};
99 #endif // LLVM_CLANG_AST_TEMPLATEARGUMENTVISITOR_H RetTy VisitTemplateArgument(REF(TemplateArgument), ParamTys...)
RetTy Visit(REF(TemplateArgument) TA, ParamTys... P)
The base class of the type hierarchy.
A simple visitor class that helps create template argument visitors.
A simple visitor class that helps create template argument visitors.
A simple visitor class that helps create template argument visitors.
Represents a template argument.
Dataflow Directional Tag Classes.
ArgKind getKind() const
Return the kind of stored template argument.