diff options
| author | Ben Navetta <[email protected]> | 2014-08-18 19:42:34 -0400 |
|---|---|---|
| committer | Ben Navetta <[email protected]> | 2014-08-18 19:42:34 -0400 |
| commit | 39d825a2a85d839ac7ba2a531947166a108d72d4 (patch) | |
| tree | 1d98f2f89936e1a2d91728746aece327c9375c39 /status.go | |
| parent | 213a1bc8765c93d4718cc3cdf5b08bbc969442c6 (diff) | |
status data types
Diffstat (limited to 'status.go')
| -rw-r--r-- | status.go | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/status.go b/status.go new file mode 100644 index 0000000..5fecdb3 --- /dev/null +++ b/status.go @@ -0,0 +1,69 @@ +package git + +/* +#include <git2.h> +#include <git2/errors.h> +*/ +import "C" + +import ( + "runtime" +) + +type Status int + +const ( + StatusCurrent Status = C.GIT_STATUS_CURRENT + StatusIndexNew = C.GIT_STATUS_INDEX_NEW + StatusIndexModified = C.GIT_STATUS_INDEX_MODIFIED + StatusIndexDeleted = C.GIT_STATUS_INDEX_DELETED + StatusIndexRenamed = C.GIT_STATUS_INDEX_RENAMED + StatusIndexTypeChange = C.GIT_STATUS_INDEX_TYPECHANGE + StatusWtNew = C.GIT_STATUS_WT_NEW + StatusWtModified = C.GIT_STATUS_WT_NEW + StatusWtDeleted = C.GIT_STATUS_WT_DELETED + StatusWtTypeChange = C.GIT_STATUS_WT_TYPECHANGE + StatusWtRenamed = C.GIT_STATUS_WT_RENAMED + StatusIgnored = C.GIT_STATUS_IGNORED +) + +type StatusList struct { + ptr *C.git_status_list +} + +type StatusEntry struct { + Status Status + HeadToIndex DiffDelta + IndexToWorkdir DiffDelta +} + +func newStatusListFromC(ptr *C.git_status_list) *StatusList { + if ptr == nil { + return nil + } + + statusList := &StatusList{ + ptr: ptr, + } + + runtime.SetFinalizer(statusList, (*StatusList).Free) + return statusList +} + +func (statusList *StatusList) Free() error { + if statusList.ptr == nil { + return ErrInvalid + } + runtime.SetFinalizer(statusList, nil) + C.git_status_list_free(statusList.ptr) + statusList.ptr = nil + return nil +} + +func statusEntryFromC(statusEntry *C.git_status_entry) StatusEntry { + return StatusEntry { + Status: Status(statusEntry.status), + HeadToIndex: diffDeltaFromC(statusEntry.head_to_index), + IndexToWorkdir: diffDeltaFromC(statusEntry.index_to_workdir), + } +} |
