示例#1
0
    public bool NegTest4()
    {
        bool retVal = true;

        TestLibrary.TestFramework.BeginScenario("NegTest4: index and count do not denote a valid range in the List");

        try
        {
            int[]      iArray     = { 1, 9, 3, 6, 5, 8, 7, 2, 4, 0 };
            List <int> listObject = new List <int>(iArray);
            listObject.Sort();
            IntClass intClass = new IntClass();
            int      i        = 7;
            int      result   = listObject.BinarySearch(6, 5, i, intClass);
            TestLibrary.TestFramework.LogError("107", "The ArgumentException was not thrown as expected");
            retVal = false;
        }
        catch (ArgumentException)
        {
        }
        catch (Exception e)
        {
            TestLibrary.TestFramework.LogError("108", "Unexpected exception: " + e);
            TestLibrary.TestFramework.LogInformation(e.StackTrace);
            retVal = false;
        }

        return(retVal);
    }
示例#2
0
        public void simpleButtonLuuPhuongAn_Click(object sender, EventArgs e)
        {
            var check = new BooleanAndDoiTuongClass {
                BoolVar = false
            };
            var count = new IntClass {
                IntVar = opted
            };
            var taoKeHoachMoi = new QuanLyPhuongAnForm(selected, count, treeView1, imageListChild, check);

            taoKeHoachMoi.ShowDialog();
            if (check.BoolVar)
            {
                opted    = count.IntVar;
                selected = check.DoiTuongs;
                pictureBoxMap.Controls.Clear();
                for (var i = 0; i < opted; i++)
                {
                    selected[i].Picture.Visible  = true;
                    selected[i].Picture.Location =
                        DrawHelper.ScaleImage(new Point(selected[i].ThongTinChiTietDoiTuong.ToaDoX,
                                                        selected[i].ThongTinChiTietDoiTuong.ToaDoY)
                                              , new Size(selected[i].ThongTinChiTietDoiTuong.ChieuRongAnh, selected[i].ThongTinChiTietDoiTuong.ChieuDaiAnh),
                                              pictureBoxMap);
                    pictureBoxMap.AddControl(selected[i].Picture);
                    MoveButton(selected[i].Picture);
                    deletePic(selected[i].Picture);
                }
            }
        }
示例#3
0
    public bool NegTest3()
    {
        bool retVal = true;

        TestLibrary.TestFramework.BeginScenario("NegTest3: Count is less than zero");

        try
        {
            int[]      iArray     = { 1, 9, 3, 6, 5, 8, 7, 2, 4, 0 };
            List <int> listObject = new List <int>(iArray);
            listObject.Sort();
            IntClass intClass = new IntClass();
            int      i        = 7;
            int      result   = listObject.BinarySearch(1, -4, i, intClass);
            TestLibrary.TestFramework.LogError("105", "The ArgumentOutOfRangeException was not thrown as expected");
            retVal = false;
        }
        catch (ArgumentOutOfRangeException)
        {
        }
        catch (Exception e)
        {
            TestLibrary.TestFramework.LogError("106", "Unexpected exception: " + e);
            TestLibrary.TestFramework.LogInformation(e.StackTrace);
            retVal = false;
        }

        return(retVal);
    }
示例#4
0
    public bool PosTest1()
    {
        bool retVal = true;

        TestLibrary.TestFramework.BeginScenario("PosTest1: The generic type is int and using custom IComparer");

        try
        {
            int[]      iArray     = { 1, 9, 3, 6, 5, 8, 7, 2, 4, 0 };
            List <int> listObject = new List <int>(iArray);
            listObject.Sort();
            IntClass intClass = new IntClass();
            int      i        = this.GetInt32(0, 10);
            int      result   = listObject.BinarySearch(i, intClass);
            if (result != i)
            {
                TestLibrary.TestFramework.LogError("001", "The result is not the value as expected,The result is: " + result);
                retVal = false;
            }
        }
        catch (Exception e)
        {
            TestLibrary.TestFramework.LogError("002", "Unexpected exception: " + e);
            retVal = false;
        }

        return(retVal);
    }
示例#5
0
        public override int GetOrdinal(FacetLabel cp)
        {
            EnsureOpen();
            if (cp.Length == 0)
            {
                return(ROOT_ORDINAL);
            }

            // First try to find the answer in the LRU cache:

            // LUCENENET: Lock was removed here because the underlying cache is thread-safe,
            // and removing the lock seems to make the performance better.
            IntClass res = ordinalCache.Get(cp);

            if (res != null && res.IntItem != null)
            {
                if ((int)res.IntItem.Value < indexReader.MaxDoc)
                {
                    // Since the cache is shared with DTR instances allocated from
                    // doOpenIfChanged, we need to ensure that the ordinal is one that
                    // this DTR instance recognizes.
                    return((int)res.IntItem.Value);
                }
                else
                {
                    // if we get here, it means that the category was found in the cache,
                    // but is not recognized by this TR instance. Therefore there's no
                    // need to continue search for the path on disk, because we won't find
                    // it there too.
                    return(TaxonomyReader.INVALID_ORDINAL);
                }
            }

            // If we're still here, we have a cache miss. We need to fetch the
            // value from disk, and then also put it in the cache:
            int      ret  = TaxonomyReader.INVALID_ORDINAL;
            DocsEnum docs = MultiFields.GetTermDocsEnum(indexReader, null, Consts.FULL, new BytesRef(FacetsConfig.PathToString(cp.Components, cp.Length)), 0);

            if (docs != null && docs.NextDoc() != DocIdSetIterator.NO_MORE_DOCS)
            {
                ret = docs.DocID();

                // we only store the fact that a category exists, not its inexistence.
                // This is required because the caches are shared with new DTR instances
                // that are allocated from doOpenIfChanged. Therefore, if we only store
                // information about found categories, we cannot accidently tell a new
                // generation of DTR that a category does not exist.

                // LUCENENET: Lock was removed here because the underlying cache is thread-safe,
                // and removing the lock seems to make the performance better.
                ordinalCache.Put(cp, new IntClass {
                    IntItem = Convert.ToInt32(ret)
                });
            }

            return(ret);
        }
 private static int SumResult(IntClass result) => result.MyProperty1 +
 result.MyProperty2 +
 result.MyProperty3 +
 result.MyProperty4 +
 result.MyProperty5 +
 result.MyProperty6 +
 result.MyProperty7 +
 result.MyProperty8 +
 result.MyProperty9;
示例#7
0
    static void Main(string[] args)
    {
        IntClass c1 = new IntClass();

        c1.MyMethod(12);
        BaseClass <string> c2 = new BaseClass <string>();

        c2.MyMethod("hello world");
    }
        public static string IsSingleDigit(IntClass value)
        {
            if (value < new IntClass(10))
            {
                return("Yes!");
            }

            return("No!");
        }
示例#9
0
        private void Form1_Load(object sender, EventArgs e)
        {
            //1、2. 可重用性、安全性 <T>
            IntClass itemA = new IntClass();

            itemA.items.Add(10);
            itemA.items.Add(20);

            StringClass itemB = new StringClass();

            itemB.items.Add("10");
            itemB.items.Add("20");

            //使用泛型可以節省代碼,並且明確知道型別
            GenericClass <int> itemT_A = new GenericClass <int>();

            itemT_A.items.Add(10);
            GenericClass <string> itemT_B = new GenericClass <string>();

            itemT_B.items.Add("10");

            //3. 高效率
            //100萬筆資料 泛型只需 1.2 秒左右 ,Object 雖然也可以接資料,但最後要轉型為指定的型別(封裝、解封裝)耗費時間較多
            //            Object 花費約7.6 秒,效率差了6倍
            Stopwatch sw = new Stopwatch();

            sw.Start();
            GenericClass <int> itemT_C = new GenericClass <int>();

            for (int i = 0; i < 100000000; i++)
            {
                itemT_C.items.Add(i);
            }
            foreach (var item in itemT_C.items)
            {
                var temp = item;
            }
            sw.Stop();
            textBox1.Text += $@"泛型花費時間(毫秒) : {sw.Elapsed.TotalSeconds}" + "\r\n";


            sw.Restart();
            ObjectClass itemO_C = new ObjectClass();

            for (int i = 0; i < 100000000; i++)
            {
                itemO_C.items.Add(i);
            }
            foreach (var item in itemO_C.items)
            {
                var temp = (int)item;
            }
            sw.Stop();
            textBox1.Text += $@"Object 花費時間(毫秒) : {sw.Elapsed.TotalSeconds}  " + "\r\n";
        }
示例#10
0
        public void NegTest4()
        {
            int[]          iArray     = { 1, 9, 3, 6, 5, 8, 7, 2, 4, 0 };
            TreeList <int> listObject = new TreeList <int>(iArray);

            listObject.Sort();
            IntClass intClass = new IntClass();
            int      i        = 7;

            Assert.Throws <ArgumentException>(() => listObject.BinarySearch(6, 5, i, intClass));
        }
        public int HagarHandCrafted()
        {
            Session.FullReset();
            var reader   = Reader.Create(HagarInput, Session);
            var instance = IntClass.Create();

            _ = reader.ReadFieldHeader();
            Generated.DeserializeNew(ref reader, instance);
            //var instance = HagarSerializer.Deserialize(ref reader);
            return(SumResult(instance));
        }
示例#12
0
        public void PosTest1()
        {
            int[]          iArray     = { 1, 9, 3, 6, 5, 8, 7, 2, 4, 0 };
            TreeList <int> listObject = new TreeList <int>(iArray);

            listObject.Sort();
            IntClass intClass = new IntClass();
            int      i        = Generator.GetInt32(0, 10);

            Assert.Equal(i, listObject.BinarySearch(i, intClass));
        }
示例#13
0
 public QuanLyPhuongAnForm(List <DoiTuong> doiTuong, IntClass count, TreeView treeView, ImageList imageList, BooleanAndDoiTuongClass isChange)
 {
     this.isChange           = isChange;
     this.isChange.DoiTuongs = doiTuong;
     this.Count     = count;
     this.ImageList = imageList;
     this.TreeView  = treeView;
     this.isChange  = isChange;
     InitializeComponent();
     LoadKeHoach();
     LoadKeHoachDeTail();
     InitComBoBoxFile();
     InitComBoBoxBanDo();
 }
示例#14
0
文件: Tests.cs 项目: mnjstwins/Rol
        public async Task MorePocos()
        {
            var val = new IntClass {
                DateTime = DateTime.UtcNow, FirstInt = 1
            };

            var r     = new Random();
            var rands = Enumerable.Range(1, 1000001).Select(o => r.Next(1, 10)).ToArray();

            await Task.WhenAll(Enumerable.Range(1, 7000000).Select(o =>
            {
                var arr = Store.Get <IRedisArray <IntClass> >($"ic-a{o}");
                return(arr.SetAsync(Enumerable.Repeat(val, 1).ToArray()));
            }));
        }
示例#15
0
文件: Tests.cs 项目: mnjstwins/Rol
        public async Task TestALotOfPoco()
        {
            var val = new IntClass
            {
                DateTime = DateTime.UtcNow.Date,
                FirstInt = 1,
            };

            var arr = Store.Get <IRedisArray <IntClass> >("an-intclass-array");

            var sw = Stopwatch.StartNew();

            var tasks = Enumerable.Range(0, 2).Select(o => arr.SetAsync(o, val));
            await Task.WhenAll(tasks);

            Console.WriteLine(sw.Elapsed);
        }
示例#16
0
文件: Tests.cs 项目: mnjstwins/Rol
        public void TestPoco()
        {
            var arr = Store.Get <IRedisArray <IntClass> >("an-intclass-array");
            var val = new IntClass
            {
                FirstInt = 1,
                DateTime = DateTime.UtcNow,
            };

            arr.Set(0, val);
            arr.Set(1, val);

            var result = arr.Get(0, 1);


            Assert.AreEqual(val.FirstInt, result.First().FirstInt);
            Assert.AreEqual(val.DateTime, result.First().DateTime);
        }
示例#17
0
        static DeserializeBenchmark()
        {
            ProtoInput = new MemoryStream();
            ProtoBuf.Serializer.Serialize(ProtoInput, IntClass.Create());

            HyperionInput = new MemoryStream();
            HyperionSerializer.Serialize(IntClass.Create(), HyperionInput);

            // Hagar
            var services = new ServiceCollection()
                           .AddHagar(hagar => hagar.AddAssembly(typeof(Program).Assembly))
                           .BuildServiceProvider();

            HagarSerializer = services.GetRequiredService <Serializer <IntClass> >();
            var bytes = new byte[1000];

            Session = services.GetRequiredService <SessionPool>().GetSession();
            var writer = new SingleSegmentBuffer(bytes).CreateWriter(Session);

            HagarSerializer.Serialize(ref writer, IntClass.Create());
            HagarInput = bytes;

            // Orleans
            OrleansSerializer = new ClientBuilder()
                                .ConfigureDefaults()
                                .UseLocalhostClustering()
                                .ConfigureServices(s => s.ToList().ForEach(r =>
            {
                if (r.ServiceType == typeof(IConfigurationValidator))
                {
                    s.Remove(r);
                }
            }))
                                .Configure <ClusterOptions>(o => o.ClusterId = o.ServiceId = "test")
                                .ConfigureApplicationParts(parts => parts.AddApplicationPart(typeof(SimpleClass).Assembly).WithCodeGeneration())
                                .Configure <SerializationProviderOptions>(options => options.FallbackSerializationProvider = typeof(SupportsNothingSerializer).GetTypeInfo())
                                .Build().ServiceProvider.GetRequiredService <SerializationManager>();

            var writer2 = new BinaryTokenStreamWriter();

            OrleansSerializer.Serialize(IntClass.Create(), writer2);
            OrleansInput  = writer2.ToBytes();
            OrleansBuffer = new BinaryTokenStreamReader(OrleansInput);
        }
        static ClassDeserializeBenchmark()
        {
            ProtoInput = new MemoryStream();
            ProtoBuf.Serializer.Serialize(ProtoInput, IntClass.Create());

            HyperionInput   = new MemoryStream();
            HyperionSession = HyperionSerializer.GetDeserializerSession();
            HyperionSerializer.Serialize(IntClass.Create(), HyperionInput);

            // Hagar
            var services = new ServiceCollection()
                           .AddHagar(hagar => hagar.AddAssembly(typeof(Program).Assembly))
                           .BuildServiceProvider();

            HagarSerializer = services.GetRequiredService <Serializer <IntClass> >();
            var bytes = new byte[1000];

            Session = services.GetRequiredService <SerializerSessionPool>().GetSession();
            var writer = new SingleSegmentBuffer(bytes).CreateWriter(Session);

            //HagarSerializer.Serialize(ref writer, IntClass.Create());
            writer.WriteStartObject(0, typeof(IntClass), typeof(IntClass));
            Generated.Serialize(ref writer, IntClass.Create());
            writer.WriteEndObject();
            HagarInput = bytes;

            Utf8JsonInput = Utf8JsonNS.JsonSerializer.Serialize(IntClass.Create(), Utf8JsonResolver);

            var stream = new MemoryStream();

            using (var jsonWriter = new System.Text.Json.Utf8JsonWriter(stream))
            {
                System.Text.Json.JsonSerializer.Serialize <IntClass>(jsonWriter, IntClass.Create());
            }

            SystemTextJsonInput = stream.ToArray();
        }
示例#19
0
 public OxymoronData(Token[] pair, IntClass overlap, bool greedy, bool debug)
     : this(pair, overlap, greedy)
 {
     Debug = debug;
 }
示例#20
0
 public OxymoronData(Token[] pair, IntClass overlap, bool greedy)
     : this(pair, overlap)
 {
     Greedy = greedy;
 }
示例#21
0
 public OxymoronData(Token[] pair, IntClass overlap)
     : this(pair)
 {
     Overlap = overlap;
 }
 private bool Equals(IntClass other)
 => other != null && Value == other.Value;
示例#23
0
        public Expression(string txt, string block, Statement statement)
        {
            txt                = txt.Trim();
            Txt                = txt;
            Block              = block;
            Statement          = statement;
            CallFunctionReturn = null;
            AwaitReturn        = false;
            Lib                = Statement.Lib;

            var binaryOperators = _tokens[0]
                                  .OrderByDescending(x => x.Length)
                                  .ToArray();
            var unitaryOperators = _tokens[1]
                                   .OrderByDescending(x => x.Length)
                                   .ToArray();

            if (int.TryParse(txt, out _))
            {
                Type = EType.Int;

                var p = txt;

                Exec = () =>
                {
                    var value = p.GetInt();

                    var i = new IntClass(value);

                    return(i);
                };
                return;
            }

            if (GetStr(txt, out var qtxt))
            {
                if (qtxt.Length == txt.Length - 2)
                {
                    Type = EType.Str;

                    Exec = () =>
                    {
                        var value = qtxt.GetStr();

                        var s = new StrClass(value);

                        return(s);
                    };
                    return;
                }
            }

            if (bool.TryParse(txt, out var valueBool))
            {
                Type = EType.Bool;

                Exec = () =>
                {
                    var value = new BoolClass(valueBool);

                    return(value);
                };
                return;
            }

            if (txt.StartsWith("new"))
            {
                var ident = txt.Substring(3);
                if (GetStr(ident, out var brackets, '(', ')'))
                {
                    CustomClass customClass          = null;
                    var         i                    = ident.IndexOf("(" + brackets + ")", StringComparison.Ordinal);
                    var         identWb              = ident.Remove(i, brackets.Length + 2).Trim();
                    var         parametersExpresions = new List <Expression>();

                    if (!string.IsNullOrWhiteSpace(brackets))
                    {
                        var parametersTxt = brackets.Split(',');

                        foreach (var parantese in parametersTxt)
                        {
                            var paranteseTrim = parantese.Trim();

                            var expresion = new Expression(paranteseTrim, Block, Statement);
                            parametersExpresions.Add(expresion);
                        }
                    }

                    Exec = () =>
                    {
                        if (!AwaitReturn)
                        {
                            var parametersValue = parametersExpresions.Select(x => x.GetValue()).ToList();

                            customClass = Memory.GetClass(identWb, Block).Clone();

                            customClass.Assign(parametersValue);
                            AwaitReturn = true;

                            return(new Return(null, Flag.Function));
                        }
                        else
                        {
                            AwaitReturn = false;
                            return((IClass)customClass);
                        }
                    };
                }
                return;
            }

            var l = txt.First() == '(';
            var f = txt.Last() == ')';

            if (l && f)
            {
                txt = txt.Substring(1, txt.Length - 2);

                Type = EType.Par;

                var exp = new Expression(txt, Block, Statement);

                Exec = exp.Exec;
                return;
            }

            foreach (var @operator in unitaryOperators)
            {
                if (txt.StartsWith(@operator))
                {
                    Type = EType.None;


                    var len     = @operator.Length;
                    var exprTxt = txt.Substring(len, txt.Length - len);
                    var expr    = new Expression(exprTxt, Block, Statement);

                    if (@operator == "-")
                    {
                        Exec = () =>
                        {
                            var value = expr.GetValue();

                            if (value is int i)
                            {
                                value = -i;
                            }

                            if (value is string s)
                            {
                                if (s[0] == '-')
                                {
                                    value = s.Substring(1, s.Length - 1);
                                }
                                else
                                {
                                    value = "-" + s;
                                }
                            }

                            if (expr.Type == EType.Ind)
                            {
                                var variable  = expr.Exec().ToString();
                                var variable1 = Memory.GetVariable(variable, Block);
                                if (value is string ss)
                                {
                                    variable1.SetValue(ss);
                                }

                                if (value is int ii)
                                {
                                    variable1.SetValue(ii);
                                }
                            }

                            return(value);
                        };
                        return;
                    }
                    if (@operator == "!")
                    {
                        Exec = () =>
                        {
                            var value = expr.GetValue();

                            if (value is int i)
                            {
                                value = i ^ int.MaxValue;
                            }

                            if (value is string s)
                            {
                                if (char.IsLower(s, 0))
                                {
                                    value = s.ToUpper();
                                }
                                else
                                {
                                    value = s.ToLower();
                                }
                            }

                            if (expr.Type == EType.Ind)
                            {
                                var variable  = expr.Exec().ToString();
                                var variable1 = Memory.GetVariable(variable, Block);
                                if (value is string ss)
                                {
                                    variable1.SetValue(ss);
                                }

                                if (value is int ii)
                                {
                                    variable1.SetValue(ii);
                                }
                            }

                            return(value);
                        };
                        return;
                    }
                    if (@operator == "++")
                    {
                        Exec = () =>
                        {
                            var value = expr.GetValue();

                            if (value is int i)
                            {
                                value = i + 1;
                            }

                            if (value is string s)
                            {
                                value = s.ToUpper();
                            }

                            if (expr.Type == EType.Ind)
                            {
                                var variable  = expr.Exec().ToString();
                                var variable1 = Memory.GetVariable(variable, Block);
                                if (value is string ss)
                                {
                                    variable1.SetValue(ss);
                                }

                                if (value is int ii)
                                {
                                    variable1.SetValue(ii);
                                }
                            }

                            return(value);
                        };
                        return;
                    }
                    if (@operator == "--")
                    {
                        Exec = () =>
                        {
                            var value = expr.GetValue();

                            if (value is int i)
                            {
                                value = i - 1;
                            }

                            if (value is string s)
                            {
                                value = s.ToLower();
                            }

                            if (expr.Type == EType.Ind)
                            {
                                var variable  = expr.Exec().ToString();
                                var variable1 = Memory.GetVariable(variable, Block);
                                if (value is string ss)
                                {
                                    variable1.SetValue(ss);
                                }

                                if (value is int ii)
                                {
                                    variable1.SetValue(ii);
                                }
                            }

                            return(value);
                        };
                        return;
                    }

                    return;
                }
                else if (txt.EndsWith(@operator))
                {
                    Type = EType.None;


                    var len     = @operator.Length;
                    var exprTxt = txt.Substring(0, txt.Length - len);
                    var expr    = new Expression(exprTxt, Block, Statement);


                    if (@operator == "++")
                    {
                        Exec = () =>
                        {
                            var value = expr.GetValue();

                            if (value is int i)
                            {
                                value = i + 1;
                            }

                            if (value is string s)
                            {
                                value = s.ToUpper();
                            }

                            if (expr.Type == EType.Ind)
                            {
                                var variable  = expr.Exec().ToString();
                                var variable1 = Memory.GetVariable(variable, Block);
                                if (value is string ss)
                                {
                                    variable1.SetValue(ss);
                                }

                                if (value is int ii)
                                {
                                    variable1.SetValue(ii);
                                }
                            }

                            return(value);
                        };
                        return;
                    }
                    if (@operator == "--")
                    {
                        Exec = () =>
                        {
                            var value = expr.GetValue();

                            if (value is int i)
                            {
                                value = i - 1;
                            }

                            if (value is string s)
                            {
                                value = s.ToLower();
                            }

                            if (expr.Type == EType.Ind)
                            {
                                var variable  = expr.Exec().ToString();
                                var variable1 = Memory.GetVariable(variable, Block);
                                if (value is string ss)
                                {
                                    variable1.SetValue(ss);
                                }

                                if (value is int ii)
                                {
                                    variable1.SetValue(ii);
                                }
                            }

                            return(value);
                        };
                        return;
                    }
                }
            }

            var ops = new List <(int i, int l, string o)>();

            foreach (var @operator in binaryOperators)
            {
                for (int i = txt.IndexOf(@operator, StringComparison.Ordinal); i > -1; i = txt.IndexOf(@operator, i + 1, StringComparison.Ordinal))
                {
                    var toAdd = (i, @operator.Length, @operator);
                    var add   = true;

                    foreach (var op in ops)
                    {
                        var overlap = toAdd.i < op.i + op.l && op.i < toAdd.i + toAdd.Length;
                        if (overlap)
                        {
                            add = false;
                            break;
                        }
                    }

                    if (add)
                    {
                        ops.Add(toAdd);
                    }
                }
            }

            ops = ops.OrderBy(x =>
            {
                if (priority.Contains(x.o))
                {
                    return(0);
                }
                else
                {
                    return(x.i);
                }
            }).ToList();

            var exprsStr = txt.Split(binaryOperators, 2, StringSplitOptions.None);

            if (exprsStr.Length > 1)
            {
                var op = txt.Substring(ops[0].i, ops[0].l);

                var p = txt.IndexOf('(');
                if (p > ops[0].i || p == -1)
                {
                    var exps1 = txt.Substring(0, ops[0].i);
                    var exps2 = txt.Substring(ops[0].i + 1 + ops[0].l);

                    var exp1 = new Expression(exps1, Block, Statement);
                    var exp2 = new Expression(exps2, Block, Statement);

                    Type = EType.Asg;

                    SetOperation(op, exp1, exp2);
                    return;
                }
            }


            if (GetStr(Txt, out var paranteses, '(', ')'))
            {
                Type = EType.Func;

                var indexOfParant        = Txt.IndexOf('(' + paranteses + ')', StringComparison.Ordinal);
                var function             = Txt.Substring(0, indexOfParant).Trim();
                var parametersExpresions = new List <Expression>();

                if (!string.IsNullOrWhiteSpace(paranteses))
                {
                    parametersExpresions = paranteses.Split(',')
                                           .Select(x => new Expression(x.Trim(),
                                                                       Block,
                                                                       Statement))
                                           .ToList();
                }

                if (function.Contains("."))
                {
                    var classAccess     = function;
                    var exprClassAccess = new Expression(classAccess, block, Statement);
                    Exec = () =>
                    {
                        if (!AwaitReturn)
                        {
                            var value = exprClassAccess.GetValue();

                            if (value is Function func)
                            {
                                var parameters = parametersExpresions.Select(x => x.GetValue()).ToList();

                                Lib.AccessNewFunction(func, parameters);
                                AwaitReturn = true;
                            }
                            else if (value is Variable variable)
                            {
                                if (variable.Type == typeof(Function))
                                {
                                    var func2      = (Function)variable.GetValue();
                                    var parameters = parametersExpresions.Select(x => x.GetValue()).ToList();

                                    Lib.AccessNewFunction(func2, parameters);
                                    AwaitReturn = true;
                                }
                            }

                            return(null);
                        }
                        else
                        {
                            CallFunctionReturn = Lib.GetReturn();
                            AwaitReturn        = false;

                            if (CallFunctionReturn is null)
                            {
                                return(new Return());
                            }
                            else if (CallFunctionReturn is Return r)
                            {
                                return(r.Value);
                            }
                            else
                            {
                                return(CallFunctionReturn);
                            }
                        }
                    };
                    return;
                }
                else
                {
                    Exec = () =>
                    {
                        if (!AwaitReturn)
                        {
                            AwaitReturn = true;

                            var parameters = parametersExpresions.Select(x => x.GetValue()).ToList();

                            Lib.AccessNewFunction(function, parameters);

                            return(new Return(null, Flag.Function));
                        }
                        else
                        {
                            CallFunctionReturn = Lib.GetReturn();
                            AwaitReturn        = false;

                            if (CallFunctionReturn is null)
                            {
                                return(new Return());
                            }
                            else if (CallFunctionReturn is Return r)
                            {
                                return(r.Value);
                            }
                            else
                            {
                                return(CallFunctionReturn);
                            }
                        }
                    };
                }

                return;
            }

            if (Txt.Contains("."))
            {
                Type = EType.Cls;

                var dotIndex = Txt.LastIndexOf('.');
                var split    = Txt.SplitAtIndex(dotIndex);
                var second   = split[1].Substring(1);

                var exprTxt = split[0];
                var expr    = new Expression(exprTxt, block, Statement);
                Exec = () =>
                {
                    var value = expr.GetValue();
                    if (value is IClass @class)
                    {
                        return(@class.Get(second));
                    }

                    return(null);
                };

                return;
            }

            Type = EType.Ind;
            Exec = () => GetIdentifier(txt);
        }
示例#24
0
        public static string IsSingleDigit(IntClass value)
        {
            if (value < new IntClass(10))
            {
                return "Yes!";
            }

            return "No!";
        }
示例#25
0
 public void LoadBuiltinClasses()
 {
     classes["Int"]               = new IntClass();
     classes["Float"]             = new FloatClass();
     classes["Boolean"]           = new BooleanClass();
     classes["String"]            = new StringClass();
     classes["Char"]              = new CharClass();
     classes["Byte"]              = new ByteClass();
     classes["Message"]           = new MessageClass();
     classes["Unassigned"]        = new UnassignedClass();
     classes["Tuple"]             = new TupleClass();
     classes["NameValue"]         = new NameValueClass();
     classes["Lambda"]            = new LambdaClass();
     classes["Void"]              = new VoidClass();
     classes["Some"]              = new SomeClass();
     classes["None"]              = new NoneClass();
     classes["Array"]             = new ArrayClass();
     classes["Iterator"]          = new IteratorClass();
     classes["LazyIterator"]      = new LazyIteratorClass();
     classes["StreamIterator"]    = new StreamIteratorClass();
     classes["Any"]               = new AnyClass();
     classes["Placeholder"]       = new PlaceholderClass();
     classes["Range"]             = new RangeClass();
     classes["Dictionary"]        = new DictionaryClass();
     classes["Container"]         = new ContainerClass();
     classes["Unmatched"]         = new UnmatchedClass();
     classes["Complex"]           = new ComplexClass();
     classes["Rational"]          = new RationalClass();
     classes["Long"]              = new LongClass();
     classes["Lazy"]              = new LazyClass();
     classes["YieldingInvokable"] = new YieldingInvokableClass();
     classes["Del"]               = new DelClass();
     classes["Slice"]             = new SliceClass();
     classes["End"]               = new EndClass();
     classes["List"]              = new ListClass();
     classes["Arguments"]         = new ArgumentsClass();
     classes["Symbol"]            = new SymbolClass();
     classes["Infinity"]          = new InfinityClass();
     classes["OpenRange"]         = new OpenRangeClass();
     classes["KeyValue"]          = new KeyValueClass();
     classes["Regex"]             = new RegexClass();
     classes["Pattern"]           = new PatternClass();
     classes["PackageFunction"]   = new PackageFunctionClass();
     classes["Sys"]               = new SysClass();
     classes["Math"]              = new MathClass();
     classes["RuntimeFunction"]   = new RuntimeFunctionClass();
     classes["Reference"]         = new ReferenceClass();
     classes["Group"]             = new RegexGroupClass();
     classes["Match"]             = new RegexMatchClass();
     classes["Date"]              = new DateClass();
     classes["Interval"]          = new IntervalClass();
     classes["TypeConstraint"]    = new TypeConstraintClass();
     classes["ByteArray"]         = new ByteArrayClass();
     classes["Selector"]          = new SelectorClass();
     classes["Number"]            = new NumberClass();
     classes["Collection"]        = new CollectionClass();
     classes["TextFinding"]       = new TextFindingClass();
     classes["SkipTake"]          = new SkipTakeClass();
     classes["Constructor"]       = new ConstructorClass();
     classes["MutString"]         = new MutStringClass();
     classes["Error"]             = new ErrorClass();
     classes["Success"]           = new SuccessClass();
     classes["Failure"]           = new FailureClass();
     classes["Optional"]          = new OptionalClass();
     classes["Result"]            = new ResultClass();
     classes["Monad"]             = new MonadClass();
     classes["Unit"]              = new UnitClass();
     classes["YieldReturn"]       = new YieldReturnClass();
     classes["Index"]             = new IndexClass();
     classes["Cycle"]             = new CycleClass();
     classes["Set"]               = new SetClass();
 }
示例#26
0
        //public List<ThongTinChiTietDoiTuong> LayCacThongTinDoiTuongTuKeHoach(int MaKeHoach)
        //{
        //    List<ThongTinChiTietDoiTuong> doiTuongs = new List<ThongTinChiTietDoiTuong>();
        //    Connection.Open();
        //    SqlCommand command = new SqlCommand("LayDoiTuongTuKeHoach", Connection);
        //    command.CommandType = CommandType.StoredProcedure;
        //    command.Parameters.AddWithValue("@maKeHoach", MaKeHoach);
        //    using (SqlDataAdapter adapter = new SqlDataAdapter(command))
        //    {
        //        DataTable table = new DataTable();
        //        adapter.Fill(table);
        //        foreach (DataRow doiTuong in table.Rows)
        //        {
        //            doiTuongs.Add(new ThongTinChiTietDoiTuong()
        //            {
        //                MaKeHoach = doiTuong.Field<int>((int)DoiTuong.MaKeHoach),
        //                MoTa = doiTuong.Field<string>((int)DoiTuong.MoTa),
        //                MaDonVi = doiTuong.Field<string>((int)DoiTuong.MaDonVi),
        //                ToaDoX = doiTuong.Field<int>((int)DoiTuong.ToaDoX),
        //                ToaDoY = doiTuong.Field<int>((int)DoiTuong.ToaDoY),
        //                ChieuDaiAnh = doiTuong.Field<int>((int)DoiTuong.ChieuDaiAnh),
        //                ChieuRongAnh = doiTuong.Field<int>((int)DoiTuong.ChieuRongAnh)
        //            });
        //        }
        //    }
        //    Connection.Close();
        //    return doiTuongs;
        //}

        public List <Models.DoiTuong> LayCacDoiTuongTuKeHoach(int MaKeHoach, TreeView treeView, ImageList imageList, IntClass count)
        {
            List <Models.DoiTuong> doiTuongs = new List <Models.DoiTuong>();

            Connection.Open();
            SqlCommand command = new SqlCommand("LayDoiTuongTuKeHoach", Connection);

            command.CommandType = CommandType.StoredProcedure;
            command.Parameters.AddWithValue("@maKeHoach", MaKeHoach);
            using (SqlDataAdapter adapter = new SqlDataAdapter(command))
            {
                DataTable table = new DataTable();
                adapter.Fill(table);
                count.IntVar = table.Rows.Count;
                foreach (DataRow doiTuong in table.Rows)
                {
                    int             maDoiTuong   = doiTuong.Field <int>((int)DoiTuong.MaDoiTuong);
                    int             maKeHoach    = doiTuong.Field <int>((int)DoiTuong.MaKeHoach);
                    string          moTa         = doiTuong.Field <string>((int)DoiTuong.MoTa);
                    string          maDonVi      = doiTuong.Field <string>((int)DoiTuong.MaDonVi);
                    int             toaDoX       = doiTuong.Field <int>((int)DoiTuong.ToaDoX);
                    int             toaDoY       = doiTuong.Field <int>((int)DoiTuong.ToaDoY);
                    int             chieuDaiAnh  = doiTuong.Field <int>((int)DoiTuong.ChieuDaiAnh);
                    int             chieuRongAnh = doiTuong.Field <int>((int)DoiTuong.ChieuRongAnh);
                    string          tenDoiTuong  = doiTuong.Field <string>((int)DoiTuong.TenDoiTuong);
                    int             chieuNgang   = doiTuong.Field <int>((int)DoiTuong.ChieuNgang);
                    int             chieuDoc     = doiTuong.Field <int>((int)DoiTuong.ChieuDoc);
                    Models.DoiTuong anh          = new Models.DoiTuong()
                    {
                        ThongTinChiTietDoiTuong = new ThongTinChiTietDoiTuong()
                        {
                            MaDoiTuong   = maDoiTuong,
                            ChieuDaiAnh  = chieuDaiAnh,
                            ChieuRongAnh = chieuRongAnh,
                            ToaDoX       = toaDoX,
                            ToaDoY       = toaDoY,
                            MaDonVi      = maDonVi,
                            MaKeHoach    = maKeHoach,
                            MoTa         = moTa,
                            ChieuDoc     = chieuDoc,
                            ChieuNgang   = chieuNgang,
                            TenDoiTuong  = tenDoiTuong
                        }
                    };
                    anh.InitImage = imageList.Images[maDonVi];
                    // Thiết lập chiều ngang và chiều dọc của đối tượng
                    // Thiết lập ảnh cho đối tượng
                    anh.Picture.Image = new Bitmap(anh.InitImage, anh.ThongTinChiTietDoiTuong.ChieuNgang,
                                                   anh.ThongTinChiTietDoiTuong.ChieuDoc);
                    doiTuongs.Add(anh);
                }
            }
            Connection.Close();
            return(doiTuongs);
        }