clang 20.0.0git
|
Simple callback implementation. More...
Public Types | |
using | MarshallerType = VariantMatcher(*)(void(*Func)(), StringRef MatcherName, SourceRange NameRange, ArrayRef< ParserValue > Args, Diagnostics *Error) |
Public Member Functions | |
FixedArgCountMatcherDescriptor (MarshallerType Marshaller, void(*Func)(), StringRef MatcherName, ArrayRef< ASTNodeKind > RetKinds, ArrayRef< ArgKind > ArgKinds) | |
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. | |
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. | |
Simple callback implementation.
Marshaller and function are provided.
This class wraps a function of arbitrary signature and a marshaller function into a MatcherDescriptor. The marshaller is in charge of taking the VariantValue arguments, checking their types, unpacking them and calling the underlying function.
Definition at line 372 of file Marshallers.h.
using clang::ast_matchers::dynamic::internal::FixedArgCountMatcherDescriptor::MarshallerType = VariantMatcher (*)(void (*Func)(), StringRef MatcherName, SourceRange NameRange, ArrayRef<ParserValue> Args, Diagnostics *Error) |
Definition at line 374 of file Marshallers.h.
|
inline |
Marshaller | Function to unpack the arguments and call Func |
Func | Matcher construct function. This is the function that compile-time matcher expressions would use to create the matcher. |
RetKinds | The list of matcher types to which the matcher is convertible. |
ArgKinds | The types of the arguments this matcher takes. |
Definition at line 386 of file Marshallers.h.
|
inlineoverridevirtual |
Implements clang::ast_matchers::dynamic::internal::MatcherDescriptor.
Definition at line 394 of file Marshallers.h.
|
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 403 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 401 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.
Definition at line 408 of file Marshallers.h.
References clang::ast_matchers::dynamic::internal::isRetKindConvertibleTo(), and Kind.
|
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 400 of file Marshallers.h.