/// <summary> /// Updates the status based on the current <see cref="PExpr"/>. /// </summary> /// <param name="r">The current <see cref="PExpr"/>.</param> internal protected virtual void UpdateStatus(PExpr r) { _error = (_result = r.Result) as RuntimeError; _status = ScriptEngineStatus.None; if (r.AsErrorResult != null) { _status |= ScriptEngineStatus.IsError; } if (r.IsPending) { Debug.Assert(r.DeferredStatus != PExpr.DeferredKind.None); switch (r.DeferredStatus) { case PExpr.DeferredKind.Timeout: _status |= ScriptEngineStatus.Timeout; break; case PExpr.DeferredKind.Breakpoint: _status |= ScriptEngineStatus.Breakpoint; break; case PExpr.DeferredKind.AsyncCall: _status |= ScriptEngineStatus.AsyncCall; break; case PExpr.DeferredKind.FirstChanceError: _status |= ScriptEngineStatus.FirstChanceError; break; default: Debug.Fail("UpdateStatus"); break; } } else { _status |= ScriptEngineStatus.IsFinished; } }
/// <summary> /// Resets the current execution. This frees the <see cref="ScriptEngine"/>: new calls to its <see cref="G:ScriptEngine.Execute"/> can be made. /// </summary> public void Dispose() { if (_visitor != null) { _engine.StopExecution(); _error = null; _result = null; _status = ScriptEngineStatus.None; _visitor = null; } }
/// <summary> /// Updates the status based on the current <see cref="PExpr"/>. /// </summary> /// <param name="r">The current <see cref="PExpr"/>.</param> protected internal virtual void UpdateStatus( PExpr r ) { _error = (_result = r.Result) as RuntimeError; _status = ScriptEngineStatus.None; if( r.AsErrorResult != null ) _status |= ScriptEngineStatus.IsError; if( r.IsPending ) { Debug.Assert( r.DeferredStatus != PExpr.DeferredKind.None ); switch( r.DeferredStatus ) { case PExpr.DeferredKind.Timeout: _status |= ScriptEngineStatus.Timeout; break; case PExpr.DeferredKind.Breakpoint: _status |= ScriptEngineStatus.Breakpoint; break; case PExpr.DeferredKind.AsyncCall: _status |= ScriptEngineStatus.AsyncCall; break; case PExpr.DeferredKind.FirstChanceError: _status |= ScriptEngineStatus.FirstChanceError; break; default: Debug.Fail( "UpdateStatus" ); break; } } else _status |= ScriptEngineStatus.IsFinished; }
/// <summary> /// Resets the current execution. This frees the <see cref="ScriptEngine"/>: new calls to its <see cref="G:ScriptEngine.Execute"/> can be made. /// </summary> public void Dispose() { if( _visitor != null ) { _engine.StopExecution(); _error = null; _result = null; _status = ScriptEngineStatus.None; _visitor = null; } }