blob: 9449184a624508a52bb7522910a685d8963aa5ff [file] [log] [blame]
// WARNING: This file is machine generated by fidlgen.
// fidl_experiment = output_index_json
#pragma once
#include <test/struct/cpp/fidl.h>
#include "lib/fidl/cpp/fuzzing/traits.h"
#include "lib/fidl/cpp/internal/header.h"
// For ::std::max_element().
#include <algorithm>
// For uint64_t.
#include <stdint.h>
namespace fuzzing {
using Simple = ::test::struct_::Simple;
using BasicStruct = ::test::struct_::BasicStruct;
template <>
struct MinSize<Simple> {
operator size_t() {
return MinSize<uint8_t>() + MinSize<bool>();
}
};
template <>
struct Allocate<Simple> {
Simple operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<Simple>());
Simple out;
const size_t slack_per_member = (*size - MinSize<Simple>()) / 2;
size_t out_size;
out_size = MinSize<uint8_t>() + slack_per_member;
out.f1 = Allocate<uint8_t>{}(src, &out_size);
out_size = MinSize<bool>() + slack_per_member;
out.f2 = Allocate<bool>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<BasicStruct> {
operator size_t() {
return MinSize<uint32_t>() + MinSize<::std::string>();
}
};
template <>
struct Allocate<BasicStruct> {
BasicStruct operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<BasicStruct>());
BasicStruct out;
const size_t slack_per_member = (*size - MinSize<BasicStruct>()) / 2;
size_t out_size;
out_size = MinSize<uint32_t>() + slack_per_member;
out.x = Allocate<uint32_t>{}(src, &out_size);
out_size = MinSize<::std::string>() + slack_per_member;
out.y = Allocate<::std::string>{}(src, &out_size);
return out;
}
};
} // namespace fuzzing