Exemplo n.º 1
0
        public void Assign2Values(string operationText, int expectedValueA, int expectedValueB)
        {
            OperationSplitter.Split(operationText, out decimal ValueA, out decimal ValueB);

            ValueA.ShouldBe(expectedValueA);
            ValueB.ShouldBe(expectedValueB);
        }
Exemplo n.º 2
0
 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) + "     ");
 }
Exemplo n.º 3
0
 public override int GetHashCode()
 {
     return
         (Operation.GetHashCode() ^ Modifier.GetHashCode() ^
          ModeA.GetHashCode() ^ ModeB.GetHashCode() ^
          ValueA.GetHashCode() ^ ValueB.GetHashCode());
 }
Exemplo n.º 4
0
        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";
            }
        }
Exemplo n.º 5
0
    protected override int GetHashCodeCore()
    {
        int hash = 521;

        hash = (hash * 467) ^ ValueA.GetHashCode();
        hash = (hash * 467) ^ ValueB.GetHashCode();

        return(hash);
    }
Exemplo n.º 6
0
                /// <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);
 }
Exemplo n.º 8
0
        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";
            }
        }
Exemplo n.º 9
0
 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());
        }
Exemplo n.º 11
0
 public void GenerateData()
 {
     ValueA.Add(new ObservablePoint(rnd.NextDouble() * 10, rnd.NextDouble() * 10));
     ValueB.Add(new ObservablePoint(rnd.NextDouble() * 10, rnd.NextDouble() * 10));
 }
Exemplo n.º 12
0
 public override string ToString()
 {
     return
         (Operation + "." + Modifier.ToString().PadRight(3) + ModeHelper.ToString(ModeA) +
          ValueA.ToString().PadLeft(6) + ", " + ModeHelper.ToString(ModeB) + ValueB.ToString().PadLeft(6));
 }
Exemplo n.º 13
0
 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");
            }
        }