Index: chrome/browser/policy/policy_map.h |
diff --git a/chrome/browser/policy/policy_map.h b/chrome/browser/policy/policy_map.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c9e3d03664974bdca0b94d87d753538a53c8e55c |
--- /dev/null |
+++ b/chrome/browser/policy/policy_map.h |
@@ -0,0 +1,58 @@ |
+// Copyright (c) 2011 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 CHROME_BROWSER_POLICY_POLICY_MAP_H_ |
+#define CHROME_BROWSER_POLICY_POLICY_MAP_H_ |
+ |
+#include <map> |
+ |
+#include "base/values.h" |
+#include "policy/configuration_policy_type.h" |
+ |
+namespace policy { |
+ |
+// Wrapper class around a std::map<ConfigurationPolicyType, Value*> that |
+// properly cleans up after itself when going out of scope. |
+// Exposes interesting methods of the underlying std::map. |
+class PolicyMap { |
+ public: |
+ typedef std::map<ConfigurationPolicyType, Value*> PolicyMapType; |
+ typedef PolicyMapType::const_iterator const_iterator; |
+ |
+ PolicyMap(); |
+ virtual ~PolicyMap(); |
+ |
+ // Returns a weak reference to the value currently stored for key |policy|. |
+ // Ownership is retained by PolicyMap; callers should use Value::DeepCopy |
+ // if they need a copy that they own themselves. |
+ // Returns NULL if the map does not contain a value for |policy|. |
+ const Value* Get(ConfigurationPolicyType policy) const; |
+ // Takes ownership of |value|. Overwrites any existing value stored in the |
+ // map for the key |policy|. |
+ void Set(ConfigurationPolicyType policy, Value* value); |
+ void Erase(ConfigurationPolicyType policy); |
+ |
+ void Swap(PolicyMap* other); |
+ |
+ bool Equals(const PolicyMap& other) const; |
+ bool empty() const; |
+ size_t size() const; |
+ |
+ const_iterator begin() const; |
+ const_iterator end() const; |
+ void Clear(); |
+ |
+ private: |
+ // Helper function for Equals(...). |
+ static bool MapEntryEquals(const PolicyMapType::value_type& a, |
+ const PolicyMapType::value_type& b); |
+ |
+ PolicyMapType map_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(PolicyMap); |
+}; |
+ |
+} // namespace policy |
+ |
+#endif // CHROME_BROWSER_POLICY_POLICY_MAP_H_ |