Chromium Code Reviews| Index: tools/gn/args.h |
| diff --git a/tools/gn/args.h b/tools/gn/args.h |
| index 6852c30930076f5346d021f431cec179e4fd2a4b..e5343b08da408044bbcb5a7bfadd3d470bd2c413 100644 |
| --- a/tools/gn/args.h |
| +++ b/tools/gn/args.h |
| @@ -61,6 +61,15 @@ class Args { |
| // arguments. If there are, this returns false and sets the error. |
| bool VerifyAllOverridesUsed(Err* err) const; |
| + // Adds all declared arguments to the given output list. If the values exist |
| + // in the list already, their values will be overwriten, but other values |
| + // already in the list will remain. |
| + void MergeDeclaredArguments(Scope::KeyValueMap* dest) const; |
| + |
| + private: |
| + using DeclaredArgumentsPerToolchain = |
| + base::hash_map<const Settings*, Scope::KeyValueMap>; |
| + |
| // Like VerifyAllOverridesUsed but takes the lists of overrides specified and |
| // parameters declared. |
| static bool VerifyAllOverridesUsed( |
|
sky
2015/03/13 20:43:13
I moved this to the private block as no one but th
|
| @@ -68,12 +77,6 @@ class Args { |
| const Scope::KeyValueMap& declared_arguments, |
| Err* err); |
| - // Adds all declared arguments to the given output list. If the values exist |
| - // in the list already, their values will be overwriten, but other values |
| - // already in the list will remain. |
| - void MergeDeclaredArguments(Scope::KeyValueMap* dest) const; |
| - |
| - private: |
| // Sets the default config based on the current system. |
| void SetSystemVarsLocked(Scope* scope) const; |
| @@ -83,6 +86,11 @@ class Args { |
| void SaveOverrideRecordLocked(const Scope::KeyValueMap& values) const; |
| + // Returns the KeyValueMap used for arguments declared for the specified |
| + // toolchain. |
| + // NOTE: this does not grab a lock. |
|
brettw
2015/03/14 05:14:32
I was calling such functions ...Locked. I think if
sky
2015/03/16 16:20:45
Done.
|
| + Scope::KeyValueMap& DeclaredArgumentsForToolchain(Scope* scope) const; |
| + |
| // Since this is called during setup which we assume is single-threaded, |
| // this is not protected by the lock. It should be set only during init. |
| Scope::KeyValueMap overrides_; |
| @@ -94,9 +102,12 @@ class Args { |
| // check for overrides that were specified but never used. |
| mutable Scope::KeyValueMap all_overrides_; |
| - // Tracks all variables declared in any buildfile. This is so we can see if |
| - // the user set variables on the command line that are not used anywhere. |
| - mutable Scope::KeyValueMap declared_arguments_; |
| + // Maps from Settings (which corresponds to a toolchain) to the map of |
| + // declared variables. This is used to tracks all variables declared in any |
| + // buildfile. This is so we can see if the user set variables on the command |
| + // line that are not used anywhere. Each map is toolchain specific as each |
| + // toolchain may define variables in different locations. |
| + mutable DeclaredArgumentsPerToolchain declared_arguments_per_toolchain_; |
| Args& operator=(const Args& other); // Disallow assignment. |
| }; |