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 Values_h | 5 #ifndef Values_h |
6 #define Values_h | 6 #define Values_h |
7 | 7 |
8 #include "platform/inspector_protocol/Allocator.h" | 8 #include "platform/inspector_protocol/Allocator.h" |
9 #include "platform/inspector_protocol/Collections.h" | 9 #include "platform/inspector_protocol/Collections.h" |
10 #include "platform/inspector_protocol/Platform.h" | 10 #include "platform/inspector_protocol/Platform.h" |
11 #include "platform/inspector_protocol/String16.h" | 11 #include "platform/inspector_protocol/String16.h" |
12 | 12 |
| 13 #include <vector> |
| 14 |
13 namespace blink { | 15 namespace blink { |
14 namespace protocol { | 16 namespace protocol { |
15 | 17 |
16 class ListValue; | 18 class ListValue; |
17 class DictionaryValue; | 19 class DictionaryValue; |
18 class Value; | 20 class Value; |
19 | 21 |
20 class PLATFORM_EXPORT Value { | 22 class PLATFORM_EXPORT Value { |
21 PROTOCOL_DISALLOW_COPY(Value); | 23 PROTOCOL_DISALLOW_COPY(Value); |
22 public: | 24 public: |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
167 Entry at(size_t index) const; | 169 Entry at(size_t index) const; |
168 | 170 |
169 bool booleanProperty(const String16& name, bool defaultValue) const; | 171 bool booleanProperty(const String16& name, bool defaultValue) const; |
170 double numberProperty(const String16& name, double defaultValue) const; | 172 double numberProperty(const String16& name, double defaultValue) const; |
171 void remove(const String16& name); | 173 void remove(const String16& name); |
172 | 174 |
173 ~DictionaryValue() override; | 175 ~DictionaryValue() override; |
174 | 176 |
175 private: | 177 private: |
176 DictionaryValue(); | 178 DictionaryValue(); |
| 179 template<typename T> |
| 180 void set(const String16& key, std::unique_ptr<T>& value) |
| 181 { |
| 182 DCHECK(value); |
| 183 bool isNew = m_data.find(key) == m_data.end(); |
| 184 m_data[key] = std::move(value); |
| 185 if (isNew) |
| 186 m_order.push_back(key); |
| 187 } |
177 | 188 |
178 using Dictionary = protocol::HashMap<String16, std::unique_ptr<Value>>; | 189 using Dictionary = protocol::HashMap<String16, std::unique_ptr<Value>>; |
179 Dictionary m_data; | 190 Dictionary m_data; |
180 protocol::Vector<String16> m_order; | 191 std::vector<String16> m_order; |
181 }; | 192 }; |
182 | 193 |
183 class PLATFORM_EXPORT ListValue : public Value { | 194 class PLATFORM_EXPORT ListValue : public Value { |
184 public: | 195 public: |
185 static std::unique_ptr<ListValue> create() | 196 static std::unique_ptr<ListValue> create() |
186 { | 197 { |
187 return wrapUnique(new ListValue()); | 198 return wrapUnique(new ListValue()); |
188 } | 199 } |
189 | 200 |
190 static ListValue* cast(Value* value) | 201 static ListValue* cast(Value* value) |
(...skipping 13 matching lines...) Expand all Loading... |
204 void writeJSON(String16Builder* output) const override; | 215 void writeJSON(String16Builder* output) const override; |
205 std::unique_ptr<Value> clone() const override; | 216 std::unique_ptr<Value> clone() const override; |
206 | 217 |
207 void pushValue(std::unique_ptr<Value>); | 218 void pushValue(std::unique_ptr<Value>); |
208 | 219 |
209 Value* at(size_t index); | 220 Value* at(size_t index); |
210 size_t size() const { return m_data.size(); } | 221 size_t size() const { return m_data.size(); } |
211 | 222 |
212 private: | 223 private: |
213 ListValue(); | 224 ListValue(); |
214 protocol::Vector<std::unique_ptr<Value>> m_data; | 225 std::vector<std::unique_ptr<Value>> m_data; |
215 }; | 226 }; |
216 | 227 |
217 } // namespace protocol | 228 } // namespace protocol |
218 } // namespace blink | 229 } // namespace blink |
219 | 230 |
220 #endif // Values_h | 231 #endif // Values_h |
OLD | NEW |