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 MOJO_PUBLIC_CPP_BINDINGS_TESTS_STRUCT_WITH_TRAITS_IMPL_TRAITS_H_ | 5 #ifndef MOJO_PUBLIC_CPP_BINDINGS_TESTS_STRUCT_WITH_TRAITS_IMPL_TRAITS_H_ |
6 #define MOJO_PUBLIC_CPP_BINDINGS_TESTS_STRUCT_WITH_TRAITS_IMPL_TRAITS_H_ | 6 #define MOJO_PUBLIC_CPP_BINDINGS_TESTS_STRUCT_WITH_TRAITS_IMPL_TRAITS_H_ |
7 | 7 |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <string> | 10 #include <string> |
11 #include <vector> | 11 #include <vector> |
12 | 12 |
13 #include "base/strings/string_piece.h" | 13 #include "base/strings/string_piece.h" |
14 #include "mojo/public/cpp/bindings/struct_traits.h" | 14 #include "mojo/public/cpp/bindings/struct_traits.h" |
15 #include "mojo/public/cpp/bindings/tests/struct_with_traits_impl.h" | 15 #include "mojo/public/cpp/bindings/tests/struct_with_traits_impl.h" |
16 #include "mojo/public/interfaces/bindings/tests/struct_with_traits.mojom.h" | 16 #include "mojo/public/interfaces/bindings/tests/struct_with_traits.mojom.h" |
17 | 17 |
18 namespace mojo { | 18 namespace mojo { |
19 | 19 |
20 template <> | 20 template <> |
21 struct StructTraits<test::NestedStructWithTraits, | 21 struct StructTraits<test::NestedStructWithTraitsDataView, |
22 test::NestedStructWithTraitsImpl> { | 22 test::NestedStructWithTraitsImpl> { |
23 static void* SetUpContext(const test::NestedStructWithTraitsImpl& input); | 23 static void* SetUpContext(const test::NestedStructWithTraitsImpl& input); |
24 static void TearDownContext(const test::NestedStructWithTraitsImpl& input, | 24 static void TearDownContext(const test::NestedStructWithTraitsImpl& input, |
25 void* context); | 25 void* context); |
26 | 26 |
27 static int32_t value(const test::NestedStructWithTraitsImpl& input, | 27 static int32_t value(const test::NestedStructWithTraitsImpl& input, |
28 void* context); | 28 void* context); |
29 | 29 |
30 static bool Read(test::NestedStructWithTraits::DataView data, | 30 static bool Read(test::NestedStructWithTraitsDataView data, |
31 test::NestedStructWithTraitsImpl* output); | 31 test::NestedStructWithTraitsImpl* output); |
32 }; | 32 }; |
33 | 33 |
34 template <> | 34 template <> |
35 struct EnumTraits<test::EnumWithTraits, test::EnumWithTraitsImpl> { | 35 struct EnumTraits<test::EnumWithTraits, test::EnumWithTraitsImpl> { |
36 static test::EnumWithTraits ToMojom(test::EnumWithTraitsImpl input); | 36 static test::EnumWithTraits ToMojom(test::EnumWithTraitsImpl input); |
37 static bool FromMojom(test::EnumWithTraits input, | 37 static bool FromMojom(test::EnumWithTraits input, |
38 test::EnumWithTraitsImpl* output); | 38 test::EnumWithTraitsImpl* output); |
39 }; | 39 }; |
40 | 40 |
41 template <> | 41 template <> |
42 struct StructTraits<test::StructWithTraits, test::StructWithTraitsImpl> { | 42 struct StructTraits<test::StructWithTraitsDataView, |
| 43 test::StructWithTraitsImpl> { |
43 // Deserialization to test::StructTraitsImpl. | 44 // Deserialization to test::StructTraitsImpl. |
44 static bool Read(test::StructWithTraits::DataView data, | 45 static bool Read(test::StructWithTraitsDataView data, |
45 test::StructWithTraitsImpl* out); | 46 test::StructWithTraitsImpl* out); |
46 | 47 |
47 // Fields in test::StructWithTraits. | 48 // Fields in test::StructWithTraits. |
48 // See src/mojo/public/interfaces/bindings/tests/struct_with_traits.mojom. | 49 // See src/mojo/public/interfaces/bindings/tests/struct_with_traits.mojom. |
49 static test::EnumWithTraitsImpl f_enum( | 50 static test::EnumWithTraitsImpl f_enum( |
50 const test::StructWithTraitsImpl& value) { | 51 const test::StructWithTraitsImpl& value) { |
51 return value.get_enum(); | 52 return value.get_enum(); |
52 } | 53 } |
53 | 54 |
54 static bool f_bool(const test::StructWithTraitsImpl& value) { | 55 static bool f_bool(const test::StructWithTraitsImpl& value) { |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
91 return value.get_struct_array(); | 92 return value.get_struct_array(); |
92 } | 93 } |
93 | 94 |
94 static const std::map<std::string, test::NestedStructWithTraitsImpl>& | 95 static const std::map<std::string, test::NestedStructWithTraitsImpl>& |
95 f_struct_map(const test::StructWithTraitsImpl& value) { | 96 f_struct_map(const test::StructWithTraitsImpl& value) { |
96 return value.get_struct_map(); | 97 return value.get_struct_map(); |
97 } | 98 } |
98 }; | 99 }; |
99 | 100 |
100 template <> | 101 template <> |
101 struct StructTraits<test::TrivialStructWithTraits, | 102 struct StructTraits<test::TrivialStructWithTraitsDataView, |
102 test::TrivialStructWithTraitsImpl> { | 103 test::TrivialStructWithTraitsImpl> { |
103 // Deserialization to test::TrivialStructTraitsImpl. | 104 // Deserialization to test::TrivialStructTraitsImpl. |
104 static bool Read(test::TrivialStructWithTraits::DataView data, | 105 static bool Read(test::TrivialStructWithTraitsDataView data, |
105 test::TrivialStructWithTraitsImpl* out) { | 106 test::TrivialStructWithTraitsImpl* out) { |
106 out->value = data.value(); | 107 out->value = data.value(); |
107 return true; | 108 return true; |
108 } | 109 } |
109 | 110 |
110 // Fields in test::TrivialStructWithTraits. | 111 // Fields in test::TrivialStructWithTraits. |
111 // See src/mojo/public/interfaces/bindings/tests/struct_with_traits.mojom. | 112 // See src/mojo/public/interfaces/bindings/tests/struct_with_traits.mojom. |
112 static int32_t value(test::TrivialStructWithTraitsImpl& input) { | 113 static int32_t value(test::TrivialStructWithTraitsImpl& input) { |
113 return input.value; | 114 return input.value; |
114 } | 115 } |
115 }; | 116 }; |
116 | 117 |
117 template <> | 118 template <> |
118 struct StructTraits<test::MoveOnlyStructWithTraits, | 119 struct StructTraits<test::MoveOnlyStructWithTraitsDataView, |
119 test::MoveOnlyStructWithTraitsImpl> { | 120 test::MoveOnlyStructWithTraitsImpl> { |
120 // Deserialization to test::MoveOnlyStructTraitsImpl. | 121 // Deserialization to test::MoveOnlyStructTraitsImpl. |
121 static bool Read(test::MoveOnlyStructWithTraits::DataView data, | 122 static bool Read(test::MoveOnlyStructWithTraitsDataView data, |
122 test::MoveOnlyStructWithTraitsImpl* out); | 123 test::MoveOnlyStructWithTraitsImpl* out); |
123 | 124 |
124 // Fields in test::MoveOnlyStructWithTraits. | 125 // Fields in test::MoveOnlyStructWithTraits. |
125 // See src/mojo/public/interfaces/bindings/tests/struct_with_traits.mojom. | 126 // See src/mojo/public/interfaces/bindings/tests/struct_with_traits.mojom. |
126 static ScopedHandle f_handle(test::MoveOnlyStructWithTraitsImpl& value) { | 127 static ScopedHandle f_handle(test::MoveOnlyStructWithTraitsImpl& value) { |
127 return std::move(value.get_mutable_handle()); | 128 return std::move(value.get_mutable_handle()); |
128 } | 129 } |
129 }; | 130 }; |
130 | 131 |
131 template <> | 132 template <> |
132 struct StructTraits<test::StructWithTraitsForUniquePtr, std::unique_ptr<int>> { | 133 struct StructTraits<test::StructWithTraitsForUniquePtrDataView, |
| 134 std::unique_ptr<int>> { |
133 static bool IsNull(const std::unique_ptr<int>& data) { return !data; } | 135 static bool IsNull(const std::unique_ptr<int>& data) { return !data; } |
134 static void SetToNull(std::unique_ptr<int>* data) { data->reset(); } | 136 static void SetToNull(std::unique_ptr<int>* data) { data->reset(); } |
135 | 137 |
136 static int f_int32(const std::unique_ptr<int>& data) { return *data; } | 138 static int f_int32(const std::unique_ptr<int>& data) { return *data; } |
137 | 139 |
138 static bool Read(test::StructWithTraitsForUniquePtr::DataView data, | 140 static bool Read(test::StructWithTraitsForUniquePtrDataView data, |
139 std::unique_ptr<int>* out) { | 141 std::unique_ptr<int>* out) { |
140 out->reset(new int(data.f_int32())); | 142 out->reset(new int(data.f_int32())); |
141 return true; | 143 return true; |
142 } | 144 } |
143 }; | 145 }; |
144 | 146 |
145 template <> | 147 template <> |
146 struct UnionTraits<test::UnionWithTraits, | 148 struct UnionTraits<test::UnionWithTraitsDataView, |
147 std::unique_ptr<test::UnionWithTraitsBase>> { | 149 std::unique_ptr<test::UnionWithTraitsBase>> { |
148 static bool IsNull(const std::unique_ptr<test::UnionWithTraitsBase>& data) { | 150 static bool IsNull(const std::unique_ptr<test::UnionWithTraitsBase>& data) { |
149 return !data; | 151 return !data; |
150 } | 152 } |
151 static void SetToNull(std::unique_ptr<test::UnionWithTraitsBase>* data) { | 153 static void SetToNull(std::unique_ptr<test::UnionWithTraitsBase>* data) { |
152 data->reset(); | 154 data->reset(); |
153 } | 155 } |
154 | 156 |
155 static test::UnionWithTraits::DataView::Tag GetTag( | 157 static test::UnionWithTraitsDataView::Tag GetTag( |
156 const std::unique_ptr<test::UnionWithTraitsBase>& data) { | 158 const std::unique_ptr<test::UnionWithTraitsBase>& data) { |
157 if (data->type() == test::UnionWithTraitsBase::Type::INT32) | 159 if (data->type() == test::UnionWithTraitsBase::Type::INT32) |
158 return test::UnionWithTraits::DataView::Tag::F_INT32; | 160 return test::UnionWithTraitsDataView::Tag::F_INT32; |
159 | 161 |
160 return test::UnionWithTraits::DataView::Tag::F_STRUCT; | 162 return test::UnionWithTraitsDataView::Tag::F_STRUCT; |
161 } | 163 } |
162 | 164 |
163 static int32_t f_int32( | 165 static int32_t f_int32( |
164 const std::unique_ptr<test::UnionWithTraitsBase>& data) { | 166 const std::unique_ptr<test::UnionWithTraitsBase>& data) { |
165 return static_cast<test::UnionWithTraitsInt32*>(data.get())->value(); | 167 return static_cast<test::UnionWithTraitsInt32*>(data.get())->value(); |
166 } | 168 } |
167 | 169 |
168 static const test::NestedStructWithTraitsImpl& f_struct( | 170 static const test::NestedStructWithTraitsImpl& f_struct( |
169 const std::unique_ptr<test::UnionWithTraitsBase>& data) { | 171 const std::unique_ptr<test::UnionWithTraitsBase>& data) { |
170 return static_cast<test::UnionWithTraitsStruct*>(data.get())->get_struct(); | 172 return static_cast<test::UnionWithTraitsStruct*>(data.get())->get_struct(); |
171 } | 173 } |
172 | 174 |
173 static bool Read(test::UnionWithTraits::DataView data, | 175 static bool Read(test::UnionWithTraitsDataView data, |
174 std::unique_ptr<test::UnionWithTraitsBase>* out) { | 176 std::unique_ptr<test::UnionWithTraitsBase>* out) { |
175 switch (data.tag()) { | 177 switch (data.tag()) { |
176 case test::UnionWithTraits::DataView::Tag::F_INT32: { | 178 case test::UnionWithTraitsDataView::Tag::F_INT32: { |
177 out->reset(new test::UnionWithTraitsInt32(data.f_int32())); | 179 out->reset(new test::UnionWithTraitsInt32(data.f_int32())); |
178 return true; | 180 return true; |
179 } | 181 } |
180 case test::UnionWithTraits::DataView::Tag::F_STRUCT: { | 182 case test::UnionWithTraitsDataView::Tag::F_STRUCT: { |
181 auto* struct_object = new test::UnionWithTraitsStruct(); | 183 auto* struct_object = new test::UnionWithTraitsStruct(); |
182 out->reset(struct_object); | 184 out->reset(struct_object); |
183 return data.ReadFStruct(&struct_object->get_mutable_struct()); | 185 return data.ReadFStruct(&struct_object->get_mutable_struct()); |
184 } | 186 } |
185 } | 187 } |
186 | 188 |
187 NOTREACHED(); | 189 NOTREACHED(); |
188 return false; | 190 return false; |
189 } | 191 } |
190 }; | 192 }; |
191 | 193 |
192 } // namespace mojo | 194 } // namespace mojo |
193 | 195 |
194 #endif // MOJO_PUBLIC_CPP_BINDINGS_TESTS_STRUCT_WITH_TRAITS_IMPL_TRAITS_H_ | 196 #endif // MOJO_PUBLIC_CPP_BINDINGS_TESTS_STRUCT_WITH_TRAITS_IMPL_TRAITS_H_ |
OLD | NEW |