diff options
author | Samuel Benzaquen <sbenza@google.com> | 2013-08-27 16:55:22 +0000 |
---|---|---|
committer | Samuel Benzaquen <sbenza@google.com> | 2013-08-27 16:55:22 +0000 |
commit | 46e59b05eb4248357022f930583ff9640cf6a58c (patch) | |
tree | 0c01b07e902afe1ee765e8e4e31d403d5f106828 /clang/lib/ASTMatchers/Dynamic/VariantValue.cpp | |
parent | f02a3c599bf1974da857854d279622c6e2455868 (diff) | |
download | bcm5719-llvm-46e59b05eb4248357022f930583ff9640cf6a58c.tar.gz bcm5719-llvm-46e59b05eb4248357022f930583ff9640cf6a58c.zip |
Revert "Add support for eachOf/allOf/anyOf variadic matchers in the dynamic layer."
Summary:
This reverts commit 3b082a3c72324aa3363b5184731740534c6b9a2b.
It breaks the build in c++11 mode.
Reviewers: klimek
CC: cfe-commits, revane
Differential Revision: http://llvm-reviews.chandlerc.com/D1533
llvm-svn: 189368
Diffstat (limited to 'clang/lib/ASTMatchers/Dynamic/VariantValue.cpp')
-rw-r--r-- | clang/lib/ASTMatchers/Dynamic/VariantValue.cpp | 60 |
1 files changed, 16 insertions, 44 deletions
diff --git a/clang/lib/ASTMatchers/Dynamic/VariantValue.cpp b/clang/lib/ASTMatchers/Dynamic/VariantValue.cpp index c350d78aa14..87aca7da853 100644 --- a/clang/lib/ASTMatchers/Dynamic/VariantValue.cpp +++ b/clang/lib/ASTMatchers/Dynamic/VariantValue.cpp @@ -38,9 +38,13 @@ public: .str(); } - virtual void makeTypedMatcher(MatcherOps &Ops) const { - if (Ops.canConstructFrom(*Matcher)) - Ops.constructFrom(*Matcher); + virtual bool hasTypedMatcher(const MatcherOps &Ops) const { + return Ops.canConstructFrom(*Matcher); + } + + virtual const DynTypedMatcher *getTypedMatcher(const MatcherOps &Ops) const { + assert(hasTypedMatcher(Ops)); + return Matcher.get(); } private: @@ -76,49 +80,23 @@ public: return (Twine("Matcher<") + Inner + ">").str(); } - virtual void makeTypedMatcher(MatcherOps &Ops) const { - const DynTypedMatcher *Found = NULL; + virtual bool hasTypedMatcher(const MatcherOps &Ops) const { + return getTypedMatcher(Ops) != NULL; + } + + virtual const DynTypedMatcher *getTypedMatcher(const MatcherOps &Ops) const { + const DynTypedMatcher* Found = NULL; for (size_t i = 0, e = Matchers.size(); i != e; ++i) { if (Ops.canConstructFrom(*Matchers[i])) { - if (Found) - return; + if (Found) return NULL; Found = Matchers[i]; } } - if (Found) - Ops.constructFrom(*Found); - } - - std::vector<const DynTypedMatcher *> Matchers; -}; - -class VariantMatcher::VariadicOpPayload : public VariantMatcher::Payload { -public: - VariadicOpPayload(ast_matchers::internal::VariadicOperatorFunction Func, - ArrayRef<VariantMatcher> Args) - : Func(Func), Args(Args) {} - - virtual bool getSingleMatcher(const DynTypedMatcher *&Out) const { - return false; - } - - virtual std::string getTypeAsString() const { - std::string Inner; - for (size_t i = 0, e = Args.size(); i != e; ++i) { - if (i != 0) - Inner += "&"; - Inner += Args[i].getTypeAsString(); - } - return Inner; - } - - virtual void makeTypedMatcher(MatcherOps &Ops) const { - Ops.constructVariadicOperator(Func, Args); + return Found; } private: - const ast_matchers::internal::VariadicOperatorFunction Func; - const std::vector<VariantMatcher> Args; + std::vector<const DynTypedMatcher *> Matchers; }; VariantMatcher::VariantMatcher() {} @@ -132,12 +110,6 @@ VariantMatcher::PolymorphicMatcher(ArrayRef<const DynTypedMatcher *> Matchers) { return VariantMatcher(new PolymorphicPayload(Matchers)); } -VariantMatcher VariantMatcher::VariadicOperatorMatcher( - ast_matchers::internal::VariadicOperatorFunction Func, - ArrayRef<VariantMatcher> Args) { - return VariantMatcher(new VariadicOpPayload(Func, Args)); -} - bool VariantMatcher::getSingleMatcher(const DynTypedMatcher *&Out) const { if (Value) return Value->getSingleMatcher(Out); return false; |