Copyright 2016 The Go Authors. All rights reserved. Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
+build darwin dragonfly freebsd netbsd openbsd

package route
This file contains duplicates of encoding/binary package. This package is supposed to be used by the net package of standard library. Therefore the package set used in the package must be the same as net package.

var (
	littleEndian binaryLittleEndian
	bigEndian    binaryBigEndian
)

type binaryByteOrder interface {
	Uint16([]byte) uint16
	Uint32([]byte) uint32
	PutUint16([]byte, uint16)
	PutUint32([]byte, uint32)
	Uint64([]byte) uint64
}

type binaryLittleEndian struct{}

func (binaryLittleEndian) ( []byte) uint16 {
	_ = [1] // bounds check hint to compiler; see golang.org/issue/14808
	return uint16([0]) | uint16([1])<<8
}

func (binaryLittleEndian) ( []byte,  uint16) {
	_ = [1] // early bounds check to guarantee safety of writes below
	[0] = byte()
	[1] = byte( >> 8)
}

func (binaryLittleEndian) ( []byte) uint32 {
	_ = [3] // bounds check hint to compiler; see golang.org/issue/14808
	return uint32([0]) | uint32([1])<<8 | uint32([2])<<16 | uint32([3])<<24
}

func (binaryLittleEndian) ( []byte,  uint32) {
	_ = [3] // early bounds check to guarantee safety of writes below
	[0] = byte()
	[1] = byte( >> 8)
	[2] = byte( >> 16)
	[3] = byte( >> 24)
}

func (binaryLittleEndian) ( []byte) uint64 {
	_ = [7] // bounds check hint to compiler; see golang.org/issue/14808
	return uint64([0]) | uint64([1])<<8 | uint64([2])<<16 | uint64([3])<<24 |
		uint64([4])<<32 | uint64([5])<<40 | uint64([6])<<48 | uint64([7])<<56
}

type binaryBigEndian struct{}

func (binaryBigEndian) ( []byte) uint16 {
	_ = [1] // bounds check hint to compiler; see golang.org/issue/14808
	return uint16([1]) | uint16([0])<<8
}

func (binaryBigEndian) ( []byte,  uint16) {
	_ = [1] // early bounds check to guarantee safety of writes below
	[0] = byte( >> 8)
	[1] = byte()
}

func (binaryBigEndian) ( []byte) uint32 {
	_ = [3] // bounds check hint to compiler; see golang.org/issue/14808
	return uint32([3]) | uint32([2])<<8 | uint32([1])<<16 | uint32([0])<<24
}

func (binaryBigEndian) ( []byte,  uint32) {
	_ = [3] // early bounds check to guarantee safety of writes below
	[0] = byte( >> 24)
	[1] = byte( >> 16)
	[2] = byte( >> 8)
	[3] = byte()
}

func (binaryBigEndian) ( []byte) uint64 {
	_ = [7] // bounds check hint to compiler; see golang.org/issue/14808
	return uint64([7]) | uint64([6])<<8 | uint64([5])<<16 | uint64([4])<<24 |
		uint64([3])<<32 | uint64([2])<<40 | uint64([1])<<48 | uint64([0])<<56