Oid revamp #68
22
git.go
22
git.go
|
@ -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) {
|
||||||
|
|
Loading…
Reference in New Issue