| 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;
|
| };
|
|
|