clang 20.0.0git
Public Types | Public Member Functions | List of all members
clang::ast_matchers::dynamic::internal::FixedArgCountMatcherDescriptor Class Reference

Simple callback implementation. More...

#include "/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/clang/lib/ASTMatchers/Dynamic/Marshallers.h"

Inheritance diagram for clang::ast_matchers::dynamic::internal::FixedArgCountMatcherDescriptor:
Inheritance graph
[legend]

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< MatcherDescriptorbuildMatcherCtor (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.
 

Detailed 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.

Definition at line 372 of file Marshallers.h.

Member Typedef Documentation

◆ MarshallerType

Definition at line 374 of file Marshallers.h.

Constructor & Destructor Documentation

◆ FixedArgCountMatcherDescriptor()

clang::ast_matchers::dynamic::internal::FixedArgCountMatcherDescriptor::FixedArgCountMatcherDescriptor ( MarshallerType  Marshaller,
void(*)()  Func,
StringRef  MatcherName,
ArrayRef< ASTNodeKind RetKinds,
ArrayRef< ArgKind ArgKinds 
)
inline
Parameters
MarshallerFunction to unpack the arguments and call Func
FuncMatcher construct function. This is the function that compile-time matcher expressions would use to create the matcher.
RetKindsThe list of matcher types to which the matcher is convertible.
ArgKindsThe types of the arguments this matcher takes.

Definition at line 386 of file Marshallers.h.

Member Function Documentation

◆ create()

VariantMatcher clang::ast_matchers::dynamic::internal::FixedArgCountMatcherDescriptor::create ( SourceRange  NameRange,
ArrayRef< ParserValue Args,
Diagnostics Error 
) const
inlineoverridevirtual

◆ getArgKinds()

void clang::ast_matchers::dynamic::internal::FixedArgCountMatcherDescriptor::getArgKinds ( ASTNodeKind  ThisKind,
unsigned  ArgNo,
std::vector< ArgKind > &  ArgKinds 
) const
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.

◆ getNumArgs()

unsigned clang::ast_matchers::dynamic::internal::FixedArgCountMatcherDescriptor::getNumArgs ( ) const
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.

◆ isConvertibleTo()

bool clang::ast_matchers::dynamic::internal::FixedArgCountMatcherDescriptor::isConvertibleTo ( ASTNodeKind  Kind,
unsigned Specificity,
ASTNodeKind LeastDerivedKind 
) const
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.

◆ isVariadic()

bool clang::ast_matchers::dynamic::internal::FixedArgCountMatcherDescriptor::isVariadic ( ) const
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.


The documentation for this class was generated from the following file: