Index: tools/gn/args.cc |
diff --git a/tools/gn/args.cc b/tools/gn/args.cc |
index 5009bdb14ba96491ad7fab3d8805180c031f686e..d71dcb6a8d7a79722a21e247140cfb7efe39a99d 100644 |
--- a/tools/gn/args.cc |
+++ b/tools/gn/args.cc |
@@ -93,6 +93,11 @@ const Value* Args::GetArgOverride(const char* name) const { |
return &found->second; |
} |
+Scope::KeyValueMap Args::GetAllOverrides() const { |
+ base::AutoLock lock(lock_); |
+ return all_overrides_; |
+} |
+ |
void Args::SetupRootScope(Scope* dest, |
const Scope::KeyValueMap& toolchain_overrides) const { |
base::AutoLock lock(lock_); |
@@ -164,19 +169,25 @@ bool Args::DeclareArgs(const Scope::KeyValueMap& args, |
bool Args::VerifyAllOverridesUsed(Err* err) const { |
base::AutoLock lock(lock_); |
+ return VerifyAllOverridesUsed(all_overrides_, declared_arguments_, err); |
+} |
- for (Scope::KeyValueMap::const_iterator i = all_overrides_.begin(); |
- i != all_overrides_.end(); ++i) { |
- if (declared_arguments_.find(i->first) == declared_arguments_.end()) { |
+bool Args::VerifyAllOverridesUsed( |
+ const Scope::KeyValueMap& overrides, |
+ const Scope::KeyValueMap& declared_arguments, |
+ Err* err) { |
+ for (Scope::KeyValueMap::const_iterator i = overrides.begin(); |
+ i != overrides.end(); ++i) { |
+ if (declared_arguments.find(i->first) == declared_arguments.end()) { |
// Get a list of all possible overrides for help with error finding. |
// |
// It might be nice to do edit distance checks to see if we can find one |
// close to what you typed. |
std::string all_declared_str; |
for (Scope::KeyValueMap::const_iterator cur_str = |
- declared_arguments_.begin(); |
- cur_str != declared_arguments_.end(); ++cur_str) { |
- if (cur_str != declared_arguments_.begin()) |
+ declared_arguments.begin(); |
+ cur_str != declared_arguments.end(); ++cur_str) { |
+ if (cur_str != declared_arguments.begin()) |
all_declared_str += ", "; |
all_declared_str += cur_str->first.as_string(); |
} |
@@ -191,7 +202,17 @@ bool Args::VerifyAllOverridesUsed(Err* err) const { |
return true; |
} |
+void Args::MergeDeclaredArguments(Scope::KeyValueMap* dest) const { |
+ base::AutoLock lock(lock_); |
+ |
+ for (Scope::KeyValueMap::const_iterator i = declared_arguments_.begin(); |
+ i != declared_arguments_.end(); ++i) |
+ (*dest)[i->first] = i->second; |
+} |
+ |
void Args::SetSystemVarsLocked(Scope* dest) const { |
+ lock_.AssertAcquired(); |
+ |
// Host OS. |
const char* os = NULL; |
#if defined(OS_WIN) |
@@ -264,12 +285,14 @@ void Args::SetSystemVarsLocked(Scope* dest) const { |
void Args::ApplyOverridesLocked(const Scope::KeyValueMap& values, |
Scope* scope) const { |
+ lock_.AssertAcquired(); |
for (Scope::KeyValueMap::const_iterator i = values.begin(); |
i != values.end(); ++i) |
scope->SetValue(i->first, i->second, i->second.origin()); |
} |
void Args::SaveOverrideRecordLocked(const Scope::KeyValueMap& values) const { |
+ lock_.AssertAcquired(); |
for (Scope::KeyValueMap::const_iterator i = values.begin(); |
i != values.end(); ++i) |
all_overrides_[i->first] = i->second; |