From 66ba59407062f439c6cbea9f57c33cd93c4e66ce Mon Sep 17 00:00:00 2001 From: Matt Diephouse Date: Mon, 9 Mar 2015 17:32:48 -0400 Subject: [PATCH] Use COpaquePointer directly --- SwiftGit2/References.swift | 19 ++++++-------- SwiftGit2/Repository.swift | 39 +++++++++++------------------ SwiftGit2Tests/ObjectsSpec.swift | 9 +++---- SwiftGit2Tests/ReferencesSpec.swift | 9 +++---- SwiftGit2Tests/RemotesSpec.swift | 9 +++---- 5 files changed, 35 insertions(+), 50 deletions(-) diff --git a/SwiftGit2/References.swift b/SwiftGit2/References.swift index fa3e724..38a241e 100644 --- a/SwiftGit2/References.swift +++ b/SwiftGit2/References.swift @@ -107,15 +107,13 @@ public struct Branch: ReferenceType { var oid: OID if git_reference_type(pointer).value == GIT_REF_SYMBOLIC.value { - let resolved = UnsafeMutablePointer.alloc(1) - let success = git_reference_resolve(resolved, pointer) + var resolved: COpaquePointer = nil + let success = git_reference_resolve(&resolved, pointer) if success != GIT_OK.value { - resolved.dealloc(1) return nil } - oid = OID(git_reference_target(resolved.memory).memory) - git_reference_free(resolved.memory) - resolved.dealloc(1) + oid = OID(git_reference_target(resolved).memory) + git_reference_free(resolved) } else { oid = OID(git_reference_target(pointer).memory) } @@ -184,15 +182,14 @@ public enum TagReference: ReferenceType { let repo = git_reference_owner(pointer) var oid = git_reference_target(pointer).memory - let pointer = UnsafeMutablePointer.alloc(1) - let result = git_object_lookup(pointer, repo, &oid, GIT_OBJ_TAG) + var pointer: COpaquePointer = nil + let result = git_object_lookup(&pointer, repo, &oid, GIT_OBJ_TAG) if result == GIT_OK.value { - self = .Annotated(name, Tag(pointer.memory)) + self = .Annotated(name, Tag(pointer)) } else { self = .Lightweight(name, OID(oid)) } - git_object_free(pointer.memory) - pointer.dealloc(1) + git_object_free(pointer) } } diff --git a/SwiftGit2/Repository.swift b/SwiftGit2/Repository.swift index 3987707..6001ef5 100644 --- a/SwiftGit2/Repository.swift +++ b/SwiftGit2/Repository.swift @@ -33,16 +33,14 @@ final public class Repository { /// /// Returns a `Result` with a `Repository` or an error. class public func atURL(URL: NSURL) -> Result { - let pointer = UnsafeMutablePointer.alloc(1) - let result = git_repository_open(pointer, URL.fileSystemRepresentation) + var pointer: COpaquePointer = nil + let result = git_repository_open(&pointer, URL.fileSystemRepresentation) if result != GIT_OK.value { - pointer.dealloc(1) return failure(libGit2Error(result, libGit2PointOfFailure: "git_repository_open")) } - let repository = Repository(pointer.memory) - pointer.dealloc(1) + let repository = Repository(pointer) return success(repository) } @@ -83,19 +81,17 @@ final public class Repository { /// Returns the result of calling `transform` or an error if the object /// cannot be loaded. func withLibgit2Object(oid: OID, type: git_otype, transform: COpaquePointer -> Result) -> Result { - let pointer = UnsafeMutablePointer.alloc(1) + var pointer: COpaquePointer = nil let repository = self.pointer var oid = oid.oid - let result = git_object_lookup(pointer, repository, &oid, type) + let result = git_object_lookup(&pointer, repository, &oid, type) if result != GIT_OK.value { - pointer.dealloc(1) return failure(libGit2Error(result, libGit2PointOfFailure: "git_object_lookup")) } - let value = transform(pointer.memory) - git_object_free(pointer.memory) - pointer.dealloc(1) + let value = transform(pointer) + git_object_free(pointer) return value } @@ -230,18 +226,16 @@ final public class Repository { /// /// Returns the remote if it exists, or an error. public func remoteWithName(name: String) -> Result { - let pointer = UnsafeMutablePointer.alloc(1) + var pointer: COpaquePointer = nil let repository = self.pointer - let result = git_remote_lookup(pointer, repository, name) + let result = git_remote_lookup(&pointer, repository, name) if result != GIT_OK.value { - pointer.dealloc(1) return failure(libGit2Error(result, libGit2PointOfFailure: "git_remote_lookup")) } - let value = Remote(pointer.memory) - git_remote_free(pointer.memory) - pointer.dealloc(1) + let value = Remote(pointer) + git_remote_free(pointer) return success(value) } @@ -282,19 +276,16 @@ final public class Repository { /// reference is a tag, a `TagReference` will be returned. Otherwise, a /// `Reference` will be returned. public func referenceWithName(name: String) -> Result { - let pointer = UnsafeMutablePointer.alloc(1) + var pointer: COpaquePointer = nil let repository = self.pointer - let result = git_reference_lookup(pointer, repository, name) + let result = git_reference_lookup(&pointer, repository, name) if result != GIT_OK.value { - pointer.dealloc(1) return failure(libGit2Error(result, libGit2PointOfFailure: "git_reference_lookup")) } - let value = referenceWithLibGit2Reference(pointer.memory) - - git_reference_free(pointer.memory) - pointer.dealloc(1) + let value = referenceWithLibGit2Reference(pointer) + git_reference_free(pointer) return success(value) } diff --git a/SwiftGit2Tests/ObjectsSpec.swift b/SwiftGit2Tests/ObjectsSpec.swift index c2e5789..8a6f9be 100644 --- a/SwiftGit2Tests/ObjectsSpec.swift +++ b/SwiftGit2Tests/ObjectsSpec.swift @@ -15,11 +15,10 @@ func from_git_object(repository: Repository, oid: OID, f: COpaquePointer -> T let repository = repository.pointer var oid = oid.oid - let pointer = UnsafeMutablePointer.alloc(1) - git_object_lookup(pointer, repository, &oid, GIT_OBJ_ANY) - let result = f(pointer.memory) - git_object_free(pointer.memory) - pointer.dealloc(1) + var pointer: COpaquePointer = nil + git_object_lookup(&pointer, repository, &oid, GIT_OBJ_ANY) + let result = f(pointer) + git_object_free(pointer) return result } diff --git a/SwiftGit2Tests/ReferencesSpec.swift b/SwiftGit2Tests/ReferencesSpec.swift index 88ccfd2..b0964b6 100644 --- a/SwiftGit2Tests/ReferencesSpec.swift +++ b/SwiftGit2Tests/ReferencesSpec.swift @@ -14,11 +14,10 @@ import Quick func from_git_reference(repository: Repository, name: String, f: COpaquePointer -> T) -> T { let repository = repository.pointer - let pointer = UnsafeMutablePointer.alloc(1) - git_reference_lookup(pointer, repository, name) - let result = f(pointer.memory) - git_object_free(pointer.memory) - pointer.dealloc(1) + var pointer: COpaquePointer = nil + git_reference_lookup(&pointer, repository, name) + let result = f(pointer) + git_object_free(pointer) return result } diff --git a/SwiftGit2Tests/RemotesSpec.swift b/SwiftGit2Tests/RemotesSpec.swift index c67d860..6840b6b 100644 --- a/SwiftGit2Tests/RemotesSpec.swift +++ b/SwiftGit2Tests/RemotesSpec.swift @@ -14,11 +14,10 @@ import Quick func with_git_remote(repository: Repository, name: String, f: COpaquePointer -> T) -> T { let repository = repository.pointer - let pointer = UnsafeMutablePointer.alloc(1) - git_remote_lookup(pointer, repository, name) - let result = f(pointer.memory) - git_object_free(pointer.memory) - pointer.dealloc(1) + var pointer: COpaquePointer = nil + git_remote_lookup(&pointer, repository, name) + let result = f(pointer) + git_object_free(pointer) return result }