| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CollectionsSTL_h | 5 #ifndef CollectionsSTL_h |
| 6 #define CollectionsSTL_h | 6 #define CollectionsSTL_h |
| 7 | 7 |
| 8 #include "wtf/Allocator.h" | 8 #include "platform/inspector_protocol/String16.h" |
| 9 #include "wtf/HashMap.h" | 9 #include "wtf/OwnPtr.h" |
| 10 #include "wtf/PassOwnPtr.h" | 10 #include "wtf/PassOwnPtr.h" |
| 11 | 11 |
| 12 #include <algorithm> | 12 #include <algorithm> |
| 13 #include <unordered_map> | 13 #include <unordered_map> |
| 14 #include <vector> | 14 #include <vector> |
| 15 | 15 |
| 16 namespace std { | |
| 17 template<> | |
| 18 struct hash<String> { | |
| 19 std::size_t operator()(const String& k) const { return StringHash::hash(k);
} | |
| 20 }; | |
| 21 } | |
| 22 | 16 |
| 23 namespace blink { | 17 namespace blink { |
| 24 namespace protocol { | 18 namespace protocol { |
| 25 | 19 |
| 26 template <typename T> | 20 template <typename T> |
| 27 class Vector { | 21 class Vector { |
| 28 public: | 22 public: |
| 29 Vector() { } | 23 Vector() { } |
| 30 Vector(size_t capacity) : m_impl(capacity) { } | 24 Vector(size_t capacity) : m_impl(capacity) { } |
| 31 typedef typename std::vector<T>::iterator iterator; | 25 typedef typename std::vector<T>::iterator iterator; |
| (...skipping 23 matching lines...) Expand all Loading... |
| 55 private: | 49 private: |
| 56 std::vector<T> m_impl; | 50 std::vector<T> m_impl; |
| 57 }; | 51 }; |
| 58 | 52 |
| 59 template <typename T> | 53 template <typename T> |
| 60 class Vector<OwnPtr<T>> { | 54 class Vector<OwnPtr<T>> { |
| 61 WTF_MAKE_NONCOPYABLE(Vector); | 55 WTF_MAKE_NONCOPYABLE(Vector); |
| 62 public: | 56 public: |
| 63 Vector() { } | 57 Vector() { } |
| 64 Vector(size_t capacity) : m_impl(capacity) { } | 58 Vector(size_t capacity) : m_impl(capacity) { } |
| 59 Vector(Vector&& other) : m_impl(std::move(other.m_impl)) { } |
| 65 ~Vector() { } | 60 ~Vector() { } |
| 66 | 61 |
| 67 typedef typename std::vector<OwnPtr<T>>::iterator iterator; | 62 typedef typename std::vector<OwnPtr<T>>::iterator iterator; |
| 68 typedef typename std::vector<OwnPtr<T>>::const_iterator const_iterator; | 63 typedef typename std::vector<OwnPtr<T>>::const_iterator const_iterator; |
| 69 | 64 |
| 70 iterator begin() { return m_impl.begin(); } | 65 iterator begin() { return m_impl.begin(); } |
| 71 iterator end() { return m_impl.end(); } | 66 iterator end() { return m_impl.end(); } |
| 72 const_iterator begin() const { return m_impl.begin(); } | 67 const_iterator begin() const { return m_impl.begin(); } |
| 73 const_iterator end() const { return m_impl.end(); } | 68 const_iterator end() const { return m_impl.end(); } |
| 74 | 69 |
| 75 void resize(size_t s) { m_impl.resize(s); } | 70 void resize(size_t s) { m_impl.resize(s); } |
| 76 size_t size() const { return m_impl.size(); } | 71 size_t size() const { return m_impl.size(); } |
| 77 bool isEmpty() const { return !m_impl.size(); } | 72 bool isEmpty() const { return !m_impl.size(); } |
| 78 OwnPtr<T>& operator[](size_t i) { return at(i); } | 73 OwnPtr<T>& operator[](size_t i) { return at(i); } |
| 79 const OwnPtr<T>& operator[](size_t i) const { return at(i); } | 74 const OwnPtr<T>& operator[](size_t i) const { return at(i); } |
| 80 OwnPtr<T>& at(size_t i) { return m_impl[i]; } | 75 OwnPtr<T>& at(size_t i) { return m_impl[i]; } |
| 81 const OwnPtr<T>& at(size_t i) const { return m_impl.at(i); } | 76 const OwnPtr<T>& at(size_t i) const { return m_impl.at(i); } |
| 82 OwnPtr<T>& last() { return m_impl[m_impl.size() - 1]; } | 77 OwnPtr<T>& last() { return m_impl[m_impl.size() - 1]; } |
| 83 const OwnPtr<T>& last() const { return m_impl[m_impl.size() - 1]; } | 78 const OwnPtr<T>& last() const { return m_impl[m_impl.size() - 1]; } |
| 84 void append(const PassOwnPtr<T>& t) { m_impl.push_back(t); } | 79 void append(const PassOwnPtr<T>& t) { m_impl.push_back(t); } |
| 85 void prepend(const PassOwnPtr<T>& t) { m_impl.insert(m_impl.begin(), t); } | 80 void prepend(const PassOwnPtr<T>& t) { m_impl.insert(m_impl.begin(), t); } |
| 86 void remove(size_t i) { m_impl.erase(m_impl.begin() + i); } | 81 void remove(size_t i) { m_impl.erase(m_impl.begin() + i); } |
| 87 void clear() { m_impl.clear(); } | 82 void clear() { m_impl.clear(); } |
| 88 void swap(Vector& other) { m_impl.swap(other.m_impl); } | 83 void swap(Vector& other) { m_impl.swap(other.m_impl); } |
| 84 void swap(Vector&& other) { m_impl.swap(other.m_impl); } |
| 89 void removeLast() { m_impl.pop_back(); } | 85 void removeLast() { m_impl.pop_back(); } |
| 90 | 86 |
| 91 private: | 87 private: |
| 92 std::vector<OwnPtr<T>> m_impl; | 88 std::vector<OwnPtr<T>> m_impl; |
| 93 }; | 89 }; |
| 94 | 90 |
| 95 template <typename K, typename V, typename I> | 91 template <typename K, typename V, typename I> |
| 96 class HashMapIterator { | 92 class HashMapIterator { |
| 97 STACK_ALLOCATED(); | 93 STACK_ALLOCATED(); |
| 98 public: | 94 public: |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 213 template <typename K> | 209 template <typename K> |
| 214 class HashSet : public protocol::HashMap<K, K> { | 210 class HashSet : public protocol::HashMap<K, K> { |
| 215 public: | 211 public: |
| 216 void add(const K& k) { this->set(k, k); } | 212 void add(const K& k) { this->set(k, k); } |
| 217 }; | 213 }; |
| 218 | 214 |
| 219 } // namespace platform | 215 } // namespace platform |
| 220 } // namespace blink | 216 } // namespace blink |
| 221 | 217 |
| 222 #endif // !defined(CollectionsSTL_h) | 218 #endif // !defined(CollectionsSTL_h) |
| OLD | NEW |