Index: mojo/public/cpp/bindings/lib/bindings_internal.h |
diff --git a/mojo/public/cpp/bindings/lib/bindings_internal.h b/mojo/public/cpp/bindings/lib/bindings_internal.h |
index f12be10ab62a16923d0d0d216c84deb08d1edbe2..78bd55a740b8ac0942b4a4cbd00d39d01d004b5d 100644 |
--- a/mojo/public/cpp/bindings/lib/bindings_internal.h |
+++ b/mojo/public/cpp/bindings/lib/bindings_internal.h |
@@ -10,6 +10,7 @@ |
namespace mojo { |
class String; |
+template <typename Key, typename Value> class Map; |
namespace internal { |
template <typename T> class Array_Data; |
@@ -48,6 +49,14 @@ union StringPointer { |
}; |
MOJO_COMPILE_ASSERT(sizeof(StringPointer) == 8, bad_sizeof_StringPointer); |
+template <typename Key, typename Value> |
+struct MapPointerPair { |
+ ArrayPointer<Key> keys; |
+ ArrayPointer<Value> values; |
+}; |
+MOJO_COMPILE_ASSERT(sizeof(MapPointerPair<char, char>) == 16, |
+ bad_sizeof_MapPointerPair); |
+ |
#pragma pack(pop) |
template <typename T> |
@@ -76,6 +85,12 @@ template <typename T> struct WrapperTraits<T, false> { |
template <typename H> struct WrapperTraits<ScopedHandleBase<H>, true> { |
typedef H DataType; |
}; |
+template <typename KeyWrapperType, typename ValueWrapperType> |
+struct WrapperTraits<Map<KeyWrapperType, ValueWrapperType>, true> { |
+ typedef MapPointerPair< |
+ typename WrapperTraits<KeyWrapperType>::DataType, |
+ typename WrapperTraits<ValueWrapperType>::DataType> DataType; |
+}; |
template <typename S> struct WrapperTraits<S, true> { |
typedef typename S::Data_* DataType; |
}; |