Unwrap DiffLine; add types for git_diff_flag_t and git_delta_t.

This commit is contained in:
lye 2014-02-26 04:34:38 -06:00
parent 48a02566d6
commit 2e5102b71a
1 changed files with 28 additions and 39 deletions

67
diff.go
View File

@ -11,20 +11,23 @@ import (
"unsafe"
)
const (
DiffFlagBinary = C.GIT_DIFF_FLAG_BINARY
DiffFlagNotBinary = C.GIT_DIFF_FLAG_NOT_BINARY
DiffFlagValidOid = C.GIT_DIFF_FLAG_VALID_OID
type Delta int
type DiffFlag int
DeltaUnmodified = C.GIT_DELTA_UNMODIFIED
DeltaAdded = C.GIT_DELTA_ADDED
DeltaDeleted = C.GIT_DELTA_DELETED
DeltaModified = C.GIT_DELTA_MODIFIED
DeltaRenamed = C.GIT_DELTA_RENAMED
DeltaCopied = C.GIT_DELTA_COPIED
DeltaIgnored = C.GIT_DELTA_IGNORED
DeltaUntracked = C.GIT_DELTA_UNTRACKED
DeltaTypeChange = C.GIT_DELTA_TYPECHANGE
const (
DiffFlagBinary = DiffFlag(C.GIT_DIFF_FLAG_BINARY)
DiffFlagNotBinary = DiffFlag(C.GIT_DIFF_FLAG_NOT_BINARY)
DiffFlagValidOid = DiffFlag(C.GIT_DIFF_FLAG_VALID_OID)
DeltaUnmodified = Delta(C.GIT_DELTA_UNMODIFIED)
DeltaAdded = Delta(C.GIT_DELTA_ADDED)
DeltaDeleted = Delta(C.GIT_DELTA_DELETED)
DeltaModified = Delta(C.GIT_DELTA_MODIFIED)
DeltaRenamed = Delta(C.GIT_DELTA_RENAMED)
DeltaCopied = Delta(C.GIT_DELTA_COPIED)
DeltaIgnored = Delta(C.GIT_DELTA_IGNORED)
DeltaUntracked = Delta(C.GIT_DELTA_UNTRACKED)
DeltaTypeChange = Delta(C.GIT_DELTA_TYPECHANGE)
DiffLineContext = C.GIT_DIFF_LINE_CONTEXT
DiffLineAddition = C.GIT_DIFF_LINE_ADDITION
@ -80,12 +83,12 @@ func newDiffDelta(delta *C.git_diff_delta) *DiffDelta {
}
}
func (dd *DiffDelta) Status() int {
return int(dd.delta.status)
func (dd *DiffDelta) Status() Delta {
return Delta(dd.delta.status)
}
func (dd *DiffDelta) Flags() uint32 {
return uint32(dd.delta.flags)
func (dd *DiffDelta) Flags() DiffFlag {
return DiffFlag(dd.delta.flags)
}
func (dd *DiffDelta) Similarity() uint16 {
@ -123,39 +126,25 @@ func (dh *DiffHunk) NewLines() int {
}
type DiffLine struct {
line C.git_diff_line
Origin byte
OldLineno int
NewLineno int
NumLines int
Content string
DiffHunk
}
func newDiffLine(delta *C.git_diff_delta, hunk *C.git_diff_hunk, line *C.git_diff_line) *DiffLine {
return &DiffLine{
line: *line,
Origin: byte(line.origin),
OldLineno: int(line.old_lineno),
NewLineno: int(line.new_lineno),
NumLines: int(line.num_lines),
Content: C.GoStringN(line.content, C.int(line.content_len)),
DiffHunk: *newDiffHunk(delta, hunk),
}
}
func (dl *DiffLine) Origin() byte {
return byte(dl.line.origin)
}
func (dl *DiffLine) OldLineno() int {
return int(dl.line.old_lineno)
}
func (dl *DiffLine) NewLineno() int {
return int(dl.line.new_lineno)
}
func (dl *DiffLine) NumLines() int {
return int(dl.line.num_lines)
}
func (dl *DiffLine) ContentOffset() int {
return int(dl.line.content_offset)
}
type Diff struct {
ptr *C.git_diff
}