clang 10.0.0git

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

Matcher descriptor for variadic functions. More...

`#include "/work/www-prereleases/10.0.0/rc1/docsbuild/clang/lib/ASTMatchers/Dynamic/Marshallers.h"`

Inheritance diagram for clang::ast_matchers::dynamic::internal::VariadicFuncMatcherDescriptor:
[legend]
Collaboration diagram for clang::ast_matchers::dynamic::internal::VariadicFuncMatcherDescriptor:
[legend]

## Public Types
using | RunFunc = VariantMatcher(*)(StringRef MatcherName, SourceRange NameRange, ArrayRef< ParserValue > Args, Diagnostics *Error)

## Public Member Functions
template<typename ResultT , typename ArgT , ResultT(*)(ArrayRef< const ArgT *>) F>
| VariadicFuncMatcherDescriptor (ast_matchers::internal::VariadicFunction< ResultT, ArgT, F > Func, StringRef MatcherName)
VariantMatcher | create (SourceRange NameRange, ArrayRef< ParserValue > Args, Diagnostics *Error) const override
bool | isVariadic () const override
| Returns whether the matcher is variadic. More...
unsigned | getNumArgs () const override
| Returns the number of arguments accepted by the matcher if not variadic. More...
void | getArgKinds (ast_type_traits::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`. More...
bool | isConvertibleTo (ast_type_traits::ASTNodeKind Kind, unsigned *Specificity, ast_type_traits::ASTNodeKind *LeastDerivedKind) const override
| Returns whether this matcher is convertible to the given type. More...
Public Member Functions inherited from clang::ast_matchers::dynamic::internal::MatcherDescriptor
virtual | ~MatcherDescriptor ()=default
virtual bool | isPolymorphic () const
| Returns whether the matcher will, given a matcher of any type T, yield a matcher of type T. More...

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

Definition at line 415 of file Marshallers.h.

## Member Typedef Documentation

## ◆ RunFunc

using clang::ast_matchers::dynamic::internal::VariadicFuncMatcherDescriptor::RunFunc = VariantMatcher (*)(StringRef MatcherName, SourceRange NameRange, ArrayRef<ParserValue> Args, Diagnostics *Error)

Definition at line 420 of file Marshallers.h.

## Constructor & Destructor Documentation

## ◆ VariadicFuncMatcherDescriptor()

template<typename ResultT , typename ArgT , ResultT(*)(ArrayRef< const ArgT *>) F>

clang::ast_matchers::dynamic::internal::VariadicFuncMatcherDescriptor::VariadicFuncMatcherDescriptor | ( | ast_matchers::internal::VariadicFunction< ResultT, ArgT, F > | Func,
|  | StringRef | MatcherName
| ) |  |
| inline

Definition at line 424 of file Marshallers.h.

References clang::ast_matchers::dynamic::internal::BuildReturnTypeVector< T >::build().

## Member Function Documentation

## ◆ create()

VariantMatcher clang::ast_matchers::dynamic::internal::VariadicFuncMatcherDescriptor::create | ( | SourceRange | NameRange,
|  | ArrayRef< ParserValue > | Args,
|  | Diagnostics * | Error
| ) |  | const
| inline override virtual

Implements clang::ast_matchers::dynamic::internal::MatcherDescriptor.

Definition at line 433 of file Marshallers.h.

## ◆ getArgKinds()

void clang::ast_matchers::dynamic::internal::VariadicFuncMatcherDescriptor::getArgKinds | ( | ast_type_traits::ASTNodeKind | ThisKind,
|  | unsigned | ArgNo,
|  | std::vector< ArgKind > & | ArgKinds
| ) |  | const
| inline override virtual

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 442 of file Marshallers.h.

## ◆ getNumArgs()

unsigned clang::ast_matchers::dynamic::internal::VariadicFuncMatcherDescriptor::getNumArgs | ( |  | ) | const
| inline override virtual

Returns the number of arguments accepted by the matcher if not variadic.

Implements clang::ast_matchers::dynamic::internal::MatcherDescriptor.

Definition at line 440 of file Marshallers.h.

## ◆ isConvertibleTo()

bool clang::ast_matchers::dynamic::internal::VariadicFuncMatcherDescriptor::isConvertibleTo | ( | ast_type_traits::ASTNodeKind | Kind,
|  | unsigned * | Specificity,
|  | ast_type_traits::ASTNodeKind * | LeastDerivedKind
| ) |  | const
| inline override virtual

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.

Reimplemented in clang::ast_matchers::dynamic::internal::DynCastAllOfMatcherDescriptor.

Definition at line 447 of file Marshallers.h.

References clang::ast_matchers::dynamic::internal::isRetKindConvertibleTo().

Referenced by clang::ast_matchers::dynamic::internal::DynCastAllOfMatcherDescriptor::isConvertibleTo().

## ◆ isVariadic()

bool clang::ast_matchers::dynamic::internal::VariadicFuncMatcherDescriptor::isVariadic | ( |  | ) | const
| inline override virtual

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 439 of file Marshallers.h.

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

- lib/ASTMatchers/Dynamic/Marshallers.h