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 Array_h | 5 #ifndef Array_h |
6 #define Array_h | 6 #define Array_h |
7 | 7 |
8 #include "platform/PlatformExport.h" | 8 #include "platform/PlatformExport.h" |
9 #include "platform/inspector_protocol/Collections.h" | 9 #include "platform/inspector_protocol/Collections.h" |
10 #include "platform/inspector_protocol/ErrorSupport.h" | 10 #include "platform/inspector_protocol/ErrorSupport.h" |
| 11 #include "platform/inspector_protocol/String16.h" |
11 #include "platform/inspector_protocol/ValueConversions.h" | 12 #include "platform/inspector_protocol/ValueConversions.h" |
12 #include "platform/inspector_protocol/Values.h" | 13 #include "platform/inspector_protocol/Values.h" |
13 #include "wtf/text/WTFString.h" | |
14 | 14 |
15 namespace blink { | 15 namespace blink { |
16 namespace protocol { | 16 namespace protocol { |
17 | 17 |
18 template<typename T> | 18 template<typename T> |
19 class ArrayBase { | 19 class ArrayBase { |
20 public: | 20 public: |
21 static PassOwnPtr<Array<T>> create() | 21 static PassOwnPtr<Array<T>> create() |
22 { | 22 { |
23 return adoptPtr(new Array<T>()); | 23 return adoptPtr(new Array<T>()); |
24 } | 24 } |
25 | 25 |
26 static PassOwnPtr<Array<T>> parse(protocol::Value* value, ErrorSupport* erro
rs) | 26 static PassOwnPtr<Array<T>> parse(protocol::Value* value, ErrorSupport* erro
rs) |
27 { | 27 { |
28 protocol::ListValue* array = ListValue::cast(value); | 28 protocol::ListValue* array = ListValue::cast(value); |
29 if (!array) { | 29 if (!array) { |
30 errors->addError("array expected"); | 30 errors->addError("array expected"); |
31 return nullptr; | 31 return nullptr; |
32 } | 32 } |
33 errors->push(); | 33 errors->push(); |
34 OwnPtr<Array<T>> result = adoptPtr(new Array<T>()); | 34 OwnPtr<Array<T>> result = adoptPtr(new Array<T>()); |
35 for (size_t i = 0; i < array->size(); ++i) { | 35 for (size_t i = 0; i < array->size(); ++i) { |
36 errors->setName("[" + String::number(i) + "]"); | 36 errors->setName("[" + String16::number(i) + "]"); |
37 T item = FromValue<T>::parse(array->at(i), errors); | 37 T item = FromValue<T>::parse(array->at(i), errors); |
38 result->m_vector.append(item); | 38 result->m_vector.append(item); |
39 } | 39 } |
40 errors->pop(); | 40 errors->pop(); |
41 if (errors->hasErrors()) | 41 if (errors->hasErrors()) |
42 return nullptr; | 42 return nullptr; |
43 return result.release(); | 43 return result.release(); |
44 } | 44 } |
45 | 45 |
46 void addItem(const T& value) | 46 void addItem(const T& value) |
(...skipping 17 matching lines...) Expand all Loading... |
64 for (auto& item : m_vector) | 64 for (auto& item : m_vector) |
65 result->pushValue(toValue(item)); | 65 result->pushValue(toValue(item)); |
66 return result.release(); | 66 return result.release(); |
67 } | 67 } |
68 | 68 |
69 private: | 69 private: |
70 protocol::Vector<T> m_vector; | 70 protocol::Vector<T> m_vector; |
71 }; | 71 }; |
72 | 72 |
73 template<> class Array<String> : public ArrayBase<String> {}; | 73 template<> class Array<String> : public ArrayBase<String> {}; |
| 74 template<> class Array<String16> : public ArrayBase<String16> {}; |
74 template<> class Array<int> : public ArrayBase<int> {}; | 75 template<> class Array<int> : public ArrayBase<int> {}; |
75 template<> class Array<double> : public ArrayBase<double> {}; | 76 template<> class Array<double> : public ArrayBase<double> {}; |
76 template<> class Array<bool> : public ArrayBase<bool> {}; | 77 template<> class Array<bool> : public ArrayBase<bool> {}; |
77 | 78 |
78 template<typename T> | 79 template<typename T> |
79 class Array { | 80 class Array { |
80 public: | 81 public: |
81 static PassOwnPtr<Array<T>> create() | 82 static PassOwnPtr<Array<T>> create() |
82 { | 83 { |
83 return adoptPtr(new Array<T>()); | 84 return adoptPtr(new Array<T>()); |
84 } | 85 } |
85 | 86 |
86 static PassOwnPtr<Array<T>> parse(protocol::Value* value, ErrorSupport* erro
rs) | 87 static PassOwnPtr<Array<T>> parse(protocol::Value* value, ErrorSupport* erro
rs) |
87 { | 88 { |
88 protocol::ListValue* array = ListValue::cast(value); | 89 protocol::ListValue* array = ListValue::cast(value); |
89 if (!array) { | 90 if (!array) { |
90 errors->addError("array expected"); | 91 errors->addError("array expected"); |
91 return nullptr; | 92 return nullptr; |
92 } | 93 } |
93 OwnPtr<Array<T>> result = adoptPtr(new Array<T>()); | 94 OwnPtr<Array<T>> result = adoptPtr(new Array<T>()); |
94 errors->push(); | 95 errors->push(); |
95 for (size_t i = 0; i < array->size(); ++i) { | 96 for (size_t i = 0; i < array->size(); ++i) { |
96 errors->setName("[" + String::number(i) + "]"); | 97 errors->setName("[" + String16::number(i) + "]"); |
97 OwnPtr<T> item = FromValue<T>::parse(array->at(i), errors); | 98 OwnPtr<T> item = FromValue<T>::parse(array->at(i), errors); |
98 result->m_vector.append(item.release()); | 99 result->m_vector.append(item.release()); |
99 } | 100 } |
100 errors->pop(); | 101 errors->pop(); |
101 return result.release(); | 102 return result.release(); |
102 } | 103 } |
103 | 104 |
104 void addItem(PassOwnPtr<T> value) | 105 void addItem(PassOwnPtr<T> value) |
105 { | 106 { |
106 m_vector.append(value); | 107 m_vector.append(value); |
(...skipping 18 matching lines...) Expand all Loading... |
125 } | 126 } |
126 | 127 |
127 private: | 128 private: |
128 protocol::Vector<OwnPtr<T>> m_vector; | 129 protocol::Vector<OwnPtr<T>> m_vector; |
129 }; | 130 }; |
130 | 131 |
131 } // namespace platform | 132 } // namespace platform |
132 } // namespace blink | 133 } // namespace blink |
133 | 134 |
134 #endif // !defined(Array_h) | 135 #endif // !defined(Array_h) |
OLD | NEW |