BallEngine constructor
BallEngine(
- Program program, {
- void stdout()?,
- void stderr()?,
- String stdinReader()?,
- String envGet()?,
- List<
String> ? args, - bool enableProfiling = false,
- int maxRecursionDepth = 10000,
- int? timeoutMs,
- int? maxMemoryBytes,
- int maxModules = 100,
- int maxExpressionDepth = 1000,
- int? maxProgramSizeBytes,
- bool sandbox = false,
- List<
BallModuleHandler> ? moduleHandlers, - 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();
}