| // 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 dart.io; |
| |
| /** |
| * The Options object allows accessing the arguments which have been passed to |
| * the current isolate. |
| */ |
| abstract class Options { |
| /** |
| * A newly constructed Options object contains the arguments exactly as they |
| * have been passed to the isolate. |
| */ |
| factory Options() => new _OptionsImpl(); |
| |
| /** |
| * Returns a list of arguments that have been passed to this isolate. Any |
| * modifications to the list will be contained to the options object owning |
| * this list. |
| * |
| * If the execution environment does not support [arguments] an empty list |
| * is returned. |
| */ |
| List<String> get arguments; |
| |
| /** |
| * Returns the path of the executable used to run the script in this |
| * isolate. |
| * |
| * If the execution environment does not support [executable] an empty |
| * string is returned. |
| */ |
| String get executable; |
| |
| /** |
| * Returns the path of the script being run in this isolate. |
| * |
| * If the executable environment does not support [script] an empty |
| * string is returned. |
| */ |
| String get script; |
| |
| |
| /** |
| * Returns the version of the current Dart runtime. |
| */ |
| String get version; |
| } |
| |
| class _OptionsImpl implements Options { |
| List<String> _arguments = null; |
| |
| // This arguments singleton is written to by the embedder if applicable. |
| static List<String> _nativeArguments = const []; |
| |
| List<String> get arguments { |
| if (_arguments == null) { |
| // On first access make a copy of the native arguments. |
| _arguments = _nativeArguments.sublist(0, _nativeArguments.length); |
| } |
| return _arguments; |
| } |
| |
| String get executable => Platform.executable; |
| String get script => Platform.script; |
| String get version => Platform.version; |
| } |