// WARNING: This file is machine generated by fidlgen.

#pragma once

#include <fidl/test/bitsconstants/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 BitsType = ::fidl::test::bitsconstants::BitsType;

template <>
struct MinSize<BitsType> {
  operator size_t() { return sizeof(BitsType); }
};
template <>
struct Allocate<BitsType> {
  BitsType operator()(FuzzInput* src, size_t* size) {
    BitsType out;
    ZX_ASSERT(*size >= sizeof(BitsType));
    ZX_ASSERT(src->CopyObject(&out));
    *size = sizeof(BitsType);
    return out;
  }
};

}  // namespace fuzzing
