/////////////////////////////////////////////////////////////////////////////// public void SetMacroProcessorOutputInstance( MasterOutput output ) { MacroProcessor.OutputInstance = output; }
///////////////////////////////////////////////////////////////////////////// public void ClearMasterOutput() { _masterOutput = null; }
///////////////////////////////////////////////////////////////////////////// public void ClearMultileEvalOutput() { multileEvalOutput = null; }
///////////////////////////////////////////////////////////////////////////// MasterOutput GetMasterOutput( bool newOutput ) { // ****** if( null == _masterOutput || newOutput ) { _masterOutput = new MasterOutput( gc ); } // ****** return _masterOutput; }
///////////////////////////////////////////////////////////////////////////// public void MultileEvaluate( IEvaluationContext evx ) { // ****** // // EvalLock() will throw an exception if this instance of NMP is already // evaluating something, it also calls Restore()/Save() for our thread // data // using( new EvalLock( this ) ) { try { using( var input = gc.GetMasterParseReader( new ParseStringReader( evx.Text, evx.FileName ) ) ) { if( null == multileEvalOutput ) { multileEvalOutput = new MasterOutput( gc ); } // ****** var mir = new MIR( null, input, "Root" ); using( Get<InvocationContext>().Init( mir ) ) { SetMacroProcessorOutputInstance( multileEvalOutput ); Scanner( input, multileEvalOutput ); SetMacroProcessorOutputInstance( null ); } } } finally { } } }