From d190d8a6b3717402744902d060be57195f27d604 Mon Sep 17 00:00:00 2001 From: Vicent Marti Date: Tue, 16 Apr 2013 23:04:35 +0200 Subject: Take 2 on polymorphism --- tree.go | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) (limited to 'tree.go') diff --git a/tree.go b/tree.go index dc82929..d8a639c 100644 --- a/tree.go +++ b/tree.go @@ -17,6 +17,19 @@ type Tree struct { ptr *C.git_tree } +func (o *Tree) Id() *Oid { + return newOidFromC(C.git_tree_id(o.ptr)) +} + +func (o *Tree) Type() ObjectType { + return OBJ_TREE +} + +func (o *Tree) Free() { + runtime.SetFinalizer(o, nil) + C.git_tree_free(o.ptr) +} + type TreeEntry struct { Name string Id *Oid @@ -31,22 +44,6 @@ func newTreeEntry(entry *C.git_tree_entry) *TreeEntry { } } -func (t *Tree) Free() { - runtime.SetFinalizer(t, nil) - C.git_tree_free(t.ptr) -} - -func TreeLookup(repo *Repository, oid *Oid) (*Tree, error) { - tree := new(Tree) - err := C.git_tree_lookup(&tree.ptr, repo.ptr, oid.toC()) - if err < 0 { - return nil, LastError() - } - - runtime.SetFinalizer(tree, (*Tree).Free) - return tree, nil -} - func (t *Tree) EntryByName(filename string) *TreeEntry { cname := C.CString(filename) defer C.free(unsafe.Pointer(cname)) -- cgit v1.2.3