// WARNING: This file is machine generated by fidlgen.

// fidl_experiment = output_index_json

#include <lib/fidl/internal.h>

const struct FidlCodedUnion test_unionsandwich_UnionSize12Alignment4Table;
const struct FidlCodedUnion test_unionsandwich_UnionSize24Alignment8Table;
const struct FidlCodedUnion test_unionsandwich_UnionSize36Alignment4Table;
const struct FidlCodedUnion test_unionsandwich_UnionSize8Alignment4Table;
static const struct FidlCodedArray Array6_20fidl_internal_kUint8Table;
const struct FidlCodedStruct test_unionsandwich_StructSize16Alignment8Table;
static const struct FidlCodedArray Array32_20fidl_internal_kUint8Table;

static const struct FidlStructElement Fields48test_unionsandwich_SandwichUnionSize12Alignment4[] = {
    {
        .padding = {
            .header = {
                .element_type = kFidlStructElementType_Padding64,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 0,
            .mask_64 = 0xffffffff00000000,
        },
    },
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 8,
            .field_type = (const fidl_type_t*)&test_unionsandwich_UnionSize12Alignment4Table,
        },
    },
    {
        .padding = {
            .header = {
                .element_type = kFidlStructElementType_Padding64,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 24,
            .mask_64 = 0xffffffff00000000,
        },
    },
};
const struct FidlCodedStruct test_unionsandwich_SandwichUnionSize12Alignment4Table = {
    .tag = kFidlTypeStruct,
    .name = "test.unionsandwich/SandwichUnionSize12Alignment4",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 32,
    .elements = Fields48test_unionsandwich_SandwichUnionSize12Alignment4,
    .element_count = 3,
};

static const struct FidlStructElement Fields48test_unionsandwich_SandwichUnionSize24Alignment8[] = {
    {
        .padding = {
            .header = {
                .element_type = kFidlStructElementType_Padding64,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 0,
            .mask_64 = 0xffffffff00000000,
        },
    },
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 8,
            .field_type = (const fidl_type_t*)&test_unionsandwich_UnionSize24Alignment8Table,
        },
    },
    {
        .padding = {
            .header = {
                .element_type = kFidlStructElementType_Padding64,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 24,
            .mask_64 = 0xffffffff00000000,
        },
    },
};
const struct FidlCodedStruct test_unionsandwich_SandwichUnionSize24Alignment8Table = {
    .tag = kFidlTypeStruct,
    .name = "test.unionsandwich/SandwichUnionSize24Alignment8",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 32,
    .elements = Fields48test_unionsandwich_SandwichUnionSize24Alignment8,
    .element_count = 3,
};

static const struct FidlStructElement Fields48test_unionsandwich_SandwichUnionSize36Alignment4[] = {
    {
        .padding = {
            .header = {
                .element_type = kFidlStructElementType_Padding64,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 0,
            .mask_64 = 0xffffffff00000000,
        },
    },
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 8,
            .field_type = (const fidl_type_t*)&test_unionsandwich_UnionSize36Alignment4Table,
        },
    },
    {
        .padding = {
            .header = {
                .element_type = kFidlStructElementType_Padding64,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 24,
            .mask_64 = 0xffffffff00000000,
        },
    },
};
const struct FidlCodedStruct test_unionsandwich_SandwichUnionSize36Alignment4Table = {
    .tag = kFidlTypeStruct,
    .name = "test.unionsandwich/SandwichUnionSize36Alignment4",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 32,
    .elements = Fields48test_unionsandwich_SandwichUnionSize36Alignment4,
    .element_count = 3,
};

static const struct FidlStructElement Fields47test_unionsandwich_SandwichUnionSize8Alignment4[] = {
    {
        .padding = {
            .header = {
                .element_type = kFidlStructElementType_Padding64,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 0,
            .mask_64 = 0xffffffff00000000,
        },
    },
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 8,
            .field_type = (const fidl_type_t*)&test_unionsandwich_UnionSize8Alignment4Table,
        },
    },
    {
        .padding = {
            .header = {
                .element_type = kFidlStructElementType_Padding64,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 24,
            .mask_64 = 0xffffffff00000000,
        },
    },
};
const struct FidlCodedStruct test_unionsandwich_SandwichUnionSize8Alignment4Table = {
    .tag = kFidlTypeStruct,
    .name = "test.unionsandwich/SandwichUnionSize8Alignment4",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 32,
    .elements = Fields47test_unionsandwich_SandwichUnionSize8Alignment4,
    .element_count = 3,
};

const struct FidlCodedStruct test_unionsandwich_StructSize16Alignment8Table = {
    .tag = kFidlTypeStruct,
    .name = "test.unionsandwich/StructSize16Alignment8",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 16,
    .elements = NULL,
    .element_count = 0,
};

static const struct FidlUnionField Fields40test_unionsandwich_UnionSize12Alignment4[] = {
    {.type = (const fidl_type_t*)&Array6_20fidl_internal_kUint8Table},
};
const struct FidlCodedUnion test_unionsandwich_UnionSize12Alignment4Table = {
    .tag = kFidlTypeUnion,
    .name = "test.unionsandwich/UnionSize12Alignment4",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields40test_unionsandwich_UnionSize12Alignment4,
    .field_count = 1,
};
const struct FidlCodedUnion test_unionsandwich_UnionSize12Alignment4NullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.unionsandwich/UnionSize12Alignment4",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields40test_unionsandwich_UnionSize12Alignment4,
    .field_count = 1,
};

static const struct FidlUnionField Fields40test_unionsandwich_UnionSize24Alignment8[] = {
    {.type = (const fidl_type_t*)&test_unionsandwich_StructSize16Alignment8Table},
};
const struct FidlCodedUnion test_unionsandwich_UnionSize24Alignment8Table = {
    .tag = kFidlTypeUnion,
    .name = "test.unionsandwich/UnionSize24Alignment8",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields40test_unionsandwich_UnionSize24Alignment8,
    .field_count = 1,
};
const struct FidlCodedUnion test_unionsandwich_UnionSize24Alignment8NullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.unionsandwich/UnionSize24Alignment8",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields40test_unionsandwich_UnionSize24Alignment8,
    .field_count = 1,
};

static const struct FidlUnionField Fields40test_unionsandwich_UnionSize36Alignment4[] = {
    {.type = (const fidl_type_t*)&Array32_20fidl_internal_kUint8Table},
};
const struct FidlCodedUnion test_unionsandwich_UnionSize36Alignment4Table = {
    .tag = kFidlTypeUnion,
    .name = "test.unionsandwich/UnionSize36Alignment4",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields40test_unionsandwich_UnionSize36Alignment4,
    .field_count = 1,
};
const struct FidlCodedUnion test_unionsandwich_UnionSize36Alignment4NullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.unionsandwich/UnionSize36Alignment4",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields40test_unionsandwich_UnionSize36Alignment4,
    .field_count = 1,
};

static const struct FidlUnionField Fields39test_unionsandwich_UnionSize8Alignment4[] = {
    {.type = (const fidl_type_t*)&fidl_internal_kUint32Table},
};
const struct FidlCodedUnion test_unionsandwich_UnionSize8Alignment4Table = {
    .tag = kFidlTypeUnion,
    .name = "test.unionsandwich/UnionSize8Alignment4",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields39test_unionsandwich_UnionSize8Alignment4,
    .field_count = 1,
};
const struct FidlCodedUnion test_unionsandwich_UnionSize8Alignment4NullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.unionsandwich/UnionSize8Alignment4",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields39test_unionsandwich_UnionSize8Alignment4,
    .field_count = 1,
};

static const struct FidlCodedArray Array6_20fidl_internal_kUint8Table = {
    .tag = kFidlTypeArray,
    .element = (const fidl_type_t*)&fidl_internal_kUint8Table,
    .array_size_v2 = 6,
    .element_size_v2 = 1,
};

static const struct FidlCodedArray Array32_20fidl_internal_kUint8Table = {
    .tag = kFidlTypeArray,
    .element = (const fidl_type_t*)&fidl_internal_kUint8Table,
    .array_size_v2 = 32,
    .element_size_v2 = 1,
};
