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

// fidl_experiment = output_index_json

#include <lib/fidl/internal.h>

const struct FidlCodedEnum test_anonymous_OpTable;
const struct FidlCodedUnion test_anonymous_ExpressionNullableRefTable;
const struct FidlCodedUnion test_anonymous_UnionMemberTable;
const struct FidlCodedTable test_anonymous_TableMemberTable;
const struct FidlCodedBits test_anonymous_BitsMemberTable;
static const struct FidlCodedString String100notnullableTable;
static const struct FidlCodedVector Vector5notnullable_36test_anonymous_ExpressionNullableRefTable;
const struct FidlCodedBits test_anonymous_FlagsTable;
static const struct FidlCodedVector Vector10notnullable_24test_anonymous_TableDataTable;
const struct FidlCodedStruct test_anonymous_TableDataTable;
const struct FidlCodedStruct test_anonymous_OverrideTestTable;
const struct FidlCodedTable test_anonymous_FunctionApplicationTable;
const struct FidlCodedStruct test_anonymous_SomeProtocol_SomeMethod_ResponseTable;
const struct FidlCodedEnum test_anonymous_SomeProtocol_SomeMethod_ErrorTable;

const struct FidlCodedBits test_anonymous_BitsMemberTable = {
    .tag = kFidlTypeBits,
    .name = "test.anonymous/BitsMember",
    .underlying_type = kFidlCodedPrimitiveSubtype_Uint32,
    .strictness = kFidlStrictness_Flexible,
    .mask = 0x3,
};

const struct FidlCodedBits test_anonymous_FlagsTable = {
    .tag = kFidlTypeBits,
    .name = "test.anonymous/Flags",
    .underlying_type = kFidlCodedPrimitiveSubtype_Uint16,
    .strictness = kFidlStrictness_Flexible,
    .mask = 0x1,
};

const struct FidlCodedEnum test_anonymous_OpTable = {
    .tag = kFidlTypeEnum,
    .name = "test.anonymous/Op",
    .underlying_type = kFidlCodedPrimitiveSubtype_Uint32,
    .strictness = kFidlStrictness_Flexible,
    .validate = NULL,
};

const struct FidlCodedEnum test_anonymous_SomeProtocol_SomeMethod_ErrorTable = {
    .tag = kFidlTypeEnum,
    .name = "test.anonymous/SomeProtocol_SomeMethod_Error",
    .underlying_type = kFidlCodedPrimitiveSubtype_Uint32,
    .strictness = kFidlStrictness_Flexible,
    .validate = NULL,
};

static const struct FidlStructElement Fields27test_anonymous_OverrideTest[] = {
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 0,
            .field_type = (const fidl_type_t*)&test_anonymous_OpTable,
        },
    },
    {
        .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_anonymous_ExpressionNullableRefTable,
        },
    },
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 24,
            .field_type = (const fidl_type_t*)&test_anonymous_ExpressionNullableRefTable,
        },
    },
};
const struct FidlCodedStruct test_anonymous_OverrideTestTable = {
    .tag = kFidlTypeStruct,
    .name = "test.anonymous/OverrideTest",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 40,
    .elements = Fields27test_anonymous_OverrideTest,
    .element_count = 4,
};

static const struct FidlStructElement Fields44test_anonymous_SomeProtocolSomeMethodRequest[] = {
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 0,
            .field_type = (const fidl_type_t*)&test_anonymous_UnionMemberTable,
        },
    },
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 16,
            .field_type = (const fidl_type_t*)&test_anonymous_TableMemberTable,
        },
    },
};
const struct FidlCodedStruct test_anonymous_SomeProtocolSomeMethodRequestTable = {
    .tag = kFidlTypeStruct,
    .name = "test.anonymous/SomeProtocolSomeMethodRequest",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 32,
    .elements = Fields44test_anonymous_SomeProtocolSomeMethodRequest,
    .element_count = 2,
};

static const struct FidlStructElement Fields47test_anonymous_SomeProtocol_SomeMethod_Response[] = {
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 0,
            .field_type = (const fidl_type_t*)&test_anonymous_BitsMemberTable,
        },
    },
};
const struct FidlCodedStruct test_anonymous_SomeProtocol_SomeMethod_ResponseTable = {
    .tag = kFidlTypeStruct,
    .name = "test.anonymous/SomeProtocol_SomeMethod_Response",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 4,
    .elements = Fields47test_anonymous_SomeProtocol_SomeMethod_Response,
    .element_count = 1,
};

const struct FidlCodedStruct test_anonymous_TableDataTable = {
    .tag = kFidlTypeStruct,
    .name = "test.anonymous/TableData",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 1,
    .elements = NULL,
    .element_count = 0,
};

static const struct FidlTableField Fields34test_anonymous_FunctionApplication[] = {
    {.ordinal = 1, .type = (const fidl_type_t*)&String100notnullableTable},
    {.ordinal = 3, .type = (const fidl_type_t*)&Vector5notnullable_36test_anonymous_ExpressionNullableRefTable},
    {.ordinal = 4, .type = (const fidl_type_t*)&test_anonymous_FlagsTable},
};
const struct FidlCodedTable test_anonymous_FunctionApplicationTable = {
    .tag = kFidlTypeTable,
    .name = "test.anonymous/FunctionApplication",
    .is_resource = kFidlIsResource_NotResource,
    .fields = Fields34test_anonymous_FunctionApplication,
    .field_count = 3,
};

static const struct FidlTableField Fields26test_anonymous_TableMember[] = {
    {.ordinal = 2, .type = (const fidl_type_t*)&Vector10notnullable_24test_anonymous_TableDataTable},
};
const struct FidlCodedTable test_anonymous_TableMemberTable = {
    .tag = kFidlTypeTable,
    .name = "test.anonymous/TableMember",
    .is_resource = kFidlIsResource_NotResource,
    .fields = Fields26test_anonymous_TableMember,
    .field_count = 1,
};

static const struct FidlUnionField Fields25test_anonymous_Expression[] = {
    {.type = (const fidl_type_t*)&fidl_internal_kUint64Table},
    {.type = (const fidl_type_t*)&test_anonymous_OverrideTestTable},
    {.type = (const fidl_type_t*)&test_anonymous_FunctionApplicationTable},
};
const struct FidlCodedUnion test_anonymous_ExpressionTable = {
    .tag = kFidlTypeUnion,
    .name = "test.anonymous/Expression",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields25test_anonymous_Expression,
    .field_count = 3,
};
const struct FidlCodedUnion test_anonymous_ExpressionNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.anonymous/Expression",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields25test_anonymous_Expression,
    .field_count = 3,
};

static const struct FidlUnionField Fields45test_anonymous_SomeProtocol_SomeMethod_Result[] = {
    {.type = (const fidl_type_t*)&test_anonymous_SomeProtocol_SomeMethod_ResponseTable},
    {.type = (const fidl_type_t*)&test_anonymous_SomeProtocol_SomeMethod_ErrorTable},
};
const struct FidlCodedUnion test_anonymous_SomeProtocol_SomeMethod_ResultTable = {
    .tag = kFidlTypeUnion,
    .name = "test.anonymous/SomeProtocol_SomeMethod_Result",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields45test_anonymous_SomeProtocol_SomeMethod_Result,
    .field_count = 2,
};
const struct FidlCodedUnion test_anonymous_SomeProtocol_SomeMethod_ResultNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.anonymous/SomeProtocol_SomeMethod_Result",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields45test_anonymous_SomeProtocol_SomeMethod_Result,
    .field_count = 2,
};

static const struct FidlUnionField Fields26test_anonymous_UnionMember[] = {
    {.type = NULL},
    {.type = (const fidl_type_t*)&fidl_internal_kUint8Table},
};
const struct FidlCodedUnion test_anonymous_UnionMemberTable = {
    .tag = kFidlTypeUnion,
    .name = "test.anonymous/UnionMember",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields26test_anonymous_UnionMember,
    .field_count = 2,
};
const struct FidlCodedUnion test_anonymous_UnionMemberNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.anonymous/UnionMember",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields26test_anonymous_UnionMember,
    .field_count = 2,
};

static const struct FidlCodedVector Vector5notnullable_36test_anonymous_ExpressionNullableRefTable = {
    .tag = kFidlTypeVector,
    .element = (const fidl_type_t*)&test_anonymous_ExpressionNullableRefTable,
    .max_count = 5,
    .nullable = kFidlNullability_Nonnullable,
    .element_size_v2 = 16,
};

static const struct FidlCodedVector Vector10notnullable_24test_anonymous_TableDataTable = {
    .tag = kFidlTypeVector,
    .element = (const fidl_type_t*)&test_anonymous_TableDataTable,
    .max_count = 10,
    .nullable = kFidlNullability_Nonnullable,
    .element_size_v2 = 1,
};

static const struct FidlCodedString String100notnullableTable = {
    .tag = kFidlTypeString,
    .max_size = 100,
    .nullable = kFidlNullability_Nonnullable,
};
