#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_DOM_COLLECTION_INDEX_CACHE_H_
#define THIRD_PARTY_BLINK_RENDERER_CORE_DOM_COLLECTION_INDEX_CACHE_H_
#include "base/check_op.h"
#include "base/logging.h"
#include "third_party/blink/renderer/platform/heap/member.h"
#include "third_party/blink/renderer/platform/heap/visitor.h"
#include "third_party/blink/renderer/platform/wtf/allocator/allocator.h"
namespace blink {
template <typename Collection, typename NodeType>
class CollectionIndexCache { … };
template <typename Collection, typename NodeType>
CollectionIndexCache<Collection, NodeType>::CollectionIndexCache()
: … { … }
template <typename Collection, typename NodeType>
void CollectionIndexCache<Collection, NodeType>::Invalidate() { … }
template <typename Collection, typename NodeType>
void CollectionIndexCache<Collection, NodeType>::NodeInserted() { … }
template <typename Collection, typename NodeType>
void CollectionIndexCache<Collection, NodeType>::NodeRemoved() { … }
template <typename Collection, typename NodeType>
inline unsigned CollectionIndexCache<Collection, NodeType>::NodeCount(
const Collection& collection) { … }
template <typename Collection, typename NodeType>
inline NodeType* CollectionIndexCache<Collection, NodeType>::NodeAt(
const Collection& collection,
unsigned index) { … }
template <typename Collection, typename NodeType>
inline NodeType*
CollectionIndexCache<Collection, NodeType>::NodeBeforeCachedNode(
const Collection& collection,
unsigned index) { … }
template <typename Collection, typename NodeType>
inline NodeType*
CollectionIndexCache<Collection, NodeType>::NodeAfterCachedNode(
const Collection& collection,
unsigned index) { … }
}
#endif