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

// fidl_experiment = output_index_json

#include <lib/fidl/internal.h>

const struct FidlCodedBits test_versions_BitsTable = {
    .tag = kFidlTypeBits,
    .name = "test.versions/Bits",
    .underlying_type = kFidlCodedPrimitiveSubtype_Uint32,
    .strictness = kFidlStrictness_Flexible,
    .mask = 0x1,
};

const struct FidlCodedEnum test_versions_EnumTable = {
    .tag = kFidlTypeEnum,
    .name = "test.versions/Enum",
    .underlying_type = kFidlCodedPrimitiveSubtype_Uint32,
    .strictness = kFidlStrictness_Flexible,
    .validate = NULL,
};

const struct FidlCodedStruct test_versions_StructTable = {
    .tag = kFidlTypeStruct,
    .name = "test.versions/Struct",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 4,
    .elements = NULL,
    .element_count = 0,
};

static const struct FidlTableField Fields19test_versions_Table[] = {
    {.ordinal = 1, .type = (const fidl_type_t*)&fidl_internal_kUint32Table},
};
const struct FidlCodedTable test_versions_TableTable = {
    .tag = kFidlTypeTable,
    .name = "test.versions/Table",
    .is_resource = kFidlIsResource_NotResource,
    .fields = Fields19test_versions_Table,
    .field_count = 1,
};

static const struct FidlUnionField Fields19test_versions_Union[] = {
    {.type = (const fidl_type_t*)&fidl_internal_kUint32Table},
};
const struct FidlCodedUnion test_versions_UnionTable = {
    .tag = kFidlTypeUnion,
    .name = "test.versions/Union",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields19test_versions_Union,
    .field_count = 1,
};
const struct FidlCodedUnion test_versions_UnionNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.versions/Union",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields19test_versions_Union,
    .field_count = 1,
};
