public void Assign2Values(string operationText, int expectedValueA, int expectedValueB) { OperationSplitter.Split(operationText, out decimal ValueA, out decimal ValueB); ValueA.ShouldBe(expectedValueA); ValueB.ShouldBe(expectedValueB); }
string IRunningInstruction.ToString() { return(Address.ToString().PadRight(5) + Operation.ToString() + "." + Modifier.ToString().PadRight(3) + ModeHelper.ToString(ModeA) + ValueA.ToString().PadLeft(6) + ", " + ModeHelper.ToString(ModeB) + ValueB.ToString().PadLeft(6) + " "); }
public override int GetHashCode() { return (Operation.GetHashCode() ^ Modifier.GetHashCode() ^ ModeA.GetHashCode() ^ ModeB.GetHashCode() ^ ValueA.GetHashCode() ^ ValueB.GetHashCode()); }
private static void HandleCreateOperatorCode(object sender, OperatorHints.CreateOperatorCodeEventArgs e) { if (!e.ShouldITryToCreate(nameof(Def_Power_Length_LinearPowerLoss))) { return; } e.Result.Comment = e.Input.DebugIs; var input = e.Input; var result = e.Result; if (input.Is <UnitA, UnitB, UnitC>("/")) { e.SetHandled(); result.SetComment(); result.Comment += " " + nameof(Def_Power_Length_LinearPowerLoss); result.ResultUnit = $"new {ValueC}Unit({ValueA.FirstLower()}.Unit, {ValueB.FirstLower()}.Unit)"; return; } if (input.Is <UnitC, UnitB, UnitA>("*")) { e.SetHandled(); result.SetComment(); result.Comment += " " + nameof(Def_Power_Length_LinearPowerLoss); result.ConvertRight($"{ValueC.FirstLower()}.Unit.DenominatorUnit"); result.ResultUnit = $"{ValueC.FirstLower()}.Unit.CounterUnit"; } }
protected override int GetHashCodeCore() { int hash = 521; hash = (hash * 467) ^ ValueA.GetHashCode(); hash = (hash * 467) ^ ValueB.GetHashCode(); return(hash); }
/// <summary> /// Calc.A /// </summary> /// <returns></returns> public ValueA AsValueA() { // value值为 or:123,789 或 and:123,789 if (Calc != Calc.A) { return(new ValueA(false)); } if (string.IsNullOrEmpty(Value)) { return(new ValueA(false)); } var value = Value.ToLower(); if (value.StartsWith("and") || value.StartsWith("or")) { try { var o = new ValueA(true); var a = value.Split(':')[0]; if (a == "and") { o.And = true; } var tmp = value.Split(':')[1]; var vals = tmp.Split(','); var status = false; foreach (var val in vals) { if (val.StartsWith("count")) { status = true; o.CountOpt = val.Substring(5, 1)[0]; o.CountParam = Convert.ToInt32(val.Substring(6)); } else if (val.StartsWith("amount")) { status = true; o.AmountOpt = val.Substring(6, 1)[0]; o.AmountParam = Convert.ToInt32(val.Substring(7)); } } return(status ? o : new ValueA(false)); } catch (Exception) { return(new ValueA(false)); } } return(new ValueA(false)); }
public int CompareTo(MyStuff other) { if (other != null) { if (!String.IsNullOrEmpty(ValueA) && !String.IsNullOrEmpty(other.ValueA)) { int compare = ValueA.CompareTo(other.ValueA); if (compare == 0) { compare = ItemB.CompareTo(other.ItemB); // no null test for this } return(compare); } else if (!String.IsNullOrEmpty(other.ValueA)) { return(-1); } } return(1); }
public override void GCode_GenerateCode(ref string strDefinitionSegment, ref string strSegment, int nLayer, CodeGenerateSystem.Base.LinkPinControl element, CodeGenerateSystem.Base.GenerateCodeContext_Method context) { string strTab = GCode_GetTabString(nLayer); if (ValueA == null || ValueA.GetLinkedObject(0, true) == null) { return; } string valueNameA; ValueA.GetLinkedObject(0, true).GCode_GenerateCode(ref strDefinitionSegment, ref strSegment, nLayer, ValueA.GetLinkedPinControl(0, true), context); valueNameA = ValueA.GetLinkedObject(0, true).GCode_GetValueName(ValueA.GetLinkedPinControl(0, true), context); string valueNameB; ValueB.GetLinkedObject(0, true).GCode_GenerateCode(ref strDefinitionSegment, ref strSegment, nLayer, ValueB.GetLinkedPinControl(0, true), context); valueNameB = ValueB.GetLinkedObject(0, true).GCode_GetValueName(ValueB.GetLinkedPinControl(0, true), context); var lOI = this.ValueAgtB.HasLink ? this.ValueAgtB : (ValueAeqB.HasLink ? ValueAeqB : (ValueAltB.HasLink ? ValueAltB : null)); if (lOI == null) { return; } // 判断变量是否已经声明过了,没有声明过则进行声明 string strInitString = ""; string strValueType = lOI.GetLinkedObject(0, true).GCode_GetTypeString(lOI.GetLinkedPinControl(0, true), context); strInitString = Program.GetInitialNewString(strValueType); var strValueIdt = strValueType + " " + GCode_GetValueName(null, context) + " = " + strInitString + ";\r\n"; if (!strDefinitionSegment.Contains(strValueIdt)) { strDefinitionSegment += " " + strValueIdt; } var lo_AgtB = ValueAgtB.GetLinkedObject(0, true); // A>B var lo_AeqB = ValueAeqB.GetLinkedObject(0, true); // A==B var lo_AltB = ValueAltB.GetLinkedObject(0, true); // A<B if (lo_AgtB != null) { lo_AgtB.GCode_GenerateCode(ref strDefinitionSegment, ref strSegment, nLayer + 1, ValueAgtB.GetLinkedPinControl(0, true), context); } if (lo_AeqB != null && lo_AeqB != lo_AgtB) { lo_AeqB.GCode_GenerateCode(ref strDefinitionSegment, ref strSegment, nLayer + 1, ValueAeqB.GetLinkedPinControl(0, true), context); } if (lo_AltB != null && lo_AltB != lo_AgtB && lo_AltB != lo_AeqB) { lo_AltB.GCode_GenerateCode(ref strDefinitionSegment, ref strSegment, nLayer + 1, ValueAltB.GetLinkedPinControl(0, true), context); } // A>B if (ValueAgtB.HasLink) { strSegment += strTab + "if( " + valueNameA + " > " + valueNameB + ")\r\n"; strSegment += strTab + "{\r\n"; //string strIFSegment = ""; //lOIAgtB.GetLinkObject(0, true).GCode_GenerateCode(ref strDefinitionSegment, ref strIFSegment, nLayer + 1, lOIAgtB.GetLinkElement(0, true)); //strSegment += strIFSegment; strSegment += GCode_GetTabString(nLayer + 1) + GCode_GetValueName(null, context) + " = " + lo_AgtB.GCode_GetValueName(ValueAgtB.GetLinkedPinControl(0, true), context) + ";\r\n"; strSegment += strTab + "}\r\n"; } // A==B if (ValueAeqB.HasLink) { //if (ValueAltB.HasLink) //{ // string strIfType; // if (ValueAgtB.HasLink) // strIfType = "else if"; // else // strIfType = "if"; // strSegment += strTab + strIfType + "( " + valueNameA + " == " + valueNameB + ")\r\n"; //} //else // strSegment += strTab + "else\r\n"; strSegment += strTab + "if( " + valueNameA + " == " + valueNameB + ")\r\n"; strSegment += strTab + "{\r\n"; //string strIFSegment = ""; //lOIAeqB.GetLinkObject(0, true).GCode_GenerateCode(ref strDefinitionSegment, ref strIFSegment, nLayer + 1, lOIAeqB.GetLinkElement(0, true)); //strSegment += strIFSegment; strSegment += GCode_GetTabString(nLayer + 1) + GCode_GetValueName(null, context) + " = " + lo_AeqB.GCode_GetValueName(ValueAeqB.GetLinkedPinControl(0, true), context) + ";\r\n"; strSegment += strTab + "}\r\n"; } // A<B if (ValueAltB.HasLink) { //if (ValueAgtB.HasLink || ValueAeqB.HasLink) // strSegment += strTab + "else\r\n"; //else // strSegment += strTab + "if( " + valueNameA + " < " + valueNameB + ")\r\n"; strSegment += strTab + "if( " + valueNameA + " < " + valueNameB + ")\r\n"; strSegment += strTab + "{\r\n"; //string strIFSegment = ""; //lOIAltB.GetLinkObject(0, true).GCode_GenerateCode(ref strDefinitionSegment, ref strIFSegment, nLayer + 1, lOIAltB.GetLinkElement(0, true)); //strSegment += strIFSegment; strSegment += GCode_GetTabString(nLayer + 1) + GCode_GetValueName(null, context) + " = " + lo_AltB.GCode_GetValueName(ValueAltB.GetLinkedPinControl(0, true), context) + ";\r\n"; strSegment += strTab + "}\r\n"; } }
internal void CheckSame() { Same = ValueA != null && ValueB != null && (TypeA != TypeB && ValueA.Equals(ValueB)); }
public override string GetLine(ParserOptions options, bool start) { StringBuilder sb = new StringBuilder(); if (options.Offset) { sb.Append(Address.ToString("00 ")); } if (options.Labels) { if (Label != null) { sb.Append(Label.PadRight(13)); } else { sb.Append(" "); } } else { if (start) { sb.Append("START "); } else { sb.Append(" "); } } //operation and modifier sb.Append(Operation); sb.Append("."); sb.Append(Modifier.ToString().PadRight(3)); //A sb.Append(ModeHelper.ToString(ModeA)); if (options.Expressions) { if (ExpressionA != null) { sb.Append(ExpressionA.PadLeft(12)); } else { sb.Append(ValueA.ToString().PadLeft(12)); } } else { sb.Append(ValueA.ToString().PadLeft(6)); } //B sb.Append(", "); sb.Append(ModeHelper.ToString(ModeB)); if (options.Expressions) { if (ExpressionB != null) { sb.Append(ExpressionB.PadLeft(12)); } else { sb.Append(ValueB.ToString().PadLeft(12)); } } else { sb.Append(ValueB.ToString().PadLeft(6)); } //comment if (options.Comments && Comment != null && Comment.Length > 0) { int c = 35; if (options.Labels) { c += 6; } if (options.Expressions) { c += 19; } if (sb.Length < c) { sb.Append(' ', c); } sb.Append(";"); sb.Append(Comment); } return(sb.ToString()); }
public void GenerateData() { ValueA.Add(new ObservablePoint(rnd.NextDouble() * 10, rnd.NextDouble() * 10)); ValueB.Add(new ObservablePoint(rnd.NextDouble() * 10, rnd.NextDouble() * 10)); }
public override string ToString() { return (Operation + "." + Modifier.ToString().PadRight(3) + ModeHelper.ToString(ModeA) + ValueA.ToString().PadLeft(6) + ", " + ModeHelper.ToString(ModeB) + ValueB.ToString().PadLeft(6)); }
public override string ToString() => ValueA?.ToString() + ":" + ValueB?.ToString();
private static void HandleCreateOperatorCode(object sender, OperatorHints.CreateOperatorCodeEventArgs e) { if (!e.ShouldITryToCreate(nameof(Def_LinearPowerLoss_Length_Irradiance))) { return; } e.Result.Comment = e.Input.DebugIs; var input = e.Input; var result = e.Result; if (input.Is <UnitA, UnitB, UnitC>("/")) { e.SetHandled(); result.SetComment(); result.AddVariable("lengthUnit", "linearPowerLoss.Unit.DenominatorUnit"); result.AddVariable("areaUnit", "lengthUnit.GetAreaUnit()"); result.AddVariable("powerUnit", $"{ValueA.FirstLower()}.Unit.CounterUnit"); result.Comment += " " + nameof(Def_LinearPowerLoss_Length_Irradiance); result.ConvertRight("lengthUnit"); result.WithResultUnit <UnitCUnit>("powerUnit", "areaUnit"); return; } if (input.Is <UnitA, UnitC, UnitB>("/")) { e.SetHandled(); result.SetComment(); result.AddVariable("resultUnit", "linearPowerLoss.Unit.DenominatorUnit"); result.AddVariable("areaUnit", "resultUnit.GetAreaUnit()"); // result.AddVariable<IrradianceUnit>("irradianceUnit", "irradiance.Unit.CounterUnit", "areaUnit"); result.Comment += " " + nameof(Def_LinearPowerLoss_Length_Irradiance); result.ConvertRight_WithDenominatorUnit("areaUnit"); result.ResultUnit = "resultUnit"; return; } if (input.Is <UnitC, UnitB, UnitA>("*")) { e.SetHandled(); result.SetComment(); result.Comment += " " + nameof(Def_LinearPowerLoss_Length_Irradiance); result.ConvertRight($"{ValueC.FirstLower()}.Unit.DenominatorUnit.GetLengthUnit()"); result.WithResultUnit <LinearPowerLossUnit>("irradiance.Unit.CounterUnit", "lengthConverted.Unit"); } if (input.Is <UnitB, UnitC, UnitA>("*")) { e.SetHandled(); result.SetComment(); result.Comment += " " + nameof(Def_LinearPowerLoss_Length_Irradiance); result.AddVariable("areaUnit", "length.Unit.GetAreaUnit()"); result.ConvertRight_WithDenominatorUnit("areaUnit"); result.WithResultUnit <LinearPowerLossUnit>($"{ValueC.FirstLower()}.Unit.CounterUnit", $"{ValueB.FirstLower()}.Unit"); } }