aboutsummaryrefslogtreecommitdiff
path: root/c/cursor.go
diff options
context:
space:
mode:
authorSteven Normore <snormore@gmail.com>2014-04-15 17:56:53 +0000
committerSteven Normore <snormore@gmail.com>2014-04-16 13:29:52 +0000
commitb178373351a2d9711c8614255843038c5bed5872 (patch)
tree6b1664a3de0655a8a763083da4ed126c91a85983 /c/cursor.go
parentfix up the C bits to compile (diff)
downloaddedo-b178373351a2d9711c8614255843038c5bed5872.tar.gz
dedo-b178373351a2d9711c8614255843038c5bed5872.tar.xz
build c/cursor and running tests
Diffstat (limited to 'c/cursor.go')
-rw-r--r--c/cursor.go19
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))
}