@@ -8,53 +8,6 @@
88
99import Foundation
1010
11−#if os(Linux)
12− import Glibc
13−
14− // Use fopen/fwrite to output string
15− func writeStringToFile(string: String, path: String) -> Bool {
16− let fp = fopen(path, "w"); defer { fclose(fp) }
17− let byteArray = Array(string.utf8)
18− let count = fwrite(byteArray, 1, byteArray.count, fp)
19− return count == string.utf8.count
20− }
21−
22− // Use fread to input string
23− func readStringFromFile(path: String) -> String {
24− let fp = fopen(path, "r"); defer { fclose(fp) }
25− var outputString = ""
26− let chunkSize = 1024
27− let buffer: UnsafeMutablePointer<CChar> = UnsafeMutablePointer.allocate(capacity: chunkSize)
28− defer { buffer.deallocate(capacity: chunkSize) }
29− repeat {
30− let count: Int = fread(buffer, 1, chunkSize, fp)
31− guard ferror(fp) == 0 else { break }
32− if count > 0 {
33− let ptr = unsafeBitCast(buffer, to: UnsafePointer<CChar>.self)
34− if let newString = String(validatingUTF8: ptr) {
35− outputString += newString
36− }
37− }
38− } while feof(fp) == 0
39−
40− return outputString
41− }
42−
43− extension String {
44− func write(with name: String) throws {
45− if !writeStringToFile(string: self, path: "diskraDz3/\(name)") {
46− print("Couldn't write files ¯\\_(ツ)_/¯")
47− }
48− }
49− }
50−#else
51− private extension String {
52− func write(with name: String) throws {
53− try self.write(toFile: "diskraDz3/\(name)", atomically: true, encoding: .utf8)
54− }
55− }
56−#endif
57−
5811private extension String {
5912 var sub: String {
6013 return self.map { c in
@@ -159,7 +112,7 @@ class Printer<Vertex> where Vertex: Hashable & Comparable {
159112
160113 func processInitialMinimization(minimization: Graph<Vertex>.Minimization, counter: Int) -> () {
161114 do {
162− try FileManager.default.createDirectory(atPath: "diskraDz3", withIntermediateDirectories: false)
115+ try FileManager.default.createDirectory(atPath: "diskraDz3", withIntermediateDirectories: true)
163116 FileManager.default.createFile(atPath: "diskraDz3/solutions.txt", contents: nil)
164117 solutions = FileHandle(forWritingAtPath: "diskraDz3/solutions.txt")
165118 try table(for: minimization.before, with: minimization.reductions, prefix: "", coef: false).write(with: "\(counter)_1.csv")
@@ -253,4 +206,8 @@ extension Tree {
253206 }
254207}
255208
256−
209+private extension String {
210+ func write(with name: String) throws {
211+ try self.write(toFile: "diskraDz3/\(name)", atomically: true, encoding: .utf8)
212+ }
213+}