| // 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. |
| |
| #ifndef SRC_LIB_FIDL_C_WALKER_TESTS_FIDL_STRUCTS_H_ |
| #define SRC_LIB_FIDL_C_WALKER_TESTS_FIDL_STRUCTS_H_ |
| |
| #include <lib/fidl/coding.h> |
| #include <stdalign.h> |
| |
| // Handle types. |
| struct nonnullable_handle_inline_data { |
| alignas(FIDL_ALIGNMENT) fidl_message_header_t header; |
| zx_handle_t handle; |
| }; |
| struct nonnullable_handle_message_layout { |
| alignas(FIDL_ALIGNMENT) nonnullable_handle_inline_data inline_struct; |
| }; |
| |
| struct multiple_nonnullable_handles_inline_data { |
| alignas(FIDL_ALIGNMENT) fidl_message_header_t header; |
| uint32_t data_0; |
| zx_handle_t handle_0; |
| uint64_t data_1; |
| zx_handle_t handle_1; |
| zx_handle_t handle_2; |
| uint64_t data_2; |
| }; |
| struct multiple_nonnullable_handles_message_layout { |
| alignas(FIDL_ALIGNMENT) multiple_nonnullable_handles_inline_data inline_struct; |
| }; |
| |
| struct nullable_handle_inline_data { |
| alignas(FIDL_ALIGNMENT) fidl_message_header_t header; |
| zx_handle_t handle; |
| }; |
| struct nullable_handle_message_layout { |
| alignas(FIDL_ALIGNMENT) nullable_handle_inline_data inline_struct; |
| }; |
| |
| struct multiple_nullable_handles_inline_data { |
| alignas(FIDL_ALIGNMENT) fidl_message_header_t header; |
| uint32_t data_0; |
| zx_handle_t handle_0; |
| uint64_t data_1; |
| zx_handle_t handle_1; |
| zx_handle_t handle_2; |
| uint64_t data_2; |
| }; |
| struct multiple_nullable_handles_message_layout { |
| alignas(FIDL_ALIGNMENT) multiple_nullable_handles_inline_data inline_struct; |
| }; |
| |
| // Array types. |
| struct array_of_nonnullable_handles_inline_data { |
| alignas(FIDL_ALIGNMENT) fidl_message_header_t header; |
| zx_handle_t handles[4]; |
| }; |
| struct array_of_nonnullable_handles_message_layout { |
| alignas(FIDL_ALIGNMENT) array_of_nonnullable_handles_inline_data inline_struct; |
| }; |
| |
| struct array_of_nullable_handles_inline_data { |
| alignas(FIDL_ALIGNMENT) fidl_message_header_t header; |
| zx_handle_t handles[5]; |
| }; |
| struct array_of_nullable_handles_message_layout { |
| alignas(FIDL_ALIGNMENT) array_of_nullable_handles_inline_data inline_struct; |
| }; |
| |
| struct array_of_array_of_nonnullable_handles_inline_data { |
| alignas(FIDL_ALIGNMENT) fidl_message_header_t header; |
| zx_handle_t handles[3][4]; |
| }; |
| struct array_of_array_of_nonnullable_handles_message_layout { |
| alignas(FIDL_ALIGNMENT) array_of_array_of_nonnullable_handles_inline_data inline_struct; |
| }; |
| |
| struct array_of_nonnullable_handles { |
| alignas(FIDL_ALIGNMENT) zx_handle_t handles[4]; |
| }; |
| struct out_of_line_array_of_nonnullable_handles_inline_data { |
| alignas(FIDL_ALIGNMENT) fidl_message_header_t header; |
| array_of_nonnullable_handles* maybe_array; |
| }; |
| struct out_of_line_array_of_nonnullable_handles_message_layout { |
| alignas(FIDL_ALIGNMENT) out_of_line_array_of_nonnullable_handles_inline_data inline_struct; |
| alignas(FIDL_ALIGNMENT) array_of_nonnullable_handles data; |
| }; |
| |
| // String types. |
| struct unbounded_nonnullable_string_inline_data { |
| alignas(FIDL_ALIGNMENT) fidl_message_header_t header; |
| fidl_string_t string; |
| }; |
| struct unbounded_nonnullable_string_message_layout { |
| alignas(FIDL_ALIGNMENT) unbounded_nonnullable_string_inline_data inline_struct; |
| alignas(FIDL_ALIGNMENT) char data[6]; |
| }; |
| |
| struct unbounded_nullable_string_inline_data { |
| alignas(FIDL_ALIGNMENT) fidl_message_header_t header; |
| fidl_string_t string; |
| }; |
| struct unbounded_nullable_string_message_layout { |
| alignas(FIDL_ALIGNMENT) unbounded_nullable_string_inline_data inline_struct; |
| alignas(FIDL_ALIGNMENT) char data[6]; |
| }; |
| |
| struct bounded_32_nonnullable_string_inline_data { |
| alignas(FIDL_ALIGNMENT) fidl_message_header_t header; |
| fidl_string_t string; |
| }; |
| struct bounded_32_nonnullable_string_message_layout { |
| alignas(FIDL_ALIGNMENT) bounded_32_nonnullable_string_inline_data inline_struct; |
| alignas(FIDL_ALIGNMENT) char data[6]; |
| }; |
| |
| struct bounded_32_nullable_string_inline_data { |
| alignas(FIDL_ALIGNMENT) fidl_message_header_t header; |
| fidl_string_t string; |
| }; |
| struct bounded_32_nullable_string_message_layout { |
| alignas(FIDL_ALIGNMENT) bounded_32_nullable_string_inline_data inline_struct; |
| alignas(FIDL_ALIGNMENT) char data[6]; |
| }; |
| |
| struct multiple_nonnullable_strings_inline_data { |
| alignas(FIDL_ALIGNMENT) fidl_message_header_t header; |
| fidl_string_t string; |
| fidl_string_t string2; |
| }; |
| struct multiple_nonnullable_strings_message_layout { |
| alignas(FIDL_ALIGNMENT) multiple_nonnullable_strings_inline_data inline_struct; |
| alignas(FIDL_ALIGNMENT) char data[6]; |
| alignas(FIDL_ALIGNMENT) char data2[8]; |
| }; |
| |
| struct multiple_nullable_strings_inline_data { |
| alignas(FIDL_ALIGNMENT) fidl_message_header_t header; |
| fidl_string_t string; |
| fidl_string_t string2; |
| }; |
| struct multiple_nullable_strings_message_layout { |
| alignas(FIDL_ALIGNMENT) multiple_nullable_strings_inline_data inline_struct; |
| alignas(FIDL_ALIGNMENT) char data[6]; |
| alignas(FIDL_ALIGNMENT) char data2[8]; |
| }; |
| |
| struct multiple_short_nonnullable_strings_inline_data { |
| alignas(FIDL_ALIGNMENT) fidl_message_header_t header; |
| fidl_string_t string; |
| fidl_string_t string2; |
| }; |
| struct multiple_short_nonnullable_strings_message_layout { |
| alignas(FIDL_ALIGNMENT) multiple_short_nonnullable_strings_inline_data inline_struct; |
| alignas(FIDL_ALIGNMENT) char data[6]; |
| alignas(FIDL_ALIGNMENT) char data2[8]; |
| }; |
| |
| struct multiple_short_nullable_strings_inline_data { |
| alignas(FIDL_ALIGNMENT) fidl_message_header_t header; |
| fidl_string_t string; |
| fidl_string_t string2; |
| }; |
| struct multiple_short_nullable_strings_message_layout { |
| alignas(FIDL_ALIGNMENT) multiple_short_nullable_strings_inline_data inline_struct; |
| alignas(FIDL_ALIGNMENT) char data[6]; |
| alignas(FIDL_ALIGNMENT) char data2[8]; |
| }; |
| |
| // Vector types. |
| struct unbounded_nonnullable_vector_of_handles_inline_data { |
| alignas(FIDL_ALIGNMENT) fidl_message_header_t header; |
| fidl_vector_t vector; |
| }; |
| struct unbounded_nonnullable_vector_of_handles_message_layout { |
| alignas(FIDL_ALIGNMENT) unbounded_nonnullable_vector_of_handles_inline_data inline_struct; |
| alignas(FIDL_ALIGNMENT) zx_handle_t handles[4]; |
| }; |
| |
| struct unbounded_nullable_vector_of_handles_inline_data { |
| alignas(FIDL_ALIGNMENT) fidl_message_header_t header; |
| fidl_vector_t vector; |
| }; |
| struct unbounded_nullable_vector_of_handles_message_layout { |
| alignas(FIDL_ALIGNMENT) unbounded_nullable_vector_of_handles_inline_data inline_struct; |
| alignas(FIDL_ALIGNMENT) zx_handle_t handles[4]; |
| }; |
| |
| struct bounded_32_nonnullable_vector_of_handles_inline_data { |
| alignas(FIDL_ALIGNMENT) fidl_message_header_t header; |
| fidl_vector_t vector; |
| }; |
| struct bounded_32_nonnullable_vector_of_handles_message_layout { |
| alignas(FIDL_ALIGNMENT) bounded_32_nonnullable_vector_of_handles_inline_data inline_struct; |
| alignas(FIDL_ALIGNMENT) zx_handle_t handles[4]; |
| }; |
| |
| struct bounded_32_nullable_vector_of_handles_inline_data { |
| alignas(FIDL_ALIGNMENT) fidl_message_header_t header; |
| fidl_vector_t vector; |
| }; |
| struct bounded_32_nullable_vector_of_handles_message_layout { |
| alignas(FIDL_ALIGNMENT) bounded_32_nullable_vector_of_handles_inline_data inline_struct; |
| alignas(FIDL_ALIGNMENT) zx_handle_t handles[4]; |
| }; |
| |
| struct multiple_nonnullable_vectors_of_handles_inline_data { |
| alignas(FIDL_ALIGNMENT) fidl_message_header_t header; |
| fidl_vector_t vector; |
| fidl_vector_t vector2; |
| }; |
| struct multiple_nonnullable_vectors_of_handles_message_layout { |
| alignas(FIDL_ALIGNMENT) multiple_nonnullable_vectors_of_handles_inline_data inline_struct; |
| alignas(FIDL_ALIGNMENT) zx_handle_t handles[4]; |
| alignas(FIDL_ALIGNMENT) zx_handle_t handles2[4]; |
| }; |
| |
| struct multiple_nullable_vectors_of_handles_inline_data { |
| alignas(FIDL_ALIGNMENT) fidl_message_header_t header; |
| fidl_vector_t vector; |
| fidl_vector_t vector2; |
| }; |
| struct multiple_nullable_vectors_of_handles_message_layout { |
| alignas(FIDL_ALIGNMENT) multiple_nullable_vectors_of_handles_inline_data inline_struct; |
| alignas(FIDL_ALIGNMENT) zx_handle_t handles[4]; |
| alignas(FIDL_ALIGNMENT) zx_handle_t handles2[4]; |
| }; |
| |
| struct unbounded_nonnullable_vector_of_uint32_inline_data { |
| alignas(FIDL_ALIGNMENT) fidl_message_header_t header; |
| fidl_vector_t vector; |
| }; |
| struct unbounded_nonnullable_vector_of_uint32_message_layout { |
| alignas(FIDL_ALIGNMENT) unbounded_nonnullable_vector_of_uint32_inline_data inline_struct; |
| alignas(FIDL_ALIGNMENT) uint32_t uint32[4]; |
| }; |
| |
| struct unbounded_nullable_vector_of_uint32_inline_data { |
| alignas(FIDL_ALIGNMENT) fidl_message_header_t header; |
| fidl_vector_t vector; |
| }; |
| struct unbounded_nullable_vector_of_uint32_message_layout { |
| alignas(FIDL_ALIGNMENT) unbounded_nullable_vector_of_uint32_inline_data inline_struct; |
| alignas(FIDL_ALIGNMENT) uint32_t uint32[4]; |
| }; |
| |
| struct bounded_32_nonnullable_vector_of_uint32_inline_data { |
| alignas(FIDL_ALIGNMENT) fidl_message_header_t header; |
| fidl_vector_t vector; |
| }; |
| struct bounded_32_nonnullable_vector_of_uint32_message_layout { |
| alignas(FIDL_ALIGNMENT) bounded_32_nonnullable_vector_of_uint32_inline_data inline_struct; |
| alignas(FIDL_ALIGNMENT) uint32_t uint32[4]; |
| }; |
| |
| struct bounded_32_nullable_vector_of_uint32_inline_data { |
| alignas(FIDL_ALIGNMENT) fidl_message_header_t header; |
| fidl_vector_t vector; |
| }; |
| struct bounded_32_nullable_vector_of_uint32_message_layout { |
| alignas(FIDL_ALIGNMENT) bounded_32_nullable_vector_of_uint32_inline_data inline_struct; |
| alignas(FIDL_ALIGNMENT) uint32_t uint32[4]; |
| }; |
| |
| struct multiple_nonnullable_vectors_of_uint32_inline_data { |
| alignas(FIDL_ALIGNMENT) fidl_message_header_t header; |
| fidl_vector_t vector; |
| fidl_vector_t vector2; |
| }; |
| struct multiple_nonnullable_vectors_of_uint32_message_layout { |
| alignas(FIDL_ALIGNMENT) multiple_nonnullable_vectors_of_uint32_inline_data inline_struct; |
| alignas(FIDL_ALIGNMENT) uint32_t uint32[4]; |
| alignas(FIDL_ALIGNMENT) uint32_t uint32_2[4]; |
| }; |
| |
| struct multiple_nullable_vectors_of_uint32_inline_data { |
| alignas(FIDL_ALIGNMENT) fidl_message_header_t header; |
| fidl_vector_t vector; |
| fidl_vector_t vector2; |
| }; |
| struct multiple_nullable_vectors_of_uint32_message_layout { |
| alignas(FIDL_ALIGNMENT) multiple_nullable_vectors_of_uint32_inline_data inline_struct; |
| alignas(FIDL_ALIGNMENT) uint32_t uint32[4]; |
| alignas(FIDL_ALIGNMENT) uint32_t uint32_2[4]; |
| }; |
| |
| // Struct alignas(FIDL_ALIGNMENT) types. |
| struct struct_level_3 { |
| alignas(FIDL_ALIGNMENT) uint32_t padding_3; |
| zx_handle_t handle_3; |
| }; |
| struct struct_level_2 { |
| alignas(FIDL_ALIGNMENT) uint64_t padding_2; |
| struct_level_3 l3; |
| zx_handle_t handle_2; |
| }; |
| struct struct_level_1 { |
| alignas(FIDL_ALIGNMENT) zx_handle_t handle_1; |
| struct_level_2 l2; |
| uint64_t padding_1; |
| }; |
| struct struct_level_0 { |
| alignas(FIDL_ALIGNMENT) uint64_t padding_0; |
| struct_level_1 l1; |
| zx_handle_t handle_0; |
| }; |
| struct nested_structs_inline_data { |
| alignas(FIDL_ALIGNMENT) fidl_message_header_t header; |
| struct_level_0 l0; |
| }; |
| struct nested_structs_message_layout { |
| alignas(FIDL_ALIGNMENT) nested_structs_inline_data inline_struct; |
| }; |
| |
| // Struct alignas(FIDL_ALIGNMENT) pointer types. |
| struct struct_ptr_level_3 { |
| alignas(FIDL_ALIGNMENT) uint32_t padding_3; |
| zx_handle_t handle_3; |
| }; |
| struct struct_ptr_level_2 { |
| alignas(FIDL_ALIGNMENT) uint64_t padding_2; |
| struct_ptr_level_3* l3_present; |
| struct_ptr_level_3* l3_absent; |
| struct_ptr_level_3 l3_inline; |
| zx_handle_t handle_2; |
| }; |
| struct struct_ptr_level_1 { |
| alignas(FIDL_ALIGNMENT) zx_handle_t handle_1; |
| struct_ptr_level_2* l2_present; |
| struct_ptr_level_2 l2_inline; |
| struct_ptr_level_2* l2_absent; |
| uint64_t padding_1; |
| }; |
| struct struct_ptr_level_0 { |
| alignas(FIDL_ALIGNMENT) uint64_t padding_0; |
| struct_ptr_level_1* l1_absent; |
| struct_ptr_level_1 l1_inline; |
| zx_handle_t handle_0; |
| struct_ptr_level_1* l1_present; |
| }; |
| struct nested_struct_ptrs_inline_data { |
| alignas(FIDL_ALIGNMENT) fidl_message_header_t header; |
| struct_ptr_level_0 l0_inline; |
| struct_ptr_level_0* l0_absent; |
| struct_ptr_level_0* l0_present; |
| }; |
| struct nested_struct_ptrs_message_layout { |
| alignas(FIDL_ALIGNMENT) nested_struct_ptrs_inline_data inline_struct; |
| alignas(FIDL_ALIGNMENT) struct_ptr_level_2 in_in_out_2; |
| alignas(FIDL_ALIGNMENT) struct_ptr_level_3 in_in_out_out_3; |
| alignas(FIDL_ALIGNMENT) struct_ptr_level_3 in_in_in_out_3; |
| alignas(FIDL_ALIGNMENT) struct_ptr_level_1 in_out_1; |
| alignas(FIDL_ALIGNMENT) struct_ptr_level_2 in_out_out_2; |
| alignas(FIDL_ALIGNMENT) struct_ptr_level_3 in_out_out_out_3; |
| alignas(FIDL_ALIGNMENT) struct_ptr_level_3 in_out_in_out_3; |
| alignas(FIDL_ALIGNMENT) struct_ptr_level_0 out_0; |
| alignas(FIDL_ALIGNMENT) struct_ptr_level_2 out_in_out_2; |
| alignas(FIDL_ALIGNMENT) struct_ptr_level_3 out_in_out_out_3; |
| alignas(FIDL_ALIGNMENT) struct_ptr_level_3 out_in_in_out_3; |
| alignas(FIDL_ALIGNMENT) struct_ptr_level_1 out_out_1; |
| alignas(FIDL_ALIGNMENT) struct_ptr_level_2 out_out_out_2; |
| alignas(FIDL_ALIGNMENT) struct_ptr_level_3 out_out_out_out_3; |
| alignas(FIDL_ALIGNMENT) struct_ptr_level_3 out_out_in_out_3; |
| }; |
| |
| #endif // SRC_LIB_FIDL_C_WALKER_TESTS_FIDL_STRUCTS_H_ |