// 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.
//
// GENERATED FILE: Do not edit!
//
// To rebuild this file, invoke third_party/go/regen-fidl.

// +build fuchsia

package mem

import (
	_zx "syscall/zx"
	_bindings "syscall/zx/fidl"
)

type Buffer struct {
	_    struct{} `fidl2:"s,16,8"`
	Vmo  _zx.VMO  `fidl2:"0"`
	Size uint64
}

var _mBuffer = _bindings.CreateLazyMarshaler(Buffer{})

func (msg *Buffer) Marshaler() _bindings.Marshaler {
	return _mBuffer
}

// Implements Payload.
func (_ *Buffer) InlineAlignment() int {
	return 8
}

// Implements Payload.
func (_ *Buffer) InlineSize() int {
	return 16
}
