public override void Evaluate <T>( ICircuitEvaluator <T> evaluator, EvaluationState <T> evaluationState, CircuitContext circuitContext) { evaluationState.SetGateEvaluationValue(this, evaluationState.GetInput(Context.TypeUniqueId)); }
/// <summary> /// Initializes a new instance of the <see cref="CircuitContext"/> class. /// </summary> /// <param name="contextName">Name of the context.</param> /// <param name="parent">Parent of the context.</param> /// <param name="evaluator">Circuit evaluator.</param> /// <param name="simulationPreparations">Simulation preparations.</param> /// <param name="resultService">SpiceModel service for the context.</param> /// <param name="nameGenerator">Name generator for the models.</param> /// <param name="statementsReader">Statements reader.</param> /// <param name="waveformReader">Waveform reader.</param> /// <param name="caseSettings">Case settings.</param> /// <param name="exporters">Exporters.</param> /// <param name="workingDirectory">Working directory.</param> /// <param name="instanceData">Instance data.</param> public CircuitContext( string contextName, ICircuitContext parent, ICircuitEvaluator evaluator, ISimulationPreparations simulationPreparations, IResultService resultService, INameGenerator nameGenerator, ISpiceStatementsReader statementsReader, IWaveformReader waveformReader, ISpiceNetlistCaseSensitivitySettings caseSettings, IMapper <Exporter> exporters, string workingDirectory) { Name = contextName ?? throw new ArgumentNullException(nameof(contextName)); Evaluator = evaluator; SimulationPreparations = simulationPreparations; Result = resultService ?? throw new ArgumentNullException(nameof(resultService)); NameGenerator = nameGenerator ?? throw new ArgumentNullException(nameof(nameGenerator)); Parent = parent; Children = new List <ICircuitContext>(); CaseSensitivity = caseSettings; StatementsReader = statementsReader; WaveformReader = waveformReader; AvailableSubcircuits = CreateAvailableSubcircuitsCollection(); ModelsRegistry = CreateModelsRegistry(); Exporters = exporters; WorkingDirectory = workingDirectory; }
public override void Evaluate <T>( ICircuitEvaluator <T> evaluator, EvaluationState <T> evaluationState) { T value = evaluator.EvaluateNotGate( evaluationState.GetGateEvaluationValue(_inputGate) ); evaluationState.SetGateEvaluationValue(this, value); }
public override void Evaluate <T>( ICircuitEvaluator <T> evaluator, EvaluationState <T> evaluationState) { T value = evaluator.EvaluateXorGate( evaluationState.GetGateEvaluationValue(_leftInputGate), evaluationState.GetGateEvaluationValue(_rightInputGate) ); evaluationState.SetGateEvaluationValue(this, value); }
public override void Evaluate <T>( ICircuitEvaluator <T> evaluator, EvaluationState <T> evaluationState, CircuitContext circuitContext) { T value = evaluator.EvaluateAndGate( evaluationState.GetGateEvaluationValue(_leftInputGate), evaluationState.GetGateEvaluationValue(_rightInputGate), Context, circuitContext ); evaluationState.SetGateEvaluationValue(this, value); }
private void EvaluateSubtree <T>( Gate gate, ICircuitEvaluator <T> evaluator, EvaluationState <T> evaluationState) { foreach (Gate inputGate in gate.InputGates) { if (!evaluationState.IsGateEvaluated(inputGate)) { EvaluateSubtree(inputGate, evaluator, evaluationState); } } gate.Evaluate(evaluator, evaluationState); }
public T[] Evaluate <T>(ICircuitEvaluator <T> evaluator, T[] input) { if (input.Length != Context.NumberOfInputGates) { throw new ArgumentException("Number of provided inputs does not match the number of input gates in the circuit.", nameof(input)); } EvaluationState <T> evaluationState = new EvaluationState <T>(input, Context); foreach (OutputGate outputGate in OutputGates) { EvaluateSubtree(outputGate, evaluator, evaluationState); } return(evaluationState.Output); }
public BatchCircuitEvaluator(ICircuitEvaluator <T> innerEvaluator) { _innerEvaluator = innerEvaluator; }
public AsyncCircuitEvaluator(ICircuitEvaluator <T> innerEvaluator) { _innerEvaluator = innerEvaluator; }
public override void Evaluate <T>( ICircuitEvaluator <T> evaluator, EvaluationState <T> evaluationState) { evaluationState.SetOutput(_outputIndex, evaluationState.GetGateEvaluationValue(_inputGate)); }
public T[] Evaluate <T>(ICircuitEvaluator <T> evaluator, T[] input) { return(Evaluate(new BatchCircuitEvaluator <T>(evaluator), input)); }
public abstract void Evaluate <T>( ICircuitEvaluator <T> evaluator, EvaluationState <T> evaluationState, CircuitContext circuitContext );
public override void Evaluate <T>( ICircuitEvaluator <T> evaluator, EvaluationState <T> evaluationState) { evaluationState.SetGateEvaluationValue(this, evaluationState.GetInput(_inputIndex)); }
public abstract void Evaluate <T>( ICircuitEvaluator <T> evaluator, EvaluationState <T> evaluationState );