Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(71)

Side by Side Diff: tools/gn/visibility.cc

Issue 610293003: Replace more for loops in GN (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « tools/gn/value_extractors.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/visibility.h" 5 #include "tools/gn/visibility.h"
6 6
7 #include "base/strings/string_piece.h" 7 #include "base/strings/string_piece.h"
8 #include "base/strings/string_util.h" 8 #include "base/strings/string_util.h"
9 #include "tools/gn/err.h" 9 #include "tools/gn/err.h"
10 #include "tools/gn/filesystem_utils.h" 10 #include "tools/gn/filesystem_utils.h"
(...skipping 12 matching lines...) Expand all
23 bool Visibility::Set(const SourceDir& current_dir, 23 bool Visibility::Set(const SourceDir& current_dir,
24 const Value& value, 24 const Value& value,
25 Err* err) { 25 Err* err) {
26 patterns_.clear(); 26 patterns_.clear();
27 27
28 if (!value.VerifyTypeIs(Value::LIST, err)) { 28 if (!value.VerifyTypeIs(Value::LIST, err)) {
29 CHECK(err->has_error()); 29 CHECK(err->has_error());
30 return false; 30 return false;
31 } 31 }
32 32
33 const std::vector<Value>& list = value.list_value(); 33 for (const auto& item : value.list_value()) {
34 for (size_t i = 0; i < list.size(); i++) { 34 patterns_.push_back(LabelPattern::GetPattern(current_dir, item, err));
35 patterns_.push_back(LabelPattern::GetPattern(current_dir, list[i], err));
36 if (err->has_error()) 35 if (err->has_error())
37 return false; 36 return false;
38 } 37 }
39 return true; 38 return true;
40 } 39 }
41 40
42 void Visibility::SetPublic() { 41 void Visibility::SetPublic() {
43 patterns_.clear(); 42 patterns_.clear();
44 patterns_.push_back( 43 patterns_.push_back(
45 LabelPattern(LabelPattern::RECURSIVE_DIRECTORY, SourceDir(), 44 LabelPattern(LabelPattern::RECURSIVE_DIRECTORY, SourceDir(),
46 std::string(), Label())); 45 std::string(), Label()));
47 } 46 }
48 47
49 void Visibility::SetPrivate(const SourceDir& current_dir) { 48 void Visibility::SetPrivate(const SourceDir& current_dir) {
50 patterns_.clear(); 49 patterns_.clear();
51 patterns_.push_back( 50 patterns_.push_back(
52 LabelPattern(LabelPattern::DIRECTORY, current_dir, std::string(), 51 LabelPattern(LabelPattern::DIRECTORY, current_dir, std::string(),
53 Label())); 52 Label()));
54 } 53 }
55 54
56 bool Visibility::CanSeeMe(const Label& label) const { 55 bool Visibility::CanSeeMe(const Label& label) const {
57 for (size_t i = 0; i < patterns_.size(); i++) { 56 for (const auto& pattern : patterns_) {
58 if (patterns_[i].Matches(label)) 57 if (pattern.Matches(label))
59 return true; 58 return true;
60 } 59 }
61 return false; 60 return false;
62 } 61 }
63 62
64 std::string Visibility::Describe(int indent, bool include_brackets) const { 63 std::string Visibility::Describe(int indent, bool include_brackets) const {
65 std::string outer_indent_string(indent, ' '); 64 std::string outer_indent_string(indent, ' ');
66 65
67 if (patterns_.empty()) 66 if (patterns_.empty())
68 return outer_indent_string + "[] (no visibility)\n"; 67 return outer_indent_string + "[] (no visibility)\n";
69 68
70 std::string result; 69 std::string result;
71 70
72 std::string inner_indent_string = outer_indent_string; 71 std::string inner_indent_string = outer_indent_string;
73 if (include_brackets) { 72 if (include_brackets) {
74 result += outer_indent_string + "[\n"; 73 result += outer_indent_string + "[\n";
75 // Indent the insides more if brackets are requested. 74 // Indent the insides more if brackets are requested.
76 inner_indent_string += " "; 75 inner_indent_string += " ";
77 } 76 }
78 77
79 for (size_t i = 0; i < patterns_.size(); i++) 78 for (const auto& pattern : patterns_)
80 result += inner_indent_string + patterns_[i].Describe() + "\n"; 79 result += inner_indent_string + pattern.Describe() + "\n";
81 80
82 if (include_brackets) 81 if (include_brackets)
83 result += outer_indent_string + "]\n"; 82 result += outer_indent_string + "]\n";
84 return result; 83 return result;
85 } 84 }
86 85
87 // static 86 // static
88 bool Visibility::CheckItemVisibility(const Item* from, 87 bool Visibility::CheckItemVisibility(const Item* from,
89 const Item* to, 88 const Item* to,
90 Err* err) { 89 Err* err) {
(...skipping 11 matching lines...) Expand all
102 101
103 // static 102 // static
104 bool Visibility::FillItemVisibility(Item* item, Scope* scope, Err* err) { 103 bool Visibility::FillItemVisibility(Item* item, Scope* scope, Err* err) {
105 const Value* vis_value = scope->GetValue(variables::kVisibility, true); 104 const Value* vis_value = scope->GetValue(variables::kVisibility, true);
106 if (vis_value) 105 if (vis_value)
107 item->visibility().Set(scope->GetSourceDir(), *vis_value, err); 106 item->visibility().Set(scope->GetSourceDir(), *vis_value, err);
108 else // Default to public. 107 else // Default to public.
109 item->visibility().SetPublic(); 108 item->visibility().SetPublic();
110 return !err->has_error(); 109 return !err->has_error();
111 } 110 }
OLDNEW
« no previous file with comments | « tools/gn/value_extractors.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698