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:

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)

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

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

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

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

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

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