12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- // Copyright 2018 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #include "base/containers/intrusive_heap.h"
- #include "base/check.h"
- #include "base/memory/ptr_util.h"
- namespace base {
- ////////////////////////////////////////////////////////////////////////////////
- // HeapHandle
- // static
- HeapHandle HeapHandle::Invalid() {
- return HeapHandle();
- }
- ////////////////////////////////////////////////////////////////////////////////
- // InternalHeapHandleStorage
- InternalHeapHandleStorage::InternalHeapHandleStorage()
- : handle_(new HeapHandle()) {}
- InternalHeapHandleStorage::InternalHeapHandleStorage(
- InternalHeapHandleStorage&& other) noexcept
- : handle_(std::move(other.handle_)) {
- DCHECK(intrusive_heap::IsInvalid(other.handle_));
- }
- InternalHeapHandleStorage::~InternalHeapHandleStorage() = default;
- InternalHeapHandleStorage& InternalHeapHandleStorage::operator=(
- InternalHeapHandleStorage&& other) noexcept {
- handle_ = std::move(other.handle_);
- DCHECK(intrusive_heap::IsInvalid(other.handle_));
- return *this;
- }
- void InternalHeapHandleStorage::swap(
- InternalHeapHandleStorage& other) noexcept {
- std::swap(handle_, other.handle_);
- }
- } // namespace base
|