BallEngine constructor

BallEngine(
  1. Program program, {
  2. void stdout(
    1. String
    )?,
  3. void stderr(
    1. String
    )?,
  4. String stdinReader()?,
  5. String envGet(
    1. String
    )?,
  6. List<String>? args,
  7. bool enableProfiling = false,
  8. int maxRecursionDepth = 10000,
  9. int? timeoutMs,
  10. int? maxMemoryBytes,
  11. int maxModules = 100,
  12. int maxExpressionDepth = 1000,
  13. int? maxProgramSizeBytes,
  14. bool sandbox = false,
  15. List<BallModuleHandler>? moduleHandlers,
  16. ModuleResolver? resolver,
})

Implementation

BallEngine(
  this.program, {
  void Function(String)? stdout,
  void Function(String)? stderr,
  this.stdinReader,
  String Function(String)? envGet,
  List<String>? args,
  bool enableProfiling = false,
  this.maxRecursionDepth = 10000,
  this.timeoutMs,
  this.maxMemoryBytes,
  this.maxModules = 100,
  this.maxExpressionDepth = 1000,
  this.maxProgramSizeBytes,
  this.sandbox = false,
  List<BallModuleHandler>? moduleHandlers,
  ModuleResolver? resolver,
}) : stdout = stdout ?? print,
     _resolver = resolver,
     stderr = stderr ?? ((s) => io.stderr.writeln(s)),
     _envGet = envGet ?? ((name) => io.Platform.environment[name] ?? ''),
     _args = args ?? [],
     moduleHandlers = moduleHandlers ?? [StdModuleHandler()] {
  _validateProgramLimits();
  if (enableProfiling) _callCounts = {};
  for (final handler in this.moduleHandlers) {
    handler.init(this);
  }
  _buildLookupTables();
  _initialized = _initTopLevelVariables();
}