chromium/components/performance_manager/graph/node_inline_data_impl.h

// 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_