blob: a5775decd8c57b8d87d1ee71eb750b8d250c8fff [file] [log] [blame]
// Copyright 2017 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "fidl_coded_types.h"
#include <lib/fidl/internal.h>
#include "array_util.h"
#include "fidl_structs.h"
// Handle types.
const FidlCodedHandle nonnullable_handle = {
.tag = kFidlTypeHandle,
.nullable = kFidlNullability_Nonnullable,
.handle_subtype = ZX_OBJ_TYPE_NONE,
.handle_rights = ZX_RIGHT_SAME_RIGHTS,
};
const FidlCodedHandle nullable_handle = {
.tag = kFidlTypeHandle,
.nullable = kFidlNullability_Nullable,
.handle_subtype = ZX_OBJ_TYPE_NONE,
.handle_rights = 0,
};
const FidlCodedHandle nullable_channel_handle = {
.tag = kFidlTypeHandle,
.nullable = kFidlNullability_Nullable,
.handle_subtype = ZX_OBJ_TYPE_CHANNEL,
.handle_rights = ZX_RIGHT_READ | ZX_RIGHT_WRITE,
};
const FidlCodedHandle nullable_vmo_handle = {
.tag = kFidlTypeHandle,
.nullable = kFidlNullability_Nullable,
.handle_subtype = ZX_OBJ_TYPE_VMO,
.handle_rights = 0,
};
const FidlCodedHandle nonnullable_channel_handle = {
.tag = kFidlTypeHandle,
.nullable = kFidlNullability_Nonnullable,
.handle_subtype = ZX_OBJ_TYPE_CHANNEL,
.handle_rights = ZX_RIGHT_READ | ZX_RIGHT_WRITE,
};
const FidlCodedHandle nonnullable_vmo_handle = {
.tag = kFidlTypeHandle,
.nullable = kFidlNullability_Nonnullable,
.handle_subtype = ZX_OBJ_TYPE_VMO,
.handle_rights = 0,
};
// Array types.
const FidlCodedArray array_of_two_nonnullable_handles = {
.tag = kFidlTypeArray,
.element_size = sizeof(zx_handle_t),
.array_size = 2 * sizeof(zx_handle_t),
.element = &nonnullable_handle,
};
const FidlCodedArray array_of_four_nonnullable_handles = {
.tag = kFidlTypeArray,
.element_size = sizeof(zx_handle_t),
.array_size = 4 * sizeof(zx_handle_t),
.element = &nonnullable_handle,
};
const FidlCodedArray array_of_five_nullable_handles = {
.tag = kFidlTypeArray,
.element_size = sizeof(zx_handle_t),
.array_size = 5 * sizeof(zx_handle_t),
.element = &nullable_handle,
};
const FidlCodedArray array_of_three_arrays_of_four_nonnullable_handles = {
.tag = kFidlTypeArray,
.element_size = 4 * sizeof(zx_handle_t),
.array_size = 3 * 4 * sizeof(zx_handle_t),
.element = &array_of_four_nonnullable_handles,
};
const FidlCodedArray array_of_two_arrays_of_two_nonnullable_handles = {
.tag = kFidlTypeArray,
.element_size = 2 * sizeof(zx_handle_t),
.array_size = 2 * 2 * sizeof(zx_handle_t),
.element = &array_of_two_nonnullable_handles,
};
// String types.
const FidlCodedString unbounded_nonnullable_string = {
.tag = kFidlTypeString,
.nullable = kFidlNullability_Nonnullable,
.max_size = FIDL_MAX_SIZE,
};
const FidlCodedString unbounded_nullable_string = {
.tag = kFidlTypeString,
.nullable = kFidlNullability_Nullable,
.max_size = FIDL_MAX_SIZE,
};
const FidlCodedString bounded_32_nonnullable_string = {
.tag = kFidlTypeString,
.nullable = kFidlNullability_Nonnullable,
.max_size = 32,
};
const FidlCodedString bounded_32_nullable_string = {
.tag = kFidlTypeString,
.nullable = kFidlNullability_Nullable,
.max_size = 32,
};
const FidlCodedString bounded_4_nonnullable_string = {
.tag = kFidlTypeString,
.nullable = kFidlNullability_Nonnullable,
.max_size = 4,
};
const FidlCodedString bounded_4_nullable_string = {
.tag = kFidlTypeString,
.nullable = kFidlNullability_Nullable,
.max_size = 4,
};
// Vector types.
const FidlCodedVector unbounded_nonnullable_vector_of_handles = {
.tag = kFidlTypeVector,
.nullable = kFidlNullability_Nonnullable,
.max_count = FIDL_MAX_SIZE,
.element_size = sizeof(zx_handle_t),
.element = &nonnullable_handle,
};
const FidlCodedVector unbounded_nullable_vector_of_handles = {
.tag = kFidlTypeVector,
.nullable = kFidlNullability_Nullable,
.max_count = FIDL_MAX_SIZE,
.element_size = sizeof(zx_handle_t),
.element = &nonnullable_handle,
};
const FidlCodedVector bounded_32_nonnullable_vector_of_handles = {
.tag = kFidlTypeVector,
.nullable = kFidlNullability_Nonnullable,
.max_count = 32,
.element_size = sizeof(zx_handle_t),
.element = &nonnullable_handle,
};
const FidlCodedVector bounded_32_nullable_vector_of_handles = {
.tag = kFidlTypeVector,
.nullable = kFidlNullability_Nullable,
.max_count = 32,
.element_size = sizeof(zx_handle_t),
.element = &nonnullable_handle,
};
const FidlCodedVector bounded_2_nonnullable_vector_of_handles = {
.tag = kFidlTypeVector,
.nullable = kFidlNullability_Nonnullable,
.max_count = 2,
.element_size = sizeof(zx_handle_t),
.element = &nonnullable_handle,
};
const FidlCodedVector bounded_2_nullable_vector_of_handles = {
.tag = kFidlTypeVector,
.nullable = kFidlNullability_Nullable,
.max_count = 2,
.element_size = sizeof(zx_handle_t),
.element = &nonnullable_handle,
};
const FidlCodedVector unbounded_nonnullable_vector_of_uint32 = {
.tag = kFidlTypeVector,
.nullable = kFidlNullability_Nonnullable,
.max_count = FIDL_MAX_SIZE,
.element_size = sizeof(uint32_t),
.element = nullptr,
};
const FidlCodedVector unbounded_nullable_vector_of_uint32 = {
.tag = kFidlTypeVector,
.nullable = kFidlNullability_Nullable,
.max_count = FIDL_MAX_SIZE,
.element_size = sizeof(uint32_t),
.element = nullptr,
};
const FidlCodedVector bounded_32_nonnullable_vector_of_uint32 = {
.tag = kFidlTypeVector,
.nullable = kFidlNullability_Nonnullable,
.max_count = 32,
.element_size = sizeof(uint32_t),
.element = nullptr,
};
const FidlCodedVector bounded_32_nullable_vector_of_uint32 = {
.tag = kFidlTypeVector,
.nullable = kFidlNullability_Nullable,
.max_count = 32,
.element_size = sizeof(uint32_t),
.element = nullptr,
};
const FidlCodedVector bounded_2_nonnullable_vector_of_uint32 = {
.tag = kFidlTypeVector,
.nullable = kFidlNullability_Nonnullable,
.max_count = 2,
.element_size = sizeof(uint32_t),
.element = nullptr,
};
const FidlCodedVector bounded_2_nullable_vector_of_uint32 = {
.tag = kFidlTypeVector,
.nullable = kFidlNullability_Nullable,
.max_count = 2,
.element_size = sizeof(uint32_t),
.element = nullptr,
};
// Handle messages.
static const FidlStructElement nonnullable_handle_message_elements[] = {
FidlStructElement::Field(&nonnullable_handle,
offsetof(nonnullable_handle_message_layout, inline_struct.handle),
kFidlIsResource_Resource),
FidlStructElement::Padding32(
offsetof(nonnullable_handle_message_layout, inline_struct.handle) + 4, 0xffffffff),
};
const FidlCodedStruct nonnullable_handle_message_type = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(nonnullable_handle_message_elements),
.size = sizeof(nonnullable_handle_inline_data),
.elements = nonnullable_handle_message_elements,
.name = "nonnullable_handle_message",
};
static const FidlStructElement nonnullable_channel_message_elements[] = {
FidlStructElement::Field(&nonnullable_channel_handle,
offsetof(nonnullable_handle_message_layout, inline_struct.handle),
kFidlIsResource_Resource),
FidlStructElement::Padding32(
offsetof(nonnullable_handle_message_layout, inline_struct.handle) + 4, 0xffffffff),
};
const FidlCodedStruct nonnullable_channel_message_type = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(nonnullable_channel_message_elements),
.size = sizeof(nonnullable_handle_inline_data),
.elements = nonnullable_channel_message_elements,
.name = "nonnullable_channel_message",
};
static const FidlStructElement multiple_nonnullable_handles_fields[] = {
FidlStructElement::Field(
&nonnullable_handle,
offsetof(multiple_nonnullable_handles_message_layout, inline_struct.handle_0),
kFidlIsResource_Resource),
FidlStructElement::Field(
&nonnullable_channel_handle,
offsetof(multiple_nonnullable_handles_message_layout, inline_struct.handle_1),
kFidlIsResource_Resource),
FidlStructElement::Field(
&nonnullable_vmo_handle,
offsetof(multiple_nonnullable_handles_message_layout, inline_struct.handle_2),
kFidlIsResource_Resource),
};
const FidlCodedStruct multiple_nonnullable_handles_message_type = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(multiple_nonnullable_handles_fields),
.size = sizeof(multiple_nonnullable_handles_inline_data),
.elements = multiple_nonnullable_handles_fields,
.name = "multiple_nonnullable_handles_message",
};
static const FidlStructElement nullable_handle_fields[] = {
FidlStructElement::Field(&nullable_handle,
offsetof(nullable_handle_message_layout, inline_struct.handle),
kFidlIsResource_Resource),
FidlStructElement::Padding32(
offsetof(nonnullable_handle_message_layout, inline_struct.handle) + 4, 0xffffffff),
};
const FidlCodedStruct nullable_handle_message_type = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(nullable_handle_fields),
.size = sizeof(nullable_handle_inline_data),
.elements = nullable_handle_fields,
.name = "nullable_handle_message",
};
static const FidlStructElement multiple_nullable_handles_fields[] = {
FidlStructElement::Field(
&nullable_handle,
offsetof(multiple_nullable_handles_message_layout, inline_struct.handle_0),
kFidlIsResource_Resource),
FidlStructElement::Field(
&nullable_channel_handle,
offsetof(multiple_nullable_handles_message_layout, inline_struct.handle_1),
kFidlIsResource_Resource),
FidlStructElement::Field(
&nullable_vmo_handle,
offsetof(multiple_nullable_handles_message_layout, inline_struct.handle_2),
kFidlIsResource_Resource),
};
const FidlCodedStruct multiple_nullable_handles_message_type = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(multiple_nullable_handles_fields),
.size = sizeof(multiple_nullable_handles_inline_data),
.elements = multiple_nullable_handles_fields,
.name = "multiple_nullable_handles_message",
};
// Array messages.
static const FidlStructElement array_of_nonnullable_handles_fields[] = {
FidlStructElement::Field(
&array_of_four_nonnullable_handles,
offsetof(array_of_nonnullable_handles_message_layout, inline_struct.handles),
kFidlIsResource_Resource),
};
const FidlCodedStruct array_of_nonnullable_handles_message_type = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(array_of_nonnullable_handles_fields),
.size = sizeof(array_of_nonnullable_handles_inline_data),
.elements = array_of_nonnullable_handles_fields,
.name = "array_of_nonnullable_handles_message",
};
static const FidlStructElement array_of_nullable_handles_fields[] = {
FidlStructElement::Field(
&array_of_five_nullable_handles,
offsetof(array_of_nullable_handles_message_layout, inline_struct.handles),
kFidlIsResource_Resource),
};
const FidlCodedStruct array_of_nullable_handles_message_type = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(array_of_nullable_handles_fields),
.size = sizeof(array_of_nullable_handles_inline_data),
.elements = array_of_nullable_handles_fields,
.name = "array_of_nullable_handles_message",
};
static const FidlStructElement array_of_array_of_nonnullable_handles_fields[] = {
FidlStructElement::Field(
&array_of_three_arrays_of_four_nonnullable_handles,
offsetof(array_of_array_of_nonnullable_handles_message_layout, inline_struct.handles),
true),
};
const FidlCodedStruct array_of_array_of_nonnullable_handles_message_type = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(array_of_array_of_nonnullable_handles_fields),
.size = sizeof(array_of_array_of_nonnullable_handles_inline_data),
.elements = array_of_array_of_nonnullable_handles_fields,
.name = "array_of_array_of_nonnullable_handles_message",
};
static const FidlStructElement out_of_line_fields[] = {
FidlStructElement::Field(&array_of_four_nonnullable_handles,
offsetof(array_of_nonnullable_handles, handles),
kFidlIsResource_Resource),
};
static const FidlCodedStruct out_of_line_type = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(out_of_line_fields),
.size = sizeof(array_of_nonnullable_handles),
.elements = out_of_line_fields,
.name = "out_of_line",
};
static const FidlCodedStructPointer out_of_line_pointer_type = {
.tag = kFidlTypeStructPointer,
.struct_type = &out_of_line_type.coded_struct(),
};
static const FidlStructElement out_of_line_array_of_nonnullable_handles_fields[] = {
FidlStructElement::Field(&out_of_line_pointer_type,
offsetof(out_of_line_array_of_nonnullable_handles_message_layout,
inline_struct.maybe_array),
true),
};
const FidlCodedStruct out_of_line_array_of_nonnullable_handles_message_type = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(out_of_line_array_of_nonnullable_handles_fields),
.size = sizeof(out_of_line_array_of_nonnullable_handles_inline_data),
.elements = out_of_line_array_of_nonnullable_handles_fields,
.name = "out_of_line_array_of_nonnullable_handles_message",
};
// String messages.
static const FidlStructElement unbounded_nonnullable_string_fields[] = {
FidlStructElement::Field(
&unbounded_nonnullable_string,
offsetof(unbounded_nonnullable_string_message_layout, inline_struct.string),
kFidlIsResource_NotResource),
};
const FidlCodedStruct unbounded_nonnullable_string_message_type = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(unbounded_nonnullable_string_fields),
.size = sizeof(unbounded_nonnullable_string_inline_data),
.elements = unbounded_nonnullable_string_fields,
.name = "unbounded_nonnullable_string_message",
};
static const FidlStructElement unbounded_nullable_string_fields[] = {
FidlStructElement::Field(
&unbounded_nullable_string,
offsetof(unbounded_nullable_string_message_layout, inline_struct.string),
kFidlIsResource_NotResource),
};
const FidlCodedStruct unbounded_nullable_string_message_type = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(unbounded_nullable_string_fields),
.size = sizeof(unbounded_nullable_string_inline_data),
.elements = unbounded_nullable_string_fields,
.name = "unbounded_nullable_string_message",
};
static const FidlStructElement bounded_32_nonnullable_string_fields[] = {
FidlStructElement::Field(
&bounded_32_nonnullable_string,
offsetof(bounded_32_nonnullable_string_message_layout, inline_struct.string),
kFidlIsResource_NotResource),
};
const FidlCodedStruct bounded_32_nonnullable_string_message_type = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(bounded_32_nonnullable_string_fields),
.size = sizeof(bounded_32_nonnullable_string_inline_data),
.elements = bounded_32_nonnullable_string_fields,
.name = "bounded_32_nonnullable_string_message",
};
static const FidlStructElement bounded_32_nullable_string_fields[] = {
FidlStructElement::Field(
&bounded_32_nullable_string,
offsetof(bounded_32_nullable_string_message_layout, inline_struct.string),
kFidlIsResource_NotResource),
};
const FidlCodedStruct bounded_32_nullable_string_message_type = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(bounded_32_nullable_string_fields),
.size = sizeof(bounded_32_nullable_string_inline_data),
.elements = bounded_32_nullable_string_fields,
.name = "bounded_32_nullable_string_message",
};
static const FidlStructElement multiple_nonnullable_strings_fields[] = {
FidlStructElement::Field(
&bounded_32_nonnullable_string,
offsetof(multiple_nonnullable_strings_message_layout, inline_struct.string),
kFidlIsResource_NotResource),
FidlStructElement::Field(
&bounded_32_nonnullable_string,
offsetof(multiple_nonnullable_strings_message_layout, inline_struct.string2),
kFidlIsResource_NotResource),
};
const FidlCodedStruct multiple_nonnullable_strings_message_type = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(multiple_nonnullable_strings_fields),
.size = sizeof(multiple_nonnullable_strings_inline_data),
.elements = multiple_nonnullable_strings_fields,
.name = "multiple_nonnullable_strings_message",
};
static const FidlStructElement multiple_nullable_strings_fields[] = {
FidlStructElement::Field(
&bounded_32_nullable_string,
offsetof(multiple_nullable_strings_message_layout, inline_struct.string),
kFidlIsResource_NotResource),
FidlStructElement::Field(
&bounded_32_nullable_string,
offsetof(multiple_nullable_strings_message_layout, inline_struct.string2),
kFidlIsResource_NotResource),
};
const FidlCodedStruct multiple_nullable_strings_message_type = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(multiple_nullable_strings_fields),
.size = sizeof(multiple_nullable_strings_inline_data),
.elements = multiple_nullable_strings_fields,
.name = "multiple_nullable_strings_message",
};
static const FidlStructElement multiple_short_nonnullable_strings_fields[] = {
FidlStructElement::Field(
&bounded_4_nonnullable_string,
offsetof(multiple_short_nonnullable_strings_message_layout, inline_struct.string),
kFidlIsResource_NotResource),
FidlStructElement::Field(
&bounded_32_nonnullable_string,
offsetof(multiple_short_nonnullable_strings_message_layout, inline_struct.string2),
kFidlIsResource_NotResource),
};
const FidlCodedStruct multiple_short_nonnullable_strings_message_type = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(multiple_short_nonnullable_strings_fields),
.size = sizeof(multiple_short_nonnullable_strings_inline_data),
.elements = multiple_short_nonnullable_strings_fields,
.name = "multiple_short_nonnullable_strings_message",
};
static const FidlStructElement multiple_short_nullable_strings_fields[] = {
FidlStructElement::Field(
&bounded_4_nullable_string,
offsetof(multiple_short_nullable_strings_message_layout, inline_struct.string),
kFidlIsResource_NotResource),
FidlStructElement::Field(
&bounded_32_nullable_string,
offsetof(multiple_short_nullable_strings_message_layout, inline_struct.string2),
kFidlIsResource_NotResource),
};
const FidlCodedStruct multiple_short_nullable_strings_message_type = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(multiple_short_nullable_strings_fields),
.size = sizeof(multiple_short_nullable_strings_inline_data),
.elements = multiple_short_nullable_strings_fields,
.name = "multiple_short_nullable_strings_message",
};
// Vector messages.
static const FidlStructElement unbounded_nonnullable_vector_of_handles_fields[] = {
FidlStructElement::Field(
&unbounded_nonnullable_vector_of_handles,
offsetof(unbounded_nonnullable_vector_of_handles_message_layout, inline_struct.vector),
true),
};
const FidlCodedStruct unbounded_nonnullable_vector_of_handles_message_type = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(unbounded_nonnullable_vector_of_handles_fields),
.size = sizeof(unbounded_nonnullable_vector_of_handles_inline_data),
.elements = unbounded_nonnullable_vector_of_handles_fields,
.name = "unbounded_nonnullable_vector_of_handles_message",
};
static const FidlStructElement unbounded_nullable_vector_of_handles_fields[] = {
FidlStructElement::Field(
&unbounded_nullable_vector_of_handles,
offsetof(unbounded_nullable_vector_of_handles_message_layout, inline_struct.vector),
kFidlIsResource_Resource),
};
const FidlCodedStruct unbounded_nullable_vector_of_handles_message_type = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(unbounded_nullable_vector_of_handles_fields),
.size = sizeof(unbounded_nullable_vector_of_handles_inline_data),
.elements = unbounded_nullable_vector_of_handles_fields,
.name = "unbounded_nullable_vector_of_handles_message",
};
static const FidlStructElement bounded_32_nonnullable_vector_of_handles_fields[] = {
FidlStructElement::Field(
&bounded_32_nonnullable_vector_of_handles,
offsetof(bounded_32_nonnullable_vector_of_handles_message_layout, inline_struct.vector),
true),
};
const FidlCodedStruct bounded_32_nonnullable_vector_of_handles_message_type = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(bounded_32_nonnullable_vector_of_handles_fields),
.size = sizeof(bounded_32_nonnullable_vector_of_handles_inline_data),
.elements = bounded_32_nonnullable_vector_of_handles_fields,
.name = "bounded_32_nonnullable_vector_of_handles_message",
};
static const FidlStructElement bounded_32_nullable_vector_of_handles_fields[] = {
FidlStructElement::Field(
&bounded_32_nullable_vector_of_handles,
offsetof(bounded_32_nullable_vector_of_handles_message_layout, inline_struct.vector),
kFidlIsResource_Resource),
};
const FidlCodedStruct bounded_32_nullable_vector_of_handles_message_type = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(bounded_32_nullable_vector_of_handles_fields),
.size = sizeof(bounded_32_nullable_vector_of_handles_inline_data),
.elements = bounded_32_nullable_vector_of_handles_fields,
.name = "bounded_32_nullable_vector_of_handles_message",
};
static const FidlStructElement multiple_nonnullable_vectors_of_handles_fields[] = {
FidlStructElement::Field(
&bounded_2_nonnullable_vector_of_handles,
offsetof(multiple_nonnullable_vectors_of_handles_message_layout, inline_struct.vector),
true),
FidlStructElement::Field(
&unbounded_nonnullable_vector_of_handles,
offsetof(multiple_nonnullable_vectors_of_handles_message_layout, inline_struct.vector2),
true),
};
const FidlCodedStruct multiple_nonnullable_vectors_of_handles_message_type = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(multiple_nonnullable_vectors_of_handles_fields),
.size = sizeof(multiple_nonnullable_vectors_of_handles_inline_data),
.elements = multiple_nonnullable_vectors_of_handles_fields,
.name = "multiple_nonnullable_vectors_of_handles_message",
};
static const FidlStructElement multiple_nullable_vectors_of_handles_fields[] = {
FidlStructElement::Field(
&bounded_2_nullable_vector_of_handles,
offsetof(multiple_nullable_vectors_of_handles_message_layout, inline_struct.vector),
kFidlIsResource_Resource),
FidlStructElement::Field(
&unbounded_nullable_vector_of_handles,
offsetof(multiple_nullable_vectors_of_handles_message_layout, inline_struct.vector2),
kFidlIsResource_Resource),
};
const FidlCodedStruct multiple_nullable_vectors_of_handles_message_type = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(multiple_nullable_vectors_of_handles_fields),
.size = sizeof(multiple_nullable_vectors_of_handles_inline_data),
.elements = multiple_nullable_vectors_of_handles_fields,
.name = "multiple_nullable_vectors_of_handles_message",
};
static const FidlStructElement unbounded_nonnullable_vector_of_uint32_fields[] = {
FidlStructElement::Field(
&unbounded_nonnullable_vector_of_uint32,
offsetof(unbounded_nonnullable_vector_of_uint32_message_layout, inline_struct.vector),
false),
};
const FidlCodedStruct unbounded_nonnullable_vector_of_uint32_message_type = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(unbounded_nonnullable_vector_of_uint32_fields),
.size = sizeof(unbounded_nonnullable_vector_of_uint32_inline_data),
.elements = unbounded_nonnullable_vector_of_uint32_fields,
.name = "unbounded_nonnullable_vector_of_uint32_message",
};
static const FidlStructElement unbounded_nullable_vector_of_uint32_fields[] = {
FidlStructElement::Field(
&unbounded_nullable_vector_of_uint32,
offsetof(unbounded_nullable_vector_of_uint32_message_layout, inline_struct.vector),
kFidlIsResource_NotResource),
};
const FidlCodedStruct unbounded_nullable_vector_of_uint32_message_type = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(unbounded_nullable_vector_of_uint32_fields),
.size = sizeof(unbounded_nullable_vector_of_uint32_inline_data),
.elements = unbounded_nullable_vector_of_uint32_fields,
.name = "unbounded_nullable_vector_of_uint32_message",
};
static const FidlStructElement bounded_32_nonnullable_vector_of_uint32_fields[] = {
FidlStructElement::Field(
&bounded_32_nonnullable_vector_of_uint32,
offsetof(bounded_32_nonnullable_vector_of_uint32_message_layout, inline_struct.vector),
false),
};
const FidlCodedStruct bounded_32_nonnullable_vector_of_uint32_message_type = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(bounded_32_nonnullable_vector_of_uint32_fields),
.size = sizeof(bounded_32_nonnullable_vector_of_uint32_inline_data),
.elements = bounded_32_nonnullable_vector_of_uint32_fields,
.name = "bounded_32_nonnullable_vector_of_uint32_message",
};
static const FidlStructElement bounded_32_nullable_vector_of_uint32_fields[] = {
FidlStructElement::Field(
&bounded_32_nullable_vector_of_uint32,
offsetof(bounded_32_nullable_vector_of_uint32_message_layout, inline_struct.vector),
kFidlIsResource_NotResource),
};
const FidlCodedStruct bounded_32_nullable_vector_of_uint32_message_type = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(bounded_32_nullable_vector_of_uint32_fields),
.size = sizeof(bounded_32_nullable_vector_of_uint32_inline_data),
.elements = bounded_32_nullable_vector_of_uint32_fields,
.name = "bounded_32_nullable_vector_of_uint32_message",
};
static const FidlStructElement multiple_nonnullable_vectors_of_uint32_fields[] = {
FidlStructElement::Field(
&bounded_2_nonnullable_vector_of_uint32,
offsetof(multiple_nonnullable_vectors_of_uint32_message_layout, inline_struct.vector),
false),
FidlStructElement::Field(
&unbounded_nonnullable_vector_of_uint32,
offsetof(multiple_nonnullable_vectors_of_uint32_message_layout, inline_struct.vector2),
false),
};
const FidlCodedStruct multiple_nonnullable_vectors_of_uint32_message_type = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(multiple_nonnullable_vectors_of_uint32_fields),
.size = sizeof(multiple_nonnullable_vectors_of_uint32_inline_data),
.elements = multiple_nonnullable_vectors_of_uint32_fields,
.name = "multiple_nonnullable_vectors_of_uint32_message",
};
static const FidlStructElement multiple_nullable_vectors_of_uint32_fields[] = {
FidlStructElement::Field(
&bounded_2_nullable_vector_of_uint32,
offsetof(multiple_nullable_vectors_of_uint32_message_layout, inline_struct.vector),
kFidlIsResource_NotResource),
FidlStructElement::Field(
&unbounded_nullable_vector_of_uint32,
offsetof(multiple_nullable_vectors_of_uint32_message_layout, inline_struct.vector2),
kFidlIsResource_NotResource),
};
const FidlCodedStruct multiple_nullable_vectors_of_uint32_message_type = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(multiple_nullable_vectors_of_uint32_fields),
.size = sizeof(multiple_nullable_vectors_of_uint32_inline_data),
.elements = multiple_nullable_vectors_of_uint32_fields,
.name = "multiple_nullable_vectors_of_uint32_message",
};
// Struct messages.
static const FidlStructElement struct_level_3_fields[] = {
FidlStructElement::Field(&nonnullable_handle, offsetof(struct_level_3, handle_3),
kFidlIsResource_Resource),
};
static const FidlCodedStruct struct_level_3_struct = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(struct_level_3_fields),
.size = sizeof(struct_level_3),
.elements = struct_level_3_fields,
.name = "struct_level_3",
};
static const FidlStructElement struct_level_2_fields[] = {
FidlStructElement::Field(&struct_level_3_struct, offsetof(struct_level_2, l3),
kFidlIsResource_NotResource),
FidlStructElement::Field(&nonnullable_handle, offsetof(struct_level_2, handle_2),
kFidlIsResource_Resource),
FidlStructElement::Padding32(offsetof(struct_level_2, handle_2) + 4, 0xffffffff),
};
static const FidlCodedStruct struct_level_2_struct = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(struct_level_2_fields),
.size = sizeof(struct_level_2),
.elements = struct_level_2_fields,
.name = "struct_level_2",
};
static const FidlStructElement struct_level_1_fields[] = {
FidlStructElement::Field(&nonnullable_handle, offsetof(struct_level_1, handle_1),
kFidlIsResource_Resource),
FidlStructElement::Padding32(offsetof(struct_level_1, handle_1) + 4, 0xffffffff),
FidlStructElement::Field(&struct_level_2_struct, offsetof(struct_level_1, l2),
kFidlIsResource_NotResource),
};
static const FidlCodedStruct struct_level_1_struct = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(struct_level_1_fields),
.size = sizeof(struct_level_1),
.elements = struct_level_1_fields,
.name = "struct_level_1",
};
static const FidlStructElement struct_level_0_fields[] = {
FidlStructElement::Field(&struct_level_1_struct, offsetof(struct_level_0, l1),
kFidlIsResource_NotResource),
FidlStructElement::Field(&nonnullable_handle, offsetof(struct_level_0, handle_0),
kFidlIsResource_Resource),
FidlStructElement::Padding32(offsetof(struct_level_0, handle_0) + 4, 0xffffffff),
};
const FidlCodedStruct struct_level_0_struct = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(struct_level_1_fields),
.size = sizeof(struct_level_0),
.elements = struct_level_0_fields,
.name = "struct_level_0",
};
static const FidlStructElement nested_structs_fields[] = {
FidlStructElement::Field(&struct_level_0_struct,
offsetof(nested_structs_message_layout, inline_struct.l0),
kFidlIsResource_NotResource),
};
const FidlCodedStruct nested_structs_message_type = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(nested_structs_fields),
.size = sizeof(nested_structs_inline_data),
.elements = nested_structs_fields,
.name = "nested_structs_message",
};
// Struct pointer messages.
static const FidlStructElement struct_ptr_level_3_fields[] = {
FidlStructElement::Field(&nonnullable_handle, offsetof(struct_ptr_level_3, handle_3),
kFidlIsResource_Resource),
};
static const FidlCodedStruct struct_ptr_level_3_struct = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(struct_ptr_level_3_fields),
.size = sizeof(struct_ptr_level_3),
.elements = struct_ptr_level_3_fields,
.name = "struct_ptr_level_3",
};
static const FidlCodedStructPointer struct_ptr_level_3_struct_pointer = {
.tag = kFidlTypeStructPointer,
.struct_type = &struct_ptr_level_3_struct.coded_struct(),
};
static const FidlStructElement struct_ptr_level_2_fields[] = {
FidlStructElement::Field(&struct_ptr_level_3_struct_pointer,
offsetof(struct_ptr_level_2, l3_present), kFidlIsResource_NotResource),
FidlStructElement::Field(&struct_ptr_level_3_struct_pointer,
offsetof(struct_ptr_level_2, l3_absent), kFidlIsResource_NotResource),
FidlStructElement::Field(&struct_ptr_level_3_struct, offsetof(struct_ptr_level_2, l3_inline),
kFidlIsResource_NotResource),
FidlStructElement::Field(&nonnullable_handle, offsetof(struct_ptr_level_2, handle_2),
kFidlIsResource_Resource),
};
static const FidlCodedStruct struct_ptr_level_2_struct = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(struct_ptr_level_2_fields),
.size = sizeof(struct_ptr_level_2),
.elements = struct_ptr_level_2_fields,
.name = "struct_ptr_level_2",
};
static const FidlCodedStructPointer struct_ptr_level_2_struct_pointer = {
.tag = kFidlTypeStructPointer,
.struct_type = &struct_ptr_level_2_struct.coded_struct(),
};
static const FidlStructElement struct_ptr_level_1_fields[] = {
FidlStructElement::Field(&nonnullable_handle, offsetof(struct_ptr_level_1, handle_1),
kFidlIsResource_Resource),
FidlStructElement::Padding32(offsetof(struct_ptr_level_1, handle_1) + 4, 0xffffffff),
FidlStructElement::Field(&struct_ptr_level_2_struct_pointer,
offsetof(struct_ptr_level_1, l2_present), kFidlIsResource_NotResource),
FidlStructElement::Field(&struct_ptr_level_2_struct, offsetof(struct_ptr_level_1, l2_inline),
kFidlIsResource_NotResource),
FidlStructElement::Field(&struct_ptr_level_2_struct_pointer,
offsetof(struct_ptr_level_1, l2_absent), kFidlIsResource_NotResource),
};
static const FidlCodedStruct struct_ptr_level_1_struct = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(struct_ptr_level_1_fields),
.size = sizeof(struct_ptr_level_1),
.elements = struct_ptr_level_1_fields,
.name = "struct_ptr_level_1",
};
static const FidlCodedStructPointer struct_ptr_level_1_struct_pointer = {
.tag = kFidlTypeStructPointer,
.struct_type = &struct_ptr_level_1_struct.coded_struct(),
};
static const FidlStructElement struct_ptr_level_0_fields[] = {
FidlStructElement::Field(&struct_ptr_level_1_struct_pointer,
offsetof(struct_ptr_level_0, l1_absent), kFidlIsResource_NotResource),
FidlStructElement::Field(&struct_ptr_level_1_struct, offsetof(struct_ptr_level_0, l1_inline),
kFidlIsResource_NotResource),
FidlStructElement::Field(&nonnullable_handle, offsetof(struct_ptr_level_0, handle_0),
kFidlIsResource_Resource),
FidlStructElement::Padding32(offsetof(struct_ptr_level_0, handle_0) + 4, 0xffffffff),
FidlStructElement::Field(&struct_ptr_level_1_struct_pointer,
offsetof(struct_ptr_level_0, l1_present), kFidlIsResource_NotResource),
};
static const FidlCodedStruct struct_ptr_level_0_struct = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(struct_ptr_level_0_fields),
.size = sizeof(struct_ptr_level_0),
.elements = struct_ptr_level_0_fields,
.name = "struct_ptr_level_0",
};
const FidlCodedStructPointer struct_ptr_level_0_struct_pointer = {
.tag = kFidlTypeStructPointer,
.struct_type = &struct_ptr_level_0_struct.coded_struct(),
};
static const FidlStructElement nested_struct_ptrs_fields[] = {
FidlStructElement::Field(&struct_ptr_level_0_struct,
offsetof(nested_struct_ptrs_inline_data, l0_inline),
kFidlIsResource_NotResource),
FidlStructElement::Field(&struct_ptr_level_0_struct_pointer,
offsetof(nested_struct_ptrs_inline_data, l0_absent),
kFidlIsResource_NotResource),
FidlStructElement::Field(&struct_ptr_level_0_struct_pointer,
offsetof(nested_struct_ptrs_inline_data, l0_present),
kFidlIsResource_NotResource),
};
const FidlCodedStruct nested_struct_ptrs_message_type = {
.tag = kFidlTypeStruct,
.element_count = ArrayCount(nested_struct_ptrs_fields),
.size = sizeof(nested_struct_ptrs_inline_data),
.elements = nested_struct_ptrs_fields,
.name = "nested_struct_ptrs_message",
};