// Copyright 2024 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_PERFORMANCE_MANAGER_GRAPH_NODE_INLINE_DATA_IMPL_H_ #define COMPONENTS_PERFORMANCE_MANAGER_GRAPH_NODE_INLINE_DATA_IMPL_H_ #include <memory> #include <optional> #include <type_traits> #include <utility> #include "base/check.h" namespace performance_manager { template <class T> class SparseNodeInlineData; namespace internal { // Store the element as a std::optional<T>. Used for non-sparse // NodeInlineData<T>. template <class T> class OptionalStorage { … }; // Store the element in a std::unique_ptr<T>. Used for SparseNodeInlineData<T>. template <class T> class SparseStorage { … }; IsSparseNodeInlineData; Storage; } // namespace internal } // namespace performance_manager #endif // COMPONENTS_PERFORMANCE_MANAGER_GRAPH_NODE_INLINE_DATA_IMPL_H_