blob: c9712d6cf6a801ee48c13fafa52eda4009bd80ad [file] [log] [blame]
// WARNING: This file is machine generated by fidlgen.
#pragma once
#include <fidl/test/requestflexibleenvelope/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 StrictFoo = ::fidl::test::requestflexibleenvelope::StrictFoo;
using FlexibleFoo = ::fidl::test::requestflexibleenvelope::FlexibleFoo;
template <>
struct MinSize<StrictFoo> {
operator size_t() {
size_t sizes[] = {0, MinSize<::std::string>(), MinSize<int32_t>()};
return 1 + *std::max_element(sizes, sizes + 2 + 1);
}
};
template <>
struct Allocate<StrictFoo> {
static_assert(2 > 0, "xunion must have at least one member");
StrictFoo operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<StrictFoo>());
uint8_t selector;
ZX_ASSERT(src->CopyBytes(&selector, 1));
(*size)++;
StrictFoo out;
switch (selector % 2) {
case 0: {
out.set_s(Allocate<::std::string>{}(src, size));
break;
}
case 1: {
out.set_i(Allocate<int32_t>{}(src, size));
break;
}
}
return out;
}
};
template <>
struct MinSize<FlexibleFoo> {
operator size_t() {
size_t sizes[] = {0, MinSize<::std::string>(), MinSize<int32_t>()};
return 1 + *std::max_element(sizes, sizes + 2 + 1);
}
};
template <>
struct Allocate<FlexibleFoo> {
static_assert(2 > 0, "xunion must have at least one member");
FlexibleFoo operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<FlexibleFoo>());
uint8_t selector;
ZX_ASSERT(src->CopyBytes(&selector, 1));
(*size)++;
FlexibleFoo out;
switch (selector % 2) {
case 0: {
out.set_s(Allocate<::std::string>{}(src, size));
break;
}
case 1: {
out.set_i(Allocate<int32_t>{}(src, size));
break;
}
}
return out;
}
};
} // namespace fuzzing