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

Side by Side Diff: third_party/inspector_protocol/lib/Array_h.template

Issue 2447323002: [inspector] use own copy of third_party/inspector_protocol (Closed)
Patch Set: updated README.v8 Created 4 years, 1 month 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 {{"_".join(config.protocol.namespace)}}_Array_h
6 #define {{"_".join(config.protocol.namespace)}}_Array_h
7
8 //#include "ErrorSupport.h"
9 //#include "Forward.h"
10 //#include "ValueConversions.h"
11 //#include "Values.h"
12
13 {% for namespace in config.protocol.namespace %}
14 namespace {{namespace}} {
15 {% endfor %}
16
17 template<typename T>
18 class Array {
19 public:
20 static std::unique_ptr<Array<T>> create()
21 {
22 return wrapUnique(new Array<T>());
23 }
24
25 static std::unique_ptr<Array<T>> parse(protocol::Value* value, ErrorSupport* errors)
26 {
27 protocol::ListValue* array = ListValue::cast(value);
28 if (!array) {
29 errors->addError("array expected");
30 return nullptr;
31 }
32 std::unique_ptr<Array<T>> result(new Array<T>());
33 errors->push();
34 for (size_t i = 0; i < array->size(); ++i) {
35 errors->setName(StringUtil::fromInteger(i));
36 std::unique_ptr<T> item = ValueConversions<T>::parse(array->at(i), e rrors);
37 result->m_vector.push_back(std::move(item));
38 }
39 errors->pop();
40 if (errors->hasErrors())
41 return nullptr;
42 return result;
43 }
44
45 void addItem(std::unique_ptr<T> value)
46 {
47 m_vector.push_back(std::move(value));
48 }
49
50 size_t length()
51 {
52 return m_vector.size();
53 }
54
55 T* get(size_t index)
56 {
57 return m_vector[index].get();
58 }
59
60 std::unique_ptr<protocol::ListValue> serialize()
61 {
62 std::unique_ptr<protocol::ListValue> result = ListValue::create();
63 for (auto& item : m_vector)
64 result->pushValue(ValueConversions<T>::serialize(item));
65 return result;
66 }
67
68 private:
69 std::vector<std::unique_ptr<T>> m_vector;
70 };
71
72 template<typename T>
73 class ArrayBase {
74 public:
75 static std::unique_ptr<Array<T>> create()
76 {
77 return wrapUnique(new Array<T>());
78 }
79
80 static std::unique_ptr<Array<T>> parse(protocol::Value* value, ErrorSupport* errors)
81 {
82 protocol::ListValue* array = ListValue::cast(value);
83 if (!array) {
84 errors->addError("array expected");
85 return nullptr;
86 }
87 errors->push();
88 std::unique_ptr<Array<T>> result(new Array<T>());
89 for (size_t i = 0; i < array->size(); ++i) {
90 errors->setName(StringUtil::fromInteger(i));
91 T item = ValueConversions<T>::parse(array->at(i), errors);
92 result->m_vector.push_back(item);
93 }
94 errors->pop();
95 if (errors->hasErrors())
96 return nullptr;
97 return result;
98 }
99
100 void addItem(const T& value)
101 {
102 m_vector.push_back(value);
103 }
104
105 size_t length()
106 {
107 return m_vector.size();
108 }
109
110 T get(size_t index)
111 {
112 return m_vector[index];
113 }
114
115 std::unique_ptr<protocol::ListValue> serialize()
116 {
117 std::unique_ptr<protocol::ListValue> result = ListValue::create();
118 for (auto& item : m_vector)
119 result->pushValue(ValueConversions<T>::serialize(item));
120 return result;
121 }
122
123 private:
124 std::vector<T> m_vector;
125 };
126
127 template<> class Array<String> : public ArrayBase<String> {};
128 template<> class Array<int> : public ArrayBase<int> {};
129 template<> class Array<double> : public ArrayBase<double> {};
130 template<> class Array<bool> : public ArrayBase<bool> {};
131
132 {% for namespace in config.protocol.namespace %}
133 } // namespace {{namespace}}
134 {% endfor %}
135
136 #endif // !defined({{"_".join(config.protocol.namespace)}}_Array_h)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698