OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "tools/gn/pattern.h" | 5 #include "tools/gn/pattern.h" |
6 | 6 |
7 #include "tools/gn/value.h" | 7 #include "tools/gn/value.h" |
8 | 8 |
9 namespace { | 9 namespace { |
10 | 10 |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
53 } // namespace | 53 } // namespace |
54 | 54 |
55 Pattern::Pattern(const std::string& s) { | 55 Pattern::Pattern(const std::string& s) { |
56 ParsePattern(s, &subranges_); | 56 ParsePattern(s, &subranges_); |
57 is_suffix_ = | 57 is_suffix_ = |
58 (subranges_.size() == 2 && | 58 (subranges_.size() == 2 && |
59 subranges_[0].type == Subrange::ANYTHING && | 59 subranges_[0].type == Subrange::ANYTHING && |
60 subranges_[1].type == Subrange::LITERAL); | 60 subranges_[1].type == Subrange::LITERAL); |
61 } | 61 } |
62 | 62 |
| 63 Pattern::Pattern(const Pattern& other) = default; |
| 64 |
63 Pattern::~Pattern() { | 65 Pattern::~Pattern() { |
64 } | 66 } |
65 | 67 |
66 bool Pattern::MatchesString(const std::string& s) const { | 68 bool Pattern::MatchesString(const std::string& s) const { |
67 // Empty pattern matches only empty string. | 69 // Empty pattern matches only empty string. |
68 if (subranges_.empty()) | 70 if (subranges_.empty()) |
69 return s.empty(); | 71 return s.empty(); |
70 | 72 |
71 if (is_suffix_) { | 73 if (is_suffix_) { |
72 const std::string& suffix = subranges_[1].literal; | 74 const std::string& suffix = subranges_[1].literal; |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
144 default: | 146 default: |
145 NOTREACHED(); | 147 NOTREACHED(); |
146 } | 148 } |
147 | 149 |
148 return false; | 150 return false; |
149 } | 151 } |
150 | 152 |
151 PatternList::PatternList() { | 153 PatternList::PatternList() { |
152 } | 154 } |
153 | 155 |
| 156 PatternList::PatternList(const PatternList& other) = default; |
| 157 |
154 PatternList::~PatternList() { | 158 PatternList::~PatternList() { |
155 } | 159 } |
156 | 160 |
157 void PatternList::Append(const Pattern& pattern) { | 161 void PatternList::Append(const Pattern& pattern) { |
158 patterns_.push_back(pattern); | 162 patterns_.push_back(pattern); |
159 } | 163 } |
160 | 164 |
161 void PatternList::SetFromValue(const Value& v, Err* err) { | 165 void PatternList::SetFromValue(const Value& v, Err* err) { |
162 patterns_.clear(); | 166 patterns_.clear(); |
163 | 167 |
(...skipping 16 matching lines...) Expand all Loading... |
180 return true; | 184 return true; |
181 } | 185 } |
182 return false; | 186 return false; |
183 } | 187 } |
184 | 188 |
185 bool PatternList::MatchesValue(const Value& v) const { | 189 bool PatternList::MatchesValue(const Value& v) const { |
186 if (v.type() == Value::STRING) | 190 if (v.type() == Value::STRING) |
187 return MatchesString(v.string_value()); | 191 return MatchesString(v.string_value()); |
188 return false; | 192 return false; |
189 } | 193 } |
OLD | NEW |