Move RevSpec#From and RevSpec#To to struct methods.
This commit is contained in:
parent
3003e5e190
commit
8bbcdd65a6
26
revparse.go
26
revparse.go
|
@ -14,39 +14,45 @@ import (
|
||||||
|
|
||||||
type RevSpec struct {
|
type RevSpec struct {
|
||||||
ptr *C.git_revspec
|
ptr *C.git_revspec
|
||||||
From Object
|
|
||||||
To Object
|
|
||||||
repo *Repository
|
repo *Repository
|
||||||
}
|
}
|
||||||
|
|
||||||
func newRevSpecFrom(ptr *C.git_revspec, repo *Repository) *RevSpec {
|
func newRevSpecFrom(ptr *C.git_revspec, repo *Repository) *RevSpec {
|
||||||
rev := &RevSpec{
|
rev := &RevSpec{
|
||||||
ptr: ptr,
|
ptr: ptr,
|
||||||
From: allocObject(ptr.from, repo),
|
|
||||||
To: allocObject(ptr.to, repo),
|
|
||||||
repo: repo,
|
repo: repo,
|
||||||
}
|
}
|
||||||
runtime.SetFinalizer(rev, (*RevSpec).Free)
|
|
||||||
|
|
||||||
return rev
|
return rev
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *RevSpec) Free() {
|
func (r *RevSpec) From() Object {
|
||||||
runtime.SetFinalizer(r, nil)
|
if r.ptr.from == nil {
|
||||||
r.From.Free()
|
return nil
|
||||||
r.To.Free()
|
}
|
||||||
|
|
||||||
|
return allocObject(r.ptr.from, r.repo)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *RevSpec) To() Object {
|
||||||
|
if r.ptr.to == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return allocObject(r.ptr.to, r.repo)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Repository) RevParse(spec string) (*RevSpec, error) {
|
func (r *Repository) RevParse(spec string) (*RevSpec, error) {
|
||||||
cspec := C.CString(spec)
|
cspec := C.CString(spec)
|
||||||
defer C.free(unsafe.Pointer(cspec))
|
defer C.free(unsafe.Pointer(cspec))
|
||||||
|
|
||||||
var ptr *C.git_revspec
|
var ptr *C.git_revspec
|
||||||
|
|
||||||
runtime.LockOSThread()
|
runtime.LockOSThread()
|
||||||
defer runtime.UnlockOSThread()
|
defer runtime.UnlockOSThread()
|
||||||
|
|
||||||
ecode := C.git_revparse(ptr, r.ptr, cspec)
|
ecode := C.git_revparse(ptr, r.ptr, cspec)
|
||||||
if ecode < 0 {
|
if ecode != 0 {
|
||||||
return nil, MakeGitError(ecode)
|
return nil, MakeGitError(ecode)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue