blob: 9724e07b8655ee0b4d4f4224fd5bbee6f232a714 [file] [log] [blame]
// WARNING: This file is machine generated by fidlgen.
#pragma once
#include <test/protocols/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 WithProtocolEndsServerEndsTopResponse = ::test::protocols::WithProtocolEndsServerEndsTopResponse;
using WithProtocolEndsServerEndsRequest = ::test::protocols::WithProtocolEndsServerEndsRequest;
using WithProtocolEndsClientEndsTopResponse = ::test::protocols::WithProtocolEndsClientEndsTopResponse;
using WithProtocolEndsClientEndsRequest = ::test::protocols::WithProtocolEndsClientEndsRequest;
using WithErrorSyntax_ResponseAsStruct_Response = ::test::protocols::WithErrorSyntax_ResponseAsStruct_Response;
using WithErrorSyntax_ResponseAsStruct_Result = ::test::protocols::WithErrorSyntax_ResponseAsStruct_Result;
using WithErrorSyntaxResponseAsStructTopResponse = ::test::protocols::WithErrorSyntaxResponseAsStructTopResponse;
using WithErrorSyntax_HandleInResult_Response = ::test::protocols::WithErrorSyntax_HandleInResult_Response;
using WithErrorSyntax_HandleInResult_Result = ::test::protocols::WithErrorSyntax_HandleInResult_Result;
using WithErrorSyntaxHandleInResultTopResponse = ::test::protocols::WithErrorSyntaxHandleInResultTopResponse;
using WithErrorSyntax_ErrorAsPrimitive_Response = ::test::protocols::WithErrorSyntax_ErrorAsPrimitive_Response;
using WithErrorSyntax_ErrorAsPrimitive_Result = ::test::protocols::WithErrorSyntax_ErrorAsPrimitive_Result;
using WithErrorSyntaxErrorAsPrimitiveTopResponse = ::test::protocols::WithErrorSyntaxErrorAsPrimitiveTopResponse;
using WithErrorSyntax_ErrorAsEnum_Response = ::test::protocols::WithErrorSyntax_ErrorAsEnum_Response;
using WithAndWithoutRequestResponseWithRequestWithResponseTopResponse = ::test::protocols::WithAndWithoutRequestResponseWithRequestWithResponseTopResponse;
using WithAndWithoutRequestResponseWithRequestWithResponseRequest = ::test::protocols::WithAndWithoutRequestResponseWithRequestWithResponseRequest;
using WithAndWithoutRequestResponseWithRequestNoResponseRequest = ::test::protocols::WithAndWithoutRequestResponseWithRequestNoResponseRequest;
using WithAndWithoutRequestResponseWithRequestEmptyResponseRequest = ::test::protocols::WithAndWithoutRequestResponseWithRequestEmptyResponseRequest;
using WithAndWithoutRequestResponseOnWithResponseRequest = ::test::protocols::WithAndWithoutRequestResponseOnWithResponseRequest;
using WithAndWithoutRequestResponseNoRequestWithResponseTopResponse = ::test::protocols::WithAndWithoutRequestResponseNoRequestWithResponseTopResponse;
using TransitionalRequestTopResponse = ::test::protocols::TransitionalRequestTopResponse;
using TransitionalRequestRequest = ::test::protocols::TransitionalRequestRequest;
using TransitionalOneWayRequest = ::test::protocols::TransitionalOneWayRequest;
using TransitionalEventRequest = ::test::protocols::TransitionalEventRequest;
using TheUnion = ::test::protocols::TheUnion;
using MethodWithUnionUnionMethodRequest = ::test::protocols::MethodWithUnionUnionMethodRequest;
using SyscallProtocolMethodCRequest = ::test::protocols::SyscallProtocolMethodCRequest;
using ProtocolEnds = ::test::protocols::ProtocolEnds;
using WithProtocolEndsStructContainingEndsTopResponse = ::test::protocols::WithProtocolEndsStructContainingEndsTopResponse;
using WithProtocolEndsStructContainingEndsRequest = ::test::protocols::WithProtocolEndsStructContainingEndsRequest;
using MethodWithUnionUnionMethodTopResponse = ::test::protocols::MethodWithUnionUnionMethodTopResponse;
using ManyParametersFifteenRequest = ::test::protocols::ManyParametersFifteenRequest;
using HandleRightsProtocolResponseMethodTopResponse = ::test::protocols::HandleRightsProtocolResponseMethodTopResponse;
using HandleRightsProtocolResponseMethodRequest = ::test::protocols::HandleRightsProtocolResponseMethodRequest;
using HandleRightsProtocolNoResponseMethodRequest = ::test::protocols::HandleRightsProtocolNoResponseMethodRequest;
using HandleRightsProtocolAnEventRequest = ::test::protocols::HandleRightsProtocolAnEventRequest;
using ErrorEnum = ::test::protocols::ErrorEnum;
using WithErrorSyntax_ErrorAsEnum_Result = ::test::protocols::WithErrorSyntax_ErrorAsEnum_Result;
using WithErrorSyntaxErrorAsEnumTopResponse = ::test::protocols::WithErrorSyntaxErrorAsEnumTopResponse;
using ChannelProtocolTakeHandleRequest = ::test::protocols::ChannelProtocolTakeHandleRequest;
using ChannelProtocolMutateSocketTopResponse = ::test::protocols::ChannelProtocolMutateSocketTopResponse;
using ChannelProtocolMutateSocketRequest = ::test::protocols::ChannelProtocolMutateSocketRequest;
using ChannelProtocolMethodBTopResponse = ::test::protocols::ChannelProtocolMethodBTopResponse;
using ChannelProtocolMethodBRequest = ::test::protocols::ChannelProtocolMethodBRequest;
using ChannelProtocolMethodARequest = ::test::protocols::ChannelProtocolMethodARequest;
using ChannelProtocolEventARequest = ::test::protocols::ChannelProtocolEventARequest;
template <>
struct MinSize<WithProtocolEndsServerEndsTopResponse> {
operator size_t() {
return MinSize<::fidl::InterfaceRequest<::test::protocols::DiscoverableProtocol>>();
}
};
template <>
struct Allocate<WithProtocolEndsServerEndsTopResponse> {
WithProtocolEndsServerEndsTopResponse operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<WithProtocolEndsServerEndsTopResponse>());
WithProtocolEndsServerEndsTopResponse out;
const size_t slack_per_member = (*size - MinSize<WithProtocolEndsServerEndsTopResponse>()) / 1;
size_t out_size;
out_size = MinSize<::fidl::InterfaceRequest<::test::protocols::DiscoverableProtocol>>() + slack_per_member;
out.out = Allocate<::fidl::InterfaceRequest<::test::protocols::DiscoverableProtocol>>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<WithProtocolEndsServerEndsRequest> {
operator size_t() {
return MinSize<::fidl::InterfaceRequest<::test::protocols::DiscoverableProtocol>>();
}
};
template <>
struct Allocate<WithProtocolEndsServerEndsRequest> {
WithProtocolEndsServerEndsRequest operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<WithProtocolEndsServerEndsRequest>());
WithProtocolEndsServerEndsRequest out;
const size_t slack_per_member = (*size - MinSize<WithProtocolEndsServerEndsRequest>()) / 1;
size_t out_size;
out_size = MinSize<::fidl::InterfaceRequest<::test::protocols::DiscoverableProtocol>>() + slack_per_member;
out.in = Allocate<::fidl::InterfaceRequest<::test::protocols::DiscoverableProtocol>>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<WithProtocolEndsClientEndsTopResponse> {
operator size_t() {
return MinSize<::fidl::InterfaceHandle<::test::protocols::DiscoverableProtocol>>();
}
};
template <>
struct Allocate<WithProtocolEndsClientEndsTopResponse> {
WithProtocolEndsClientEndsTopResponse operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<WithProtocolEndsClientEndsTopResponse>());
WithProtocolEndsClientEndsTopResponse out;
const size_t slack_per_member = (*size - MinSize<WithProtocolEndsClientEndsTopResponse>()) / 1;
size_t out_size;
out_size = MinSize<::fidl::InterfaceHandle<::test::protocols::DiscoverableProtocol>>() + slack_per_member;
out.out = Allocate<::fidl::InterfaceHandle<::test::protocols::DiscoverableProtocol>>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<WithProtocolEndsClientEndsRequest> {
operator size_t() {
return MinSize<::fidl::InterfaceHandle<::test::protocols::DiscoverableProtocol>>();
}
};
template <>
struct Allocate<WithProtocolEndsClientEndsRequest> {
WithProtocolEndsClientEndsRequest operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<WithProtocolEndsClientEndsRequest>());
WithProtocolEndsClientEndsRequest out;
const size_t slack_per_member = (*size - MinSize<WithProtocolEndsClientEndsRequest>()) / 1;
size_t out_size;
out_size = MinSize<::fidl::InterfaceHandle<::test::protocols::DiscoverableProtocol>>() + slack_per_member;
out.in = Allocate<::fidl::InterfaceHandle<::test::protocols::DiscoverableProtocol>>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<WithErrorSyntax_ResponseAsStruct_Response> {
operator size_t() {
return MinSize<int64_t>() + MinSize<int64_t>() + MinSize<int64_t>();
}
};
template <>
struct Allocate<WithErrorSyntax_ResponseAsStruct_Response> {
WithErrorSyntax_ResponseAsStruct_Response operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<WithErrorSyntax_ResponseAsStruct_Response>());
WithErrorSyntax_ResponseAsStruct_Response out;
const size_t slack_per_member = (*size - MinSize<WithErrorSyntax_ResponseAsStruct_Response>()) / 3;
size_t out_size;
out_size = MinSize<int64_t>() + slack_per_member;
out.a = Allocate<int64_t>{}(src, &out_size);
out_size = MinSize<int64_t>() + slack_per_member;
out.b = Allocate<int64_t>{}(src, &out_size);
out_size = MinSize<int64_t>() + slack_per_member;
out.c = Allocate<int64_t>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<WithErrorSyntax_ResponseAsStruct_Result> {
operator size_t() {
size_t sizes[] = {0, MinSize<::test::protocols::WithErrorSyntax_ResponseAsStruct_Response>(), MinSize<uint32_t>()};
return 1 + *std::max_element(sizes, sizes + 2 + 1);
}
};
template <>
struct Allocate<WithErrorSyntax_ResponseAsStruct_Result> {
static_assert(2 > 0, "xunion must have at least one member");
WithErrorSyntax_ResponseAsStruct_Result operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<WithErrorSyntax_ResponseAsStruct_Result>());
uint8_t selector;
ZX_ASSERT(src->CopyBytes(&selector, 1));
(*size)++;
WithErrorSyntax_ResponseAsStruct_Result out;
switch (selector % 2) {
case 0: {
out.set_response(Allocate<::test::protocols::WithErrorSyntax_ResponseAsStruct_Response>{}(src, size));
break;
}
case 1: {
out.set_err(Allocate<uint32_t>{}(src, size));
break;
}
}
return out;
}
};
template <>
struct MinSize<WithErrorSyntaxResponseAsStructTopResponse> {
operator size_t() {
return MinSize<::test::protocols::WithErrorSyntax_ResponseAsStruct_Result>();
}
};
template <>
struct Allocate<WithErrorSyntaxResponseAsStructTopResponse> {
WithErrorSyntaxResponseAsStructTopResponse operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<WithErrorSyntaxResponseAsStructTopResponse>());
WithErrorSyntaxResponseAsStructTopResponse out;
const size_t slack_per_member = (*size - MinSize<WithErrorSyntaxResponseAsStructTopResponse>()) / 1;
size_t out_size;
out_size = MinSize<::test::protocols::WithErrorSyntax_ResponseAsStruct_Result>() + slack_per_member;
out.result = Allocate<::test::protocols::WithErrorSyntax_ResponseAsStruct_Result>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<WithErrorSyntax_HandleInResult_Response> {
operator size_t() {
return MinSize<::zx::handle>();
}
};
template <>
struct Allocate<WithErrorSyntax_HandleInResult_Response> {
WithErrorSyntax_HandleInResult_Response operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<WithErrorSyntax_HandleInResult_Response>());
WithErrorSyntax_HandleInResult_Response out;
const size_t slack_per_member = (*size - MinSize<WithErrorSyntax_HandleInResult_Response>()) / 1;
size_t out_size;
out_size = MinSize<::zx::handle>() + slack_per_member;
out.h = Allocate<::zx::handle>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<WithErrorSyntax_HandleInResult_Result> {
operator size_t() {
size_t sizes[] = {0, MinSize<::test::protocols::WithErrorSyntax_HandleInResult_Response>(), MinSize<uint32_t>()};
return 1 + *std::max_element(sizes, sizes + 2 + 1);
}
};
template <>
struct Allocate<WithErrorSyntax_HandleInResult_Result> {
static_assert(2 > 0, "xunion must have at least one member");
WithErrorSyntax_HandleInResult_Result operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<WithErrorSyntax_HandleInResult_Result>());
uint8_t selector;
ZX_ASSERT(src->CopyBytes(&selector, 1));
(*size)++;
WithErrorSyntax_HandleInResult_Result out;
switch (selector % 2) {
case 0: {
out.set_response(Allocate<::test::protocols::WithErrorSyntax_HandleInResult_Response>{}(src, size));
break;
}
case 1: {
out.set_err(Allocate<uint32_t>{}(src, size));
break;
}
}
return out;
}
};
template <>
struct MinSize<WithErrorSyntaxHandleInResultTopResponse> {
operator size_t() {
return MinSize<::test::protocols::WithErrorSyntax_HandleInResult_Result>();
}
};
template <>
struct Allocate<WithErrorSyntaxHandleInResultTopResponse> {
WithErrorSyntaxHandleInResultTopResponse operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<WithErrorSyntaxHandleInResultTopResponse>());
WithErrorSyntaxHandleInResultTopResponse out;
const size_t slack_per_member = (*size - MinSize<WithErrorSyntaxHandleInResultTopResponse>()) / 1;
size_t out_size;
out_size = MinSize<::test::protocols::WithErrorSyntax_HandleInResult_Result>() + slack_per_member;
out.result = Allocate<::test::protocols::WithErrorSyntax_HandleInResult_Result>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<WithErrorSyntax_ErrorAsPrimitive_Response> {
operator size_t() {
return MinSize<uint8_t>();
}
};
template <>
struct Allocate<WithErrorSyntax_ErrorAsPrimitive_Response> {
WithErrorSyntax_ErrorAsPrimitive_Response operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<WithErrorSyntax_ErrorAsPrimitive_Response>());
WithErrorSyntax_ErrorAsPrimitive_Response out;
const size_t slack_per_member = (*size - MinSize<WithErrorSyntax_ErrorAsPrimitive_Response>()) / 1;
size_t out_size;
out_size = MinSize<uint8_t>() + slack_per_member;
out.__reserved = Allocate<uint8_t>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<WithErrorSyntax_ErrorAsPrimitive_Result> {
operator size_t() {
size_t sizes[] = {0, MinSize<::test::protocols::WithErrorSyntax_ErrorAsPrimitive_Response>(), MinSize<uint32_t>()};
return 1 + *std::max_element(sizes, sizes + 2 + 1);
}
};
template <>
struct Allocate<WithErrorSyntax_ErrorAsPrimitive_Result> {
static_assert(2 > 0, "xunion must have at least one member");
WithErrorSyntax_ErrorAsPrimitive_Result operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<WithErrorSyntax_ErrorAsPrimitive_Result>());
uint8_t selector;
ZX_ASSERT(src->CopyBytes(&selector, 1));
(*size)++;
WithErrorSyntax_ErrorAsPrimitive_Result out;
switch (selector % 2) {
case 0: {
out.set_response(Allocate<::test::protocols::WithErrorSyntax_ErrorAsPrimitive_Response>{}(src, size));
break;
}
case 1: {
out.set_err(Allocate<uint32_t>{}(src, size));
break;
}
}
return out;
}
};
template <>
struct MinSize<WithErrorSyntaxErrorAsPrimitiveTopResponse> {
operator size_t() {
return MinSize<::test::protocols::WithErrorSyntax_ErrorAsPrimitive_Result>();
}
};
template <>
struct Allocate<WithErrorSyntaxErrorAsPrimitiveTopResponse> {
WithErrorSyntaxErrorAsPrimitiveTopResponse operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<WithErrorSyntaxErrorAsPrimitiveTopResponse>());
WithErrorSyntaxErrorAsPrimitiveTopResponse out;
const size_t slack_per_member = (*size - MinSize<WithErrorSyntaxErrorAsPrimitiveTopResponse>()) / 1;
size_t out_size;
out_size = MinSize<::test::protocols::WithErrorSyntax_ErrorAsPrimitive_Result>() + slack_per_member;
out.result = Allocate<::test::protocols::WithErrorSyntax_ErrorAsPrimitive_Result>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<WithErrorSyntax_ErrorAsEnum_Response> {
operator size_t() {
return MinSize<uint8_t>();
}
};
template <>
struct Allocate<WithErrorSyntax_ErrorAsEnum_Response> {
WithErrorSyntax_ErrorAsEnum_Response operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<WithErrorSyntax_ErrorAsEnum_Response>());
WithErrorSyntax_ErrorAsEnum_Response out;
const size_t slack_per_member = (*size - MinSize<WithErrorSyntax_ErrorAsEnum_Response>()) / 1;
size_t out_size;
out_size = MinSize<uint8_t>() + slack_per_member;
out.__reserved = Allocate<uint8_t>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<WithAndWithoutRequestResponseWithRequestWithResponseTopResponse> {
operator size_t() {
return MinSize<::std::string>();
}
};
template <>
struct Allocate<WithAndWithoutRequestResponseWithRequestWithResponseTopResponse> {
WithAndWithoutRequestResponseWithRequestWithResponseTopResponse operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<WithAndWithoutRequestResponseWithRequestWithResponseTopResponse>());
WithAndWithoutRequestResponseWithRequestWithResponseTopResponse out;
const size_t slack_per_member = (*size - MinSize<WithAndWithoutRequestResponseWithRequestWithResponseTopResponse>()) / 1;
size_t out_size;
out_size = MinSize<::std::string>() + slack_per_member;
out.ret = Allocate<::std::string>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<WithAndWithoutRequestResponseWithRequestWithResponseRequest> {
operator size_t() {
return MinSize<::std::string>();
}
};
template <>
struct Allocate<WithAndWithoutRequestResponseWithRequestWithResponseRequest> {
WithAndWithoutRequestResponseWithRequestWithResponseRequest operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<WithAndWithoutRequestResponseWithRequestWithResponseRequest>());
WithAndWithoutRequestResponseWithRequestWithResponseRequest out;
const size_t slack_per_member = (*size - MinSize<WithAndWithoutRequestResponseWithRequestWithResponseRequest>()) / 1;
size_t out_size;
out_size = MinSize<::std::string>() + slack_per_member;
out.arg = Allocate<::std::string>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<WithAndWithoutRequestResponseWithRequestNoResponseRequest> {
operator size_t() {
return MinSize<::std::string>();
}
};
template <>
struct Allocate<WithAndWithoutRequestResponseWithRequestNoResponseRequest> {
WithAndWithoutRequestResponseWithRequestNoResponseRequest operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<WithAndWithoutRequestResponseWithRequestNoResponseRequest>());
WithAndWithoutRequestResponseWithRequestNoResponseRequest out;
const size_t slack_per_member = (*size - MinSize<WithAndWithoutRequestResponseWithRequestNoResponseRequest>()) / 1;
size_t out_size;
out_size = MinSize<::std::string>() + slack_per_member;
out.arg = Allocate<::std::string>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<WithAndWithoutRequestResponseWithRequestEmptyResponseRequest> {
operator size_t() {
return MinSize<::std::string>();
}
};
template <>
struct Allocate<WithAndWithoutRequestResponseWithRequestEmptyResponseRequest> {
WithAndWithoutRequestResponseWithRequestEmptyResponseRequest operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<WithAndWithoutRequestResponseWithRequestEmptyResponseRequest>());
WithAndWithoutRequestResponseWithRequestEmptyResponseRequest out;
const size_t slack_per_member = (*size - MinSize<WithAndWithoutRequestResponseWithRequestEmptyResponseRequest>()) / 1;
size_t out_size;
out_size = MinSize<::std::string>() + slack_per_member;
out.arg = Allocate<::std::string>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<WithAndWithoutRequestResponseOnWithResponseRequest> {
operator size_t() {
return MinSize<::std::string>();
}
};
template <>
struct Allocate<WithAndWithoutRequestResponseOnWithResponseRequest> {
WithAndWithoutRequestResponseOnWithResponseRequest operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<WithAndWithoutRequestResponseOnWithResponseRequest>());
WithAndWithoutRequestResponseOnWithResponseRequest out;
const size_t slack_per_member = (*size - MinSize<WithAndWithoutRequestResponseOnWithResponseRequest>()) / 1;
size_t out_size;
out_size = MinSize<::std::string>() + slack_per_member;
out.ret = Allocate<::std::string>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<WithAndWithoutRequestResponseNoRequestWithResponseTopResponse> {
operator size_t() {
return MinSize<::std::string>();
}
};
template <>
struct Allocate<WithAndWithoutRequestResponseNoRequestWithResponseTopResponse> {
WithAndWithoutRequestResponseNoRequestWithResponseTopResponse operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<WithAndWithoutRequestResponseNoRequestWithResponseTopResponse>());
WithAndWithoutRequestResponseNoRequestWithResponseTopResponse out;
const size_t slack_per_member = (*size - MinSize<WithAndWithoutRequestResponseNoRequestWithResponseTopResponse>()) / 1;
size_t out_size;
out_size = MinSize<::std::string>() + slack_per_member;
out.ret = Allocate<::std::string>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<TransitionalRequestTopResponse> {
operator size_t() {
return MinSize<int64_t>();
}
};
template <>
struct Allocate<TransitionalRequestTopResponse> {
TransitionalRequestTopResponse operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<TransitionalRequestTopResponse>());
TransitionalRequestTopResponse out;
const size_t slack_per_member = (*size - MinSize<TransitionalRequestTopResponse>()) / 1;
size_t out_size;
out_size = MinSize<int64_t>() + slack_per_member;
out.y = Allocate<int64_t>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<TransitionalRequestRequest> {
operator size_t() {
return MinSize<int64_t>();
}
};
template <>
struct Allocate<TransitionalRequestRequest> {
TransitionalRequestRequest operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<TransitionalRequestRequest>());
TransitionalRequestRequest out;
const size_t slack_per_member = (*size - MinSize<TransitionalRequestRequest>()) / 1;
size_t out_size;
out_size = MinSize<int64_t>() + slack_per_member;
out.x = Allocate<int64_t>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<TransitionalOneWayRequest> {
operator size_t() {
return MinSize<int64_t>();
}
};
template <>
struct Allocate<TransitionalOneWayRequest> {
TransitionalOneWayRequest operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<TransitionalOneWayRequest>());
TransitionalOneWayRequest out;
const size_t slack_per_member = (*size - MinSize<TransitionalOneWayRequest>()) / 1;
size_t out_size;
out_size = MinSize<int64_t>() + slack_per_member;
out.x = Allocate<int64_t>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<TransitionalEventRequest> {
operator size_t() {
return MinSize<int64_t>();
}
};
template <>
struct Allocate<TransitionalEventRequest> {
TransitionalEventRequest operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<TransitionalEventRequest>());
TransitionalEventRequest out;
const size_t slack_per_member = (*size - MinSize<TransitionalEventRequest>()) / 1;
size_t out_size;
out_size = MinSize<int64_t>() + slack_per_member;
out.x = Allocate<int64_t>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<TheUnion> {
operator size_t() {
size_t sizes[] = {0, MinSize<uint32_t>()};
return 1 + *std::max_element(sizes, sizes + 1 + 1);
}
};
template <>
struct Allocate<TheUnion> {
static_assert(1 > 0, "xunion must have at least one member");
TheUnion operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<TheUnion>());
uint8_t selector;
ZX_ASSERT(src->CopyBytes(&selector, 1));
(*size)++;
TheUnion out;
switch (selector % 1) {
case 0: {
out.set_v(Allocate<uint32_t>{}(src, size));
break;
}
}
return out;
}
};
template <>
struct MinSize<MethodWithUnionUnionMethodRequest> {
operator size_t() {
return MinSize<::test::protocols::TheUnion>();
}
};
template <>
struct Allocate<MethodWithUnionUnionMethodRequest> {
MethodWithUnionUnionMethodRequest operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<MethodWithUnionUnionMethodRequest>());
MethodWithUnionUnionMethodRequest out;
const size_t slack_per_member = (*size - MinSize<MethodWithUnionUnionMethodRequest>()) / 1;
size_t out_size;
out_size = MinSize<::test::protocols::TheUnion>() + slack_per_member;
out.u = Allocate<::test::protocols::TheUnion>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<SyscallProtocolMethodCRequest> {
operator size_t() {
return MinSize<int64_t>() + MinSize<int64_t>();
}
};
template <>
struct Allocate<SyscallProtocolMethodCRequest> {
SyscallProtocolMethodCRequest operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<SyscallProtocolMethodCRequest>());
SyscallProtocolMethodCRequest out;
const size_t slack_per_member = (*size - MinSize<SyscallProtocolMethodCRequest>()) / 2;
size_t out_size;
out_size = MinSize<int64_t>() + slack_per_member;
out.a = Allocate<int64_t>{}(src, &out_size);
out_size = MinSize<int64_t>() + slack_per_member;
out.b = Allocate<int64_t>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<ProtocolEnds> {
operator size_t() {
return MinSize<::fidl::InterfaceHandle<::test::protocols::DiscoverableProtocol>>() + MinSize<::fidl::InterfaceRequest<::test::protocols::DiscoverableProtocol>>() + MinSize<::fidl::InterfaceHandle<::test::protocols::DiscoverableProtocol>>() + MinSize<::fidl::InterfaceRequest<::test::protocols::DiscoverableProtocol>>();
}
};
template <>
struct Allocate<ProtocolEnds> {
ProtocolEnds operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<ProtocolEnds>());
ProtocolEnds out;
const size_t slack_per_member = (*size - MinSize<ProtocolEnds>()) / 4;
size_t out_size;
out_size = MinSize<::fidl::InterfaceHandle<::test::protocols::DiscoverableProtocol>>() + slack_per_member;
out.client = Allocate<::fidl::InterfaceHandle<::test::protocols::DiscoverableProtocol>>{}(src, &out_size);
out_size = MinSize<::fidl::InterfaceRequest<::test::protocols::DiscoverableProtocol>>() + slack_per_member;
out.server = Allocate<::fidl::InterfaceRequest<::test::protocols::DiscoverableProtocol>>{}(src, &out_size);
out_size = MinSize<::fidl::InterfaceHandle<::test::protocols::DiscoverableProtocol>>() + slack_per_member;
out.client_opt = Allocate<::fidl::InterfaceHandle<::test::protocols::DiscoverableProtocol>>{}(src, &out_size);
out_size = MinSize<::fidl::InterfaceRequest<::test::protocols::DiscoverableProtocol>>() + slack_per_member;
out.server_opt = Allocate<::fidl::InterfaceRequest<::test::protocols::DiscoverableProtocol>>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<WithProtocolEndsStructContainingEndsTopResponse> {
operator size_t() {
return MinSize<::test::protocols::ProtocolEnds>();
}
};
template <>
struct Allocate<WithProtocolEndsStructContainingEndsTopResponse> {
WithProtocolEndsStructContainingEndsTopResponse operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<WithProtocolEndsStructContainingEndsTopResponse>());
WithProtocolEndsStructContainingEndsTopResponse out;
const size_t slack_per_member = (*size - MinSize<WithProtocolEndsStructContainingEndsTopResponse>()) / 1;
size_t out_size;
out_size = MinSize<::test::protocols::ProtocolEnds>() + slack_per_member;
out.out = Allocate<::test::protocols::ProtocolEnds>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<WithProtocolEndsStructContainingEndsRequest> {
operator size_t() {
return MinSize<::test::protocols::ProtocolEnds>();
}
};
template <>
struct Allocate<WithProtocolEndsStructContainingEndsRequest> {
WithProtocolEndsStructContainingEndsRequest operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<WithProtocolEndsStructContainingEndsRequest>());
WithProtocolEndsStructContainingEndsRequest out;
const size_t slack_per_member = (*size - MinSize<WithProtocolEndsStructContainingEndsRequest>()) / 1;
size_t out_size;
out_size = MinSize<::test::protocols::ProtocolEnds>() + slack_per_member;
out.in = Allocate<::test::protocols::ProtocolEnds>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<MethodWithUnionUnionMethodTopResponse> {
operator size_t() {
return MinSize<::std::unique_ptr<::test::protocols::TheUnion>>();
}
};
template <>
struct Allocate<MethodWithUnionUnionMethodTopResponse> {
MethodWithUnionUnionMethodTopResponse operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<MethodWithUnionUnionMethodTopResponse>());
MethodWithUnionUnionMethodTopResponse out;
const size_t slack_per_member = (*size - MinSize<MethodWithUnionUnionMethodTopResponse>()) / 1;
size_t out_size;
out_size = MinSize<::std::unique_ptr<::test::protocols::TheUnion>>() + slack_per_member;
out.u = Allocate<::std::unique_ptr<::test::protocols::TheUnion>>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<ManyParametersFifteenRequest> {
operator size_t() {
return MinSize<bool>() + MinSize<bool>() + MinSize<bool>() + MinSize<bool>() + MinSize<bool>() + MinSize<bool>() + MinSize<bool>() + MinSize<bool>() + MinSize<bool>() + MinSize<bool>() + MinSize<bool>() + MinSize<bool>() + MinSize<bool>() + MinSize<bool>() + MinSize<bool>();
}
};
template <>
struct Allocate<ManyParametersFifteenRequest> {
ManyParametersFifteenRequest operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<ManyParametersFifteenRequest>());
ManyParametersFifteenRequest out;
const size_t slack_per_member = (*size - MinSize<ManyParametersFifteenRequest>()) / 15;
size_t out_size;
out_size = MinSize<bool>() + slack_per_member;
out.p1 = Allocate<bool>{}(src, &out_size);
out_size = MinSize<bool>() + slack_per_member;
out.p2 = Allocate<bool>{}(src, &out_size);
out_size = MinSize<bool>() + slack_per_member;
out.p3 = Allocate<bool>{}(src, &out_size);
out_size = MinSize<bool>() + slack_per_member;
out.p4 = Allocate<bool>{}(src, &out_size);
out_size = MinSize<bool>() + slack_per_member;
out.p5 = Allocate<bool>{}(src, &out_size);
out_size = MinSize<bool>() + slack_per_member;
out.p6 = Allocate<bool>{}(src, &out_size);
out_size = MinSize<bool>() + slack_per_member;
out.p7 = Allocate<bool>{}(src, &out_size);
out_size = MinSize<bool>() + slack_per_member;
out.p8 = Allocate<bool>{}(src, &out_size);
out_size = MinSize<bool>() + slack_per_member;
out.p9 = Allocate<bool>{}(src, &out_size);
out_size = MinSize<bool>() + slack_per_member;
out.p10 = Allocate<bool>{}(src, &out_size);
out_size = MinSize<bool>() + slack_per_member;
out.p11 = Allocate<bool>{}(src, &out_size);
out_size = MinSize<bool>() + slack_per_member;
out.p12 = Allocate<bool>{}(src, &out_size);
out_size = MinSize<bool>() + slack_per_member;
out.p13 = Allocate<bool>{}(src, &out_size);
out_size = MinSize<bool>() + slack_per_member;
out.p14 = Allocate<bool>{}(src, &out_size);
out_size = MinSize<bool>() + slack_per_member;
out.p15 = Allocate<bool>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<HandleRightsProtocolResponseMethodTopResponse> {
operator size_t() {
return MinSize<::zx::socket>();
}
};
template <>
struct Allocate<HandleRightsProtocolResponseMethodTopResponse> {
HandleRightsProtocolResponseMethodTopResponse operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<HandleRightsProtocolResponseMethodTopResponse>());
HandleRightsProtocolResponseMethodTopResponse out;
const size_t slack_per_member = (*size - MinSize<HandleRightsProtocolResponseMethodTopResponse>()) / 1;
size_t out_size;
out_size = MinSize<::zx::socket>() + slack_per_member;
out.h = Allocate<::zx::socket>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<HandleRightsProtocolResponseMethodRequest> {
operator size_t() {
return MinSize<::zx::socket>();
}
};
template <>
struct Allocate<HandleRightsProtocolResponseMethodRequest> {
HandleRightsProtocolResponseMethodRequest operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<HandleRightsProtocolResponseMethodRequest>());
HandleRightsProtocolResponseMethodRequest out;
const size_t slack_per_member = (*size - MinSize<HandleRightsProtocolResponseMethodRequest>()) / 1;
size_t out_size;
out_size = MinSize<::zx::socket>() + slack_per_member;
out.h = Allocate<::zx::socket>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<HandleRightsProtocolNoResponseMethodRequest> {
operator size_t() {
return MinSize<::zx::socket>();
}
};
template <>
struct Allocate<HandleRightsProtocolNoResponseMethodRequest> {
HandleRightsProtocolNoResponseMethodRequest operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<HandleRightsProtocolNoResponseMethodRequest>());
HandleRightsProtocolNoResponseMethodRequest out;
const size_t slack_per_member = (*size - MinSize<HandleRightsProtocolNoResponseMethodRequest>()) / 1;
size_t out_size;
out_size = MinSize<::zx::socket>() + slack_per_member;
out.h = Allocate<::zx::socket>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<HandleRightsProtocolAnEventRequest> {
operator size_t() {
return MinSize<::zx::socket>();
}
};
template <>
struct Allocate<HandleRightsProtocolAnEventRequest> {
HandleRightsProtocolAnEventRequest operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<HandleRightsProtocolAnEventRequest>());
HandleRightsProtocolAnEventRequest out;
const size_t slack_per_member = (*size - MinSize<HandleRightsProtocolAnEventRequest>()) / 1;
size_t out_size;
out_size = MinSize<::zx::socket>() + slack_per_member;
out.h = Allocate<::zx::socket>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<ErrorEnum> {
operator size_t() { return sizeof(uint64_t); }
};
template <>
struct Allocate<ErrorEnum> {
ErrorEnum operator()(FuzzInput* src, size_t* size) {
ErrorEnum out;
uint64_t selector;
ZX_ASSERT(*size >= sizeof(uint64_t));
ZX_ASSERT(src->CopyObject(&selector));
*size = sizeof(uint64_t);
switch (selector % 2) {
case 0:
out = ErrorEnum::ERR_FOO;
break;
case 1:
out = ErrorEnum::ERR_BAR;
break;
}
return out;
}
};
template <>
struct MinSize<WithErrorSyntax_ErrorAsEnum_Result> {
operator size_t() {
size_t sizes[] = {0, MinSize<::test::protocols::WithErrorSyntax_ErrorAsEnum_Response>(), MinSize<::test::protocols::ErrorEnum>()};
return 1 + *std::max_element(sizes, sizes + 2 + 1);
}
};
template <>
struct Allocate<WithErrorSyntax_ErrorAsEnum_Result> {
static_assert(2 > 0, "xunion must have at least one member");
WithErrorSyntax_ErrorAsEnum_Result operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<WithErrorSyntax_ErrorAsEnum_Result>());
uint8_t selector;
ZX_ASSERT(src->CopyBytes(&selector, 1));
(*size)++;
WithErrorSyntax_ErrorAsEnum_Result out;
switch (selector % 2) {
case 0: {
out.set_response(Allocate<::test::protocols::WithErrorSyntax_ErrorAsEnum_Response>{}(src, size));
break;
}
case 1: {
out.set_err(Allocate<::test::protocols::ErrorEnum>{}(src, size));
break;
}
}
return out;
}
};
template <>
struct MinSize<WithErrorSyntaxErrorAsEnumTopResponse> {
operator size_t() {
return MinSize<::test::protocols::WithErrorSyntax_ErrorAsEnum_Result>();
}
};
template <>
struct Allocate<WithErrorSyntaxErrorAsEnumTopResponse> {
WithErrorSyntaxErrorAsEnumTopResponse operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<WithErrorSyntaxErrorAsEnumTopResponse>());
WithErrorSyntaxErrorAsEnumTopResponse out;
const size_t slack_per_member = (*size - MinSize<WithErrorSyntaxErrorAsEnumTopResponse>()) / 1;
size_t out_size;
out_size = MinSize<::test::protocols::WithErrorSyntax_ErrorAsEnum_Result>() + slack_per_member;
out.result = Allocate<::test::protocols::WithErrorSyntax_ErrorAsEnum_Result>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<ChannelProtocolTakeHandleRequest> {
operator size_t() {
return MinSize<::zx::handle>();
}
};
template <>
struct Allocate<ChannelProtocolTakeHandleRequest> {
ChannelProtocolTakeHandleRequest operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<ChannelProtocolTakeHandleRequest>());
ChannelProtocolTakeHandleRequest out;
const size_t slack_per_member = (*size - MinSize<ChannelProtocolTakeHandleRequest>()) / 1;
size_t out_size;
out_size = MinSize<::zx::handle>() + slack_per_member;
out.h = Allocate<::zx::handle>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<ChannelProtocolMutateSocketTopResponse> {
operator size_t() {
return MinSize<::zx::socket>();
}
};
template <>
struct Allocate<ChannelProtocolMutateSocketTopResponse> {
ChannelProtocolMutateSocketTopResponse operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<ChannelProtocolMutateSocketTopResponse>());
ChannelProtocolMutateSocketTopResponse out;
const size_t slack_per_member = (*size - MinSize<ChannelProtocolMutateSocketTopResponse>()) / 1;
size_t out_size;
out_size = MinSize<::zx::socket>() + slack_per_member;
out.b = Allocate<::zx::socket>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<ChannelProtocolMutateSocketRequest> {
operator size_t() {
return MinSize<::zx::socket>();
}
};
template <>
struct Allocate<ChannelProtocolMutateSocketRequest> {
ChannelProtocolMutateSocketRequest operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<ChannelProtocolMutateSocketRequest>());
ChannelProtocolMutateSocketRequest out;
const size_t slack_per_member = (*size - MinSize<ChannelProtocolMutateSocketRequest>()) / 1;
size_t out_size;
out_size = MinSize<::zx::socket>() + slack_per_member;
out.a = Allocate<::zx::socket>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<ChannelProtocolMethodBTopResponse> {
operator size_t() {
return MinSize<int64_t>();
}
};
template <>
struct Allocate<ChannelProtocolMethodBTopResponse> {
ChannelProtocolMethodBTopResponse operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<ChannelProtocolMethodBTopResponse>());
ChannelProtocolMethodBTopResponse out;
const size_t slack_per_member = (*size - MinSize<ChannelProtocolMethodBTopResponse>()) / 1;
size_t out_size;
out_size = MinSize<int64_t>() + slack_per_member;
out.result = Allocate<int64_t>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<ChannelProtocolMethodBRequest> {
operator size_t() {
return MinSize<int64_t>() + MinSize<int64_t>();
}
};
template <>
struct Allocate<ChannelProtocolMethodBRequest> {
ChannelProtocolMethodBRequest operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<ChannelProtocolMethodBRequest>());
ChannelProtocolMethodBRequest out;
const size_t slack_per_member = (*size - MinSize<ChannelProtocolMethodBRequest>()) / 2;
size_t out_size;
out_size = MinSize<int64_t>() + slack_per_member;
out.a = Allocate<int64_t>{}(src, &out_size);
out_size = MinSize<int64_t>() + slack_per_member;
out.b = Allocate<int64_t>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<ChannelProtocolMethodARequest> {
operator size_t() {
return MinSize<int64_t>() + MinSize<int64_t>();
}
};
template <>
struct Allocate<ChannelProtocolMethodARequest> {
ChannelProtocolMethodARequest operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<ChannelProtocolMethodARequest>());
ChannelProtocolMethodARequest out;
const size_t slack_per_member = (*size - MinSize<ChannelProtocolMethodARequest>()) / 2;
size_t out_size;
out_size = MinSize<int64_t>() + slack_per_member;
out.a = Allocate<int64_t>{}(src, &out_size);
out_size = MinSize<int64_t>() + slack_per_member;
out.b = Allocate<int64_t>{}(src, &out_size);
return out;
}
};
template <>
struct MinSize<ChannelProtocolEventARequest> {
operator size_t() {
return MinSize<int64_t>() + MinSize<int64_t>();
}
};
template <>
struct Allocate<ChannelProtocolEventARequest> {
ChannelProtocolEventARequest operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<ChannelProtocolEventARequest>());
ChannelProtocolEventARequest out;
const size_t slack_per_member = (*size - MinSize<ChannelProtocolEventARequest>()) / 2;
size_t out_size;
out_size = MinSize<int64_t>() + slack_per_member;
out.a = Allocate<int64_t>{}(src, &out_size);
out_size = MinSize<int64_t>() + slack_per_member;
out.b = Allocate<int64_t>{}(src, &out_size);
return out;
}
};
} // namespace fuzzing