Index: mojo/public/c/bindings/map.h |
diff --git a/mojo/public/c/bindings/map.h b/mojo/public/c/bindings/map.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ec4d58315e80ad25f0e322cb9b8fa36cd5b3a2aa |
--- /dev/null |
+++ b/mojo/public/c/bindings/map.h |
@@ -0,0 +1,37 @@ |
+// Copyright 2016 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef MOJO_PUBLIC_C_BINDINGS_MAP_H_ |
+#define MOJO_PUBLIC_C_BINDINGS_MAP_H_ |
+ |
+#include <stdint.h> |
+ |
+#include "mojo/public/c/bindings/array.h" |
+#include "mojo/public/c/bindings/buffer.h" |
+#include "mojo/public/c/bindings/struct.h" |
+#include "mojo/public/c/system/macros.h" |
+ |
+MOJO_BEGIN_EXTERN_C |
+ |
+// A mojom Map is a mojom struct with two MojomArrayHeaders: keys and values. |
+// - Number of elements in keys == number of elements values. |
+// - ith key corresponds to the ith value. |
+struct MojomMapHeader { |
+ struct MojomStructHeader header; |
+ union MojomArrayHeaderPtr keys; |
+ union MojomArrayHeaderPtr values; |
+}; |
+MOJO_STATIC_ASSERT(sizeof(struct MojomMapHeader) == 24, |
+ "struct MojomMapHeader must be 24 bytes."); |
+ |
+union MojomMapHeaderPtr { |
+ struct MojomMapHeader* ptr; |
+ uint64_t offset; |
+}; |
+MOJO_STATIC_ASSERT(sizeof(union MojomMapHeaderPtr) == 8, |
+ "MojomMapHeaderPtr must be 8 bytes."); |
+ |
+MOJO_END_EXTERN_C |
+ |
+#endif // MOJO_PUBLIC_C_BINDINGS_MAP_H_ |