// Code generated by fidlgen; DO NOT EDIT.

package struct_

import (
	_bindings "syscall/zx/fidl"
)

type Simple struct {
	_  struct{} `fidl:"s" fidl_size_v1:"2" fidl_alignment_v1:"1"`
	F1 uint8    `fidl_offset_v1:"0"`
	F2 bool     `fidl_offset_v1:"1"`
}

var _mSimple = _bindings.CreateLazyMarshaler(Simple{})

func (msg *Simple) Marshaler() _bindings.Marshaler {
	return _mSimple
}

type BasicStruct struct {
	_ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8"`
	X uint32   `fidl_offset_v1:"0"`
	Y string   `fidl_offset_v1:"8" fidl_bounds:""`
}

var _mBasicStruct = _bindings.CreateLazyMarshaler(BasicStruct{})

func (msg *BasicStruct) Marshaler() _bindings.Marshaler {
	return _mBasicStruct
}
