| 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 #ifndef TOOLS_GN_SCOPE_H_ | 5 #ifndef TOOLS_GN_SCOPE_H_ |
| 6 #define TOOLS_GN_SCOPE_H_ | 6 #define TOOLS_GN_SCOPE_H_ |
| 7 | 7 |
| 8 #include <map> | 8 #include <map> |
| 9 #include <set> | 9 #include <set> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 22 matching lines...) Expand all Loading... |
| 33 // values resursively down the stack until a match is found or there are no | 33 // values resursively down the stack until a match is found or there are no |
| 34 // more containing scopes. | 34 // more containing scopes. |
| 35 // | 35 // |
| 36 // A containing scope can be const or non-const. The const containing scope is | 36 // A containing scope can be const or non-const. The const containing scope is |
| 37 // used primarily to refer to the master build config which is shared across | 37 // used primarily to refer to the master build config which is shared across |
| 38 // many invocations. A const containing scope, however, prevents us from | 38 // many invocations. A const containing scope, however, prevents us from |
| 39 // marking variables "used" which prevents us from issuing errors on unused | 39 // marking variables "used" which prevents us from issuing errors on unused |
| 40 // variables. So you should use a non-const containing scope whenever possible. | 40 // variables. So you should use a non-const containing scope whenever possible. |
| 41 class Scope { | 41 class Scope { |
| 42 public: | 42 public: |
| 43 typedef base::hash_map<base::StringPiece, Value> KeyValueMap; | 43 typedef base::hash_map<base::StringPiece, Value, base::StringPieceHash> |
| 44 KeyValueMap; |
| 44 // Holds an owning list of Items. | 45 // Holds an owning list of Items. |
| 45 typedef ScopedVector<Item> ItemVector; | 46 typedef ScopedVector<Item> ItemVector; |
| 46 | 47 |
| 47 // Allows code to provide values for built-in variables. This class will | 48 // Allows code to provide values for built-in variables. This class will |
| 48 // automatically register itself on construction and deregister itself on | 49 // automatically register itself on construction and deregister itself on |
| 49 // destruction. | 50 // destruction. |
| 50 class ProgrammaticProvider { | 51 class ProgrammaticProvider { |
| 51 public: | 52 public: |
| 52 explicit ProgrammaticProvider(Scope* scope) : scope_(scope) { | 53 explicit ProgrammaticProvider(Scope* scope) : scope_(scope) { |
| 53 scope_->AddProvider(this); | 54 scope_->AddProvider(this); |
| (...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 322 // change things (especially marking unused vars). | 323 // change things (especially marking unused vars). |
| 323 const Scope* const_containing_; | 324 const Scope* const_containing_; |
| 324 Scope* mutable_containing_; | 325 Scope* mutable_containing_; |
| 325 | 326 |
| 326 const Settings* settings_; | 327 const Settings* settings_; |
| 327 | 328 |
| 328 // Bits set for different modes. See the flag definitions in the .cc file | 329 // Bits set for different modes. See the flag definitions in the .cc file |
| 329 // for more. | 330 // for more. |
| 330 unsigned mode_flags_; | 331 unsigned mode_flags_; |
| 331 | 332 |
| 332 typedef base::hash_map<base::StringPiece, Record> RecordMap; | 333 typedef base::hash_map<base::StringPiece, Record, base::StringPieceHash> |
| 334 RecordMap; |
| 333 RecordMap values_; | 335 RecordMap values_; |
| 334 | 336 |
| 335 // Owning pointers. Note that this can't use string pieces since the names | 337 // Owning pointers. Note that this can't use string pieces since the names |
| 336 // are constructed from Values which might be deallocated before this goes | 338 // are constructed from Values which might be deallocated before this goes |
| 337 // out of scope. | 339 // out of scope. |
| 338 typedef base::hash_map<std::string, Scope*> NamedScopeMap; | 340 typedef base::hash_map<std::string, Scope*> NamedScopeMap; |
| 339 NamedScopeMap target_defaults_; | 341 NamedScopeMap target_defaults_; |
| 340 | 342 |
| 341 // Null indicates not set and that we should fallback to the containing | 343 // Null indicates not set and that we should fallback to the containing |
| 342 // scope's filter. | 344 // scope's filter. |
| (...skipping 11 matching lines...) Expand all Loading... |
| 354 | 356 |
| 355 typedef std::set<ProgrammaticProvider*> ProviderSet; | 357 typedef std::set<ProgrammaticProvider*> ProviderSet; |
| 356 ProviderSet programmatic_providers_; | 358 ProviderSet programmatic_providers_; |
| 357 | 359 |
| 358 SourceDir source_dir_; | 360 SourceDir source_dir_; |
| 359 | 361 |
| 360 DISALLOW_COPY_AND_ASSIGN(Scope); | 362 DISALLOW_COPY_AND_ASSIGN(Scope); |
| 361 }; | 363 }; |
| 362 | 364 |
| 363 #endif // TOOLS_GN_SCOPE_H_ | 365 #endif // TOOLS_GN_SCOPE_H_ |
| OLD | NEW |