Oid revamp #68

Merged
carlosmn merged 5 commits from cmn/oid-revamp into master 2014-03-19 01:20:45 -05:00
1 changed files with 10 additions and 12 deletions
Showing only changes of commit b6703d4767 - Show all commits

22
git.go
View File

@ -29,9 +29,7 @@ func init() {
} }
// Oid // Oid
type Oid struct { type Oid [20]byte
bytes [20]byte
}
func newOidFromC(coid *C.git_oid) *Oid { func newOidFromC(coid *C.git_oid) *Oid {
if coid == nil { if coid == nil {
@ -39,18 +37,18 @@ func newOidFromC(coid *C.git_oid) *Oid {
} }
oid := new(Oid) oid := new(Oid)
copy(oid.bytes[0:20], C.GoBytes(unsafe.Pointer(coid), 20)) copy(oid[0:20], C.GoBytes(unsafe.Pointer(coid), 20))
return oid return oid
} }
func NewOid(b []byte) *Oid { func NewOid(b []byte) *Oid {
oid := new(Oid) oid := new(Oid)
copy(oid.bytes[0:20], b[0:20]) copy(oid[0:20], b[0:20])
return oid return oid
} }
func (oid *Oid) toC() *C.git_oid { func (oid *Oid) toC() *C.git_oid {
return (*C.git_oid)(unsafe.Pointer(&oid.bytes)) return (*C.git_oid)(unsafe.Pointer(oid))
} }
func NewOidFromString(s string) (*Oid, error) { func NewOidFromString(s string) (*Oid, error) {
@ -75,25 +73,25 @@ func (oid *Oid) String() string {
} }
func (oid *Oid) Bytes() []byte { func (oid *Oid) Bytes() []byte {
return oid.bytes[0:] return oid[0:]
} }
func (oid *Oid) Cmp(oid2 *Oid) int { func (oid *Oid) Cmp(oid2 *Oid) int {
return bytes.Compare(oid.bytes[:], oid2.bytes[:]) return bytes.Compare(oid[:], oid2[:])
} }
func (oid *Oid) Copy() *Oid { func (oid *Oid) Copy() *Oid {
ret := new(Oid) ret := new(Oid)
copy(ret.bytes[:], oid.bytes[:]) copy(ret[:], oid[:])
return ret return ret
} }
func (oid *Oid) Equal(oid2 *Oid) bool { func (oid *Oid) Equal(oid2 *Oid) bool {
return bytes.Equal(oid.bytes[:], oid2.bytes[:]) return bytes.Equal(oid[:], oid2[:])
} }
func (oid *Oid) IsZero() bool { func (oid *Oid) IsZero() bool {
for _, a := range oid.bytes { for _, a := range oid {
if a != '0' { if a != '0' {
return false return false
} }
@ -102,7 +100,7 @@ func (oid *Oid) IsZero() bool {
} }
func (oid *Oid) NCmp(oid2 *Oid, n uint) int { func (oid *Oid) NCmp(oid2 *Oid, n uint) int {
return bytes.Compare(oid.bytes[:n], oid2.bytes[:n]) return bytes.Compare(oid[:n], oid2[:n])
} }
func ShortenOids(ids []*Oid, minlen int) (int, error) { func ShortenOids(ids []*Oid, minlen int) (int, error) {