diff options
| author | Vicent Marti <[email protected]> | 2013-03-06 17:15:28 +0100 |
|---|---|---|
| committer | Vicent Marti <[email protected]> | 2013-03-06 17:15:28 +0100 |
| commit | 3ca8077334e373d0b9a01827af393c3ed914613d (patch) | |
| tree | 93f3dd77b593a9b18ea1ca61e084936d9c8d7527 /odb.go | |
| parent | 4819b36b67234547228785f07265e8c2de425df6 (diff) | |
Properly wrap ODB objects
Diffstat (limited to 'odb.go')
| -rw-r--r-- | odb.go | 22 |
1 files changed, 18 insertions, 4 deletions
@@ -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 } |
