public override Operation Coalesce() { Block outputBlock = new Block(); outputBlock.OnTrueHook = OnTrueHook; outputBlock.OnFalseHook = OnFalseHook; int amountSeen = 0; foreach(var v in this) { if(v is StandardOperation) { amountSeen++; } else { if(amountSeen > 0) { outputBlock.Add(new StandardOperation()); amountSeen = 0; } outputBlock.Add(v.Coalesce()); } } if(amountSeen > 0) //final list of operations outputBlock.Add(new StandardOperation()); return outputBlock; }
public override Operation Coalesce() { Block outputBlock = new Block(); outputBlock.OnTrueHook = OnTrueHook; outputBlock.OnFalseHook = OnFalseHook; int amountSeen = 0; foreach (var v in this) { if (v is StandardOperation) { amountSeen++; } else { if (amountSeen > 0) { outputBlock.Add(new StandardOperation()); amountSeen = 0; } outputBlock.Add(v.Coalesce()); } } if (amountSeen > 0) //final list of operations { outputBlock.Add(new StandardOperation()); } return(outputBlock); }