From 37ccc4c00d22391b994190f59230d283509726d1 Mon Sep 17 00:00:00 2001 From: Ben Navetta Date: Mon, 18 Aug 2014 20:04:32 -0400 Subject: [PATCH] add ByIndex, reorder to match other files --- status.go | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/status.go b/status.go index 5fecdb3..e22f533 100644 --- a/status.go +++ b/status.go @@ -27,16 +27,24 @@ const ( StatusIgnored = C.GIT_STATUS_IGNORED ) -type StatusList struct { - ptr *C.git_status_list -} - type StatusEntry struct { Status Status HeadToIndex DiffDelta IndexToWorkdir DiffDelta } +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), + } +} + +type StatusList struct { + ptr *C.git_status_list +} + func newStatusListFromC(ptr *C.git_status_list) *StatusList { if ptr == nil { return nil @@ -60,10 +68,10 @@ func (statusList *StatusList) Free() error { 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), +func (statusList *StatusList) ByIndex(index int) (StatusEntry, error) { + if statusList.ptr == nil { + return StatusEntry{}, ErrInvalid } + ptr := C.git_status_byindex(statusList.ptr, C.size_t(index)) + return statusEntryFromC(ptr), nil }