class VariadicFuncMatcherDescriptor

Declaration

class VariadicFuncMatcherDescriptor : public MatcherDescriptor { /* full declaration omitted */ };

Description

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.

Declared at: clang/lib/ASTMatchers/Dynamic/Marshallers.h:541

Inherits from: MatcherDescriptor

Member Variables

private const clang::ast_matchers::dynamic::internal:: VariadicFuncMatcherDescriptor::RunFunc Func
private const std::string MatcherName
private std::vector<ASTNodeKind> RetKinds
private const clang::ast_matchers::dynamic::ArgKind ArgsKind

Method Overview

  • public template <typename ResultT, typename ArgT, ResultT (*)(ArrayRef<const ArgT *>) F> VariadicFuncMatcherDescriptor(ast_matchers::internal::VariadicFunction<ResultT, ArgT, F> Func, llvm::StringRef MatcherName)
  • 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
  • public clang::ASTNodeKind nodeMatcherType() const

Inherited from MatcherDescriptor:

Methods

template <typename ResultT,
          typename ArgT,
          ResultT (*)(ArrayRef<const ArgT*>) F>
VariadicFuncMatcherDescriptor(
    ast_matchers::internal::
        VariadicFunction<ResultT, ArgT, F> Func,
    llvm::StringRef MatcherName)

Declared at: clang/lib/ASTMatchers/Dynamic/Marshallers.h:550

Templates

ResultT
ArgT
ResultT (*)(ArrayRef) F

Parameters

ast_matchers::internal:: VariadicFunction<ResultT, ArgT, F> Func
llvm::StringRef MatcherName

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:559

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:568

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:566

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:573

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:565

clang::ASTNodeKind nodeMatcherType() const

Declared at: clang/lib/ASTMatchers/Dynamic/Marshallers.h:579