Go to the documentation of this file.
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
A simple visitor class that helps create template argument visitors.
A simple visitor class that helps create template argument visitors.
RetTy VisitTemplateArgument(REF(TemplateArgument), ParamTys...)
The base class of the type hierarchy.
A simple visitor class that helps create template argument visitors.
ArgKind getKind() const
Return the kind of stored template argument.
Represents a template argument.
bool Null(InterpState &S, CodePtr OpPC)
RetTy Visit(REF(TemplateArgument) TA, ParamTys... P)