blob: dd9876e893ac29a097f146f977d106dfcbf4f32e [file] [log] [blame]
{{/*
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
*/}}
{{- define "BitsSizeAndAlloc" }}
{{- if .IsStrict -}}
template<>
struct MinSize<{{ .Name }}> {
operator size_t() { return sizeof({{ .Name }}); }
};
template<>
struct Allocate<{{ .Name }}> {
{{ .Name }} operator()(FuzzInput* src, size_t* size) {
{{ .Name }} out;
ZX_ASSERT(*size >= sizeof({{ .Name }}));
ZX_ASSERT(src->CopyObject(&out));
*size = sizeof({{ .Name }});
return out;
}
};
{{- else -}}
template<>
struct MinSize<{{ .Name }}> {
operator size_t() { return sizeof({{ .Type }}); }
};
template<>
struct Allocate<{{ .Name }}> {
{{ .Name }} operator()(FuzzInput* src, size_t* size) {
ZX_ASSERT(*size >= sizeof({{ .Type }}));
return {{ .Name }}(*reinterpret_cast<const {{ .Type }}*>(src->TakeBytes(sizeof({{ .Type }}))));
}
};
{{- end -}}
{{- end }}