Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(176)

Side by Side Diff: third_party/WebKit/Source/platform/inspector_protocol/CollectionsWTF.h

Issue 2087953004: Switch v8 inspector to stl collections (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #ifndef CollectionsWTF_h
6 #define CollectionsWTF_h
7
8 #include "wtf/Allocator.h"
9 #include "wtf/HashMap.h"
10 #include "wtf/PtrUtil.h"
11 #include "wtf/Vector.h"
12 #include "wtf/VectorTraits.h"
13
14 namespace blink {
15 namespace protocol {
16
17 template <typename T>
18 class Vector {
19 public:
20 Vector() { }
21 Vector(size_t capacity) : m_impl(capacity) { }
22 typedef T* iterator;
23 typedef const T* const_iterator;
24
25 iterator begin() { return m_impl.begin(); }
26 iterator end() { return m_impl.end(); }
27 const_iterator begin() const { return m_impl.begin(); }
28 const_iterator end() const { return m_impl.end(); }
29
30 void resize(size_t s) { m_impl.resize(s); }
31 size_t size() const { return m_impl.size(); }
32 bool isEmpty() const { return m_impl.isEmpty(); }
33 T& operator[](size_t i) { return at(i); }
34 const T& operator[](size_t i) const { return at(i); }
35 T& at(size_t i) { return m_impl.at(i); }
36 const T& at(size_t i) const { return m_impl.at(i); }
37 T& last() { return m_impl.last(); }
38 const T& last() const { return m_impl.last(); }
39 void append(const T& t) { m_impl.append(t); }
40 void prepend(const T& t) { m_impl.prepend(t); }
41 void remove(size_t i) { m_impl.remove(i); }
42 void clear() { m_impl.clear(); }
43 void swap(Vector<T>& other) { m_impl.swap(other.m_impl); }
44 void removeLast() { m_impl.removeLast(); }
45
46 private:
47 WTF::Vector<T> m_impl;
48 };
49
50 template <typename T>
51 class Vector<std::unique_ptr<T>> {
52 WTF_MAKE_NONCOPYABLE(Vector);
53 public:
54 Vector() { }
55 Vector(size_t capacity) : m_impl(capacity) { }
56 Vector(Vector<std::unique_ptr<T>>&& other) : m_impl(std::move(other.m_impl)) { }
57 ~Vector() { }
58
59 typedef std::unique_ptr<T>* iterator;
60 typedef const std::unique_ptr<T>* const_iterator;
61
62 iterator begin() { return m_impl.begin(); }
63 iterator end() { return m_impl.end(); }
64 const_iterator begin() const { return m_impl.begin(); }
65 const_iterator end() const { return m_impl.end(); }
66
67 void resize(size_t s) { m_impl.resize(s); }
68 size_t size() const { return m_impl.size(); }
69 bool isEmpty() const { return m_impl.isEmpty(); }
70 T* operator[](size_t i) { return m_impl.at(i).get(); }
71 const T* operator[](size_t i) const { return m_impl.at(i).get(); }
72 T* at(size_t i) { return m_impl.at(i).get(); }
73 const T* at(size_t i) const { return m_impl.at(i).get(); }
74 T* last() { return m_impl.last().get(); }
75 const T* last() const { return m_impl.last(); }
76 void append(std::unique_ptr<T> t) { m_impl.append(std::move(t)); }
77 void prepend(std::unique_ptr<T> t) { m_impl.prepend(std::move(t)); }
78 void remove(size_t i) { m_impl.remove(i); }
79 void clear() { m_impl.clear(); }
80 void swap(Vector<std::unique_ptr<T>>& other) { m_impl.swap(other.m_impl); }
81 void swap(Vector<std::unique_ptr<T>>&& other) { m_impl.swap(other.m_impl); }
82 void removeLast() { m_impl.removeLast(); }
83
84 private:
85 WTF::Vector<std::unique_ptr<T>> m_impl;
86 };
87
88 template <typename K, typename V, typename I>
89 class HashMapIterator {
90 STACK_ALLOCATED();
91 public:
92 HashMapIterator(const I& impl) : m_impl(impl) { }
93 std::pair<K, V*>* get() const { m_pair = std::make_pair(m_impl->key, &m_impl ->value); return &m_pair; }
94 std::pair<K, V*>& operator*() const { return *get(); }
95 std::pair<K, V*>* operator->() const { return get(); }
96
97 bool operator==(const HashMapIterator<K, V, I>& other) const { return m_impl == other.m_impl; }
98 bool operator!=(const HashMapIterator<K, V, I>& other) const { return m_impl != other.m_impl; }
99
100 HashMapIterator<K, V, I>& operator++() { ++m_impl; return *this; }
101
102 private:
103 mutable std::pair<K, V*> m_pair;
104 I m_impl;
105 };
106
107 template <typename K, typename V, typename I>
108 class HashMapIterator<K, std::unique_ptr<V>, I> {
109 STACK_ALLOCATED();
110 public:
111 HashMapIterator(const I& impl) : m_impl(impl) { }
112 std::pair<K, V*>* get() const { m_pair = std::make_pair(m_impl->key, m_impl- >value.get()); return &m_pair; }
113 std::pair<K, V*>& operator*() const { return *get(); }
114 std::pair<K, V*>* operator->() const { return get(); }
115
116 bool operator==(const HashMapIterator<K, std::unique_ptr<V>, I>& other) cons t { return m_impl == other.m_impl; }
117 bool operator!=(const HashMapIterator<K, std::unique_ptr<V>, I>& other) cons t { return m_impl != other.m_impl; }
118
119 HashMapIterator<K, std::unique_ptr<V>, I>& operator++() { ++m_impl; return * this; }
120
121 private:
122 mutable std::pair<K, V*> m_pair;
123 I m_impl;
124 };
125
126 template <typename K, typename V>
127 class HashMap {
128 public:
129 HashMap() { }
130 ~HashMap() { }
131
132 using iterator = HashMapIterator<K, V, typename WTF::HashMap<K, V>::iterator >;
133 using const_iterator = HashMapIterator<K, const V, typename WTF::HashMap<K, V>::const_iterator>;
134
135 iterator begin() { return iterator(m_impl.begin()); }
136 iterator end() { return iterator(m_impl.end()); }
137 iterator find(const K& k) { return iterator(m_impl.find(k)); }
138 const_iterator begin() const { return const_iterator(m_impl.begin()); }
139 const_iterator end() const { return const_iterator(m_impl.end()); }
140 const_iterator find(const K& k) const { return const_iterator(m_impl.find(k) ); }
141
142 size_t size() const { return m_impl.size(); }
143 bool isEmpty() const { return m_impl.isEmpty(); }
144 bool set(const K& k, const V& v) { return m_impl.set(k, v).isNewEntry; }
145 bool contains(const K& k) const { return m_impl.contains(k); }
146 V get(const K& k) const { return m_impl.get(k); }
147 void remove(const K& k) { m_impl.remove(k); }
148 void clear() { m_impl.clear(); }
149 V take(const K& k) { return m_impl.take(k); }
150
151 private:
152 WTF::HashMap<K, V> m_impl;
153 };
154
155 template <typename K, typename V>
156 class HashMap<K, std::unique_ptr<V>> {
157 public:
158 HashMap() { }
159 ~HashMap() { }
160
161 using iterator = HashMapIterator<K, std::unique_ptr<V>, typename WTF::HashMa p<K, std::unique_ptr<V>>::iterator>;
162 using const_iterator = HashMapIterator<K, std::unique_ptr<V>, typename WTF:: HashMap<K, std::unique_ptr<V>>::const_iterator>;
163
164 iterator begin() { return iterator(m_impl.begin()); }
165 iterator end() { return iterator(m_impl.end()); }
166 iterator find(const K& k) { return iterator(m_impl.find(k)); }
167 const_iterator begin() const { return const_iterator(m_impl.begin()); }
168 const_iterator end() const { return const_iterator(m_impl.end()); }
169 const_iterator find(const K& k) const { return const_iterator(m_impl.find(k) ); }
170
171 size_t size() const { return m_impl.size(); }
172 bool isEmpty() const { return m_impl.isEmpty(); }
173 bool set(const K& k, std::unique_ptr<V> v) { return m_impl.set(k, std::move( v)).isNewEntry; }
174 bool contains(const K& k) const { return m_impl.contains(k); }
175 V* get(const K& k) const { return m_impl.get(k); }
176 std::unique_ptr<V> take(const K& k) { return m_impl.take(k); }
177 void remove(const K& k) { m_impl.remove(k); }
178 void clear() { m_impl.clear(); }
179
180 private:
181 WTF::HashMap<K, std::unique_ptr<V>> m_impl;
182 };
183
184 template <typename K>
185 class HashSet : public protocol::HashMap<K, K> {
186 public:
187 void add(const K& k) { this->set(k, k); }
188 };
189
190 } // namespace platform
191 } // namespace blink
192
193 #endif // !defined(CollectionsWTF_h)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698