Chromium Code Reviews| Index: tools/gn/args.h |
| diff --git a/tools/gn/args.h b/tools/gn/args.h |
| index 9df5712d9f30e0753d0a8ff02eb435b89e36b457..79fe93f1e069a64cf498d75cb200279454a39779 100644 |
| --- a/tools/gn/args.h |
| +++ b/tools/gn/args.h |
| @@ -5,6 +5,8 @@ |
| #ifndef TOOLS_GN_ARGS_H_ |
| #define TOOLS_GN_ARGS_H_ |
| +#include <map> |
| + |
| #include "base/containers/hash_tables.h" |
| #include "base/macros.h" |
| #include "base/synchronization/lock.h" |
| @@ -23,6 +25,18 @@ extern const char kBuildArgs_Help[]; |
| // the argument was unused. |
| class Args { |
| public: |
| + struct ValueWithOverride { |
| + ValueWithOverride(); |
| + ValueWithOverride(const Value& def_val); |
|
scottmg
2017/01/24 21:02:55
Should probably have an operator= implementation t
brettw
2017/01/24 21:34:08
This isn't a copy constructor.
scottmg
2017/01/24 21:41:37
Doh! Sorry.
(I assume map needs to copy, so you c
|
| + ~ValueWithOverride(); |
| + |
| + Value default_value; // Default value given in declare_args. |
| + |
| + bool has_override; // True indicates override_value is valid. |
| + Value override_value; // From .gn or the current build's "gn args". |
| + }; |
| + using ValueWithOverrideMap = std::map<base::StringPiece, ValueWithOverride>; |
| + |
| Args(); |
| Args(const Args& other); |
| ~Args(); |
| @@ -36,9 +50,6 @@ class Args { |
| // argument is set. |
| const Value* GetArgOverride(const char* name) const; |
| - // Gets all overrides set on the build. |
| - Scope::KeyValueMap GetAllOverrides() const; |
| - |
| // Sets up the root scope for a toolchain. This applies the default system |
| // flags and saves the toolchain overrides so they can be applied to |
| // declare_args blocks that appear when loading files in that toolchain. |
| @@ -62,10 +73,10 @@ 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; |
| + // Returns information about all arguements, both defaults and overrides. |
| + // This is used for the help system which is not performance critical. Use a |
| + // map instead of a hash map so the arguements are sorted alphabetically. |
| + ValueWithOverrideMap GetAllArguments() const; |
| private: |
| using ArgumentsPerToolchain = |