1dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// Use of this source code is governed by a BSD-style license that can be 3dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// found in the LICENSE file. 4dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 5dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#ifndef CHROME_BROWSER_POLICY_POLICY_MAP_H_ 6dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#define CHROME_BROWSER_POLICY_POLICY_MAP_H_ 7dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 8dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include <map> 9dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 10dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "base/values.h" 11dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "policy/configuration_policy_type.h" 12dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 13dc0f95d653279beabeb9817299e2902918ba123eKristian Monsennamespace policy { 14dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 15dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// Wrapper class around a std::map<ConfigurationPolicyType, Value*> that 16dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// properly cleans up after itself when going out of scope. 17dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// Exposes interesting methods of the underlying std::map. 18dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenclass PolicyMap { 19dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen public: 20dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen typedef std::map<ConfigurationPolicyType, Value*> PolicyMapType; 21dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen typedef PolicyMapType::const_iterator const_iterator; 22dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 23dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen PolicyMap(); 24dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual ~PolicyMap(); 25dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 26dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // Returns a weak reference to the value currently stored for key |policy|. 27dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // Ownership is retained by PolicyMap; callers should use Value::DeepCopy 28dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // if they need a copy that they own themselves. 29dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // Returns NULL if the map does not contain a value for |policy|. 30dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen const Value* Get(ConfigurationPolicyType policy) const; 31dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // Takes ownership of |value|. Overwrites any existing value stored in the 32dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // map for the key |policy|. 33dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen void Set(ConfigurationPolicyType policy, Value* value); 34dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen void Erase(ConfigurationPolicyType policy); 35dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 36dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen void Swap(PolicyMap* other); 37dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 38dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen bool Equals(const PolicyMap& other) const; 39dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen bool empty() const; 40dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen size_t size() const; 41dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 42dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen const_iterator begin() const; 43dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen const_iterator end() const; 44dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen void Clear(); 45dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 46dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen private: 47dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // Helper function for Equals(...). 48dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen static bool MapEntryEquals(const PolicyMapType::value_type& a, 49dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen const PolicyMapType::value_type& b); 50dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 51dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen PolicyMapType map_; 52dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 53dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen DISALLOW_COPY_AND_ASSIGN(PolicyMap); 54dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen}; 55dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 56dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen} // namespace policy 57dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 58dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#endif // CHROME_BROWSER_POLICY_POLICY_MAP_H_ 59