blob: c139cfd91af0b2bb37c233c49c3e522929aee4ea [file] [edit]
// WARNING: This file is machine generated by fidlgen.
// fidl_experiment = no_optional_structs
// fidl_experiment = output_index_json
// fidl_experiment = simple_empty_response_syntax
// fidl_experiment = unknown_interactions
#pragma once
#include <test/aliases/cpp/fidl.h>
#include <test/someotherlibrary/cpp/libfuzzer.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 obj_type = ::test::aliases::obj_type;
using ExampleOfUseOfAliases = ::test::aliases::ExampleOfUseOfAliases;
template <>
struct MinSize<obj_type> {
operator size_t() { return sizeof(uint64_t); }
};
template <>
struct Allocate<obj_type> {
obj_type operator()(FuzzInput* src, size_t* size) {
obj_type 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 = obj_type::NONE;
break;
case 1:
out = obj_type::CHANNEL;
break;
}
return out;
}
};
template <>
struct MinSize<ExampleOfUseOfAliases> {
operator size_t() {
return MinSize<uint32_t>() + MinSize<::std::vector<::std::string>>() + MinSize<::std::vector<::std::string>>() + MinSize<::std::vector<::std::string>>() + MinSize<::std::vector<::test::someotherlibrary::ReferenceMe>>() + MinSize<::zx::channel>() + MinSize<::zx::channel>() + MinSize<::zx::channel>();
}
};
template <>
struct Allocate<ExampleOfUseOfAliases> {
ExampleOfUseOfAliases operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= MinSize<ExampleOfUseOfAliases>());
ExampleOfUseOfAliases out;
const size_t slack_per_member = (*size - MinSize<ExampleOfUseOfAliases>()) / 8;
size_t out_size;
out_size = MinSize<uint32_t>() + slack_per_member;
out.field_of_u32 = Allocate<uint32_t>{}(src, &out_size);
out_size = MinSize<::std::vector<::std::string>>() + slack_per_member;
out.field_of_vec_of_strings = Allocate<::std::vector<::std::string>>{}(src, &out_size);
out_size = MinSize<::std::vector<::std::string>>() + slack_per_member;
out.field_of_vec_of_strings_at_most_nine = Allocate<::std::vector<::std::string>>{}(src, &out_size);
out_size = MinSize<::std::vector<::std::string>>() + slack_per_member;
out.field_of_vec_of_strings_at_most_5 = Allocate<::std::vector<::std::string>>{}(src, &out_size);
out_size = MinSize<::std::vector<::test::someotherlibrary::ReferenceMe>>() + slack_per_member;
out.field_of_vec_of_ref_me_at_most_5 = Allocate<::std::vector<::test::someotherlibrary::ReferenceMe>>{}(src, &out_size);
out_size = MinSize<::zx::channel>() + slack_per_member;
out.field_of_channel = Allocate<::zx::channel>{}(src, &out_size);
out_size = MinSize<::zx::channel>() + slack_per_member;
out.field_of_client_end = Allocate<::zx::channel>{}(src, &out_size);
out_size = MinSize<::zx::channel>() + slack_per_member;
out.field_of_nullable_client_end = Allocate<::zx::channel>{}(src, &out_size);
return out;
}
};
} // namespace fuzzing