| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // part of "common_patch.dart"; |
| |
| @patch |
| class _Directory { |
| @patch |
| static _current(_Namespace namespace) native "Directory_Current"; |
| @patch |
| static _setCurrent(_Namespace namespace, Uint8List rawPath) |
| native "Directory_SetCurrent"; |
| @patch |
| static _createTemp(_Namespace namespace, Uint8List rawPath) |
| native "Directory_CreateTemp"; |
| @patch |
| static String _systemTemp(_Namespace namespace) native "Directory_SystemTemp"; |
| @patch |
| static _exists(_Namespace namespace, Uint8List rawPath) |
| native "Directory_Exists"; |
| @patch |
| static _create(_Namespace namespace, Uint8List rawPath) |
| native "Directory_Create"; |
| @patch |
| static _deleteNative(_Namespace namespace, Uint8List rawPath, bool recursive) |
| native "Directory_Delete"; |
| @patch |
| static _rename(_Namespace namespace, Uint8List rawPath, String newPath) |
| native "Directory_Rename"; |
| @patch |
| static void _fillWithDirectoryListing( |
| _Namespace namespace, |
| List<FileSystemEntity> list, |
| Uint8List rawPath, |
| bool recursive, |
| bool followLinks) native "Directory_FillWithDirectoryListing"; |
| } |
| |
| @patch |
| class _AsyncDirectoryListerOps { |
| @patch |
| factory _AsyncDirectoryListerOps(int pointer) => |
| new _AsyncDirectoryListerOpsImpl(pointer); |
| } |
| |
| class _AsyncDirectoryListerOpsImpl extends NativeFieldWrapperClass1 |
| implements _AsyncDirectoryListerOps { |
| _AsyncDirectoryListerOpsImpl._(); |
| |
| factory _AsyncDirectoryListerOpsImpl(int pointer) => |
| new _AsyncDirectoryListerOpsImpl._().._setPointer(pointer); |
| |
| void _setPointer(int pointer) |
| native "Directory_SetAsyncDirectoryListerPointer"; |
| int getPointer() native "Directory_GetAsyncDirectoryListerPointer"; |
| } |
| |
| // Corelib 'Uri.base' implementation. |
| // Uri.base is susceptible to changes in the current working directory. |
| Uri _uriBaseClosure() { |
| var result = _Directory._current(_Namespace._namespace); |
| if (result is OSError) { |
| throw new FileSystemException( |
| "Getting current working directory failed", "", result); |
| } |
| return new Uri.directory(result); |
| } |
| |
| @pragma("vm:entry-point", "call") |
| _getUriBaseClosure() => _uriBaseClosure; |