* Dropped unused codekit config * Integrated dynamic and static bindata for public * Ignore public bindata * Add a general generate make task * Integrated flexible public assets into web command * Updated vendoring, added all missiong govendor deps * Made the linter happy with the bindata and dynamic code * Moved public bindata definition to modules directory * Ignoring the new bindata path now * Updated to the new public modules import path * Updated public bindata command and drop the new prefix
		
			
				
	
	
		
			50 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
//+build unsafe
 | 
						|
 | 
						|
// Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved.
 | 
						|
// Use of this source code is governed by a MIT license found in the LICENSE file.
 | 
						|
 | 
						|
package codec
 | 
						|
 | 
						|
import (
 | 
						|
	"unsafe"
 | 
						|
)
 | 
						|
 | 
						|
// This file has unsafe variants of some helper methods.
 | 
						|
 | 
						|
type unsafeString struct {
 | 
						|
	Data uintptr
 | 
						|
	Len  int
 | 
						|
}
 | 
						|
 | 
						|
type unsafeSlice struct {
 | 
						|
	Data uintptr
 | 
						|
	Len  int
 | 
						|
	Cap  int
 | 
						|
}
 | 
						|
 | 
						|
// stringView returns a view of the []byte as a string.
 | 
						|
// In unsafe mode, it doesn't incur allocation and copying caused by conversion.
 | 
						|
// In regular safe mode, it is an allocation and copy.
 | 
						|
func stringView(v []byte) string {
 | 
						|
	if len(v) == 0 {
 | 
						|
		return ""
 | 
						|
	}
 | 
						|
 | 
						|
	bx := (*unsafeSlice)(unsafe.Pointer(&v))
 | 
						|
	sx := unsafeString{bx.Data, bx.Len}
 | 
						|
	return *(*string)(unsafe.Pointer(&sx))
 | 
						|
}
 | 
						|
 | 
						|
// bytesView returns a view of the string as a []byte.
 | 
						|
// In unsafe mode, it doesn't incur allocation and copying caused by conversion.
 | 
						|
// In regular safe mode, it is an allocation and copy.
 | 
						|
func bytesView(v string) []byte {
 | 
						|
	if len(v) == 0 {
 | 
						|
		return zeroByteSlice
 | 
						|
	}
 | 
						|
 | 
						|
	sx := (*unsafeString)(unsafe.Pointer(&v))
 | 
						|
	bx := unsafeSlice{sx.Data, sx.Len, sx.Len}
 | 
						|
	return *(*[]byte)(unsafe.Pointer(&bx))
 | 
						|
}
 |