// Copyright 2022 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// GENERATED FILE: Regen with "fx regen_fidl_benchmark_suite"

// Table with 1 field all unset
benchmark("Table/Unset/1") {
    bindings_allowlist = [llcpp, hlcpp, cpp, go, walker, reference, dart],
    value = Table1Struct{
        value: Table1{},
    },
}

// Table with 16 fields all unset
benchmark("Table/Unset/16") {
    bindings_allowlist = [llcpp, hlcpp, cpp, go, walker, reference, dart],
    value = Table16Struct{
        value: Table16{},
    },
}

// Table with 63 fields all unset
benchmark("Table/Unset/63") {
    bindings_allowlist = [llcpp, hlcpp, cpp, rust, go, walker, reference, dart],
    value = Table63Struct{
        value: Table63{},
    },
}
