Tag any kind of object #397

Merged
carlosmn merged 2 commits from cmn/tag-generic into master 2017-07-09 13:10:07 -05:00
5 changed files with 21 additions and 0 deletions
Showing only changes of commit 7f685a6ee6 - Show all commits

View File

@ -20,6 +20,10 @@ type Blob struct {
cast_ptr *C.git_blob cast_ptr *C.git_blob
} }
func (b *Blob) AsObject() *Object {
return &b.Object
}
func (v *Blob) Size() int64 { func (v *Blob) Size() int64 {
ret := int64(C.git_blob_rawsize(v.cast_ptr)) ret := int64(C.git_blob_rawsize(v.cast_ptr))
runtime.KeepAlive(v) runtime.KeepAlive(v)

View File

@ -18,6 +18,10 @@ type Commit struct {
cast_ptr *C.git_commit cast_ptr *C.git_commit
} }
func (c *Commit) AsObject() *Object {
return &c.Object
}
func (c *Commit) Message() string { func (c *Commit) Message() string {
ret := C.GoString(C.git_commit_message(c.cast_ptr)) ret := C.GoString(C.git_commit_message(c.cast_ptr))
runtime.KeepAlive(c) runtime.KeepAlive(c)

View File

@ -26,6 +26,11 @@ type Object struct {
repo *Repository repo *Repository
} }
// Objecter lets us accept any kind of Git object in functions.
type Objecter interface {
AsObject() *Object
}
func (t ObjectType) String() string { func (t ObjectType) String() string {
switch t { switch t {
case ObjectAny: case ObjectAny:

4
tag.go
View File

@ -17,6 +17,10 @@ type Tag struct {
cast_ptr *C.git_tag cast_ptr *C.git_tag
} }
func (t *Tag) AsObject() *Object {
return &t.Object
}
func (t Tag) Message() string { func (t Tag) Message() string {
ret := C.GoString(C.git_tag_message(t.cast_ptr)) ret := C.GoString(C.git_tag_message(t.cast_ptr))
runtime.KeepAlive(t) runtime.KeepAlive(t)

View File

@ -27,6 +27,10 @@ type Tree struct {
cast_ptr *C.git_tree cast_ptr *C.git_tree
} }
func (t *Tree) AsObject() *Object {
return &t.Object
}
type TreeEntry struct { type TreeEntry struct {
Name string Name string
Id *Oid Id *Oid