1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194
|
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2023 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
#if FOUNDATION_FRAMEWORK
internal import Foundation_Private.NSFileManager
@objc(_NSFileManagerBridge)
@objcMembers
final class _NSFileManagerBridge : NSObject {
private let _impl: _FileManagerImpl
@objc(initWithFileManager:)
init(implementing manager: FileManager) {
var impl = _FileManagerImpl()
impl._manager = manager
self._impl = impl
super.init()
}
func urls(for directory: FileManager.SearchPathDirectory, in domainMask: FileManager.SearchPathDomainMask) -> [URL] {
_impl.urls(for: directory, in: domainMask)
}
func url(for directory: FileManager.SearchPathDirectory, in domain: FileManager.SearchPathDomainMask, appropriateFor url: URL?, create shouldCreate: Bool) throws -> URL {
try _impl.url(for: directory, in: domain, appropriateFor: url, create: shouldCreate)
}
func getRelationship(_ outRelationship: UnsafeMutablePointer<FileManager.URLRelationship>, ofDirectoryAt directoryURL: URL, toItemAt otherURL: URL) throws {
try _impl.getRelationship(outRelationship, ofDirectoryAt: directoryURL, toItemAt: otherURL)
}
func getRelationship(_ outRelationship: UnsafeMutablePointer<FileManager.URLRelationship>, of directory: FileManager.SearchPathDirectory, in domainMask: FileManager.SearchPathDomainMask, toItemAt url: URL) throws {
try _impl.getRelationship(outRelationship, of: directory, in: domainMask, toItemAt: url)
}
func createDirectory(at url: URL, withIntermediateDirectories createIntermediates: Bool, attributes: [FileAttributeKey : Any]? = nil) throws {
try _impl.createDirectory(at: url, withIntermediateDirectories: createIntermediates, attributes: attributes)
}
func createSymbolicLink(at url: URL, withDestinationURL destURL: URL) throws {
try _impl.createSymbolicLink(at: url, withDestinationURL: destURL)
}
func setAttributes(_ attributes: [FileAttributeKey : Any], ofItemAtPath path: String) throws {
try _impl.setAttributes(attributes, ofItemAtPath: path)
}
func createDirectory(atPath path: String, withIntermediateDirectories createIntermediates: Bool, attributes: [FileAttributeKey : Any]? = nil) throws {
try _impl.createDirectory(atPath: path, withIntermediateDirectories: createIntermediates, attributes: attributes)
}
func contentsOfDirectory(atPath path: String) throws -> [String] {
try _impl.contentsOfDirectory(atPath: path)
}
func subpathsOfDirectory(atPath path: String) throws -> [String] {
try _impl.subpathsOfDirectory(atPath: path)
}
func attributesOfItem(atPath path: String) throws -> [FileAttributeKey : Any] {
try _impl.attributesOfItem(atPath: path)
}
func attributesOfFileSystem(forPath path: String) throws -> [FileAttributeKey : Any] {
try _impl.attributesOfFileSystem(forPath: path)
}
func createSymbolicLink(atPath path: String, withDestinationPath destPath: String) throws {
try _impl.createSymbolicLink(atPath: path, withDestinationPath: destPath)
}
func destinationOfSymbolicLink(atPath path: String) throws -> String {
try _impl.destinationOfSymbolicLink(atPath: path)
}
func copyItem(atPath srcPath: String, toPath dstPath: String, options: NSFileManagerCopyOptions) throws {
try _impl.copyItem(atPath: srcPath, toPath: dstPath, options: options)
}
func moveItem(atPath srcPath: String, toPath dstPath: String, options: NSFileManagerMoveOptions) throws {
try _impl.moveItem(atPath: srcPath, toPath: dstPath, options: options)
}
func linkItem(atPath srcPath: String, toPath dstPath: String) throws {
try _impl.linkItem(atPath: srcPath, toPath: dstPath)
}
func removeItem(atPath path: String) throws {
try _impl.removeItem(atPath: path)
}
func copyItem(at srcURL: URL, to dstURL: URL, options: NSFileManagerCopyOptions) throws {
try _impl.copyItem(at: srcURL, to: dstURL, options: options)
}
func moveItem(at srcURL: URL, to dstURL: URL, options: NSFileManagerMoveOptions) throws {
try _impl.moveItem(at: srcURL, to: dstURL, options: options)
}
func linkItem(at srcURL: URL, to dstURL: URL) throws {
try _impl.linkItem(at: srcURL, to: dstURL)
}
func removeItem(at URL: URL) throws {
try _impl.removeItem(at: URL)
}
var currentDirectoryPath: String? {
_impl.currentDirectoryPath
}
func changeCurrentDirectoryPath(_ path: String) -> Bool {
_impl.changeCurrentDirectoryPath(path)
}
func fileExists(atPath path: String) -> Bool {
_impl.fileExists(atPath: path)
}
func fileExists(atPath path: String, isDirectory: UnsafeMutablePointer<ObjCBool>?) -> Bool {
var dir = false
guard _impl.fileExists(atPath: path, isDirectory: &dir) else {
return false
}
if let isDirectory {
isDirectory.pointee = ObjCBool(dir)
}
return true
}
func isReadableFile(atPath path: String) -> Bool {
_impl.isReadableFile(atPath: path)
}
func isWritableFile(atPath path: String) -> Bool {
_impl.isWritableFile(atPath: path)
}
func isExecutableFile(atPath path: String) -> Bool {
_impl.isExecutableFile(atPath: path)
}
func isDeletableFile(atPath path: String) -> Bool {
_impl.isDeletableFile(atPath: path)
}
func contentsEqual(atPath path1: String, andPath path2: String) -> Bool {
_impl.contentsEqual(atPath: path1, andPath: path2)
}
func displayName(atPath path: String) -> String {
_impl.displayName(atPath: path)
}
func contents(atPath path: String) -> Data? {
_impl.contents(atPath: path)
}
func createFile(atPath path: String, contents data: Data?, attributes attr: [FileAttributeKey : Any]? = nil) -> Bool {
_impl.createFile(atPath: path, contents: data, attributes: attr)
}
func string(withFileSystemRepresentation str: UnsafePointer<CChar>, length len: Int) -> String {
_impl.string(withFileSystemRepresentation: str, length: len)
}
func withFileSystemRepresentation<R>(for path: String, _ body: (UnsafePointer<CChar>?) throws -> R) rethrows -> R {
try path.withFileSystemRepresentation(body)
}
var homeDirectoryForCurrentUser: URL {
_impl.homeDirectoryForCurrentUser
}
var temporaryDirectory: URL {
_impl.temporaryDirectory
}
func homeDirectory(forUser userName: String?) -> URL? {
_impl.homeDirectory(forUser: userName)
}
}
#endif
|