| // 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 |