clang
3.9.0
|
Simple callback implementation. More...
#include <Marshallers.h>
Public Types | |
typedef VariantMatcher(* | MarshallerType )(void(*Func)(), StringRef MatcherName, SourceRange NameRange, ArrayRef< ParserValue > Args, Diagnostics *Error) |
Public Member Functions | |
FixedArgCountMatcherDescriptor (MarshallerType Marshaller, void(*Func)(), StringRef MatcherName, ArrayRef< ast_type_traits::ASTNodeKind > RetKinds, ArrayRef< ArgKind > ArgKinds) | |
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... | |
![]() | |
virtual | ~MatcherDescriptor () |
virtual bool | isPolymorphic () const |
Returns whether the matcher will, given a matcher of any type T, yield a matcher of type T. More... | |
Simple callback implementation.
Marshaller and function are provided.
This class wraps a function of arbitrary signature and a marshaller function into a MatcherDescriptor. The marshaller is in charge of taking the VariantValue arguments, checking their types, unpacking them and calling the underlying function.
Definition at line 182 of file Marshallers.h.
typedef VariantMatcher(* clang::ast_matchers::dynamic::internal::FixedArgCountMatcherDescriptor::MarshallerType)(void(*Func)(), StringRef MatcherName, SourceRange NameRange, ArrayRef< ParserValue > Args, Diagnostics *Error) |
Definition at line 184 of file Marshallers.h.
|
inline |
Marshaller | Function to unpack the arguments and call Func |
Func | Matcher construct function. This is the function that compile-time matcher expressions would use to create the matcher. |
RetKinds | The list of matcher types to which the matcher is convertible. |
ArgKinds | The types of the arguments this matcher takes. |
Definition at line 196 of file Marshallers.h.
|
inlineoverridevirtual |
Implements clang::ast_matchers::dynamic::internal::MatcherDescriptor.
Definition at line 204 of file Marshallers.h.
|
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 212 of file Marshallers.h.
|
inlineoverridevirtual |
Returns the number of arguments accepted by the matcher if not variadic.
Implements clang::ast_matchers::dynamic::internal::MatcherDescriptor.
Definition at line 211 of file Marshallers.h.
|
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.
Definition at line 216 of file Marshallers.h.
References clang::ast_matchers::dynamic::internal::isRetKindConvertibleTo().
|
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 210 of file Marshallers.h.