Example #1
0
 public void AddOutputSignalBinding(int index, Signal signal)
 {
     if (signal == null)
     {
         throw new ArgumentNullException("signal");
     }
     if (_outputSignalSet[index] == null)
     {
         _outputSignalSet[index] = signal;
         for (int i = 0; i < _inputSignalSet.Count; i++)
         {
             if (_inputSignalSet[i] != null)
             {
                 _inputSignalSet[i].AddCycles(_outputSignalSet[index], _context.GenerateTag());
             }
         }
         if (UpdateIsCompletelyConnected())
         {
             LookupAndLinkNewArchitecture();
         }
     }
     else
     {
         _outputSignalSet[index] = signal;
         for (int i = 0; i < _inputSignalSet.Count; i++)
         {
             if (_inputSignalSet[i] != null)
             {
                 _inputSignalSet[i].AddCycles(_outputSignalSet[index], _context.GenerateTag());
             }
         }
         if (_completelyConnected && _currentArchitecture != null && !_currentArchitecture.RebindToPortIfSupported(this))
         {
             LookupAndLinkNewArchitecture();
         }
     }
     signal.DriveSignal(this, index);
 }