public override void ReceiveInputValue <T>(T value, IBatchCircuitEvaluator <T> evaluator, ForwardEvaluationState <T> evaluationState, CircuitContext circuitContext) { evaluationState.SetOutput(_outputIndex, value); }
public abstract void ReceiveInputValue <T>(T value, IBatchCircuitEvaluator <T> evaluator, ForwardEvaluationState <T> evaluationState, CircuitContext circuitContext);
public void SendOutputValue <T>(T value, IBatchCircuitEvaluator <T> evaluator, ForwardEvaluationState <T> evaluationState, CircuitContext circuitContext) { foreach (ForwardGate successor in _successors) { successor.ReceiveInputValue(value, evaluator, evaluationState, circuitContext); } }
public override void ReceiveInputValue <T>(T value, IBatchCircuitEvaluator <T> evaluator, ForwardEvaluationState <T> evaluationState, CircuitContext circuitContext) { T outputValue = evaluator.EvaluateNotGate(value, _context, circuitContext); SendOutputValue(outputValue, evaluator, evaluationState, circuitContext); }
protected override void ReceiveInputValues <T>(T leftValue, T rightValue, IBatchCircuitEvaluator <T> evaluator, ForwardEvaluationState <T> evaluationState, CircuitContext circuitContext) { GateEvaluationInput <T> evaluationInput = new GateEvaluationInput <T>(_context, leftValue, rightValue); evaluationState.DelayAndGateEvaluation(new GateEvaluation <T>(this, evaluationInput)); }
protected override void ReceiveInputValues <T>(T leftValue, T rightValue, IBatchCircuitEvaluator <T> evaluator, ForwardEvaluationState <T> evaluationState, CircuitContext circuitContext) { T outputValue = evaluator.EvaluateXorGate(leftValue, rightValue, _context, circuitContext); SendOutputValue(outputValue, evaluator, evaluationState, circuitContext); }
protected abstract void ReceiveInputValues <T>(T leftValue, T rightValue, IBatchCircuitEvaluator <T> evaluator, ForwardEvaluationState <T> evaluationState, CircuitContext circuitContext);
public override void ReceiveInputValue <T>(T value, IBatchCircuitEvaluator <T> evaluator, ForwardEvaluationState <T> evaluationState, CircuitContext circuitContext) { Optional <T> cachedInputValue = evaluationState.ReadInputValueFromCache(this); if (cachedInputValue.IsPresent) { ReceiveInputValues(cachedInputValue.Value, value, evaluator, evaluationState, circuitContext); } else { evaluationState.WriteInputValueToCache(this, value); } }