Esempio n. 1
0
        public Merger InsertMergerAfter()
        {
            Merger merger = new Merger(Context, Outputs[0], this);

            merger.AddInputSafe(this, Outputs[0]);
            return(merger);
        }
Esempio n. 2
0
 public void AddInputSafe(Output node)
 {
     if (Inputs.Count < Context.MergerInputs)
     {
         node.Inputs[0].ReassignOutput(node, this);
         Inputs.Add(node.Inputs[0]);
     }
     else
     {
         int    lowestDepth = int.MaxValue;
         Merger bestMerger  = null;
         foreach (Node input in Inputs)
         {
             if (input is Merger merger)
             {
                 int i = merger.AddInputSafeDepth();
                 if (i < lowestDepth)
                 {
                     lowestDepth = i;
                     bestMerger  = merger;
                 }
             }
         }
         if (bestMerger == null)
         {
             Node   temp   = Inputs[Context.MergerInputs - 1];
             Merger merger = new Merger(Context, this, temp);
             merger.AddInputSafe(temp, this);
             merger.AddInputSafe(node);
         }
         else
         {
             bestMerger.AddInputSafe(node);
         }
     }
 }