コード例 #1
0
            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);
            }
コード例 #2
0
 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);
 }