static public VarInfo IsEqual(List <VarInfo> parameters) { if (parameters.Count == 2) { bool temp; try { temp = VarInfo.IsEqual(parameters[0], parameters[1]); } catch { return(VarInfo.NullVal); } VarInfo result = new VarInfo(temp); return(result); } return(VarInfo.NullVal); }
private IGoLink PickLinkFromConditionBlock(List<IGoLink> OutLinks, VarInfo blockResult, out string ErrorReport) { IGoLink pickedLink = null; ErrorReport = ""; int countElement = OutLinks.Count; // check for duplicated link value: for(int i=0; i<countElement-1; i++) for(int j=i+1; j<countElement; j++) { string linkValue1 = ( (OutLinks[i] as GoLabeledLink).FromLabel as GoText).Text; linkValue1 = linkValue1.ToUpper(); linkValue1 = FlowDataManager.RemoveSpacing(linkValue1); if (linkValue1 == "") { ErrorReport = "Error: Blank out-link label"; return null; } if (linkValue1[0] >= 'A' && linkValue1[0] <= 'Z') linkValue1 = "$" + linkValue1; string linkValue2 = ( (OutLinks[j] as GoLabeledLink).FromLabel as GoText).Text; linkValue2 = linkValue2.ToUpper(); linkValue2 = FlowDataManager.RemoveSpacing(linkValue2); if (linkValue2 == "") { ErrorReport = "Error: Blank out-link label"; return null; } if (linkValue2[0]>='A' && linkValue2[0]<='Z') linkValue2 = "$" + linkValue2; if(linkValue1 == "$ELSE") { pickedLink = OutLinks[i]; } if(linkValue2 == "$ELSE") { pickedLink = OutLinks[j]; } if(linkValue1 == "$ELSE" && linkValue2 == "$ELSE") { ErrorReport = "Error: Duplicated out link label/value: ELSE"; return null; } VarInfo linkVar1 = FlowDataManager.HandleConst(linkValue1); VarInfo linkvar2 = FlowDataManager.HandleConst(linkValue2); if( VarInfo.IsEqual(linkVar1,linkvar2) ) { ErrorReport = "Error: Duplicated out link label/value: " + linkValue1; return null; } } // check all valid links foreach(IGoLink link in OutLinks) { string linkValue = ( (link as GoLabeledLink).FromLabel as GoText).Text; linkValue = linkValue.ToUpper(); linkValue = FlowDataManager.RemoveSpacing(linkValue); if (linkValue == "") { ErrorReport = "Error: Blank out-link label"; return null; } if (linkValue[0]>='A' && linkValue[0]<='Z') linkValue = "$" + linkValue; if(linkValue == "$ELSE") { continue; } VarInfo tempVar = FlowDataManager.HandleConst(linkValue); if(tempVar.isNull) { ErrorReport = "Error: Illegal out-link label: " + linkValue; return null; } if( VarInfo.IsEqual(tempVar, blockResult) ) { pickedLink = link; } } if(pickedLink == null) { ErrorReport = "Error: Couldn't find a label that matches value: " + blockResult.value; return null; } return pickedLink; }