summaryrefslogtreecommitdiff
path: root/Utils
diff options
context:
space:
mode:
Diffstat (limited to 'Utils')
-rw-r--r--Utils/FileReader.swift46
-rw-r--r--Utils/FileWriter.swift112
2 files changed, 145 insertions, 13 deletions
diff --git a/Utils/FileReader.swift b/Utils/FileReader.swift
index 1f9c561..e0447b3 100644
--- a/Utils/FileReader.swift
+++ b/Utils/FileReader.swift
@@ -64,7 +64,7 @@ class FileReader {
return []
}
- func readAll() throws -> [UInt8] {
+ func readAllUInt8() throws -> [UInt8] {
var ret_arr:[UInt8]? = nil
if let file = fileHandle {
do {
@@ -90,7 +90,7 @@ class FileReader {
}
}
- func readAll() throws -> [Int8] {
+ func readAllInt8() throws -> [Int8] {
var ret_arr:[Int8]? = nil
if let file = fileHandle {
do {
@@ -122,14 +122,44 @@ class FileReader {
}
}
- func readAll() throws -> [UInt16] {
- print("FileReader not implemented")
- return []
+ //https://forums.swift.org/t/swift-5-read-binary-file-problem-with-unsafe-mutable-pointers/31048/6
+ func readAllInt16() throws -> [Int16] {
+ var ret_arr:[Int16]? = nil
+ if let file = fileHandle {
+ do {
+ if let databuf = try file.readToEnd() {
+ ret_arr = [Int16](asInt16(databuf))
+ }
+ print(ret_arr![0],ret_arr![1],ret_arr![2],ret_arr![3])
+ } catch {
+ print("ReadAll i8 error:\(error)")
+ throw FileReaderError.readError
+ }
+ }
+ if ret_arr == nil {
+ return []
+ } else {
+ return ret_arr!
+ }
}
- func readAll() throws -> [Int16] {
- print("FileReader not implemented")
- return []
+ func readAllUInt16() throws -> [UInt16] {
+ var ret_arr:[UInt16]? = nil
+ if let file = fileHandle {
+ do {
+ if let databuf = try file.readToEnd() {
+ ret_arr = [UInt16](asUInt16(databuf))
+ }
+ } catch {
+ print("ReadAll i8 error:\(error)")
+ throw FileReaderError.readError
+ }
+ }
+ if ret_arr == nil {
+ return []
+ } else {
+ return ret_arr!
+ }
}
func readAll() throws -> [Float] {
diff --git a/Utils/FileWriter.swift b/Utils/FileWriter.swift
index 6330342..e4c3b7a 100644
--- a/Utils/FileWriter.swift
+++ b/Utils/FileWriter.swift
@@ -28,7 +28,7 @@ class FileWriter {
print(dir+"/"+filename)
if !filemgr.fileExists(atPath: filename) {
print("Cant find file \(filename)")
- throw FileReaderError.noFile
+ throw FileWriterError.noFile
}
fileHandle = FileHandle(forReadingAtPath: dir+"/"+filename)
@@ -73,11 +73,113 @@ class FileWriter {
}
func writeAll(_ arr: [Float32]) throws {
- //convert float to data
- let databuf = arr.withUnsafeBytes { Data($0) }
+
+ var byteArray = [UInt8](repeating: 0, count: 0)
+ var b1:Data = Data()
+
+ byteArray.append(contentsOf: [0x11,0x22,0x33,0x44])
+
+ arr.withUnsafeBytes {
+ byteArray.append(contentsOf: $0)
+ }
+
+ for i in 0...arr.count {
+ b1.append(contentsOf: [byteArray[i*4+0],byteArray[i*4+1],byteArray[i*4+2],byteArray[i*4+3]])
+ }
+
+ do {
+ print("try to write \(b1.count) bytes")
+ try fileHandle?.write(contentsOf: b1)
+ } catch {
+ print("Cant write to file \(self.filepath) : \(error)")
+ throw FileWriterError.writeError
+ }
+ }
+
+ func writeAll(_ arr: [Int8]) throws {
+ var byteArray = [UInt8](repeating: 0, count: 0)
+ var b1:Data = Data()
+
+ arr.withUnsafeBytes {
+ byteArray.append(contentsOf: $0)
+ }
+
+ for i in 0..<arr.count {
+ b1.append(contentsOf: [byteArray[i]])
+ }
+
+ do {
+ print("try to write \(b1.count) bytes")
+ try fileHandle?.write(contentsOf: b1)
+ } catch {
+ print("Cant write to file \(self.filepath) : \(error)")
+ throw FileWriterError.writeError
+ }
+ }
+
+ func writeAll(_ arr: [UInt8]) throws {
+ //var byteArray = [UInt8](repeating: 0, count: 0)
+ var b1:Data = Data()
+
+ //arr.withUnsafeBytes {
+ // byteArray.append(contentsOf: $0)
+ //}
+
+ for i in 0..<arr.count {
+ b1.append(contentsOf: [arr[i]])
+ }
+
+ do {
+ print("try to write \(b1.count) bytes")
+ try fileHandle?.write(contentsOf: b1)
+ } catch {
+ print("Cant write to file \(self.filepath) : \(error)")
+ throw FileWriterError.writeError
+ }
+ }
+
+ func writeAll(_ arr: [Int16]) throws {
+
+ var byteArray = [UInt8](repeating: 0, count: 0)
+ var b1:Data = Data()
+
+ //byteArray.append(contentsOf: [0x11,0x22])
+
+ arr.withUnsafeBytes {
+ byteArray.append(contentsOf: $0)
+ }
+
+ for i in 0..<arr.count {
+ b1.append(contentsOf: [byteArray[i*2+0],byteArray[i*2+1]])
+ }
+
+ do {
+ print("try to write \(b1.count) bytes")
+ try fileHandle?.write(contentsOf: b1)
+ } catch {
+ print("Cant write to file \(self.filepath) : \(error)")
+ throw FileWriterError.writeError
+ }
+ }
+
+ func writeAll(_ arr: [UInt16]) throws {
+
+ var byteArray = [UInt8](repeating: 0, count: 0)
+ var b1:Data = Data()
+
+ //byteArray.append(contentsOf: [0x11,0x22])
+
+ arr.withUnsafeBytes {
+ byteArray.append(contentsOf: $0)
+ }
+
+ for i in 0..<arr.count {
+ b1.append(contentsOf: [byteArray[i*2+0],byteArray[i*2+1]])
+ }
+
do {
- print("try to write \(databuf.count) bytes")
- try fileHandle?.write(contentsOf: databuf)
+ print("try to write \(b1.count) bytes")
+ try fileHandle?.write(contentsOf: b1)
} catch {
print("Cant write to file \(self.filepath) : \(error)")
throw FileWriterError.writeError