blob: 08dd1291f1ba434448448dcc207253e6b72e5e4e [file] [log] [blame]
// 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;
}