Index: content/browser/indexed_db/list_set.h |
diff --git a/content/browser/indexed_db/list_set.h b/content/browser/indexed_db/list_set.h |
deleted file mode 100644 |
index 2ddd65d75cc1422d9dbef279fc6ba2aac2b79a81..0000000000000000000000000000000000000000 |
--- a/content/browser/indexed_db/list_set.h |
+++ /dev/null |
@@ -1,158 +0,0 @@ |
-// Copyright (c) 2013 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. |
- |
-#ifndef CONTENT_BROWSER_INDEXED_DB_LIST_SET_H_ |
-#define CONTENT_BROWSER_INDEXED_DB_LIST_SET_H_ |
- |
-#include <algorithm> |
-#include <iterator> |
-#include <list> |
-#include <set> |
-#include "base/logging.h" |
-#include "base/memory/scoped_ptr.h" |
- |
-// |
-// A container class that provides fast containment test (like a set) |
-// but maintains insertion order for iteration (like list). |
-// |
-// Member types of value (primitives and objects by value), raw pointers |
-// and scoped_refptr<> are supported. |
-// |
-template <typename T> class list_set { |
- public: |
- list_set() {} |
- list_set(const list_set<T>& other) : list_(other.list_), set_(other.set_) {} |
- list_set& operator=(const list_set<T>& other) { |
- list_ = other.list_; |
- set_ = other.set_; |
- return *this; |
- } |
- |
- void insert(const T& elem) { |
- if (set_.find(elem) != set_.end()) |
- return; |
- set_.insert(elem); |
- list_.push_back(elem); |
- } |
- |
- void erase(const T& elem) { |
- if (set_.find(elem) == set_.end()) |
- return; |
- set_.erase(elem); |
- typename std::list<T>::iterator it = |
- std::find(list_.begin(), list_.end(), elem); |
- DCHECK(it != list_.end()); |
- list_.erase(it); |
- } |
- |
- bool has(const T& elem) { return set_.find(elem) != set_.end(); } |
- |
- size_t size() const { |
- DCHECK_EQ(list_.size(), set_.size()); |
- return set_.size(); |
- } |
- |
- bool empty() const { |
- DCHECK_EQ(list_.empty(), set_.empty()); |
- return set_.empty(); |
- } |
- |
- class const_iterator; |
- |
- class iterator { |
- public: |
- typedef iterator self_type; |
- typedef T value_type; |
- typedef T& reference; |
- typedef T* pointer; |
- typedef std::bidirectional_iterator_tag iterator_category; |
- typedef std::ptrdiff_t difference_type; |
- |
- inline iterator(typename std::list<T>::iterator it) : it_(it) {} |
- inline self_type& operator++() { |
- ++it_; |
- return *this; |
- } |
- inline self_type operator++(int) { |
- self_type result(*this); |
- ++(*this); |
- return result; |
- } |
- inline self_type& operator--() { |
- --it_; |
- return *this; |
- } |
- inline self_type operator--(int) { |
- self_type result(*this); |
- --(*this); |
- return result; |
- } |
- inline value_type& operator*() { return *it_; } |
- inline value_type* operator->() { return &(*it_); } |
- inline bool operator==(const iterator& rhs) const { return it_ == rhs.it_; } |
- inline bool operator!=(const iterator& rhs) const { return it_ != rhs.it_; } |
- |
- inline operator const_iterator() const { return const_iterator(it_); } |
- |
- private: |
- typename std::list<T>::iterator it_; |
- }; |
- |
- class const_iterator { |
- public: |
- typedef const_iterator self_type; |
- typedef T value_type; |
- typedef T& reference; |
- typedef T* pointer; |
- typedef std::bidirectional_iterator_tag iterator_category; |
- typedef std::ptrdiff_t difference_type; |
- |
- inline const_iterator(typename std::list<T>::const_iterator it) : it_(it) {} |
- inline self_type& operator++() { |
- ++it_; |
- return *this; |
- } |
- inline self_type operator++(int) { |
- self_type result(*this); |
- ++(*this); |
- return result; |
- } |
- inline self_type& operator--() { |
- --it_; |
- return *this; |
- } |
- inline self_type operator--(int) { |
- self_type result(*this); |
- --(*this); |
- return result; |
- } |
- inline const value_type& operator*() { return *it_; } |
- inline const value_type* operator->() { return &(*it_); } |
- inline bool operator==(const const_iterator& rhs) const { |
- return it_ == rhs.it_; |
- } |
- inline bool operator!=(const const_iterator& rhs) const { |
- return it_ != rhs.it_; |
- } |
- |
- private: |
- typename std::list<T>::const_iterator it_; |
- }; |
- |
- iterator begin() { return iterator(list_.begin()); } |
- iterator end() { return iterator(list_.end()); } |
- const_iterator begin() const { return const_iterator(list_.begin()); } |
- const_iterator end() const { return const_iterator(list_.end()); } |
- |
- private: |
- std::list<T> list_; |
- std::set<T> set_; |
-}; |
- |
-// Prevent instantiation of list_set<scoped_ptr<T>> as the current |
-// implementation would fail. |
-// TODO(jsbell): Support scoped_ptr through specialization. |
-template <typename T> class list_set<scoped_ptr<T> >; |
- |
-#endif // CONTENT_BROWSER_INDEXED_DB_LIST_SET_H_ |