# Copyright 2018 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.
#
# WARNING: This file is machine generated by fidlgen.

include <fidl/test/union/c/fidl.h>
fidl_test_union_PizzaInLine {
       toppingsInLine fidl_vector
} [packed]
fidl_test_union_PizzaOutOfLine {
       toppingsOutOfLine parallel_array[fidl_string, fidl_aligned[stringnoz]]
} [packed]
fidl_test_union_PizzaHandles {
       void void
} [packed]
fidl_test_union_PastaInLine {
       sauceInLine fidl_string
} [packed]
fidl_test_union_PastaOutOfLine {
       sauceOutOfLine fidl_aligned[stringnoz]
} [packed]
fidl_test_union_PastaHandles {
       void void
} [packed]
fidl_test_union_NullableUnionStructInLine {
       the_unionInLine fidl_test_union_UnionInLine
} [packed]
fidl_test_union_NullableUnionStructOutOfLine {
       void void
} [packed]
fidl_test_union_NullableUnionStructHandles {
       void void
} [packed]
fidl_test_union_EmptyInLine {
       padding int8
} [packed]
fidl_test_union_EmptyOutOfLine {
       void void
} [packed]
fidl_test_union_EmptyHandles {
       void void
} [packed]
fidl_test_union_StructWithNullableXUnionInLine {
       x1InLine fidl_test_union_OlderSimpleUnionInLine
} [packed]
fidl_test_union_StructWithNullableXUnionOutOfLine {
       void void
} [packed]
fidl_test_union_StructWithNullableXUnionHandles {
       void void
} [packed]
fidl_test_union_PizzaOrPastaInLine [
       pizzaInLine fidl_union_member[1, fidl_test_union_PizzaInLine]
       pastaInLine fidl_union_member[2, fidl_test_union_PastaInLine]
]
fidl_test_union_PizzaOrPastaOutOfLine [
       pizzaOutOfLine fidl_test_union_PizzaOutOfLine
       pastaOutOfLine fidl_test_union_PastaOutOfLine
][varlen]
fidl_test_union_PizzaOrPastaHandles [
       pizza fidl_test_union_PizzaHandles
       pasta fidl_test_union_PastaHandles
][varlen]
fidl_test_union_ExplicitPizzaOrPastaInLine [
       pizzaInLine fidl_union_member[1, fidl_test_union_PizzaInLine]
       pastaInLine fidl_union_member[4, fidl_test_union_PastaInLine]
]
fidl_test_union_ExplicitPizzaOrPastaOutOfLine [
       pizzaOutOfLine fidl_test_union_PizzaOutOfLine
       pastaOutOfLine fidl_test_union_PastaOutOfLine
][varlen]
fidl_test_union_ExplicitPizzaOrPastaHandles [
       pizza fidl_test_union_PizzaHandles
       pasta fidl_test_union_PastaHandles
][varlen]
fidl_test_union_FlexiblePizzaOrPastaInLine [
       pizzaInLine fidl_union_member[1, fidl_test_union_PizzaInLine]
       pastaInLine fidl_union_member[2, fidl_test_union_PastaInLine]
]
fidl_test_union_FlexiblePizzaOrPastaOutOfLine [
       pizzaOutOfLine fidl_test_union_PizzaOutOfLine
       pastaOutOfLine fidl_test_union_PastaOutOfLine
][varlen]
fidl_test_union_FlexiblePizzaOrPastaHandles [
       pizza fidl_test_union_PizzaHandles
       pasta fidl_test_union_PastaHandles
][varlen]
fidl_test_union_StrictPizzaOrPastaInLine [
       pizzaInLine fidl_union_member[1, fidl_test_union_PizzaInLine]
       pastaInLine fidl_union_member[2, fidl_test_union_PastaInLine]
]
fidl_test_union_StrictPizzaOrPastaOutOfLine [
       pizzaOutOfLine fidl_test_union_PizzaOutOfLine
       pastaOutOfLine fidl_test_union_PastaOutOfLine
][varlen]
fidl_test_union_StrictPizzaOrPastaHandles [
       pizza fidl_test_union_PizzaHandles
       pasta fidl_test_union_PastaHandles
][varlen]
fidl_test_union_UnionInLine [
       primitive fidl_union_member[1, int32]
       string_needs_constructorInLine fidl_union_member[2, fidl_string]
       vector_string_also_needs_constructorInLine fidl_union_member[3, fidl_vector]
]
fidl_test_union_UnionOutOfLine [
       string_needs_constructorOutOfLine fidl_aligned[stringnoz]
       vector_string_also_needs_constructorOutOfLine parallel_array[fidl_string, fidl_aligned[stringnoz]]
][varlen]
fidl_test_union_UnionHandles [
       void void
][varlen]
fidl_test_union_FlexibleUnionInLine [
       primitive fidl_union_member[1, int32]
       string_needs_constructorInLine fidl_union_member[2, fidl_string]
       vector_string_also_needs_constructorInLine fidl_union_member[3, fidl_vector]
]
fidl_test_union_FlexibleUnionOutOfLine [
       string_needs_constructorOutOfLine fidl_aligned[stringnoz]
       vector_string_also_needs_constructorOutOfLine parallel_array[fidl_string, fidl_aligned[stringnoz]]
][varlen]
fidl_test_union_FlexibleUnionHandles [
       void void
][varlen]
fidl_test_union_StrictUnionInLine [
       primitive fidl_union_member[1, int32]
       string_needs_constructorInLine fidl_union_member[2, fidl_string]
       vector_string_also_needs_constructorInLine fidl_union_member[3, fidl_vector]
]
fidl_test_union_StrictUnionOutOfLine [
       string_needs_constructorOutOfLine fidl_aligned[stringnoz]
       vector_string_also_needs_constructorOutOfLine parallel_array[fidl_string, fidl_aligned[stringnoz]]
][varlen]
fidl_test_union_StrictUnionHandles [
       void void
][varlen]
fidl_test_union_FieldCollisionInLine [
       field_collision_tag fidl_union_member[1, int32]
]
fidl_test_union_FieldCollisionOutOfLine [
       void void
][varlen]
fidl_test_union_FieldCollisionHandles [
       void void
][varlen]
fidl_test_union_ExplicitUnionInLine [
       primitive fidl_union_member[1, int32]
       string_needs_constructorInLine fidl_union_member[3, fidl_string]
]
fidl_test_union_ExplicitUnionOutOfLine [
       string_needs_constructorOutOfLine fidl_aligned[stringnoz]
][varlen]
fidl_test_union_ExplicitUnionHandles [
       void void
][varlen]
fidl_test_union_ReverseOrdinalUnionInLine [
       second fidl_union_member[2, int32]
       first fidl_union_member[1, int32]
]
fidl_test_union_ReverseOrdinalUnionOutOfLine [
       void void
][varlen]
fidl_test_union_ReverseOrdinalUnionHandles [
       void void
][varlen]
fidl_test_union_FlexibleFooInLine [
       sInLine fidl_union_member[1, fidl_string]
       i fidl_union_member[2, int32]
]
fidl_test_union_FlexibleFooOutOfLine [
       sOutOfLine fidl_aligned[stringnoz]
][varlen]
fidl_test_union_FlexibleFooHandles [
       void void
][varlen]
fidl_test_union_StrictFooInLine [
       sInLine fidl_union_member[1, fidl_string]
       i fidl_union_member[2, int32]
]
fidl_test_union_StrictFooOutOfLine [
       sOutOfLine fidl_aligned[stringnoz]
][varlen]
fidl_test_union_StrictFooHandles [
       void void
][varlen]
fidl_test_union_ExplicitFooInLine [
       sInLine fidl_union_member[2, fidl_string]
       i fidl_union_member[1, int32]
]
fidl_test_union_ExplicitFooOutOfLine [
       sOutOfLine fidl_aligned[stringnoz]
][varlen]
fidl_test_union_ExplicitFooHandles [
       void void
][varlen]
fidl_test_union_ExplicitStrictFooInLine [
       sInLine fidl_union_member[3, fidl_string]
       i fidl_union_member[2, int32]
]
fidl_test_union_ExplicitStrictFooOutOfLine [
       sOutOfLine fidl_aligned[stringnoz]
][varlen]
fidl_test_union_ExplicitStrictFooHandles [
       void void
][varlen]
fidl_test_union_OlderSimpleUnionInLine [
       i fidl_union_member[1, int64]
       f fidl_union_member[2, int32]
]
fidl_test_union_OlderSimpleUnionOutOfLine [
       void void
][varlen]
fidl_test_union_OlderSimpleUnionHandles [
       void void
][varlen]
fidl_test_union_NewerSimpleUnionInLine [
       i fidl_union_member[1, int64]
       sInLine fidl_union_member[2, fidl_string]
       vInLine fidl_union_member[3, fidl_vector]
]
fidl_test_union_NewerSimpleUnionOutOfLine [
       sOutOfLine fidl_aligned[stringnoz]
       vOutOfLine parallel_array[fidl_string, fidl_aligned[stringnoz]]
][varlen]
fidl_test_union_NewerSimpleUnionHandles [
       void void
][varlen]
fidl_test_union_StrictSimpleXUnionInLine [
       i fidl_union_member[1, int32]
       f fidl_union_member[2, int32]
       sInLine fidl_union_member[3, fidl_string]
]
fidl_test_union_StrictSimpleXUnionOutOfLine [
       sOutOfLine fidl_aligned[stringnoz]
][varlen]
fidl_test_union_StrictSimpleXUnionHandles [
       void void
][varlen]
fidl_test_union_XUnionContainingEmptyStructInLine [
       emptyInLine fidl_union_member[1, fidl_test_union_EmptyInLine]
]
fidl_test_union_XUnionContainingEmptyStructOutOfLine [
       emptyOutOfLine fidl_test_union_EmptyOutOfLine
][varlen]
fidl_test_union_XUnionContainingEmptyStructHandles [
       empty fidl_test_union_EmptyHandles
][varlen]
fidl_test_union_StrictBoundedXUnionInLine [
       vInLine fidl_union_member[1, fidl_vector]
]
fidl_test_union_StrictBoundedXUnionOutOfLine [
       vOutOfLine array[int8]
][varlen]
fidl_test_union_StrictBoundedXUnionHandles [
       void void
][varlen]
fidl_test_union_ExplicitXUnionInLine [
       i fidl_union_member[1, int64]
       f fidl_union_member[4, int32]
]
fidl_test_union_ExplicitXUnionOutOfLine [
       void void
][varlen]
fidl_test_union_ExplicitXUnionHandles [
       void void
][varlen]


fidl_test_union_TestProtocolStrictXUnionHenceResponseMayBeStackAllocatedRequest {
       hdr fidl_message_header[8393311445612289086]
} [packed]
fidl_test_union_TestProtocolStrictXUnionHenceResponseMayBeStackAllocatedRequestHandles {
       void void
} [packed]
fidl_test_union_TestProtocolStrictXUnionHenceResponseMayBeStackAllocatedResponse {
       hdr fidl_message_header[8393311445612289086]
       xuInLine fidl_test_union_StrictBoundedXUnionInLine
       xuOutOfLine fidl_test_union_StrictBoundedXUnionOutOfLine
} [packed]
fidl_test_union_TestProtocolStrictXUnionHenceResponseMayBeStackAllocatedResponseHandles {
       void void
} [packed]
fidl_test_union_TestProtocolFlexibleXUnionHenceResponseMustBeHeapAllocatedRequest {
       hdr fidl_message_header[6296412872266712530]
} [packed]
fidl_test_union_TestProtocolFlexibleXUnionHenceResponseMustBeHeapAllocatedRequestHandles {
       void void
} [packed]
fidl_test_union_TestProtocolFlexibleXUnionHenceResponseMustBeHeapAllocatedResponse {
       hdr fidl_message_header[6296412872266712530]
       xuInLine fidl_test_union_OlderSimpleUnionInLine
} [packed]
fidl_test_union_TestProtocolFlexibleXUnionHenceResponseMustBeHeapAllocatedResponseHandles {
       void void
} [packed]

resource zx_chan_fidl_test_union_TestProtocol_client[zx_chan]
resource zx_chan_fidl_test_union_TestProtocol_server[zx_chan]

zx_channel_create$fidl_test_union_TestProtocol(options const[0], out0 ptr[out, zx_chan_fidl_test_union_TestProtocol_client], out1 ptr[out, zx_chan_fidl_test_union_TestProtocol_server])
fdio_service_connect$fidl_test_union_TestProtocol(path ptr[in, string["/svc/"]], handle zx_chan_fidl_test_union_TestProtocol_server)
zx_channel_call$fidl_test_union_TestProtocolStrictXUnionHenceResponseMayBeStackAllocated(handle zx_chan_fidl_test_union_TestProtocol_client, options const[0], deadline zx_time, args ptr[in, fidl_call_args[fidl_test_union_TestProtocolStrictXUnionHenceResponseMayBeStackAllocatedRequest, fidl_test_union_TestProtocolStrictXUnionHenceResponseMayBeStackAllocatedRequestHandles, array[int8, ZX_CHANNEL_MAX_MSG_BYTES], fidl_test_union_TestProtocolStrictXUnionHenceResponseMayBeStackAllocatedResponseHandles]], actual_bytes ptr[out, int32], actual_handles ptr[out, int32])
zx_channel_call$fidl_test_union_TestProtocolFlexibleXUnionHenceResponseMustBeHeapAllocated(handle zx_chan_fidl_test_union_TestProtocol_client, options const[0], deadline zx_time, args ptr[in, fidl_call_args[fidl_test_union_TestProtocolFlexibleXUnionHenceResponseMustBeHeapAllocatedRequest, fidl_test_union_TestProtocolFlexibleXUnionHenceResponseMustBeHeapAllocatedRequestHandles, array[int8, ZX_CHANNEL_MAX_MSG_BYTES], fidl_test_union_TestProtocolFlexibleXUnionHenceResponseMustBeHeapAllocatedResponseHandles]], actual_bytes ptr[out, int32], actual_handles ptr[out, int32])

