diff options
Diffstat (limited to 'c/cursor.go')
-rw-r--r-- | c/cursor.go | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/c/cursor.go b/c/cursor.go index 84eae03..0aebd47 100644 --- a/c/cursor.go +++ b/c/cursor.go @@ -135,26 +135,29 @@ int bolt_cursor_next(bolt_cursor *c, bolt_val *key, bolt_val *value) { */ import "C" -import "github.com/boltdb/bolt" +import ( + "unsafe" + + "github.com/boltdb/bolt" +) type bolt_cursor *C.bolt_cursor func NewCursor(b *bolt.Bucket) bolt_cursor { - data := (*C.void)(&b.tx.db.data[0]) - pgsz := (C.size_t)(b.tx.db.pageSize) + data, pgsz := b.Tx().DB().RawData() cursor := new(C.bolt_cursor) - C.bolt_cursor_init(cursor, data, pgsz, (C.pgid)(b.root)) + C.bolt_cursor_init(cursor, unsafe.Pointer(&data[0]), (C.size_t)(pgsz), (C.pgid)(b.Root())) return cursor } -func (c bolt_cursor) first() (key, value []byte) { +func first(c bolt_cursor) (key, value []byte) { var k, v C.bolt_val C.bolt_cursor_first(c, &k, &v) - return C.GoBytes(k.data, k.size), C.GoBytes(v.data, v.size) + return C.GoBytes(k.data, C.int(k.size)), C.GoBytes(v.data, C.int(v.size)) } -func (c bolt_cursor) next() (key, value []byte) { +func next(c bolt_cursor) (key, value []byte) { var k, v C.bolt_val C.bolt_cursor_next(c, &k, &v) - return C.GoBytes(k.data, k.size), C.GoBytes(v.data, v.size) + return C.GoBytes(k.data, C.int(k.size)), C.GoBytes(v.data, C.int(v.size)) } |