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

// fidl_experiment = output_index_json

#include <lib/fidl/internal.h>

static const struct FidlCodedVector Vectorunboundednotnullable_20fidl_internal_kUint8Table;
static const struct FidlCodedVector Vectorunboundednotnullable_48Vectorunboundednotnullable_19fidl_internal_kBoolTable;
static const struct FidlCodedVector Vectorunboundednotnullable_19fidl_internal_kBoolTable;

static const struct FidlStructElement Fields32test_vectors_ExampleUseOfVectors[] = {
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 0,
            .field_type = (const fidl_type_t*)&Vectorunboundednotnullable_20fidl_internal_kUint8Table,
        },
    },
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 16,
            .field_type = (const fidl_type_t*)&Vectorunboundednotnullable_48Vectorunboundednotnullable_19fidl_internal_kBoolTable,
        },
    },
};
const struct FidlCodedStruct test_vectors_ExampleUseOfVectorsTable = {
    .tag = kFidlTypeStruct,
    .name = "test.vectors/ExampleUseOfVectors",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 32,
    .elements = Fields32test_vectors_ExampleUseOfVectors,
    .element_count = 2,
};

static const struct FidlCodedVector Vectorunboundednotnullable_20fidl_internal_kUint8Table = {
    .tag = kFidlTypeVector,
    .element = (const fidl_type_t*)&fidl_internal_kUint8Table,
    .max_count = 4294967295,
    .nullable = kFidlNullability_Nonnullable,
    .element_size_v2 = 1,
};

static const struct FidlCodedVector Vectorunboundednotnullable_19fidl_internal_kBoolTable = {
    .tag = kFidlTypeVector,
    .element = (const fidl_type_t*)&fidl_internal_kBoolTable,
    .max_count = 4294967295,
    .nullable = kFidlNullability_Nonnullable,
    .element_size_v2 = 1,
};

static const struct FidlCodedVector Vectorunboundednotnullable_48Vectorunboundednotnullable_19fidl_internal_kBoolTable = {
    .tag = kFidlTypeVector,
    .element = (const fidl_type_t*)&Vectorunboundednotnullable_19fidl_internal_kBoolTable,
    .max_count = 4294967295,
    .nullable = kFidlNullability_Nonnullable,
    .element_size_v2 = 16,
};
