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

Matcher descriptor for variadic functions. More...

#include <Marshallers.h>

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

Public Types

typedef VariantMatcher(* RunFunc )(StringRef MatcherName, const SourceRange &NameRange, ArrayRef< ParserValue > Args, Diagnostics *Error)
 

Public Member Functions

template<typename ResultT , typename ArgT , ResultT(*)(ArrayRef< const ArgT * >) F>
 VariadicFuncMatcherDescriptor (llvm::VariadicFunction< ResultT, ArgT, F > Func, StringRef MatcherName)
 
VariantMatcher create (const SourceRange &NameRange, ArrayRef< ParserValue > Args, Diagnostics *Error) const override
 
bool isVariadic () const override
 
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
 
bool isConvertibleTo (ast_type_traits::ASTNodeKind Kind, unsigned *Specificity, ast_type_traits::ASTNodeKind *LeastDerivedKind) const override
 
- Public Member Functions inherited from clang::ast_matchers::dynamic::internal::MatcherDescriptor
virtual ~MatcherDescriptor ()
 
virtual bool isPolymorphic () const
 

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

Member Typedef Documentation

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

Definition at line 322 of file Marshallers.h.

Constructor & Destructor Documentation

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

Member Function Documentation

VariantMatcher clang::ast_matchers::dynamic::internal::VariadicFuncMatcherDescriptor::create ( const SourceRange NameRange,
ArrayRef< ParserValue Args,
Diagnostics Error 
) const
inlineoverridevirtual
void clang::ast_matchers::dynamic::internal::VariadicFuncMatcherDescriptor::getArgKinds ( ast_type_traits::ASTNodeKind  ThisKind,
unsigned  ArgNo,
std::vector< ArgKind > &  ArgKinds 
) const
inlineoverridevirtual

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

unsigned clang::ast_matchers::dynamic::internal::VariadicFuncMatcherDescriptor::getNumArgs ( ) const
inlineoverridevirtual

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

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

Definition at line 344 of file Marshallers.h.

bool clang::ast_matchers::dynamic::internal::VariadicFuncMatcherDescriptor::isConvertibleTo ( ast_type_traits::ASTNodeKind  Kind,
unsigned Specificity,
ast_type_traits::ASTNodeKind LeastDerivedKind 
) const
inlineoverridevirtual

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

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

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

bool clang::ast_matchers::dynamic::internal::VariadicFuncMatcherDescriptor::isVariadic ( ) const
inlineoverridevirtual

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


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