protected virtual IList CreateCoveringDescForValue( ValueNode val, IList instructions) { IList coveringDescForValue = new ArrayList(); foreach (Instruction instr in instructions) { CoveringInfo coveringInfo = new CoveringInfo(instr); if (val.Cover(instr.Pattern.ResultValue, coveringInfo)) { coveringInfo.ResultValue = val; coveringDescForValue.Add(coveringInfo); } } return coveringDescForValue; }
public virtual bool Cover( ValueNode patternValue, CoveringInfo coveringInfo) { bool result = false; if (IsCoverableWith(patternValue)) { if (!IsInputValue() && !patternValue.IsInputValue()) { if (patternValue.OutNodes.Count == 0 || ConsumingOperations.Count <= 1 && !OutputFlag) { if (ProducingOperation.Cover( patternValue.ProducingOperation, coveringInfo)) { result = true; } } } else if (patternValue.IsInputValue()) { coveringInfo.OperandValues.Add(this); result = true; } if (result == true) coveringInfo.CoveredValues.Add(this); } return result; }
public abstract bool Cover( OperationNode patternOp, CoveringInfo coveringInfo);
public override bool Cover( OperationNode patternOp, CoveringInfo coveringInfo) { bool result = false; if (IsCoverableWith(patternOp)) { UnaryOperationNode unaryPatternOp = (UnaryOperationNode) patternOp; if (OperandValue.Cover(unaryPatternOp.OperandValue, coveringInfo)) { coveringInfo.CoveredOperations.Add(this); result = true; } } return result; }
public override bool Cover( OperationNode patternOp, CoveringInfo coveringInfo) { bool result = false; if (IsCoverableWith(patternOp)) { BinaryOperationNode binaryPatternOp = (BinaryOperationNode) patternOp; if (LeftOperandValue.Cover(binaryPatternOp.LeftOperandValue, coveringInfo) && RightOperandValue.Cover(binaryPatternOp.RightOperandValue, coveringInfo)) { coveringInfo.CoveredOperations.Add(this); result = true; } } return result; }