clang API Documentation
Matcher descriptor for variadic functions. More...
#include <Marshallers.h>
Public Types | |
typedef VariantMatcher(* | RunFunc )(StringRef MatcherName, const SourceRange &NameRange, ArrayRef< ParserValue > Args, Diagnostics *Error) |
Public Member Functions | |
template<typename ResultT , typename ArgT , ResultT(*)(ArrayRef< const ArgT * >) F> | |
VariadicFuncMatcherDescriptor (llvm::VariadicFunction< ResultT, ArgT, F > Func, StringRef MatcherName) | |
VariantMatcher | create (const SourceRange &NameRange, ArrayRef< ParserValue > Args, Diagnostics *Error) const |
bool | isVariadic () const |
unsigned | getNumArgs () const |
Returns the number of arguments accepted by the matcher if not variadic. | |
void | getArgKinds (ast_type_traits::ASTNodeKind ThisKind, unsigned ArgNo, std::vector< ArgKind > &Kinds) const |
bool | isConvertibleTo (ast_type_traits::ASTNodeKind Kind, unsigned *Specificity, ast_type_traits::ASTNodeKind *LeastDerivedKind) const |
Matcher descriptor for variadic functions.
This class simply wraps a VariadicFunction with the right signature to export it as a MatcherDescriptor. This allows us to have one implementation of the interface for as many free functions as we want, reducing the number of symbols and size of the object file.
Definition at line 318 of file Marshallers.h.
typedef VariantMatcher(* clang::ast_matchers::dynamic::internal::VariadicFuncMatcherDescriptor::RunFunc)(StringRef MatcherName, const SourceRange &NameRange, ArrayRef< ParserValue > Args, Diagnostics *Error) |
Definition at line 320 of file Marshallers.h.
clang::ast_matchers::dynamic::internal::VariadicFuncMatcherDescriptor::VariadicFuncMatcherDescriptor | ( | llvm::VariadicFunction< ResultT, ArgT, F > | Func, |
StringRef | MatcherName | ||
) | [inline] |
Definition at line 327 of file Marshallers.h.
References clang::ast_matchers::dynamic::internal::BuildReturnTypeVector< T >::build().
VariantMatcher clang::ast_matchers::dynamic::internal::VariadicFuncMatcherDescriptor::create | ( | const SourceRange & | NameRange, |
ArrayRef< ParserValue > | Args, | ||
Diagnostics * | Error | ||
) | const [inline, virtual] |
Implements clang::ast_matchers::dynamic::internal::MatcherDescriptor.
Definition at line 335 of file Marshallers.h.
References Func.
void clang::ast_matchers::dynamic::internal::VariadicFuncMatcherDescriptor::getArgKinds | ( | ast_type_traits::ASTNodeKind | ThisKind, |
unsigned | ArgNo, | ||
std::vector< ArgKind > & | ArgKinds | ||
) | const [inline, virtual] |
Given that the matcher is being converted to type ThisKind
, append the set of argument types accepted for argument ArgNo
to ArgKinds
.
Implements clang::ast_matchers::dynamic::internal::MatcherDescriptor.
Definition at line 342 of file Marshallers.h.
unsigned clang::ast_matchers::dynamic::internal::VariadicFuncMatcherDescriptor::getNumArgs | ( | ) | const [inline, virtual] |
Returns the number of arguments accepted by the matcher if not variadic.
Implements clang::ast_matchers::dynamic::internal::MatcherDescriptor.
Definition at line 341 of file Marshallers.h.
bool clang::ast_matchers::dynamic::internal::VariadicFuncMatcherDescriptor::isConvertibleTo | ( | ast_type_traits::ASTNodeKind | Kind, |
unsigned * | Specificity, | ||
ast_type_traits::ASTNodeKind * | LeastDerivedKind | ||
) | const [inline, virtual] |
Returns whether this matcher is convertible to the given type. If it is so convertible, store in *Specificity a value corresponding to the "specificity" of the converted matcher to the given context, and in LeastDerivedKind the least derived matcher kind which would result in the same matcher overload. Zero specificity indicates that this conversion would produce a trivial matcher that will either always or never match. Such matchers are excluded from code completion results.
Implements clang::ast_matchers::dynamic::internal::MatcherDescriptor.
Reimplemented in clang::ast_matchers::dynamic::internal::DynCastAllOfMatcherDescriptor.
Definition at line 346 of file Marshallers.h.
References clang::ast_matchers::dynamic::internal::isRetKindConvertibleTo().
Referenced by clang::ast_matchers::dynamic::internal::DynCastAllOfMatcherDescriptor::isConvertibleTo().
bool clang::ast_matchers::dynamic::internal::VariadicFuncMatcherDescriptor::isVariadic | ( | ) | const [inline, virtual] |
Returns whether the matcher is variadic. Variadic matchers can take any number of arguments, but they must be of the same type.
Implements clang::ast_matchers::dynamic::internal::MatcherDescriptor.
Definition at line 340 of file Marshallers.h.