class FixedArgCountMatcherDescriptor
Declaration
class FixedArgCountMatcherDescriptor : public MatcherDescriptor { /* full declaration omitted */ };
Description
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.
Declared at: clang/lib/ASTMatchers/Dynamic/Marshallers.h:372
Inherits from: MatcherDescriptor
Member Variables
- private const clang::ast_matchers::dynamic::internal:: FixedArgCountMatcherDescriptor::MarshallerType Marshaller
- private void (*const)() Func
- private const std::string MatcherName
- private const std::vector<ASTNodeKind> RetKinds
- private const std::vector<ArgKind> ArgKinds
Method Overview
- public FixedArgCountMatcherDescriptor(clang::ast_matchers::dynamic::internal::FixedArgCountMatcherDescriptor::MarshallerType Marshaller, void (*)() Func, llvm::StringRef MatcherName, ArrayRef<clang::ASTNodeKind> RetKinds, ArrayRef<clang::ast_matchers::dynamic::ArgKind> ArgKinds)
- public clang::ast_matchers::dynamic::VariantMatcher create(clang::ast_matchers::dynamic::SourceRange NameRange, ArrayRef<clang::ast_matchers::dynamic::ParserValue> Args, clang::ast_matchers::dynamic::Diagnostics * Error) const
- public void getArgKinds(clang::ASTNodeKind ThisKind, unsigned int ArgNo, std::vector<ArgKind> & Kinds) const
- public unsigned int getNumArgs() const
- public bool isConvertibleTo(clang::ASTNodeKind Kind, unsigned int * Specificity, clang::ASTNodeKind * LeastDerivedKind) const
- public bool isVariadic() const
Inherited from MatcherDescriptor:
- public buildMatcherCtor
- public create
- public getArgKinds
- public getNumArgs
- public isBuilderMatcher
- public isConvertibleTo
- public isPolymorphic
- public isVariadic
- public nodeMatcherType
Methods
¶FixedArgCountMatcherDescriptor(
clang::ast_matchers::dynamic::internal::
FixedArgCountMatcherDescriptor::
MarshallerType Marshaller,
void (*)() Func,
llvm::StringRef MatcherName,
ArrayRef<clang::ASTNodeKind> RetKinds,
ArrayRef<
clang::ast_matchers::dynamic::ArgKind>
ArgKinds)
FixedArgCountMatcherDescriptor(
clang::ast_matchers::dynamic::internal::
FixedArgCountMatcherDescriptor::
MarshallerType Marshaller,
void (*)() Func,
llvm::StringRef MatcherName,
ArrayRef<clang::ASTNodeKind> RetKinds,
ArrayRef<
clang::ast_matchers::dynamic::ArgKind>
ArgKinds)
Declared at: clang/lib/ASTMatchers/Dynamic/Marshallers.h:386
Parameters
- clang::ast_matchers::dynamic::internal:: FixedArgCountMatcherDescriptor::MarshallerType Marshaller
- Function to unpack the arguments and call \c Func
- void (*)() Func
- Matcher construct function. This is the function that compile-time matcher expressions would use to create the matcher.
- llvm::StringRef MatcherName
- ArrayRef<clang::ASTNodeKind> RetKinds
- The list of matcher types to which the matcher is convertible.
- ArrayRef<clang::ast_matchers::dynamic::ArgKind> ArgKinds
- The types of the arguments this matcher takes.
¶clang::ast_matchers::dynamic::VariantMatcher
create(
clang::ast_matchers::dynamic::SourceRange
NameRange,
ArrayRef<
clang::ast_matchers::dynamic::ParserValue>
Args,
clang::ast_matchers::dynamic::Diagnostics*
Error) const
clang::ast_matchers::dynamic::VariantMatcher
create(
clang::ast_matchers::dynamic::SourceRange
NameRange,
ArrayRef<
clang::ast_matchers::dynamic::ParserValue>
Args,
clang::ast_matchers::dynamic::Diagnostics*
Error) const
Declared at: clang/lib/ASTMatchers/Dynamic/Marshallers.h:394
Parameters
- clang::ast_matchers::dynamic::SourceRange NameRange
- ArrayRef< clang::ast_matchers::dynamic::ParserValue> Args
- clang::ast_matchers::dynamic::Diagnostics* Error
¶void getArgKinds(
clang::ASTNodeKind ThisKind,
unsigned int ArgNo,
std::vector<ArgKind>& Kinds) const
void getArgKinds(
clang::ASTNodeKind ThisKind,
unsigned int ArgNo,
std::vector<ArgKind>& Kinds) const
Description
Given that the matcher is being converted to type \p ThisKind, append the set of argument types accepted for argument \p ArgNo to \p ArgKinds.
Declared at: clang/lib/ASTMatchers/Dynamic/Marshallers.h:403
Parameters
- clang::ASTNodeKind ThisKind
- unsigned int ArgNo
- std::vector<ArgKind>& Kinds
¶unsigned int getNumArgs() const
unsigned int getNumArgs() const
Description
Returns the number of arguments accepted by the matcher if not variadic.
Declared at: clang/lib/ASTMatchers/Dynamic/Marshallers.h:401
¶bool isConvertibleTo(
clang::ASTNodeKind Kind,
unsigned int* Specificity,
clang::ASTNodeKind* LeastDerivedKind) const
bool isConvertibleTo(
clang::ASTNodeKind Kind,
unsigned int* Specificity,
clang::ASTNodeKind* LeastDerivedKind) const
Description
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.
Declared at: clang/lib/ASTMatchers/Dynamic/Marshallers.h:408
Parameters
- clang::ASTNodeKind Kind
- unsigned int* Specificity
- clang::ASTNodeKind* LeastDerivedKind
¶bool isVariadic() const
bool isVariadic() const
Description
Returns whether the matcher is variadic. Variadic matchers can take any number of arguments, but they must be of the same type.
Declared at: clang/lib/ASTMatchers/Dynamic/Marshallers.h:400