summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVicent Marti <[email protected]>2013-03-06 17:15:28 +0100
committerVicent Marti <[email protected]>2013-03-06 17:15:28 +0100
commit3ca8077334e373d0b9a01827af393c3ed914613d (patch)
tree93f3dd77b593a9b18ea1ca61e084936d9c8d7527
parent4819b36b67234547228785f07265e8c2de425df6 (diff)
Properly wrap ODB objects
-rw-r--r--odb.go22
1 files changed, 18 insertions, 4 deletions
diff --git a/odb.go b/odb.go
index 6370999..bf17171 100644
--- a/odb.go
+++ b/odb.go
@@ -62,11 +62,25 @@ func (v *OdbObject) Free() {
C.git_odb_object_free(v.ptr)
}
-func (v *OdbObject) Type() int {
- return int(C.git_odb_object_type(v.ptr))
+func (object *OdbObject) Id() (oid *Oid) {
+ return newOidFromC(C.git_odb_object_id(object.ptr))
}
-func (v *OdbObject) Size() int64 {
- return int64(C.git_odb_object_size(v.ptr))
+func (object *OdbObject) Len() (len uint64) {
+ return uint64(C.git_odb_object_size(object.ptr))
+}
+
+func (object *OdbObject) Data() (data []byte) {
+ var c_blob unsafe.Pointer = C.git_odb_object_data(object.ptr)
+ var blob []byte
+
+ len := int(C.git_odb_object_size(object.ptr))
+
+ sliceHeader := (*reflect.SliceHeader)((unsafe.Pointer(&blob)))
+ sliceHeader.Cap = len
+ sliceHeader.Len = len
+ sliceHeader.Data = uintptr(c_blob)
+
+ return blob
}