clang 8.0.0

Classes | Functions
clang::ast_matchers::dynamic::internal Namespace Reference

## Classes
class | AdaptativeOverloadCollector
| Helper class used to collect all the possible overloads of an argument adaptative matcher function. More...
struct | ArgTypeTraits
| Helper template class to just from argument type to the right is/get functions in VariantValue. More...
struct | ArgTypeTraits< ast_matchers::internal::Matcher< T > >
struct | ArgTypeTraits< attr::Kind >
struct | ArgTypeTraits< bool >
struct | ArgTypeTraits< CastKind >
struct | ArgTypeTraits< const T & >
struct | ArgTypeTraits< double >
struct | ArgTypeTraits< std::string >
struct | ArgTypeTraits< StringRef >
struct | ArgTypeTraits< unsigned >
struct | BuildReturnTypeVector
struct | BuildReturnTypeVector< ast_matchers::internal::BindableMatcher< T > >
struct | BuildReturnTypeVector< ast_matchers::internal::Matcher< T > >
class | DynCastAllOfMatcherDescriptor
| Return CK_Trivial when appropriate for VariadicDynCastAllOfMatchers. More...
class | FixedArgCountMatcherDescriptor
| Simple callback implementation. More...
class | MatcherDescriptor
| Matcher descriptor interface. More...
class | OverloadedMatcherDescriptor
| MatcherDescriptor that wraps multiple "overloads" of the same matcher. More...
class | VariadicFuncMatcherDescriptor
| Matcher descriptor for variadic functions. More...
class | VariadicOperatorMatcherDescriptor
| Variadic operator marshaller function. More...

## Functions
bool | isRetKindConvertibleTo (ArrayRef< ast_type_traits::ASTNodeKind > RetKinds, ast_type_traits::ASTNodeKind Kind, unsigned *Specificity, ast_type_traits::ASTNodeKind *LeastDerivedKind)
template<class PolyMatcher >
static void | mergePolyMatchers (const PolyMatcher &Poly, std::vector< DynTypedMatcher > &Out, ast_matchers::internal::EmptyTypeList)
| Helper methods to extract and merge all possible typed matchers out of the polymorphic object. More...
template<class PolyMatcher , class TypeList >
static void | mergePolyMatchers (const PolyMatcher &Poly, std::vector< DynTypedMatcher > &Out, TypeList)
static VariantMatcher | outvalueToVariantMatcher (const DynTypedMatcher &Matcher)
| Convert the return values of the functions into a VariantMatcher. More...
template<typename T >
static VariantMatcher | outvalueToVariantMatcher (const T &PolyMatcher, typename T::ReturnTypes *=nullptr)
template<typename T >
void | buildReturnTypeVectorFromTypeList (std::vector< ast_type_traits::ASTNodeKind > &RetTypes)
template<>
void | buildReturnTypeVectorFromTypeList< ast_matchers::internal::EmptyTypeList > (std::vector< ast_type_traits::ASTNodeKind > &RetTypes)
template<typename ResultT , typename ArgT , ResultT(*)(ArrayRef< const ArgT *>) Func>
VariantMatcher | variadicMatcherDescriptor (StringRef MatcherName, SourceRange NameRange, ArrayRef< ParserValue > Args, Diagnostics *Error)
| Variadic marshaller function. More...
template<typename ReturnType >
static VariantMatcher | matcherMarshall0 (void(*Func)(), StringRef MatcherName, SourceRange NameRange, ArrayRef< ParserValue > Args, Diagnostics *Error)
| 0-arg marshaller function. More...
template<typename ReturnType , typename ArgType1 >
static VariantMatcher | matcherMarshall1 (void(*Func)(), StringRef MatcherName, SourceRange NameRange, ArrayRef< ParserValue > Args, Diagnostics *Error)
| 1-arg marshaller function. More...
template<typename ReturnType , typename ArgType1 , typename ArgType2 >
static VariantMatcher | matcherMarshall2 (void(*Func)(), StringRef MatcherName, SourceRange NameRange, ArrayRef< ParserValue > Args, Diagnostics *Error)
| 2-arg marshaller function. More...
template<typename ReturnType >
std::unique_ptr< MatcherDescriptor > | makeMatcherAutoMarshall (ReturnType(*Func)(), StringRef MatcherName)
| Helper functions to select the appropriate marshaller functions. More...
template<typename ReturnType , typename ArgType1 >
std::unique_ptr< MatcherDescriptor > | makeMatcherAutoMarshall (ReturnType(*Func)(ArgType1), StringRef MatcherName)
| 1-arg overload More...
template<typename ReturnType , typename ArgType1 , typename ArgType2 >
std::unique_ptr< MatcherDescriptor > | makeMatcherAutoMarshall (ReturnType(*Func)(ArgType1, ArgType2), StringRef MatcherName)
| 2-arg overload More...
template<typename ResultT , typename ArgT , ResultT(*)(ArrayRef< const ArgT *>) Func>
std::unique_ptr< MatcherDescriptor > | makeMatcherAutoMarshall (ast_matchers::internal::VariadicFunction< ResultT, ArgT, Func > VarFunc, StringRef MatcherName)
| Variadic overload. More...
template<typename BaseT , typename DerivedT >
std::unique_ptr< MatcherDescriptor > | makeMatcherAutoMarshall (ast_matchers::internal::VariadicDynCastAllOfMatcher< BaseT, DerivedT > VarFunc, StringRef MatcherName)
| Overload for VariadicDynCastAllOfMatchers. More...
template<template< typename ToArg, typename FromArg > class ArgumentAdapterT, typename FromTypes , typename ToTypes >
std::unique_ptr< MatcherDescriptor > | makeMatcherAutoMarshall (ast_matchers::internal::ArgumentAdaptingMatcherFunc< ArgumentAdapterT, FromTypes, ToTypes >, StringRef MatcherName)
| Argument adaptative overload. More...
template<unsigned MinCount, unsigned MaxCount>
std::unique_ptr< MatcherDescriptor > | makeMatcherAutoMarshall (ast_matchers::internal::VariadicOperatorMatcherFunc< MinCount, MaxCount > Func, StringRef MatcherName)
| Variadic operator overload. More...

## Function Documentation

## ◆ buildReturnTypeVectorFromTypeList()

template<typename T >

void clang::ast_matchers::dynamic::internal::buildReturnTypeVectorFromTypeList | ( | std::vector< ast_type_traits::ASTNodeKind > & | RetTypes | ) |
| inline

Definition at line 317 of file Marshallers.h.

## ◆ buildReturnTypeVectorFromTypeList< ast_matchers::internal::EmptyTypeList >()

template<>

void clang::ast_matchers::dynamic::internal::buildReturnTypeVectorFromTypeList< ast_matchers::internal::EmptyTypeList > | ( | std::vector< ast_type_traits::ASTNodeKind > & | RetTypes | ) |
| inline

Definition at line 326 of file Marshallers.h.

## ◆ isRetKindConvertibleTo()

bool clang::ast_matchers::dynamic::internal::isRetKindConvertibleTo | ( | ArrayRef< ast_type_traits::ASTNodeKind > | RetKinds,
|  | ast_type_traits::ASTNodeKind | Kind,
|  | unsigned * | Specificity,
|  | ast_type_traits::ASTNodeKind * | LeastDerivedKind
| ) |  |
| inline

Definition at line 211 of file Marshallers.h.

Referenced by clang::ast_matchers::dynamic::internal::FixedArgCountMatcherDescriptor::isConvertibleTo(), and clang::ast_matchers::dynamic::internal::VariadicFuncMatcherDescriptor::isConvertibleTo().

## ◆ makeMatcherAutoMarshall() [1/7]

template<typename ReturnType >

std::unique_ptr<MatcherDescriptor> clang::ast_matchers::dynamic::internal::makeMatcherAutoMarshall | ( | ReturnType(*)() | Func,
|  | StringRef | MatcherName
| ) |  |

Helper functions to select the appropriate marshaller functions.

They detect the number of arguments, arguments types and return type. 0-arg overload

Definition at line 707 of file Marshallers.h.

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

Referenced by makeMatcherAutoMarshall().

## ◆ makeMatcherAutoMarshall() [2/7]

template<typename ReturnType , typename ArgType1 >

std::unique_ptr<MatcherDescriptor> clang::ast_matchers::dynamic::internal::makeMatcherAutoMarshall | ( | ReturnType(*)(ArgType1) | Func,
|  | StringRef | MatcherName
| ) |  |

1-arg overload

Definition at line 718 of file Marshallers.h.

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

## ◆ makeMatcherAutoMarshall() [3/7]

template<typename ReturnType , typename ArgType1 , typename ArgType2 >

std::unique_ptr<MatcherDescriptor> clang::ast_matchers::dynamic::internal::makeMatcherAutoMarshall | ( | ReturnType(*)(ArgType1, ArgType2) | Func,
|  | StringRef | MatcherName
| ) |  |

2-arg overload

Definition at line 730 of file Marshallers.h.

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

## ◆ makeMatcherAutoMarshall() [4/7]

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

std::unique_ptr<MatcherDescriptor> clang::ast_matchers::dynamic::internal::makeMatcherAutoMarshall | ( | ast_matchers::internal::VariadicFunction< ResultT, ArgT, Func > | VarFunc,
|  | StringRef | MatcherName
| ) |  |

Variadic overload.

Definition at line 744 of file Marshallers.h.

## ◆ makeMatcherAutoMarshall() [5/7]

template<typename BaseT , typename DerivedT >

std::unique_ptr<MatcherDescriptor> clang::ast_matchers::dynamic::internal::makeMatcherAutoMarshall | ( | ast_matchers::internal::VariadicDynCastAllOfMatcher< BaseT, DerivedT > | VarFunc,
|  | StringRef | MatcherName
| ) |  |

Overload for VariadicDynCastAllOfMatchers.

Not strictly necessary, but DynCastAllOfMatcherDescriptor gives us better completion results for that type of matcher.

Definition at line 755 of file Marshallers.h.

## ◆ makeMatcherAutoMarshall() [6/7]

template<template< typename ToArg, typename FromArg > class ArgumentAdapterT, typename FromTypes , typename ToTypes >

std::unique_ptr<MatcherDescriptor> clang::ast_matchers::dynamic::internal::makeMatcherAutoMarshall | ( | ast_matchers::internal::ArgumentAdaptingMatcherFunc< ArgumentAdapterT, FromTypes, ToTypes > | ,
|  | StringRef | MatcherName
| ) |  |

Argument adaptative overload.

Definition at line 765 of file Marshallers.h.

References makeMatcherAutoMarshall().

## ◆ makeMatcherAutoMarshall() [7/7]

template<unsigned MinCount, unsigned MaxCount>

std::unique_ptr<MatcherDescriptor> clang::ast_matchers::dynamic::internal::makeMatcherAutoMarshall | ( | ast_matchers::internal::VariadicOperatorMatcherFunc< MinCount, MaxCount > | Func,
|  | StringRef | MatcherName
| ) |  |

Variadic operator overload.

Definition at line 787 of file Marshallers.h.

## ◆ matcherMarshall0()

template<typename ReturnType >

static VariantMatcher clang::ast_matchers::dynamic::internal::matcherMarshall0 | ( | void(*)() | Func,
|  | StringRef | MatcherName,
|  | SourceRange | NameRange,
|  | ArrayRef< ParserValue > | Args,
|  | Diagnostics * | Error
| ) |  |
| static

0-arg marshaller function.

Definition at line 491 of file Marshallers.h.

References CHECK_ARG_COUNT, and outvalueToVariantMatcher().

## ◆ matcherMarshall1()

template<typename ReturnType , typename ArgType1 >

static VariantMatcher clang::ast_matchers::dynamic::internal::matcherMarshall1 | ( | void(*)() | Func,
|  | StringRef | MatcherName,
|  | SourceRange | NameRange,
|  | ArrayRef< ParserValue > | Args,
|  | Diagnostics * | Error
| ) |  |
| static

1-arg marshaller function.

Definition at line 502 of file Marshallers.h.

References CHECK_ARG_COUNT, CHECK_ARG_TYPE, and outvalueToVariantMatcher().

## ◆ matcherMarshall2()

template<typename ReturnType , typename ArgType1 , typename ArgType2 >

static VariantMatcher clang::ast_matchers::dynamic::internal::matcherMarshall2 | ( | void(*)() | Func,
|  | StringRef | MatcherName,
|  | SourceRange | NameRange,
|  | ArrayRef< ParserValue > | Args,
|  | Diagnostics * | Error
| ) |  |
| static

2-arg marshaller function.

Definition at line 515 of file Marshallers.h.

References CHECK_ARG_COUNT, CHECK_ARG_TYPE, and outvalueToVariantMatcher().

## ◆ mergePolyMatchers() [1/2]

template<class PolyMatcher >

static void clang::ast_matchers::dynamic::internal::mergePolyMatchers | ( | const PolyMatcher & | Poly,
|  | std::vector< DynTypedMatcher > & | Out,
|  | ast_matchers::internal::EmptyTypeList |
| ) |  |
| static

Helper methods to extract and merge all possible typed matchers out of the polymorphic object.

Definition at line 285 of file Marshallers.h.

Referenced by mergePolyMatchers().

## ◆ mergePolyMatchers() [2/2]

template<class PolyMatcher , class TypeList >

static void clang::ast_matchers::dynamic::internal::mergePolyMatchers | ( | const PolyMatcher & | Poly,
|  | std::vector< DynTypedMatcher > & | Out,
|  | TypeList |
| ) |  |
| static

Definition at line 290 of file Marshallers.h.

References mergePolyMatchers().

## ◆ outvalueToVariantMatcher() [1/2]

static VariantMatcher clang::ast_matchers::dynamic::internal::outvalueToVariantMatcher | ( | const DynTypedMatcher & | Matcher | ) |
| static

Convert the return values of the functions into a VariantMatcher.

There are 2 cases right now: The return value is a Matcher<T> or is a polymorphic matcher. For the former, we just construct the VariantMatcher. For the latter, we instantiate all the possible Matcher<T> of the poly matcher.

Definition at line 302 of file Marshallers.h.

Referenced by matcherMarshall0(), matcherMarshall1(), matcherMarshall2(), and variadicMatcherDescriptor().

## ◆ outvalueToVariantMatcher() [2/2]

template<typename T >

static VariantMatcher clang::ast_matchers::dynamic::internal::outvalueToVariantMatcher | ( | const T & | PolyMatcher,
|  | typename T::ReturnTypes * | = `nullptr`
| ) |  |
| static

Definition at line 307 of file Marshallers.h.

## ◆ variadicMatcherDescriptor()

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

VariantMatcher clang::ast_matchers::dynamic::internal::variadicMatcherDescriptor | ( | StringRef | MatcherName,
|  | SourceRange | NameRange,
|  | ArrayRef< ParserValue > | Args,
|  | Diagnostics * | Error
| ) |  |

Variadic marshaller function.

Definition at line 354 of file Marshallers.h.

References clang::ast_matchers::dynamic::Diagnostics::addError(), clang::ast_matchers::dynamic::Diagnostics::ET_RegistryWrongArgType, getKind(), clang::ast_matchers::dynamic::VariantValue::getTypeAsString(), outvalueToVariantMatcher(), clang::ast_matchers::dynamic::ParserValue::Range, and clang::ast_matchers::dynamic::ParserValue::Value.