// Copyright (c) 2017 Timofey Solomko // Licensed under MIT License // // See LICENSE for license information import Foundation class DataWithPointer { let size: Int let data: Data var index: Int var isAtTheEnd: Bool { return self.data.endIndex == self.index } var previousByte: UInt8 { return self.data[self.index - 1] } convenience init(array: inout [UInt8]) { self.init(data: Data(bytes: array)) } init(data: Data) { self.size = data.count self.data = data self.index = data.startIndex } func byte() -> UInt8 { self.index += 1 return self.data[self.index - 1] } func bytes(count: Int) -> [UInt8] { let result = self.data[self.index.. UInt64 { let result = self.data[self.index.. UInt32 { let result = self.data[self.index.. UInt16 { let result = self.data[self.index..