// Copyright 2011 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_ID_MAP_H_ #define BASE_CONTAINERS_ID_MAP_H_ #include <stddef.h> #include <stdint.h> #include <iterator> #include <limits> #include <memory> #include <ostream> #include <type_traits> #include <unordered_map> #include <utility> #include "base/check.h" #include "base/check_op.h" #include "base/containers/flat_set.h" #include "base/memory/raw_ptr.h" #include "base/sequence_checker.h" namespace base { // This object maintains a list of IDs that can be quickly converted to // pointers to objects. It is implemented as a hash table, optimized for // relatively small data sets (in the common case, there will be exactly one // item in the list). // // Items can be inserted into the container with arbitrary ID, but the caller // must ensure they are unique. Inserting IDs and relying on automatically // generated ones is not allowed because they can collide. // // The map's value type (the V param) can be any dereferenceable type, such as a // raw pointer or smart pointer, and must be comparable with nullptr. template <typename V, typename K = int32_t> class IDMap final { … }; } // namespace base #endif // BASE_CONTAINERS_ID_MAP_H_