// Code generated by fidlgen; DO NOT EDIT.

package byteandbytes

import (
	_bindings "syscall/zx/fidl"
)

type ByteAndBytes struct {
	_                struct{} `fidl:"s" fidl_size_v1:"56" fidl_alignment_v1:"8"`
	SingleByte       uint8    `fidl_offset_v1:"0"`
	ManyBytes        []uint8  `fidl_offset_v1:"8" fidl_bounds:""`
	OnlyOneKBytes    []uint8  `fidl_offset_v1:"24" fidl_bounds:"1024"`
	OptOnlyOneKBytes *[]uint8 `fidl_offset_v1:"40" fidl_bounds:"1024"`
}

var _mByteAndBytes = _bindings.CreateLazyMarshaler(ByteAndBytes{})

func (msg *ByteAndBytes) Marshaler() _bindings.Marshaler {
	return _mByteAndBytes
}
