wit-bindgen-cli 0.57.0

CLI tool to generate bindings for WIT documents and the component model.
#include <assert.h>
#include <test_cpp.h>

using namespace exports::test::fixed_length_lists;

void to_test::ListParam(std::array<uint32_t, 4> a) {
    std::array<uint32_t, 4> b = std::array<uint32_t, 4>{1, 2, 3, 4};
    assert(a == b);
}
void to_test::ListParam2(std::array<std::array<uint32_t, 2>, 2> a) {
    std::array<std::array<uint32_t, 2>, 2> b = std::array<std::array<uint32_t, 2>, 2>{std::array<uint32_t, 2>{1, 2}, std::array<uint32_t, 2>{3, 4}};
    assert(a == b);
}
void to_test::ListParam3(std::array<int32_t, 20> a) {
    std::array<int32_t, 20> b = std::array<int32_t, 20>{-1, 2, -3, 4, -5, 6, -7, 8, -9, 10, -11, 12, -13, 14, -15, 16, -17, 18, -19, 20};
    assert(a == b);
}
std::array<uint8_t, 8> to_test::ListResult() {
    return std::array<uint8_t, 8>{'0', '1', 'A', 'B', 'a', 'b', 128, 255};
}
std::tuple<std::array<uint16_t, 4>, std::array<int16_t, 4>>
to_test::ListMinmax16(std::array<uint16_t, 4> a, std::array<int16_t, 4> b) {
    return std::tuple<std::array<uint16_t, 4>, std::array<int16_t, 4>>(a, b);
}
std::tuple<std::array<float, 2>, std::array<double, 2>>
to_test::ListMinmaxFloat(std::array<float, 2> a, std::array<double, 2> b) {
    return std::tuple<std::array<float, 2>, std::array<double, 2>>(a,b);
}
std::array<uint8_t, 12> to_test::ListRoundtrip(std::array<uint8_t, 12> a) {
    return a;
}

std::tuple<std::array<std::array<uint32_t, 2>, 2>,
           std::array<std::array<int32_t, 2>, 2>>
to_test::NestedRoundtrip(std::array<std::array<uint32_t, 2>, 2> a,
                std::array<std::array<int32_t, 2>, 2> b) {
    return std::tuple<std::array<std::array<uint32_t, 2>, 2>,
           std::array<std::array<int32_t, 2>, 2>>(a, b);
}

std::tuple<std::array<std::array<uint32_t, 2>, 2>,
           std::array<std::array<int32_t, 4>, 4>>
to_test::LargeRoundtrip(std::array<std::array<uint32_t, 2>, 2> a,
               std::array<std::array<int32_t, 4>, 4> b) {
    return std::tuple<std::array<std::array<uint32_t, 2>, 2>,
           std::array<std::array<int32_t, 4>, 4>>(a, b);
}
std::array<to_test::Nested, 2>
to_test::NightmareOnCpp(std::array<to_test::Nested, 2> a) {
    return a;
}