clang 20.0.0git
|
A variant matcher object. More...
#include "clang/ASTMatchers/Dynamic/VariantValue.h"
Classes | |
class | PolymorphicPayload |
class | SinglePayload |
class | VariadicOpPayload |
Public Member Functions | |
VariantMatcher () | |
A null matcher. | |
void | reset () |
Makes the matcher the "null" matcher. | |
bool | isNull () const |
Whether the matcher is null. | |
std::optional< DynTypedMatcher > | getSingleMatcher () const |
Return a single matcher, if there is no ambiguity. | |
template<class T > | |
bool | hasTypedMatcher () const |
Determines if the contained matcher can be converted to Matcher<T> . | |
bool | hasTypedMatcher (ASTNodeKind NK) const |
bool | isConvertibleTo (ASTNodeKind Kind, unsigned *Specificity) const |
Determines if the contained matcher can be converted to Kind . | |
template<class T > | |
ast_matchers::internal::Matcher< T > | getTypedMatcher () const |
Return this matcher as a Matcher<T> . | |
DynTypedMatcher | getTypedMatcher (ASTNodeKind NK) const |
std::string | getTypeAsString () const |
String representation of the type of the value. | |
Static Public Member Functions | |
static VariantMatcher | SingleMatcher (const DynTypedMatcher &Matcher) |
Clones the provided matcher. | |
static VariantMatcher | PolymorphicMatcher (std::vector< DynTypedMatcher > Matchers) |
Clones the provided matchers. | |
static VariantMatcher | VariadicOperatorMatcher (DynTypedMatcher::VariadicOperator Op, std::vector< VariantMatcher > Args) |
Creates a 'variadic' operator matcher. | |
A variant matcher object.
The purpose of this object is to abstract simple and polymorphic matchers into a single object type. Polymorphic matchers might be implemented as a list of all the possible overloads of the matcher. VariantMatcher
knows how to select the appropriate overload when needed. To get a real matcher object out of a VariantMatcher
you can do:
Definition at line 105 of file VariantValue.h.
clang::ast_matchers::dynamic::VariantMatcher::VariantMatcher | ( | ) |
A null matcher.
Definition at line 225 of file VariantValue.cpp.
Referenced by PolymorphicMatcher(), SingleMatcher(), and VariadicOperatorMatcher().
std::optional< DynTypedMatcher > clang::ast_matchers::dynamic::VariantMatcher::getSingleMatcher | ( | ) | const |
Return a single matcher, if there is no ambiguity.
Definition at line 244 of file VariantValue.cpp.
std::string clang::ast_matchers::dynamic::VariantMatcher::getTypeAsString | ( | ) | const |
String representation of the type of the value.
If the underlying matcher is a polymorphic one, the string will show all the types.
Definition at line 250 of file VariantValue.cpp.
Referenced by clang::ast_matchers::dynamic::VariantValue::getTypeAsString().
|
inline |
Return this matcher as a Matcher<T>
.
Handles the different types (Single, Polymorphic) accordingly. Asserts that hasTypedMatcher<T>()
is true.
Definition at line 211 of file VariantValue.h.
Referenced by clang::ast_matchers::dynamic::internal::MapAnyOfMatcherDescriptor::create().
|
inline |
Definition at line 217 of file VariantValue.h.
References hasTypedMatcher().
|
inline |
Determines if the contained matcher can be converted to Matcher<T>
.
For the Single case, it returns true if it can be converted to Matcher<T>
. For the Polymorphic case, it returns true if one, and only one, of the overloads can be converted to Matcher<T>
. If there are more than one that can, the result would be ambiguous and false is returned.
Definition at line 185 of file VariantValue.h.
References hasTypedMatcher().
Referenced by clang::ast_matchers::dynamic::internal::MapAnyOfMatcherDescriptor::create(), getTypedMatcher(), and hasTypedMatcher().
|
inline |
Definition at line 189 of file VariantValue.h.
|
inline |
Determines if the contained matcher can be converted to Kind
.
Kind | the requested destination type. |
Specificity | value corresponding to the "specificity" of the conversion. |
Definition at line 200 of file VariantValue.h.
References Kind.
Referenced by clang::ast_matchers::dynamic::VariantValue::isConvertibleTo().
|
inline |
Whether the matcher is null.
Definition at line 167 of file VariantValue.h.
Referenced by clang::ast_matchers::dynamic::internal::OverloadedMatcherDescriptor::create().
|
static |
Clones the provided matchers.
They should be the result of a polymorphic matcher.
Definition at line 232 of file VariantValue.cpp.
References VariantMatcher().
Referenced by clang::ast_matchers::dynamic::internal::outvalueToVariantMatcher().
void clang::ast_matchers::dynamic::VariantMatcher::reset | ( | ) |
Makes the matcher the "null" matcher.
Definition at line 248 of file VariantValue.cpp.
|
static |
Clones the provided matcher.
Definition at line 227 of file VariantValue.cpp.
References VariantMatcher().
Referenced by clang::ast_matchers::dynamic::Registry::constructBoundMatcher(), clang::ast_matchers::dynamic::internal::MapAnyOfMatcherDescriptor::create(), and clang::ast_matchers::dynamic::internal::outvalueToVariantMatcher().
|
static |
Creates a 'variadic' operator matcher.
It will bind to the appropriate type on getTypedMatcher<T>().
Definition at line 237 of file VariantValue.cpp.
References VariantMatcher().
Referenced by clang::ast_matchers::dynamic::internal::VariadicOperatorMatcherDescriptor::create().