summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--diff.go65
1 files changed, 27 insertions, 38 deletions
diff --git a/diff.go b/diff.go
index 0f3ee0f..208a701 100644
--- a/diff.go
+++ b/diff.go
@@ -11,20 +11,23 @@ import (
"unsafe"
)
+type Delta int
+type DiffFlag int
+
const (
- DiffFlagBinary = C.GIT_DIFF_FLAG_BINARY
- DiffFlagNotBinary = C.GIT_DIFF_FLAG_NOT_BINARY
- DiffFlagValidOid = C.GIT_DIFF_FLAG_VALID_OID
+ DiffFlagBinary = DiffFlag(C.GIT_DIFF_FLAG_BINARY)
+ DiffFlagNotBinary = DiffFlag(C.GIT_DIFF_FLAG_NOT_BINARY)
+ DiffFlagValidOid = DiffFlag(C.GIT_DIFF_FLAG_VALID_OID)
- 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
+ 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
}