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

// fidl_experiment = output_index_json

#include <lib/fidl/internal.h>

const struct FidlCodedUnion test_protocollayouts_MainProtocol_TwoWayAnonWithError_ResponseTable;
extern const struct FidlCodedUnion test_protocollayouts_imported_ImportUnionPayloadTable;
const struct FidlCodedUnion test_protocollayouts_LocalUnionPayloadTable;

static const struct FidlTableField Fields38test_protocollayouts_LocalTablePayload[] = {
    {.ordinal = 1, .type = (const fidl_type_t*)&fidl_internal_kUint16Table},
};
const struct FidlCodedTable test_protocollayouts_LocalTablePayloadTable = {
    .tag = kFidlTypeTable,
    .name = "test.protocollayouts/LocalTablePayload",
    .is_resource = kFidlIsResource_NotResource,
    .fields = Fields38test_protocollayouts_LocalTablePayload,
    .field_count = 1,
};

static const struct FidlTableField Fields50test_protocollayouts_MainProtocolOneWayAnonRequest[] = {
    {.ordinal = 1, .type = (const fidl_type_t*)&fidl_internal_kUint16Table},
};
const struct FidlCodedTable test_protocollayouts_MainProtocolOneWayAnonRequestTable = {
    .tag = kFidlTypeTable,
    .name = "test.protocollayouts/MainProtocolOneWayAnonRequest",
    .is_resource = kFidlIsResource_NotResource,
    .fields = Fields50test_protocollayouts_MainProtocolOneWayAnonRequest,
    .field_count = 1,
};

static const struct FidlTableField Fields51test_protocollayouts_MainProtocolTwoWayAnonResponse[] = {
    {.ordinal = 1, .type = (const fidl_type_t*)&fidl_internal_kUint16Table},
};
const struct FidlCodedTable test_protocollayouts_MainProtocolTwoWayAnonResponseTable = {
    .tag = kFidlTypeTable,
    .name = "test.protocollayouts/MainProtocolTwoWayAnonResponse",
    .is_resource = kFidlIsResource_NotResource,
    .fields = Fields51test_protocollayouts_MainProtocolTwoWayAnonResponse,
    .field_count = 1,
};

static const struct FidlTableField Fields59test_protocollayouts_MainProtocolTwoWayAnonWithErrorRequest[] = {
    {.ordinal = 1, .type = (const fidl_type_t*)&fidl_internal_kUint16Table},
};
const struct FidlCodedTable test_protocollayouts_MainProtocolTwoWayAnonWithErrorRequestTable = {
    .tag = kFidlTypeTable,
    .name = "test.protocollayouts/MainProtocolTwoWayAnonWithErrorRequest",
    .is_resource = kFidlIsResource_NotResource,
    .fields = Fields59test_protocollayouts_MainProtocolTwoWayAnonWithErrorRequest,
    .field_count = 1,
};

static const struct FidlUnionField Fields38test_protocollayouts_LocalUnionPayload[] = {
    {.type = (const fidl_type_t*)&fidl_internal_kBoolTable},
};
const struct FidlCodedUnion test_protocollayouts_LocalUnionPayloadTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocollayouts/LocalUnionPayload",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields38test_protocollayouts_LocalUnionPayload,
    .field_count = 1,
};
const struct FidlCodedUnion test_protocollayouts_LocalUnionPayloadNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocollayouts/LocalUnionPayload",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields38test_protocollayouts_LocalUnionPayload,
    .field_count = 1,
};

static const struct FidlUnionField Fields46test_protocollayouts_MainProtocolOnAnonRequest[] = {
    {.type = (const fidl_type_t*)&fidl_internal_kBoolTable},
};
const struct FidlCodedUnion test_protocollayouts_MainProtocolOnAnonRequestTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocollayouts/MainProtocolOnAnonRequest",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields46test_protocollayouts_MainProtocolOnAnonRequest,
    .field_count = 1,
};
const struct FidlCodedUnion test_protocollayouts_MainProtocolOnAnonRequestNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocollayouts/MainProtocolOnAnonRequest",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields46test_protocollayouts_MainProtocolOnAnonRequest,
    .field_count = 1,
};

static const struct FidlUnionField Fields50test_protocollayouts_MainProtocolTwoWayAnonRequest[] = {
    {.type = (const fidl_type_t*)&fidl_internal_kBoolTable},
};
const struct FidlCodedUnion test_protocollayouts_MainProtocolTwoWayAnonRequestTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocollayouts/MainProtocolTwoWayAnonRequest",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields50test_protocollayouts_MainProtocolTwoWayAnonRequest,
    .field_count = 1,
};
const struct FidlCodedUnion test_protocollayouts_MainProtocolTwoWayAnonRequestNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocollayouts/MainProtocolTwoWayAnonRequest",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields50test_protocollayouts_MainProtocolTwoWayAnonRequest,
    .field_count = 1,
};

static const struct FidlUnionField Fields62test_protocollayouts_MainProtocol_TwoWayAnonWithError_Response[] = {
    {.type = (const fidl_type_t*)&fidl_internal_kBoolTable},
};
const struct FidlCodedUnion test_protocollayouts_MainProtocol_TwoWayAnonWithError_ResponseTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocollayouts/MainProtocol_TwoWayAnonWithError_Response",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields62test_protocollayouts_MainProtocol_TwoWayAnonWithError_Response,
    .field_count = 1,
};
const struct FidlCodedUnion test_protocollayouts_MainProtocol_TwoWayAnonWithError_ResponseNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocollayouts/MainProtocol_TwoWayAnonWithError_Response",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields62test_protocollayouts_MainProtocol_TwoWayAnonWithError_Response,
    .field_count = 1,
};

static const struct FidlUnionField Fields60test_protocollayouts_MainProtocol_TwoWayAnonWithError_Result[] = {
    {.type = (const fidl_type_t*)&test_protocollayouts_MainProtocol_TwoWayAnonWithError_ResponseTable},
    {.type = (const fidl_type_t*)&fidl_internal_kUint32Table},
};
const struct FidlCodedUnion test_protocollayouts_MainProtocol_TwoWayAnonWithError_ResultTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocollayouts/MainProtocol_TwoWayAnonWithError_Result",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields60test_protocollayouts_MainProtocol_TwoWayAnonWithError_Result,
    .field_count = 2,
};
const struct FidlCodedUnion test_protocollayouts_MainProtocol_TwoWayAnonWithError_ResultNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocollayouts/MainProtocol_TwoWayAnonWithError_Result",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields60test_protocollayouts_MainProtocol_TwoWayAnonWithError_Result,
    .field_count = 2,
};

static const struct FidlUnionField Fields62test_protocollayouts_MainProtocol_TwoWayImportWithError_Result[] = {
    {.type = (const fidl_type_t*)&test_protocollayouts_imported_ImportUnionPayloadTable},
    {.type = (const fidl_type_t*)&fidl_internal_kUint32Table},
};
const struct FidlCodedUnion test_protocollayouts_MainProtocol_TwoWayImportWithError_ResultTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocollayouts/MainProtocol_TwoWayImportWithError_Result",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields62test_protocollayouts_MainProtocol_TwoWayImportWithError_Result,
    .field_count = 2,
};
const struct FidlCodedUnion test_protocollayouts_MainProtocol_TwoWayImportWithError_ResultNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocollayouts/MainProtocol_TwoWayImportWithError_Result",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields62test_protocollayouts_MainProtocol_TwoWayImportWithError_Result,
    .field_count = 2,
};

static const struct FidlUnionField Fields61test_protocollayouts_MainProtocol_TwoWayLocalWithError_Result[] = {
    {.type = (const fidl_type_t*)&test_protocollayouts_LocalUnionPayloadTable},
    {.type = (const fidl_type_t*)&fidl_internal_kUint32Table},
};
const struct FidlCodedUnion test_protocollayouts_MainProtocol_TwoWayLocalWithError_ResultTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocollayouts/MainProtocol_TwoWayLocalWithError_Result",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields61test_protocollayouts_MainProtocol_TwoWayLocalWithError_Result,
    .field_count = 2,
};
const struct FidlCodedUnion test_protocollayouts_MainProtocol_TwoWayLocalWithError_ResultNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocollayouts/MainProtocol_TwoWayLocalWithError_Result",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields61test_protocollayouts_MainProtocol_TwoWayLocalWithError_Result,
    .field_count = 2,
};
