| 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 | 10 |
| (...skipping 22 matching lines...) Expand all Loading... |
| 33 // more containing scopes. | 33 // more containing scopes. |
| 34 // | 34 // |
| 35 // A containing scope can be const or non-const. The const containing scope is | 35 // A containing scope can be const or non-const. The const containing scope is |
| 36 // used primarily to refer to the master build config which is shared across | 36 // used primarily to refer to the master build config which is shared across |
| 37 // many invocations. A const containing scope, however, prevents us from | 37 // many invocations. A const containing scope, however, prevents us from |
| 38 // marking variables "used" which prevents us from issuing errors on unused | 38 // marking variables "used" which prevents us from issuing errors on unused |
| 39 // variables. So you should use a non-const containing scope whenever possible. | 39 // variables. So you should use a non-const containing scope whenever possible. |
| 40 class Scope { | 40 class Scope { |
| 41 public: | 41 public: |
| 42 typedef base::hash_map<base::StringPiece, Value> KeyValueMap; | 42 typedef base::hash_map<base::StringPiece, Value> KeyValueMap; |
| 43 // Holds an owning list of scoped_ptrs of Items (since we can't make a vector | 43 // Holds an owning list of Items. |
| 44 // of scoped_ptrs). | 44 typedef ScopedVector<Item> ItemVector; |
| 45 typedef ScopedVector< scoped_ptr<Item> > ItemVector; | |
| 46 | 45 |
| 47 // Allows code to provide values for built-in variables. This class will | 46 // Allows code to provide values for built-in variables. This class will |
| 48 // automatically register itself on construction and deregister itself on | 47 // automatically register itself on construction and deregister itself on |
| 49 // destruction. | 48 // destruction. |
| 50 class ProgrammaticProvider { | 49 class ProgrammaticProvider { |
| 51 public: | 50 public: |
| 52 ProgrammaticProvider(Scope* scope) : scope_(scope) { | 51 ProgrammaticProvider(Scope* scope) : scope_(scope) { |
| 53 scope_->AddProvider(this); | 52 scope_->AddProvider(this); |
| 54 } | 53 } |
| 55 ~ProgrammaticProvider() { | 54 ~ProgrammaticProvider() { |
| (...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 348 | 347 |
| 349 typedef std::set<ProgrammaticProvider*> ProviderSet; | 348 typedef std::set<ProgrammaticProvider*> ProviderSet; |
| 350 ProviderSet programmatic_providers_; | 349 ProviderSet programmatic_providers_; |
| 351 | 350 |
| 352 SourceDir source_dir_; | 351 SourceDir source_dir_; |
| 353 | 352 |
| 354 DISALLOW_COPY_AND_ASSIGN(Scope); | 353 DISALLOW_COPY_AND_ASSIGN(Scope); |
| 355 }; | 354 }; |
| 356 | 355 |
| 357 #endif // TOOLS_GN_SCOPE_H_ | 356 #endif // TOOLS_GN_SCOPE_H_ |
| OLD | NEW |