blob: 6b08ee4787a6801277c7f69e266e8e2a5af971aa [file] [log] [blame]
// 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_INCLUDE_MOJO_BINDINGS_MAP_H_
#define MOJO_PUBLIC_C_INCLUDE_MOJO_BINDINGS_MAP_H_
#include <mojo/bindings/array.h>
#include <mojo/bindings/internal/type_descriptor.h>
#include <mojo/bindings/internal/util.h>
#include <mojo/bindings/struct.h>
#include <mojo/macros.h>
#include <mojo/system/handle.h>
#include <stdint.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.");
MojomValidationResult MojomMap_Validate(
const struct MojomTypeDescriptorStruct* in_type_desc,
const struct MojomStructHeader* in_struct,
uint32_t in_buf_size,
uint32_t in_num_handles,
struct MojomValidationContext* inout_context);
MOJO_END_EXTERN_C
#endif // MOJO_PUBLIC_C_INCLUDE_MOJO_BINDINGS_MAP_H_