clang  6.0.0svn
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< MatcherDescriptormakeMatcherAutoMarshall (ReturnType(*Func)(), StringRef MatcherName)
 Helper functions to select the appropriate marshaller functions. More...
 
template<typename ReturnType , typename ArgType1 >
std::unique_ptr< MatcherDescriptormakeMatcherAutoMarshall (ReturnType(*Func)(ArgType1), StringRef MatcherName)
 1-arg overload More...
 
template<typename ReturnType , typename ArgType1 , typename ArgType2 >
std::unique_ptr< MatcherDescriptormakeMatcherAutoMarshall (ReturnType(*Func)(ArgType1, ArgType2), StringRef MatcherName)
 2-arg overload More...
 
template<typename ResultT , typename ArgT , ResultT(*)(ArrayRef< const ArgT *>) Func>
std::unique_ptr< MatcherDescriptormakeMatcherAutoMarshall (ast_matchers::internal::VariadicFunction< ResultT, ArgT, Func > VarFunc, StringRef MatcherName)
 Variadic overload. More...
 
template<typename BaseT , typename DerivedT >
std::unique_ptr< MatcherDescriptormakeMatcherAutoMarshall (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< MatcherDescriptormakeMatcherAutoMarshall (ast_matchers::internal::ArgumentAdaptingMatcherFunc< ArgumentAdapterT, FromTypes, ToTypes >, StringRef MatcherName)
 Argument adaptative overload. More...
 
template<unsigned MinCount, unsigned MaxCount>
std::unique_ptr< MatcherDescriptormakeMatcherAutoMarshall (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

◆ 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 
)

◆ 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 
)

◆ 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 
)