mirror of
https://github.com/astaxie/beego.git
synced 2025-07-06 12:00:18 +00:00
add vendor
This commit is contained in:
41
vendor/github.com/siddontang/ledisdb/store/rocksdb/slice.go
generated
vendored
Normal file
41
vendor/github.com/siddontang/ledisdb/store/rocksdb/slice.go
generated
vendored
Normal file
@ -0,0 +1,41 @@
|
||||
//+build rocksdb
|
||||
|
||||
package rocksdb
|
||||
|
||||
// #cgo LDFLAGS: -lrocksdb
|
||||
// #include <rocksdb/c.h>
|
||||
// #include <stdlib.h>
|
||||
import "C"
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
type CSlice struct {
|
||||
data unsafe.Pointer
|
||||
size int
|
||||
}
|
||||
|
||||
func NewCSlice(p unsafe.Pointer, n int) *CSlice {
|
||||
return &CSlice{p, n}
|
||||
}
|
||||
|
||||
func (s *CSlice) Data() []byte {
|
||||
var value []byte
|
||||
|
||||
sH := (*reflect.SliceHeader)(unsafe.Pointer(&value))
|
||||
sH.Cap = int(s.size)
|
||||
sH.Len = int(s.size)
|
||||
sH.Data = uintptr(s.data)
|
||||
|
||||
return value
|
||||
}
|
||||
|
||||
func (s *CSlice) Size() int {
|
||||
return int(s.size)
|
||||
}
|
||||
|
||||
func (s *CSlice) Free() {
|
||||
C.free(s.data)
|
||||
}
|
Reference in New Issue
Block a user