13 #ifndef LLVM_CLANG_AST_TEMPLATEARGUMENTVISITOR_H 14 #define LLVM_CLANG_AST_TEMPLATEARGUMENTVISITOR_H 20 namespace templateargumentvisitor {
23 template <
template <
typename>
class Ref,
typename ImplClass,
24 typename RetTy = void,
typename... ParamTys>
27 #define REF(CLASS) typename Ref<CLASS>::type 28 #define DISPATCH(NAME) \ 29 case TemplateArgument::NAME: \ 30 return static_cast<ImplClass *>(this)->Visit##NAME##TemplateArgument( \ 31 TA, std::forward<ParamTys>(P)...) 45 llvm_unreachable(
"TemplateArgument is not covered in switch!");
51 #define VISIT_METHOD(CATEGORY) \ 52 RetTy Visit##CATEGORY##TemplateArgument(REF(TemplateArgument) TA, \ 54 return VisitTemplateArgument(TA, std::forward<ParamTys>(P)...); \ 82 template <
typename ImplClass,
typename RetTy = void,
typename... ParamTys>
85 RetTy, ParamTys...> {};
91 template <
typename ImplClass,
typename RetTy = void,
typename... ParamTys>
94 RetTy, ParamTys...> {};
98 #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.
bool Null(InterpState &S, CodePtr OpPC)