mirror of
https://github.com/apple/sourcekit-lsp.git
synced 2026-03-02 18:23:24 +01:00
Explicitly import interfaces from TSCBasic which now allows us to identify all the swift-tools-support-core interfaces which are in use in SourceKit-LSP.
32 lines
1.1 KiB
Swift
32 lines
1.1 KiB
Swift
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This source file is part of the Swift.org open source project
|
|
//
|
|
// Copyright (c) 2014 - 2018 Apple Inc. and the Swift project authors
|
|
// Licensed under Apache License v2.0 with Runtime Library Exception
|
|
//
|
|
// See https://swift.org/LICENSE.txt for license information
|
|
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
import Foundation
|
|
|
|
import struct TSCBasic.ByteString
|
|
|
|
extension ByteString {
|
|
|
|
/// Access the contents of `self` as `Data`. The contents are not copied, so it is not safe to
|
|
/// store a reference to the data object.
|
|
@inlinable
|
|
public func withUnsafeData<R>(_ body: (Data) throws -> R) rethrows -> R {
|
|
let contents = self.contents
|
|
return try contents.withUnsafeBytes { buffer in
|
|
guard let pointer = UnsafeMutableRawBufferPointer(mutating: buffer).baseAddress else {
|
|
return try body(Data())
|
|
}
|
|
return try body(Data(bytesNoCopy: pointer, count: contents.count, deallocator: .none))
|
|
}
|
|
}
|
|
}
|