// Copyright 2023 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef BASE_CONTAINERS_MAP_UTIL_H_ #define BASE_CONTAINERS_MAP_UTIL_H_ #include <memory> #include "base/types/to_address.h" namespace base { namespace internal { MappedType; } // namespace internal // Returns a pointer to the const value associated with the given key if it // exists, or null otherwise. template <typename Map, typename Key> constexpr const internal::MappedType<Map>* FindOrNull(const Map& map, const Key& key) { … } // Returns a pointer to the value associated with the given key if it exists, or // null otherwise. template <typename Map, typename Key> constexpr internal::MappedType<Map>* FindOrNull(Map& map, const Key& key) { … } // Returns the const pointer value associated with the given key. If none is // found, null is returned. The function is designed to be used with a map of // keys to pointers or smart pointers. // // This function does not distinguish between a missing key and a key mapped // to a null value. template <typename Map, typename Key, typename MappedElementType = std::pointer_traits<internal::MappedType<Map>>::element_type> constexpr const MappedElementType* FindPtrOrNull(const Map& map, const Key& key) { … } // Returns the pointer value associated with the given key. If none is found, // null is returned. The function is designed to be used with a map of keys to // pointers or smart pointers. // // This function does not distinguish between a missing key and a key mapped // to a null value. template <typename Map, typename Key, typename MappedElementType = std::pointer_traits<internal::MappedType<Map>>::element_type> constexpr MappedElementType* FindPtrOrNull(Map& map, const Key& key) { … } } // namespace base #endif // BASE_CONTAINERS_MAP_UTIL_H_