summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHossein Ghahramanzadeh <hgsilverman@gmail.com>2022-02-05 16:43:21 (GMT)
committerHossein Ghahramanzadeh <hgsilverman@gmail.com>2022-02-05 16:43:21 (GMT)
commitd6841c040d63b6e2bc716e365d1c60d26f23b1f5 (patch)
treead1fb0e8ac8f532072d81334bc7ccd2e65062b88
parent2eadda6e0072d47ddea1dc24a1ed63abb995cdfe (diff)
downloadgoogletest-d6841c040d63b6e2bc716e365d1c60d26f23b1f5.zip
googletest-d6841c040d63b6e2bc716e365d1c60d26f23b1f5.tar.gz
googletest-d6841c040d63b6e2bc716e365d1c60d26f23b1f5.tar.bz2
Apply requested changes by using std::inserter with move.refs/pull/3746/head
-rw-r--r--googletest/src/gtest.cc20
1 files changed, 11 insertions, 9 deletions
diff --git a/googletest/src/gtest.cc b/googletest/src/gtest.cc
index c04aac6..80fa0ea 100644
--- a/googletest/src/gtest.cc
+++ b/googletest/src/gtest.cc
@@ -726,13 +726,13 @@ static bool PatternMatchesString(const std::string& name_str,
return true;
}
-static bool IsGlobPattern(const std::string& pattern) {
+namespace {
+
+bool IsGlobPattern(const std::string& pattern) {
return std::any_of(pattern.begin(), pattern.end(),
[](const char c) { return c == '?' || c == '*'; });
}
-namespace {
-
class UnitTestFilter {
public:
UnitTestFilter() = default;
@@ -740,12 +740,14 @@ class UnitTestFilter {
// Constructs a filter from a string of patterns separated by `:`.
explicit UnitTestFilter(const std::string& filter) {
// By design "" filter matches "" string.
- SplitString(filter, ':', &glob_patterns_);
- const auto exact_match_pattern_begin = std::partition(
- glob_patterns_.begin(), glob_patterns_.end(), &IsGlobPattern);
- exact_match_patterns_.insert(exact_match_pattern_begin,
- glob_patterns_.end());
- glob_patterns_.erase(exact_match_pattern_begin, glob_patterns_.end());
+ std::vector<std::string> all_patterns;
+ SplitString(filter, ':', &all_patterns);
+ const auto exact_match_patterns_begin = std::partition(
+ all_patterns.begin(), all_patterns.end(), &IsGlobPattern);
+
+ glob_patterns_.reserve(exact_match_patterns_begin - all_patterns.begin());
+ std::move(all_patterns.begin(), exact_match_patterns_begin, std::inserter(glob_patterns_, glob_patterns_.begin()));
+ std::move(exact_match_patterns_begin, all_patterns.end(), std::inserter(exact_match_patterns_, exact_match_patterns_.begin()));
}
// Returns true if and only if name matches at least one of the patterns in