Use non-Optional pointers wherever possible

This commit is contained in:
Matt Rubin 2016-12-07 05:06:22 -05:00
parent 003464dde8
commit 755dfe08f6
8 changed files with 32 additions and 32 deletions

View File

@ -21,8 +21,8 @@ public enum Credentials {
case Plaintext(username: String, password: String) case Plaintext(username: String, password: String)
case SSHMemory(username: String, publicKey: String, privateKey: String, passphrase: String) case SSHMemory(username: String, publicKey: String, privateKey: String, passphrase: String)
internal static func fromPointer(_ pointer: UnsafeMutableRawPointer?) -> Credentials { internal static func fromPointer(_ pointer: UnsafeMutableRawPointer) -> Credentials {
return Unmanaged<Wrapper<Credentials>>.fromOpaque(UnsafeRawPointer(pointer)!).takeRetainedValue().value return Unmanaged<Wrapper<Credentials>>.fromOpaque(UnsafeRawPointer(pointer)).takeRetainedValue().value
} }
internal func toPointer() -> UnsafeMutableRawPointer { internal func toPointer() -> UnsafeMutableRawPointer {
@ -36,7 +36,7 @@ internal func credentialsCallback(cred: UnsafeMutablePointer<UnsafeMutablePointe
payload: UnsafeMutableRawPointer?) -> Int32 { payload: UnsafeMutableRawPointer?) -> Int32 {
let result: Int32 let result: Int32
switch Credentials.fromPointer(payload) { switch Credentials.fromPointer(payload!) {
case .Default(): case .Default():
result = git_cred_default_new(cred) result = git_cred_default_new(cred)
case .Plaintext(let username, let password): case .Plaintext(let username, let password):

View File

@ -17,7 +17,7 @@ public protocol ObjectType {
var oid: OID { get } var oid: OID { get }
/// Create an instance with the underlying libgit2 type. /// Create an instance with the underlying libgit2 type.
init(_ pointer: OpaquePointer?) init(_ pointer: OpaquePointer)
} }
public func == <O: ObjectType>(lhs: O, rhs: O) -> Bool { public func == <O: ObjectType>(lhs: O, rhs: O) -> Bool {
@ -82,7 +82,7 @@ public struct Commit: ObjectType {
public let message: String public let message: String
/// Create an instance with a libgit2 `git_commit` object. /// Create an instance with a libgit2 `git_commit` object.
public init(_ pointer: OpaquePointer?) { public init(_ pointer: OpaquePointer) {
oid = OID(git_object_id(pointer).pointee) oid = OID(git_object_id(pointer).pointee)
message = String(validatingUTF8: git_commit_message(pointer))! message = String(validatingUTF8: git_commit_message(pointer))!
author = Signature(git_commit_author(pointer).pointee) author = Signature(git_commit_author(pointer).pointee)
@ -117,7 +117,7 @@ public struct Tree: ObjectType {
public let name: String public let name: String
/// Create an instance with a libgit2 `git_tree_entry`. /// Create an instance with a libgit2 `git_tree_entry`.
public init(_ pointer: OpaquePointer?) { public init(_ pointer: OpaquePointer) {
let oid = OID(git_tree_entry_id(pointer).pointee) let oid = OID(git_tree_entry_id(pointer).pointee)
attributes = Int32(git_tree_entry_filemode(pointer).rawValue) attributes = Int32(git_tree_entry_filemode(pointer).rawValue)
object = Pointer(oid: oid, type: git_tree_entry_type(pointer))! object = Pointer(oid: oid, type: git_tree_entry_type(pointer))!
@ -139,12 +139,12 @@ public struct Tree: ObjectType {
public let entries: [String: Entry] public let entries: [String: Entry]
/// Create an instance with a libgit2 `git_tree`. /// Create an instance with a libgit2 `git_tree`.
public init(_ pointer: OpaquePointer?) { public init(_ pointer: OpaquePointer) {
oid = OID(git_object_id(pointer).pointee) oid = OID(git_object_id(pointer).pointee)
var entries: [String: Entry] = [:] var entries: [String: Entry] = [:]
for idx in 0..<git_tree_entrycount(pointer) { for idx in 0..<git_tree_entrycount(pointer) {
let entry = Entry(git_tree_entry_byindex(pointer, idx)) let entry = Entry(git_tree_entry_byindex(pointer, idx)!)
entries[entry.name] = entry entries[entry.name] = entry
} }
self.entries = entries self.entries = entries
@ -186,7 +186,7 @@ public struct Blob: ObjectType {
public let data: Data public let data: Data
/// Create an instance with a libgit2 `git_blob`. /// Create an instance with a libgit2 `git_blob`.
public init(_ pointer: OpaquePointer?) { public init(_ pointer: OpaquePointer) {
oid = OID(git_object_id(pointer).pointee) oid = OID(git_object_id(pointer).pointee)
let length = Int(git_blob_rawsize(pointer)) let length = Int(git_blob_rawsize(pointer))
@ -220,7 +220,7 @@ public struct Tag: ObjectType {
public let message: String public let message: String
/// Create an instance with a libgit2 `git_tag`. /// Create an instance with a libgit2 `git_tag`.
public init(_ pointer: OpaquePointer?) { public init(_ pointer: OpaquePointer) {
oid = OID(git_object_id(pointer).pointee) oid = OID(git_object_id(pointer).pointee)
let targetOID = OID(git_tag_target_id(pointer).pointee) let targetOID = OID(git_tag_target_id(pointer).pointee)
target = Pointer(oid: targetOID, type: git_tag_target_type(pointer))! target = Pointer(oid: targetOID, type: git_tag_target_type(pointer))!

View File

@ -26,7 +26,7 @@ public func ==<T: ReferenceType>(lhs: T, rhs: T) -> Bool {
} }
/// Create a Reference, Branch, or TagReference from a libgit2 `git_reference`. /// Create a Reference, Branch, or TagReference from a libgit2 `git_reference`.
internal func referenceWithLibGit2Reference(_ pointer: OpaquePointer?) -> ReferenceType { internal func referenceWithLibGit2Reference(_ pointer: OpaquePointer) -> ReferenceType {
if git_reference_is_branch(pointer) != 0 || git_reference_is_remote(pointer) != 0 { if git_reference_is_branch(pointer) != 0 || git_reference_is_remote(pointer) != 0 {
return Branch(pointer)! return Branch(pointer)!
} else if git_reference_is_tag(pointer) != 0 { } else if git_reference_is_tag(pointer) != 0 {
@ -48,7 +48,7 @@ public struct Reference: ReferenceType {
public let oid: OID public let oid: OID
/// Create an instance with a libgit2 `git_reference` object. /// Create an instance with a libgit2 `git_reference` object.
public init(_ pointer: OpaquePointer?) { public init(_ pointer: OpaquePointer) {
let shorthand = String(validatingUTF8: git_reference_shorthand(pointer))! let shorthand = String(validatingUTF8: git_reference_shorthand(pointer))!
longName = String(validatingUTF8: git_reference_name(pointer))! longName = String(validatingUTF8: git_reference_name(pointer))!
shortName = (shorthand == longName ? nil : shorthand) shortName = (shorthand == longName ? nil : shorthand)
@ -95,7 +95,7 @@ public struct Branch: ReferenceType {
/// Create an instance with a libgit2 `git_reference` object. /// Create an instance with a libgit2 `git_reference` object.
/// ///
/// Returns `nil` if the pointer isn't a branch. /// Returns `nil` if the pointer isn't a branch.
public init?(_ pointer: OpaquePointer?) { public init?(_ pointer: OpaquePointer) {
let namePointer = UnsafeMutablePointer<UnsafePointer<Int8>?>.allocate(capacity: 1) let namePointer = UnsafeMutablePointer<UnsafePointer<Int8>?>.allocate(capacity: 1)
let success = git_branch_name(namePointer, pointer) let success = git_branch_name(namePointer, pointer)
if success != GIT_OK.rawValue { if success != GIT_OK.rawValue {
@ -175,7 +175,7 @@ public enum TagReference: ReferenceType {
/// Create an instance with a libgit2 `git_reference` object. /// Create an instance with a libgit2 `git_reference` object.
/// ///
/// Returns `nil` if the pointer isn't a branch. /// Returns `nil` if the pointer isn't a branch.
public init?(_ pointer: OpaquePointer?) { public init?(_ pointer: OpaquePointer) {
if git_reference_is_tag(pointer) == 0 { if git_reference_is_tag(pointer) == 0 {
return nil; return nil;
} }
@ -187,7 +187,7 @@ public enum TagReference: ReferenceType {
var pointer: OpaquePointer? = nil var pointer: OpaquePointer? = nil
let result = git_object_lookup(&pointer, repo, &oid, GIT_OBJ_TAG) let result = git_object_lookup(&pointer, repo, &oid, GIT_OBJ_TAG)
if result == GIT_OK.rawValue { if result == GIT_OK.rawValue {
self = .Annotated(name, Tag(pointer)) self = .Annotated(name, Tag(pointer!))
} else { } else {
self = .Lightweight(name, OID(oid)) self = .Lightweight(name, OID(oid))
} }

View File

@ -19,7 +19,7 @@ public struct Remote {
public let URL: String public let URL: String
/// Create an instance with a libgit2 `git_remote`. /// Create an instance with a libgit2 `git_remote`.
public init(_ pointer: OpaquePointer?) { public init(_ pointer: OpaquePointer) {
name = String(validatingUTF8: git_remote_name(pointer))! name = String(validatingUTF8: git_remote_name(pointer))!
URL = String(validatingUTF8: git_remote_url(pointer))! URL = String(validatingUTF8: git_remote_url(pointer))!
} }

View File

@ -111,7 +111,7 @@ final public class Repository {
return Result.failure(libGit2Error(result, libGit2PointOfFailure: "git_repository_open")) return Result.failure(libGit2Error(result, libGit2PointOfFailure: "git_repository_open"))
} }
let repository = Repository(pointer) let repository = Repository(pointer!)
return Result.success(repository) return Result.success(repository)
} }
@ -141,7 +141,7 @@ final public class Repository {
return Result.failure(libGit2Error(result, libGit2PointOfFailure: "git_clone")) return Result.failure(libGit2Error(result, libGit2PointOfFailure: "git_clone"))
} }
let repository = Repository(pointer) let repository = Repository(pointer!)
return Result.success(repository) return Result.success(repository)
} }
@ -150,7 +150,7 @@ final public class Repository {
/// Create an instance with a libgit2 `git_repository` object. /// Create an instance with a libgit2 `git_repository` object.
/// ///
/// The Repository assumes ownership of the `git_repository` object. /// The Repository assumes ownership of the `git_repository` object.
public init(_ pointer: OpaquePointer?) { public init(_ pointer: OpaquePointer) {
self.pointer = pointer self.pointer = pointer
let path = git_repository_workdir(pointer) let path = git_repository_workdir(pointer)
@ -164,7 +164,7 @@ final public class Repository {
// MARK: - Properties // MARK: - Properties
/// The underlying libgit2 `git_repository` object. /// The underlying libgit2 `git_repository` object.
public let pointer: OpaquePointer? public let pointer: OpaquePointer
/// The URL of the repository's working directory, or `nil` if the /// The URL of the repository's working directory, or `nil` if the
/// repository is bare. /// repository is bare.
@ -181,7 +181,7 @@ final public class Repository {
/// ///
/// Returns the result of calling `transform` or an error if the object /// Returns the result of calling `transform` or an error if the object
/// cannot be loaded. /// cannot be loaded.
func withLibgit2Object<T>(_ oid: OID, type: git_otype, transform: (OpaquePointer?) -> Result<T, NSError>) -> Result<T, NSError> { func withLibgit2Object<T>(_ oid: OID, type: git_otype, transform: (OpaquePointer) -> Result<T, NSError>) -> Result<T, NSError> {
var pointer: OpaquePointer? = nil var pointer: OpaquePointer? = nil
var oid = oid.oid var oid = oid.oid
let result = git_object_lookup(&pointer, self.pointer, &oid, type) let result = git_object_lookup(&pointer, self.pointer, &oid, type)
@ -190,12 +190,12 @@ final public class Repository {
return Result.failure(libGit2Error(result, libGit2PointOfFailure: "git_object_lookup")) return Result.failure(libGit2Error(result, libGit2PointOfFailure: "git_object_lookup"))
} }
let value = transform(pointer) let value = transform(pointer!)
git_object_free(pointer) git_object_free(pointer)
return value return value
} }
func withLibgit2Object<T>(_ oid: OID, type: git_otype, transform: (OpaquePointer?) -> T) -> Result<T, NSError> { func withLibgit2Object<T>(_ oid: OID, type: git_otype, transform: (OpaquePointer) -> T) -> Result<T, NSError> {
return withLibgit2Object(oid, type: type) { Result.success(transform($0)) } return withLibgit2Object(oid, type: type) { Result.success(transform($0)) }
} }
@ -332,7 +332,7 @@ final public class Repository {
return Result.failure(libGit2Error(result, libGit2PointOfFailure: "git_remote_lookup")) return Result.failure(libGit2Error(result, libGit2PointOfFailure: "git_remote_lookup"))
} }
let value = Remote(pointer) let value = Remote(pointer!)
git_remote_free(pointer) git_remote_free(pointer)
return Result.success(value) return Result.success(value)
} }
@ -380,7 +380,7 @@ final public class Repository {
return Result.failure(libGit2Error(result, libGit2PointOfFailure: "git_reference_lookup")) return Result.failure(libGit2Error(result, libGit2PointOfFailure: "git_reference_lookup"))
} }
let value = referenceWithLibGit2Reference(pointer) let value = referenceWithLibGit2Reference(pointer!)
git_reference_free(pointer) git_reference_free(pointer)
return Result.success(value) return Result.success(value)
} }
@ -435,7 +435,7 @@ final public class Repository {
if result != GIT_OK.rawValue { if result != GIT_OK.rawValue {
return Result.failure(libGit2Error(result, libGit2PointOfFailure: "git_repository_head")) return Result.failure(libGit2Error(result, libGit2PointOfFailure: "git_repository_head"))
} }
let value = referenceWithLibGit2Reference(pointer) let value = referenceWithLibGit2Reference(pointer!)
git_reference_free(pointer) git_reference_free(pointer)
return Result.success(value) return Result.success(value)
} }

View File

@ -12,13 +12,13 @@ import Nimble
import Quick import Quick
import libgit2 import libgit2
func from_git_object<T>(_ repository: Repository, oid: OID, f: (OpaquePointer?) -> T) -> T { func from_git_object<T>(_ repository: Repository, oid: OID, f: (OpaquePointer) -> T) -> T {
let repository = repository.pointer let repository = repository.pointer
var oid = oid.oid var oid = oid.oid
var pointer: OpaquePointer? = nil var pointer: OpaquePointer? = nil
git_object_lookup(&pointer, repository, &oid, GIT_OBJ_ANY) git_object_lookup(&pointer, repository, &oid, GIT_OBJ_ANY)
let result = f(pointer) let result = f(pointer!)
git_object_free(pointer) git_object_free(pointer)
return result return result

View File

@ -12,12 +12,12 @@ import Nimble
import Quick import Quick
import libgit2 import libgit2
func from_git_reference<T>(_ repository: Repository, name: String, f: (OpaquePointer?) -> T) -> T { func from_git_reference<T>(_ repository: Repository, name: String, f: (OpaquePointer) -> T) -> T {
let repository = repository.pointer let repository = repository.pointer
var pointer: OpaquePointer? = nil var pointer: OpaquePointer? = nil
git_reference_lookup(&pointer, repository, name) git_reference_lookup(&pointer, repository, name)
let result = f(pointer) let result = f(pointer!)
git_object_free(pointer) git_object_free(pointer)
return result return result

View File

@ -12,12 +12,12 @@ import Nimble
import Quick import Quick
import libgit2 import libgit2
func with_git_remote<T>(_ repository: Repository, name: String, f: (OpaquePointer?) -> T) -> T { func with_git_remote<T>(_ repository: Repository, name: String, f: (OpaquePointer) -> T) -> T {
let repository = repository.pointer let repository = repository.pointer
var pointer: OpaquePointer? = nil var pointer: OpaquePointer? = nil
git_remote_lookup(&pointer, repository, name) git_remote_lookup(&pointer, repository, name)
let result = f(pointer) let result = f(pointer!)
git_object_free(pointer) git_object_free(pointer)
return result return result