package git /* #include */ import "C" import ( "runtime" ) type Patch struct { ptr *C.git_patch } func newPatchFromC(ptr *C.git_patch) *Patch { if ptr == nil { return nil } patch := &Patch{ ptr: ptr, } runtime.SetFinalizer(patch, (*Patch).Free) return patch } func (patch *Patch) Free() error { if patch.ptr == nil { return ErrInvalid } runtime.SetFinalizer(patch, nil) C.git_patch_free(patch.ptr) patch.ptr = nil return nil } func (patch *Patch) String() (string, error) { if patch.ptr == nil { return "", ErrInvalid } var buf C.git_buf ecode := C.git_patch_to_buf(&buf, patch.ptr) if ecode < 0 { return "", MakeGitError(ecode) } return C.GoString(buf.ptr), nil }