# 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/unionsandwich/c/fidl.h>
fidl_test_unionsandwich_SandwichUnionSize8Alignment4InLine {
       before int32
       unionInLine fidl_test_unionsandwich_UnionSize8Alignment4InLine
       after int32
} [packed]
fidl_test_unionsandwich_SandwichUnionSize8Alignment4OutOfLine {
       void void
} [packed]
fidl_test_unionsandwich_SandwichUnionSize8Alignment4Handles {
       void void
} [packed]
fidl_test_unionsandwich_SandwichUnionSize12Alignment4InLine {
       before int32
       unionInLine fidl_test_unionsandwich_UnionSize12Alignment4InLine
       after int32
} [packed]
fidl_test_unionsandwich_SandwichUnionSize12Alignment4OutOfLine {
       void void
} [packed]
fidl_test_unionsandwich_SandwichUnionSize12Alignment4Handles {
       void void
} [packed]
fidl_test_unionsandwich_StructSize16Alignment8InLine {
       f1 int64
       f2 int64
} [packed]
fidl_test_unionsandwich_StructSize16Alignment8OutOfLine {
       void void
} [packed]
fidl_test_unionsandwich_StructSize16Alignment8Handles {
       void void
} [packed]
fidl_test_unionsandwich_SandwichUnionSize24Alignment8InLine {
       before int32
       unionInLine fidl_test_unionsandwich_UnionSize24Alignment8InLine
       after int32
} [packed]
fidl_test_unionsandwich_SandwichUnionSize24Alignment8OutOfLine {
       void void
} [packed]
fidl_test_unionsandwich_SandwichUnionSize24Alignment8Handles {
       void void
} [packed]
fidl_test_unionsandwich_SandwichUnionSize36Alignment4InLine {
       before int32
       unionInLine fidl_test_unionsandwich_UnionSize36Alignment4InLine
       after int32
} [packed]
fidl_test_unionsandwich_SandwichUnionSize36Alignment4OutOfLine {
       void void
} [packed]
fidl_test_unionsandwich_SandwichUnionSize36Alignment4Handles {
       void void
} [packed]
fidl_test_unionsandwich_UnionSize8Alignment4InLine [
       variant fidl_union_member[1, int32]
]
fidl_test_unionsandwich_UnionSize8Alignment4OutOfLine [
       void void
][varlen]
fidl_test_unionsandwich_UnionSize8Alignment4Handles [
       void void
][varlen]
fidl_test_unionsandwich_UnionSize12Alignment4InLine [
       variantInLine fidl_union_member[1, array[int8, 6]]
]
fidl_test_unionsandwich_UnionSize12Alignment4OutOfLine [
       void void
][varlen]
fidl_test_unionsandwich_UnionSize12Alignment4Handles [
       void void
][varlen]
fidl_test_unionsandwich_UnionSize24Alignment8InLine [
       variantInLine fidl_union_member[1, fidl_test_unionsandwich_StructSize16Alignment8InLine]
]
fidl_test_unionsandwich_UnionSize24Alignment8OutOfLine [
       variantOutOfLine fidl_test_unionsandwich_StructSize16Alignment8OutOfLine
][varlen]
fidl_test_unionsandwich_UnionSize24Alignment8Handles [
       variant fidl_test_unionsandwich_StructSize16Alignment8Handles
][varlen]
fidl_test_unionsandwich_UnionSize36Alignment4InLine [
       variantInLine fidl_union_member[1, array[int8, 32]]
]
fidl_test_unionsandwich_UnionSize36Alignment4OutOfLine [
       void void
][varlen]
fidl_test_unionsandwich_UnionSize36Alignment4Handles [
       void void
][varlen]

