#ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_WTF_DOUBLY_LINKED_LIST_H_
#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_WTF_DOUBLY_LINKED_LIST_H_
#include "base/check_op.h"
#include "third_party/blink/renderer/platform/wtf/allocator/allocator.h"
#include "third_party/blink/renderer/platform/wtf/type_traits.h"
#include "third_party/blink/renderer/platform/wtf/wtf_size_t.h"
namespace WTF {
template <typename T>
class DoublyLinkedListNode { … };
template <typename T>
inline DoublyLinkedListNode<T>::DoublyLinkedListNode() { … }
template <typename T>
inline void DoublyLinkedListNode<T>::SetPrev(T* prev) { … }
template <typename T>
inline void DoublyLinkedListNode<T>::SetNext(T* next) { … }
template <typename T>
inline T* DoublyLinkedListNode<T>::Prev() const { … }
template <typename T>
inline T* DoublyLinkedListNode<T>::Next() const { … }
template <typename T, typename PointerType = T*>
class DoublyLinkedList { … };
template <typename T, typename PointerType>
inline DoublyLinkedList<T, PointerType>::DoublyLinkedList()
: … { … }
template <typename T, typename PointerType>
inline bool DoublyLinkedList<T, PointerType>::empty() const { … }
template <typename T, typename PointerType>
inline wtf_size_t DoublyLinkedList<T, PointerType>::size() const { … }
template <typename T, typename PointerType>
inline void DoublyLinkedList<T, PointerType>::Clear() { … }
template <typename T, typename PointerType>
inline T* DoublyLinkedList<T, PointerType>::Head() const { … }
template <typename T, typename PointerType>
inline T* DoublyLinkedList<T, PointerType>::Tail() const { … }
template <typename T, typename PointerType>
inline void DoublyLinkedList<T, PointerType>::Push(T* node) { … }
template <typename T, typename PointerType>
inline void DoublyLinkedList<T, PointerType>::Append(T* node) { … }
template <typename T, typename PointerType>
inline void DoublyLinkedList<T, PointerType>::Remove(T* node) { … }
template <typename T, typename PointerType>
inline T* DoublyLinkedList<T, PointerType>::RemoveHead() { … }
template <typename T, typename PointerType>
template <typename CompareFunc>
inline typename DoublyLinkedList<T, PointerType>::AddResult
DoublyLinkedList<T, PointerType>::Insert(std::unique_ptr<T> node,
const CompareFunc& compare_func) { … }
template <typename T, typename PointerType>
template <typename CompareFunc>
inline typename DoublyLinkedList<T, PointerType>::AddResult
DoublyLinkedList<T, PointerType>::Insert(T* node,
const CompareFunc& compare_func) { … }
template <typename T, typename PointerType>
inline typename DoublyLinkedList<T, PointerType>::AddResult
DoublyLinkedList<T, PointerType>::InsertAfter(std::unique_ptr<T> node,
T* insertion_point) { … }
template <typename T, typename PointerType>
inline typename DoublyLinkedList<T, PointerType>::AddResult
DoublyLinkedList<T, PointerType>::InsertAfter(T* node, T* insertion_point) { … }
}
DoublyLinkedListNode;
DoublyLinkedList;
#endif