clang 20.0.0git
|
Matcher descriptor for variadic functions. More...
Public Types | |
using | RunFunc = VariantMatcher(*)(StringRef MatcherName, SourceRange NameRange, ArrayRef< ParserValue > Args, Diagnostics *Error) |
Public Member Functions | |
template<typename ResultT , typename ArgT , ResultT(*)(ArrayRef< const ArgT * >) F> | |
VariadicFuncMatcherDescriptor (ast_matchers::internal::VariadicFunction< ResultT, ArgT, F > Func, StringRef MatcherName) | |
VariantMatcher | create (SourceRange NameRange, ArrayRef< ParserValue > Args, Diagnostics *Error) const override |
bool | isVariadic () const override |
Returns whether the matcher is variadic. | |
unsigned | getNumArgs () const override |
Returns the number of arguments accepted by the matcher if not variadic. | |
void | getArgKinds (ASTNodeKind ThisKind, unsigned ArgNo, std::vector< ArgKind > &Kinds) const override |
Given that the matcher is being converted to type ThisKind , append the set of argument types accepted for argument ArgNo to ArgKinds . | |
bool | isConvertibleTo (ASTNodeKind Kind, unsigned *Specificity, ASTNodeKind *LeastDerivedKind) const override |
Returns whether this matcher is convertible to the given type. | |
ASTNodeKind | nodeMatcherType () const override |
Public Member Functions inherited from clang::ast_matchers::dynamic::internal::MatcherDescriptor | |
virtual | ~MatcherDescriptor ()=default |
virtual VariantMatcher | create (SourceRange NameRange, ArrayRef< ParserValue > Args, Diagnostics *Error) const =0 |
virtual ASTNodeKind | nodeMatcherType () const |
virtual bool | isBuilderMatcher () const |
virtual std::unique_ptr< MatcherDescriptor > | buildMatcherCtor (SourceRange NameRange, ArrayRef< ParserValue > Args, Diagnostics *Error) const |
virtual bool | isVariadic () const =0 |
Returns whether the matcher is variadic. | |
virtual unsigned | getNumArgs () const =0 |
Returns the number of arguments accepted by the matcher if not variadic. | |
virtual void | getArgKinds (ASTNodeKind ThisKind, unsigned ArgNo, std::vector< ArgKind > &ArgKinds) const =0 |
Given that the matcher is being converted to type ThisKind , append the set of argument types accepted for argument ArgNo to ArgKinds . | |
virtual bool | isConvertibleTo (ASTNodeKind Kind, unsigned *Specificity=nullptr, ASTNodeKind *LeastDerivedKind=nullptr) const =0 |
Returns whether this matcher is convertible to the given type. | |
virtual bool | isPolymorphic () const |
Returns whether the matcher will, given a matcher of any type T, yield a matcher of type T. | |
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 541 of file Marshallers.h.
using clang::ast_matchers::dynamic::internal::VariadicFuncMatcherDescriptor::RunFunc = VariantMatcher (*)(StringRef MatcherName, SourceRange NameRange, ArrayRef<ParserValue> Args, Diagnostics *Error) |
Definition at line 543 of file Marshallers.h.
|
inline |
Definition at line 550 of file Marshallers.h.
References clang::ast_matchers::dynamic::internal::BuildReturnTypeVector< T >::build().
|
inlineoverridevirtual |
Implements clang::ast_matchers::dynamic::internal::MatcherDescriptor.
Definition at line 559 of file Marshallers.h.
References clang::Func.
|
inlineoverridevirtual |
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 568 of file Marshallers.h.
|
inlineoverridevirtual |
Returns the number of arguments accepted by the matcher if not variadic.
Implements clang::ast_matchers::dynamic::internal::MatcherDescriptor.
Definition at line 566 of file Marshallers.h.
|
inlineoverridevirtual |
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 573 of file Marshallers.h.
References clang::ast_matchers::dynamic::internal::isRetKindConvertibleTo(), and Kind.
Referenced by clang::ast_matchers::dynamic::internal::DynCastAllOfMatcherDescriptor::isConvertibleTo().
|
inlineoverridevirtual |
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 565 of file Marshallers.h.
|
inlineoverridevirtual |
Reimplemented from clang::ast_matchers::dynamic::internal::MatcherDescriptor.
Reimplemented in clang::ast_matchers::dynamic::internal::DynCastAllOfMatcherDescriptor.
Definition at line 579 of file Marshallers.h.