public Parameter AddParameter(Result result, CircuitMap circuitMap, Jam jam, int bitNumber) { Tracer.Assert(circuitMap.Circuit == jam.CircuitSymbol.LogicalCircuit && jam.CircuitSymbol == this.key.CircuitSymbol); JamKey jamKey = new JamKey(jam, bitNumber); Parameter parameter; if (this.parameters.TryGetValue(jamKey, out parameter)) { if (!parameter.Result.IsTriState || !result.IsTriState) { if (parameter.Result == result && parameter.CircuitMap == circuitMap && parameter.Jam == jam && parameter.BitNumber == bitNumber) { return(parameter); } CircuitGlyph symbol = jam.CircuitSymbol; throw new CircuitException(Cause.UserError, Properties.Resources.ErrorManyResults(jam.Pin.Name, symbol.Circuit.Notation + symbol.Point.ToString()) ); } parameter.Result.Link(result); } else { parameter = new Parameter(result, circuitMap, jam, bitNumber); this.parameters.Add(jamKey, parameter); result.Add(parameter); } return(parameter); }
public override bool Equals(object obj) { if (obj != null && this.GetType() == obj.GetType()) { JamKey other = (JamKey)obj; return(this.Jam == other.Jam && this.BitNumber == other.BitNumber); } return(false); }