apply MemInStream changes that required streams to be class-based

This commit is contained in:
2024-11-14 01:04:37 +11:00
parent 6a5da27440
commit 775698620f

View File

@ -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>)
} }
} }
*/