Index: tools/gn/config.h |
diff --git a/tools/gn/config.h b/tools/gn/config.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..0ee9b7ba36ace940284716165d5ed5a51ad0c0e0 |
--- /dev/null |
+++ b/tools/gn/config.h |
@@ -0,0 +1,45 @@ |
+// Copyright (c) 2013 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef TOOLS_GN_CONFIG_H_ |
+#define TOOLS_GN_CONFIG_H_ |
+ |
+#include "base/compiler_specific.h" |
+#include "tools/gn/config_values.h" |
+#include "tools/gn/item.h" |
+ |
+class Err; |
+class ItemTree; |
+class LocationRange; |
+class Settings; |
+ |
+// Represents a named config in the dependency graph. |
+class Config : public Item { |
+ public: |
+ Config(const Label& label); |
+ virtual ~Config(); |
+ |
+ virtual Config* AsConfig() OVERRIDE; |
+ virtual const Config* AsConfig() const OVERRIDE; |
+ |
+ ConfigValues& config_values() { return config_values_; } |
+ const ConfigValues& config_values() const { return config_values_; } |
+ |
+ // Gets or creates a config. |
+ // |
+ // This is like the TargetManager is for Targets, but Configs are so much |
+ // simpler that this one function is all we need. |
+ static Config* GetConfig(const Settings* settings, |
+ const LocationRange& specified_from_here, |
+ const Label& label, |
+ Item* dep_from, |
+ Err* err); |
+ |
+ private: |
+ ConfigValues config_values_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(Config); |
+}; |
+ |
+#endif // TOOLS_GN_CONFIG_H_ |