summaryrefslogtreecommitdiff
path: root/odb.go
diff options
context:
space:
mode:
Diffstat (limited to 'odb.go')
-rw-r--r--odb.go30
1 files changed, 30 insertions, 0 deletions
diff --git a/odb.go b/odb.go
index 638ef74..c7c8bd9 100644
--- a/odb.go
+++ b/odb.go
@@ -17,6 +17,36 @@ type Odb struct {
ptr *C.git_odb
}
+type OdbBackend struct {
+ ptr *C.git_odb_backend
+}
+
+func NewOdb() (odb *Odb, err error) {
+ odb = new(Odb)
+
+ ret := C.git_odb_new(&odb.ptr)
+ if ret < 0 {
+ return nil, LastError()
+ }
+
+ runtime.SetFinalizer(odb, (*Odb).Free)
+ return
+}
+
+func NewOdbBackendFromC(ptr *C.git_odb_backend) (backend *OdbBackend) {
+ backend = &OdbBackend{ptr}
+ return
+}
+
+
+func (v *Odb) AddBackend(backend *OdbBackend, priority int) (err error) {
+ ret := C.git_odb_add_backend(v.ptr, backend.ptr, C.int(priority))
+ if ret < 0 {
+ err = LastError()
+ }
+ return nil
+}
+
func (v *Odb) Exists(oid *Oid) bool {
ret := C.git_odb_exists(v.ptr, oid.toC())
return ret != 0