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_C_BINDINGS_MAP_H_ | 5 #ifndef MOJO_PUBLIC_C_INCLUDE_MOJO_BINDINGS_MAP_H_ |
6 #define MOJO_PUBLIC_C_BINDINGS_MAP_H_ | 6 #define MOJO_PUBLIC_C_INCLUDE_MOJO_BINDINGS_MAP_H_ |
7 | 7 |
| 8 #include <mojo/bindings/array.h> |
| 9 #include <mojo/bindings/internal/type_descriptor.h> |
| 10 #include <mojo/bindings/internal/util.h> |
| 11 #include <mojo/bindings/struct.h> |
8 #include <mojo/macros.h> | 12 #include <mojo/macros.h> |
9 #include <mojo/system/handle.h> | 13 #include <mojo/system/handle.h> |
10 #include <stdint.h> | 14 #include <stdint.h> |
11 | 15 |
12 #include "mojo/public/c/bindings/array.h" | |
13 #include "mojo/public/c/bindings/lib/type_descriptor.h" | |
14 #include "mojo/public/c/bindings/lib/util.h" | |
15 #include "mojo/public/c/bindings/struct.h" | |
16 | |
17 MOJO_BEGIN_EXTERN_C | 16 MOJO_BEGIN_EXTERN_C |
18 | 17 |
19 // A mojom Map is a mojom struct with two MojomArrayHeaders: keys and values. | 18 // A mojom Map is a mojom struct with two MojomArrayHeaders: keys and values. |
20 // - Number of elements in keys == number of elements values. | 19 // - Number of elements in keys == number of elements values. |
21 // - ith key corresponds to the ith value. | 20 // - ith key corresponds to the ith value. |
22 struct MojomMapHeader { | 21 struct MojomMapHeader { |
23 struct MojomStructHeader header; | 22 struct MojomStructHeader header; |
24 union MojomArrayHeaderPtr keys; | 23 union MojomArrayHeaderPtr keys; |
25 union MojomArrayHeaderPtr values; | 24 union MojomArrayHeaderPtr values; |
26 }; | 25 }; |
27 MOJO_STATIC_ASSERT(sizeof(struct MojomMapHeader) == 24, | 26 MOJO_STATIC_ASSERT(sizeof(struct MojomMapHeader) == 24, |
28 "struct MojomMapHeader must be 24 bytes."); | 27 "struct MojomMapHeader must be 24 bytes."); |
29 | 28 |
30 union MojomMapHeaderPtr { | 29 union MojomMapHeaderPtr { |
31 struct MojomMapHeader* ptr; | 30 struct MojomMapHeader* ptr; |
32 uint64_t offset; | 31 uint64_t offset; |
33 }; | 32 }; |
34 MOJO_STATIC_ASSERT(sizeof(union MojomMapHeaderPtr) == 8, | 33 MOJO_STATIC_ASSERT(sizeof(union MojomMapHeaderPtr) == 8, |
35 "MojomMapHeaderPtr must be 8 bytes."); | 34 "MojomMapHeaderPtr must be 8 bytes."); |
36 | 35 |
37 MojomValidationResult MojomMap_Validate( | 36 MojomValidationResult MojomMap_Validate( |
38 const struct MojomTypeDescriptorStruct* in_type_desc, | 37 const struct MojomTypeDescriptorStruct* in_type_desc, |
39 const struct MojomStructHeader* in_struct, | 38 const struct MojomStructHeader* in_struct, |
40 uint32_t in_buf_size, | 39 uint32_t in_buf_size, |
41 uint32_t in_num_handles, | 40 uint32_t in_num_handles, |
42 struct MojomValidationContext* inout_context); | 41 struct MojomValidationContext* inout_context); |
43 | 42 |
44 MOJO_END_EXTERN_C | 43 MOJO_END_EXTERN_C |
45 | 44 |
46 #endif // MOJO_PUBLIC_C_BINDINGS_MAP_H_ | 45 #endif // MOJO_PUBLIC_C_INCLUDE_MOJO_BINDINGS_MAP_H_ |
OLD | NEW |