0001 import Echo
0002 import Foundation
0003
0004 #if os(Linux)
0005 import Glibc
0006 #else
0007 import Darwin
0008 #endif
0009
0010 public enum EncodingType| Data.swift:8 | static var encodingType: EncodingType { get } |
| Data.swift:13 | public static var encodingType: EncodingType { |
{
0011 case UTF8| Data.swift:14 | return .UTF8 |
| Vaquita.swift:17 | case UTF8: |
| Vaquita.swift:26 | case UTF8: |
0012
0013 var typeForEncoding: Any.Type {
0014
0015 let type: Any.Type
0016 switch self {
0017 case UTF8:
0018 type = UInt8.self
0019 }
0020
0021 return type
0022 }
0023
0024 var encoding| Data.swift:60 | encoding: UInt8.encodingType.encoding, freeWhenDone: false) else { |
: UInt {
0025 switch self {
0026 case UTF8:
0027 return NSUTF8StringEncoding
0028 }
0029 }
0030 }
0031
0032 public enum FileError| Vaquita.swift:58 | throw FileError.OpenFailed |
| Vaquita.swift:88 | throw FileError.OpenFailed |
: ErrorType {
0033 case ReadFailed
0034 case WriteFailed
0035 case OpenFailed| Vaquita.swift:58 | throw FileError.OpenFailed |
| Vaquita.swift:88 | throw FileError.OpenFailed |
0036 }
0037
0038 public class Vaquita {
0039
0040 static let fileQueue| Vaquita.swift:45 | dispatch_async(fileQueue) { |
| Vaquita.swift:75 | dispatch_async(fileQueue) { |
= dispatch_queue_create("com.vaquita.file",
0041 DISPATCH_QUEUE_SERIAL)
0042
0043 public class func readFile(path path: String,
0044 handler: (data: Data?, error: ErrorType?) -> ()) {
0045 dispatch_async(fileQueue) {
0046 do {
0047 let data = try self.readFileSync(path: path)
0048 handler(data: data, error: nil)
0049 } catch {
0050 handler(data: nil, error: error)
0051 }
0052 }
0053 }
0054
0055 public class func readFileSync| Vaquita.swift:47 | let data = try self.readFileSync(path: path) |
(path path: String) throws -> Data {
0056 let fileptr = fopen(path, "rb")
0057 if fileptr == nil {
0058 throw FileError.OpenFailed
0059 }
0060 fseek(fileptr, 0, SEEK_END)
0061 let fileLength = ftell(fileptr)
0062 rewind(fileptr)
0063
0064 let buffer: UnsafeMutablePointer<UInt8> =
0065 UnsafeMutablePointer.alloc(fileLength)
0066
0067 fread(buffer, fileLength, 1, fileptr)
0068 fclose(fileptr)
0069
0070 return Data(bytes: buffer, count: fileLength);
0071 }
0072
0073 public class func writeData(data: Data, toFilePath path: String,
0074 handler: (error: ErrorType?) -> ()) {
0075 dispatch_async(fileQueue) {
0076 do {
0077 try self.writeDataSync(data, toFilePath: path)
0078 handler(error: nil)
0079 } catch {
0080 handler(error: error)
0081 }
0082 }
0083 }
0084
0085 public class func writeDataSync| Vaquita.swift:77 | try self.writeDataSync(data, toFilePath: path) |
(data: Data, toFilePath path: String) throws {
0086 let fileptr = fopen(path, "w")
0087 if fileptr == nil {
0088 throw FileError.OpenFailed
0089 }
0090 fwrite(data.bytes, 1, data.size, fileptr)
0091 fclose(fileptr)
0092 }
0093 }
0094