/** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Foundation class Token: Hashable, CustomStringConvertible { var hashValue: Int { return ObjectIdentifier(self).hashValue } var description: String { return ObjectIdentifier(self).debugDescription } static func == (left: Token, right: Token) -> Bool { return left === right } } class FileItem : CustomStringConvertible, Hashable, Comparable, Copyable { typealias InstanceType = FileItem static func ==(left: FileItem, right: FileItem) -> Bool { return left.url == right.url } static func <(left: FileItem, right: FileItem) -> Bool { return left.url.lastPathComponent < right.url.lastPathComponent } let url: URL let isDir: Bool let isHidden: Bool let isPackage: Bool var hashValue: Int { return url.hashValue } /// When nil, then it has never been fnmatch'ed. weak var ignoreToken: Token? var ignore = false var needsScanChildren = false var childrenScanned = false var children: [FileItem] = [] var description: String { return "