diff options
author | Samuel Benzaquen <sbenza@google.com> | 2013-10-29 14:37:15 +0000 |
---|---|---|
committer | Samuel Benzaquen <sbenza@google.com> | 2013-10-29 14:37:15 +0000 |
commit | f34ac3ed2c9badee39b3efc72d4c34f922cf3b39 (patch) | |
tree | ab663d97a5623cca3fd1fa9ecea2835f123590c6 /clang/lib/ASTMatchers/ASTMatchersInternal.cpp | |
parent | e804b1a44e833eabd546381f9af29110f83e0100 (diff) | |
download | bcm5719-llvm-f34ac3ed2c9badee39b3efc72d4c34f922cf3b39.tar.gz bcm5719-llvm-f34ac3ed2c9badee39b3efc72d4c34f922cf3b39.zip |
Resubmit "Refactor DynTypedMatcher into a value type class, just like Matcher<T>."
Summary: This resubmits r193100, plus a fix for a breakage with MSVC.
Reviewers: klimek, rnk
CC: cfe-commits, revane
Differential Revision: http://llvm-reviews.chandlerc.com/D2005
llvm-svn: 193613
Diffstat (limited to 'clang/lib/ASTMatchers/ASTMatchersInternal.cpp')
-rw-r--r-- | clang/lib/ASTMatchers/ASTMatchersInternal.cpp | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/clang/lib/ASTMatchers/ASTMatchersInternal.cpp b/clang/lib/ASTMatchers/ASTMatchersInternal.cpp index e7465167da1..d15eb54002f 100644 --- a/clang/lib/ASTMatchers/ASTMatchersInternal.cpp +++ b/clang/lib/ASTMatchers/ASTMatchersInternal.cpp @@ -26,25 +26,23 @@ void BoundNodesTreeBuilder::visitMatches(Visitor *ResultVisitor) { } } +DynTypedMatcher::MatcherStorage::~MatcherStorage() {} + void BoundNodesTreeBuilder::addMatch(const BoundNodesTreeBuilder &Other) { for (unsigned i = 0, e = Other.Bindings.size(); i != e; ++i) { Bindings.push_back(Other.Bindings[i]); } } -DynTypedMatcher::~DynTypedMatcher() {} - -DynTypedMatcher *DynTypedMatcher::tryBind(StringRef ID) const { return NULL; } - bool AllOfVariadicOperator(const ast_type_traits::DynTypedNode DynNode, ASTMatchFinder *Finder, BoundNodesTreeBuilder *Builder, - ArrayRef<const DynTypedMatcher *> InnerMatchers) { + ArrayRef<DynTypedMatcher> InnerMatchers) { // allOf leads to one matcher for each alternative in the first // matcher combined with each alternative in the second matcher. // Thus, we can reuse the same Builder. for (size_t i = 0, e = InnerMatchers.size(); i != e; ++i) { - if (!InnerMatchers[i]->matches(DynNode, Finder, Builder)) + if (!InnerMatchers[i].matches(DynNode, Finder, Builder)) return false; } return true; @@ -53,12 +51,12 @@ bool AllOfVariadicOperator(const ast_type_traits::DynTypedNode DynNode, bool EachOfVariadicOperator(const ast_type_traits::DynTypedNode DynNode, ASTMatchFinder *Finder, BoundNodesTreeBuilder *Builder, - ArrayRef<const DynTypedMatcher *> InnerMatchers) { + ArrayRef<DynTypedMatcher> InnerMatchers) { BoundNodesTreeBuilder Result; bool Matched = false; for (size_t i = 0, e = InnerMatchers.size(); i != e; ++i) { BoundNodesTreeBuilder BuilderInner(*Builder); - if (InnerMatchers[i]->matches(DynNode, Finder, &BuilderInner)) { + if (InnerMatchers[i].matches(DynNode, Finder, &BuilderInner)) { Matched = true; Result.addMatch(BuilderInner); } @@ -70,10 +68,10 @@ bool EachOfVariadicOperator(const ast_type_traits::DynTypedNode DynNode, bool AnyOfVariadicOperator(const ast_type_traits::DynTypedNode DynNode, ASTMatchFinder *Finder, BoundNodesTreeBuilder *Builder, - ArrayRef<const DynTypedMatcher *> InnerMatchers) { + ArrayRef<DynTypedMatcher> InnerMatchers) { for (size_t i = 0, e = InnerMatchers.size(); i != e; ++i) { BoundNodesTreeBuilder Result = *Builder; - if (InnerMatchers[i]->matches(DynNode, Finder, &Result)) { + if (InnerMatchers[i].matches(DynNode, Finder, &Result)) { *Builder = Result; return true; } |