| // 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 |
| @pragma("vm:external-name", "Directory_Current") |
| external static _current(_Namespace namespace); |
| @patch |
| @pragma("vm:external-name", "Directory_SetCurrent") |
| external static _setCurrent(_Namespace namespace, Uint8List rawPath); |
| @patch |
| @pragma("vm:external-name", "Directory_CreateTemp") |
| external static _createTemp(_Namespace namespace, Uint8List rawPath); |
| @patch |
| @pragma("vm:external-name", "Directory_SystemTemp") |
| external static String _systemTemp(_Namespace namespace); |
| @patch |
| @pragma("vm:external-name", "Directory_Exists") |
| external static _exists(_Namespace namespace, Uint8List rawPath); |
| @patch |
| @pragma("vm:external-name", "Directory_Create") |
| external static _create(_Namespace namespace, Uint8List rawPath); |
| @patch |
| @pragma("vm:external-name", "Directory_Delete") |
| external static _deleteNative( |
| _Namespace namespace, Uint8List rawPath, bool recursive); |
| @patch |
| @pragma("vm:external-name", "Directory_Rename") |
| external static _rename( |
| _Namespace namespace, Uint8List rawPath, String newPath); |
| @patch |
| @pragma("vm:external-name", "Directory_FillWithDirectoryListing") |
| external static void _fillWithDirectoryListing( |
| _Namespace namespace, |
| List<FileSystemEntity> list, |
| Uint8List rawPath, |
| bool recursive, |
| bool followLinks); |
| } |
| |
| @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); |
| |
| @pragma("vm:external-name", "Directory_SetAsyncDirectoryListerPointer") |
| external void _setPointer(int pointer); |
| |
| @pragma("vm:external-name", "Directory_GetAsyncDirectoryListerPointer") |
| external int getPointer(); |
| } |
| |
| // 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; |