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