mirror of
https://github.com/GayPizzaSpecifications/darwin-apk.git
synced 2025-08-03 21:41:31 +00:00
apply MemInStream changes that required streams to be class-based
This commit is contained in:
@ -7,48 +7,33 @@ import Foundation
|
|||||||
import System
|
import System
|
||||||
|
|
||||||
public class MemoryInputStream: InputStream {
|
public class MemoryInputStream: InputStream {
|
||||||
private var _buf: ContiguousArray<UInt8>! = nil
|
private let _str: Storage
|
||||||
private let _sli: ArraySlice<UInt8>
|
|
||||||
private let _ptr: UnsafeBufferPointer<UInt8>
|
private let _ptr: UnsafeBufferPointer<UInt8>
|
||||||
private let _len: Int
|
private let _len: Int
|
||||||
private var _idx = 0
|
private var _idx = 0
|
||||||
|
|
||||||
public init(buffer: Data) {
|
public init(buffer: Data) {
|
||||||
self._len = buffer.count
|
self._len = buffer.count
|
||||||
/*
|
self._str = .buffer(.allocate(capacity: self._len))
|
||||||
self._buf = .buffer(.allocate(capacity: self._len))
|
if case .buffer(let buf) = self._str {
|
||||||
if case .buffer(let buf) = _buf {
|
|
||||||
_ = buffer.copyBytes(to: buf)
|
_ = buffer.copyBytes(to: buf)
|
||||||
self._ptr = .init(start: buf.baseAddress, count: self._len)
|
self._ptr = .init(start: buf.baseAddress, count: self._len)
|
||||||
} else { fatalError() }
|
} else { fatalError() }
|
||||||
*/
|
|
||||||
self._buf = .init(repeating: 0, count: self._len)
|
|
||||||
self._buf.withUnsafeMutableBufferPointer { buf in
|
|
||||||
_ = buffer.copyBytes(to: buf)
|
|
||||||
}
|
|
||||||
self._sli = self._buf[...]
|
|
||||||
self._ptr = self._sli.withUnsafeBufferPointer(\.self)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public init(view: ArraySlice<UInt8>) {
|
public init(view: ArraySlice<UInt8>) {
|
||||||
self._len = view.count
|
self._len = view.count
|
||||||
/*
|
self._str = .slice(view)
|
||||||
self._buf = .slice(view)
|
if case .slice(let sli) = self._str {
|
||||||
if case .slice(let sli) = _buf {
|
|
||||||
self._ptr = sli.withUnsafeBufferPointer(\.self)
|
self._ptr = sli.withUnsafeBufferPointer(\.self)
|
||||||
} else { fatalError() }
|
} else { fatalError() }
|
||||||
*/
|
|
||||||
self._sli = view
|
|
||||||
self._ptr = self._sli.withUnsafeBufferPointer(\.self)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
deinit {
|
deinit {
|
||||||
if case .buffer(let buf) = _buf {
|
if case .buffer(let buf) = self._str {
|
||||||
buf.deallocate()
|
buf.deallocate()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
public override func seek(_ whence: Whence) throws(StreamError) {
|
public override func seek(_ whence: Whence) throws(StreamError) {
|
||||||
let (position, overflow) = switch whence {
|
let (position, overflow) = switch whence {
|
||||||
@ -98,12 +83,9 @@ public class MemoryInputStream: InputStream {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
fileprivate extension MemoryInputStream {
|
fileprivate extension MemoryInputStream {
|
||||||
enum Storage {
|
enum Storage {
|
||||||
//case buffer(_: UnsafeMutableBufferPointer<UInt8>)
|
case buffer(_: UnsafeMutableBufferPointer<UInt8>)
|
||||||
case buffer(_: ContiguousArray<UInt8>)
|
|
||||||
case slice(_: ArraySlice<UInt8>)
|
case slice(_: ArraySlice<UInt8>)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
Reference in New Issue
Block a user