OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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_MAP_H_ | 5 #ifndef MOJO_PUBLIC_CPP_BINDINGS_MAP_H_ |
6 #define MOJO_PUBLIC_CPP_BINDINGS_MAP_H_ | 6 #define MOJO_PUBLIC_CPP_BINDINGS_MAP_H_ |
7 | 7 |
| 8 #include <iosfwd> |
8 #include <map> | 9 #include <map> |
9 #include <type_traits> | 10 #include <type_traits> |
10 | 11 |
11 #include "mojo/public/cpp/bindings/lib/map_internal.h" | 12 #include "mojo/public/cpp/bindings/lib/map_internal.h" |
12 #include "mojo/public/cpp/bindings/lib/template_util.h" | 13 #include "mojo/public/cpp/bindings/lib/template_util.h" |
13 | 14 |
14 namespace mojo { | 15 namespace mojo { |
15 | 16 |
16 // A move-only map that can handle move-only values. Map has the following | 17 // A move-only map that can handle move-only values. Map has the following |
17 // characteristics: | 18 // characteristics: |
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
286 for (auto it = input.cbegin(); it != input.cend(); ++it) { | 287 for (auto it = input.cbegin(); it != input.cend(); ++it) { |
287 result.insert(std::make_pair( | 288 result.insert(std::make_pair( |
288 TypeConverter<STLKey, MojoKey>::Convert(it.GetKey()), | 289 TypeConverter<STLKey, MojoKey>::Convert(it.GetKey()), |
289 TypeConverter<STLValue, MojoValue>::Convert(it.GetValue()))); | 290 TypeConverter<STLValue, MojoValue>::Convert(it.GetValue()))); |
290 } | 291 } |
291 } | 292 } |
292 return result; | 293 return result; |
293 } | 294 } |
294 }; | 295 }; |
295 | 296 |
| 297 // Prints the contents of a map to an output stream for debugging purposes. |
| 298 template <typename Key, typename Value> |
| 299 std::ostream& operator<<(std::ostream& os, const mojo::Map<Key, Value>& map) { |
| 300 if (map) { |
| 301 os << "["; |
| 302 bool first = true; |
| 303 for (auto it = map.cbegin(); it != map.cend(); ++it) { |
| 304 if (first) |
| 305 first = false; |
| 306 else |
| 307 os << ", "; |
| 308 os << "{" << it.GetKey() << ": " << it.GetValue() << "}"; |
| 309 } |
| 310 os << "]"; |
| 311 } else { |
| 312 os << "null"; |
| 313 } |
| 314 return os; |
| 315 } |
| 316 |
296 } // namespace mojo | 317 } // namespace mojo |
297 | 318 |
298 #endif // MOJO_PUBLIC_CPP_BINDINGS_MAP_H_ | 319 #endif // MOJO_PUBLIC_CPP_BINDINGS_MAP_H_ |
OLD | NEW |