示例#1
0
        void OnTest_byte_A2(CrossCall.IContext context)
        {
            FixedArray <byte, ArrayLength_2> v = new FixedArray <byte, ArrayLength_2>();

            Serialize.Utility.DoRead(context.Param, ref v, "v", Serialize.Utility.Read);

            _responder.Test(v);
        }
示例#2
0
        void OnTest_Msg_A2(CrossCall.IContext context)
        {
            FixedArray <Msg, ArrayLength_2> msg = new FixedArray <Msg, ArrayLength_2>();

            Serialize.Utility.DoRead(context.Param, ref msg, "msg", Serialize.Utility.Read);

            _responder.Test(msg);
        }
示例#3
0
 internal static void BuildKeyboard(string[] keys)
 {
     System.Console.TreatControlCAsInput = true;
     containerList.keyboardlist.AddRange(FixedArray.Fix(keys, containerList.normalKeys));
     containerList.keyboardlist.AddRange(FixedArray.Fix(keys, containerList.specialKeys));
     containerList.keyboardlist.AddRange(FixedArray.Fix(keys, containerList.functionalKeys));
     OptionSelectionMain.Select();
 }
示例#4
0
        static int stbi__stdio_read(object user, FixedArray <char> data, int size)
        {
            //return (int)fread(data, 1, size, (void*)user);
            var sr     = (StreamReader)user;
            int result = sr.Read(data.array, 1, size);

            return(result);
        }
示例#5
0
        void OnTest_float_A_A2(CrossCall.IContext context)
        {
            FixedArray <List <float>, ArrayLength_2> v = new FixedArray <List <float>, ArrayLength_2>();

            Serialize.Utility.DoRead(context.Param, ref v, "v", delegate(Serialize.IReader r1, ref List <float> v1, string n1) {
                return(Serialize.Utility.DoRead(r1, ref v1, n1, Serialize.Utility.Read));
            });

            _responder.Test(v);
        }
示例#6
0
        public void Test(FixedArray <Msg, ArrayLength_2> msg)
        {
            Serialize.IWriter writer = _invoker.Begin(MODULE_ID);
            writer.Write(HASH_CODE);
            writer.Write((int)Message.Test_Msg_A2);

            Serialize.Utility.DoWrite(writer, msg, "msg", Serialize.Utility.Write);

            _invoker.End();
        }
示例#7
0
        public void Test(FixedArray <byte, ArrayLength_2> v)
        {
            Serialize.IWriter writer = _invoker.Begin(MODULE_ID);
            writer.Write(HASH_CODE);
            writer.Write((int)Message.Test_byte_A2);

            Serialize.Utility.DoWrite(writer, v, "v", Serialize.Utility.Write);

            _invoker.End();
        }
示例#8
0
        public static bool DoRead <T, L>(IReader reader, ref FixedArray <T, L> val, string name, ReadCallback <T> call)
            where T : new()
            where L : IArrayLength, new()
        {
            for (int i = 0; i < val.Length; ++i)
            {
                string valName = string.Format("{0}_{1}", string.IsNullOrEmpty(name) ? "" : name, i);
                call(reader, ref ((T[])val)[i], valName);
            }

            return(true);
        }
示例#9
0
        public static bool DoWrite <T, L>(IWriter writer, FixedArray <T, L> val, string name, WritCallback <T> call)
            where T : new()
            where L : IArrayLength, new()
        {
            for (int i = 0; i < val.Length; ++i)
            {
                //string valName = string.Format("{0}_{1}", string.IsNullOrEmpty(name) ? "" : name, i);
                call(writer, val[i], null);
            }

            return(true);
        }
示例#10
0
        public void Test(FixedArray <List <float>, ArrayLength_2> v)
        {
            Serialize.IWriter writer = _invoker.Begin(MODULE_ID);
            writer.Write(HASH_CODE);
            writer.Write((int)Message.Test_float_A_A2);

            Serialize.Utility.DoWrite(writer, v, "v", (w1, v1, n1) => {
                return(Serialize.Utility.DoWrite(w1, v1, n1, Serialize.Utility.Write));
            });

            _invoker.End();
        }
示例#11
0
        public static void Sort(FixedArray moves)
        {
            if (moves.Size == 0)
            {
                return;
            }

            QuickSortDelegate quicksort = null;

            quicksort =
                (items, first, last) =>
            {
                int left  = first;
                int right = last;
                int mid   = items[(left + right) >> 1].Value;

                while (left <= right)
                {
                    while (items[left].Value > mid)
                    {
                        ++left;
                    }

                    while (items[right].Value < mid)
                    {
                        --right;
                    }

                    if (left <= right)
                    {
                        var tempItem = items[left];
                        items[left]  = items[right];
                        items[right] = tempItem;

                        ++left;
                        --right;
                    }
                }

                if (first < right)
                {
                    quicksort(items, first, right);
                }

                if (left < last)
                {
                    quicksort(items, left, last);
                }
            };

            quicksort(moves.InnerArray, 0, moves.Size - 1);
        }
示例#12
0
        public static bool Read <T, L>(IReader reader, ref FixedArray <T, L> arr, string name = null)
            where T : new()
            where L : IArrayLength, new()
        {
            for (int i = 0; i < arr.Length; ++i)
            {
                if (!Read(reader, ref ((T[])arr)[i]))
                {
                    return(false);
                }
            }

            return(true);
        }
示例#13
0
        public FixedArray <Msg, ArrayLength_2> Test(int a, int b, int c, int d)
        {
            Serialize.IWriter writer = _invoker.Begin(MODULE_ID);
            writer.Write(HASH_CODE);
            writer.Write((int)Message.Test_int_int_int_int);

            Serialize.Utility.Write(writer, a, "a");
            Serialize.Utility.Write(writer, b, "b");
            Serialize.Utility.Write(writer, c, "c");
            Serialize.Utility.Write(writer, d, "d");

            FixedArray <Msg, ArrayLength_2> __ret__ = new FixedArray <Msg, ArrayLength_2>();

            Serialize.Utility.DoRead(_invoker.End(), ref __ret__, "", Serialize.Utility.Read);
            return(__ret__);
        }
        internal static IEnumerable <CSharpArgumentInfo> GetBindingArgumentList(
            object[] arguments,
            string[] argumentNames,
            bool staticContext)
        {
            var targetFlag = CSharpArgumentInfoFlags.None;

            if (staticContext)
            {
                targetFlag |= CSharpArgumentInfoFlags.IsStaticType | CSharpArgumentInfoFlags.UseCompileTimeType;
            }

            var argumentInfoList = new FixedArray <CSharpArgumentInfo>(arguments.Length + 1)
            {
                CSharpArgumentInfo.Create(targetFlag, null)
            };

            for (int i = 0; i < arguments.Length; i++)
            {
                var    flag         = CSharpArgumentInfoFlags.None;
                string argumentName = null;
                if (argumentNames != null && argumentNames.Length > i)
                {
                    argumentName = argumentNames[i];
                }

                if (!String.IsNullOrEmpty(argumentName))
                {
                    flag |= CSharpArgumentInfoFlags.NamedArgument;
                }

                argumentInfoList.Add(CSharpArgumentInfo.Create(flag, argumentName));
            }

            return(argumentInfoList);
        }
示例#15
0
        public void FilterMoves(FixedArray moves, Color playerColor)
        {
            var oppositeColor = 1 - (int)playerColor;
            var player = this.playerBoards[(int)playerColor];
            var opponent = this.playerBoards[oppositeColor];

            int index = 0;
            int squeezed_index = 0;
            var innerArray = moves.InnerArray;
            int size = moves.Size;

            while (index < size)
            {
                var move = innerArray[index];

                if (move.Type == MoveType.KingCastle)
                {
                    innerArray[squeezed_index].From = move.From;
                    innerArray[squeezed_index].To = move.To;
                    innerArray[squeezed_index].Type = move.Type;
                    innerArray[squeezed_index].Value = move.Value;
                    ++squeezed_index;
                    ++index;
                    continue;
                }

                this.ProcessMove(move, playerColor);

                // TODO write "from direction" method
                if (!player.IsUnderAttack(player.King.GetSquare(), opponent))
                {
                    innerArray[squeezed_index].From = move.From;
                    innerArray[squeezed_index].To = move.To;
                    innerArray[squeezed_index].Type = move.Type;
                    innerArray[squeezed_index].Value = move.Value;
                    ++squeezed_index;
                }

                this.CancelLastMove(playerColor);

                ++index;
            }

            moves.Size = squeezed_index;
        }
示例#16
0
 public void Test(FixedArray <Msg, ArrayLength_2> msg)
 {
     Console.WriteLine("cs Test(FixedArray<Msg, ArrayLength_2> msg:{0})", msg);
 }
示例#17
0
 public void Test(FixedArray <List <float>, ArrayLength_2> v)
 {
     Console.WriteLine("cs Test(FixedArray<List<float>, ArrayLength_2> v:{0})", v);
 }
示例#18
0
 public void Test(FixedArray <byte, ArrayLength_2> v)
 {
     Console.WriteLine("cs FixedArray<byte, ArrayLength_2> v:{0})", v);
 }
示例#19
0
    public void Test()
    {
        CrossStation.Startup(Caller.Instance, 1024 * 24);
        var station = CrossStation.Instance;

        station.Register(new TestC2S.Processor(new TestC2SRsp()));

        var req = new TestS2C.Requester(station.Invoker);

        req.Test(false);
        req.Test((byte)1);
        req.Test((int)2);
        req.Test((long)3);
        req.Test(4.0f);
        req.Test(5.0);
        req.Test("xuantao");

        var lb = new List <bool>();

        lb.Add(true);
        lb.Add(false);
        req.Test(lb);

        var fb = new FixedArray <bool, ArrayLength_2>();

        fb[0] = true;
        fb[1] = true;
        req.Test(fb);

        var fby = new FixedArray <byte, ArrayLength_2>();

        fby[0] = 101;
        fby[1] = 102;
        req.Test(fby);

        var li = new List <int> {
            103, 104
        };
        var lli = new List <List <int> >();

        lli.Add(li);
        lli.Add(li);
        req.Test(lli);

        var fl = new FixedArray <long, ArrayLength_2>();

        fby[0] = 101;
        fby[1] = 102;
        var lfl = new List <FixedArray <long, ArrayLength_2> >();

        lfl.Add(fl);
        lfl.Add(fl);
        req.Test(lfl);

        var flf = new FixedArray <List <float>, ArrayLength_2>();

        flf[0].Add(.01f);
        flf[0].Add(.01f);
        flf[1].Add(.02f);
        flf[1].Add(.02f);
        req.Test(flf);

        var msg = new Msg();

        req.Test(msg);

        var fmsg = new FixedArray <Msg, ArrayLength_2>();

        req.Test(fmsg);

        var rMsg  = req.Test(1, 2);
        var rlMsg = req.Test(1, 2, 3);
        var fMsg  = req.Test(1, 2, 3, 4);

        req.Test();

        //long cost = 0;
        //Stopwatch watch = Stopwatch.StartNew();
        //watch.Start();
        //for (int i = 0; i < test_count; ++i)
        //{
        //    KGPlayerData data = req.GetPlayerData();
        //}
        //Console.WriteLine("test cross call, GetPlayerData cost:{0}", watch.ElapsedMilliseconds);

        //watch.Reset();
        //watch.Start();
        //for (int i = 0; i < test_count; ++i)
        //{
        //    KGPlayerData data = new KGPlayerData();
        //    req.SetPlayerData(data);
        //}
        //cost = watch.ElapsedMilliseconds;
        //Console.WriteLine("test cross call, SetPlayerData cost:{0}", cost);

        ////watch.Reset();
        ////watch.Start();
        ////for (int i = 0; i < test_count; ++i)
        ////{
        ////    KGPlayerData data = new KGPlayerData();
        ////    data = req.TranslatePlayerData(data);
        ////}
        ////cost = watch.ElapsedMilliseconds;
        ////Console.WriteLine("test cross call, TranslatePlayerData cost:{0}", cost);

        //watch.Stop();
        ////ProfileManager.Instance.Log();


        //ProfileManager.Instance.Start("test org int");
        //for (int i = 0; i < test_count; ++i)
        //{
        //    var val = DllApi.TestInt(i);
        //}
        //ProfileManager.Instance.Stop("test org int");

        //ProfileManager.Instance.Start("test org float");
        //for (int i = 0; i < test_count; ++i)
        //{
        //    var val = DllApi.TestFloat((float)i);
        //}
        //ProfileManager.Instance.Stop("test org float");

        //ProfileManager.Instance.Start("test org long");
        //for (int i = 0; i < test_count; ++i)
        //{
        //    var val = DllApi.TestInt64((long)i);
        //}
        //ProfileManager.Instance.Stop("test org long");

        //ProfileManager.Instance.Start("test org double");
        //for (int i = 0; i < test_count; ++i)
        //{
        //    var val = DllApi.TestDouble((double)i);
        //}
        //ProfileManager.Instance.Stop("test org double");

        //ProfileManager.Instance.Start("test cross int");
        //for (int i = 0; i < test_count; ++i)
        //{
        //    var val = req.Test(i);
        //}
        //ProfileManager.Instance.Stop("test cross int");

        //ProfileManager.Instance.Start("test cross float");
        //for (int i = 0; i < test_count; ++i)
        //{
        //    var val = req.Test((float)i);
        //}
        //ProfileManager.Instance.Stop("test cross float");

        //ProfileManager.Instance.Start("test cross long");
        //for (int i = 0; i < test_count; ++i)
        //{
        //    var val = req.Test((long)i);
        //}
        //ProfileManager.Instance.Stop("test cross long");

        //ProfileManager.Instance.Start("test cross double");
        //for (int i = 0; i < test_count; ++i)
        //{
        //    var val = req.Test((double)i);
        //}
        //ProfileManager.Instance.Stop("test cross double");


        //ProfileManager.Instance.Log();
    }
示例#20
0
 private static bool Equals(TArray a, TArray b) => FixedArray <T, TArray, TArrayAccessor> .Equals(a, b);
示例#21
0
        public static void Sort2(FixedArray moves)
        {
            if (moves.Size == 0)
            {
                return;
            }

            Move[] tempBuffer = new Move[moves.Size];
            // approximate moves size - 40 moves
            // best approach to split on 20+20
            // sort each part with insert sort
            // and then merge them

            int size = moves.Size;
            int left = 0, right = size - 1;
            var array = moves.InnerArray;
            int split = (left + right) / 2;
            int i, j;

            for (i = 0; i < split; ++i)
            {
                Move move = array[i];

                for (j = i - 1; (j >= 0) && (array[j].Value > move.Value); j--)
                {
                    array[j + 1] = array[j];
                }

                array[j + 1] = move;
            }

            for (i = split; i < size; ++i)
            {
                Move move = array[i];

                for (j = i - 1; (j >= split) && (array[j].Value > move.Value); j--)
                {
                    array[j + 1] = array[j];
                }

                array[j + 1] = move;
            }

            // merge
            int pos1  = 0;
            int pos2  = split + 1;
            int index = 0;

            while ((pos1 <= split) && (pos2 <= right))
            {
                // stable sort when <= 0
                // and unstable when < 0
                if (array[pos1].Value <= array[pos2].Value)
                {
                    tempBuffer[index++] = array[pos1++];
                }
                else
                {
                    tempBuffer[index++] = array[pos2++];
                }
            }

            while (pos1 <= split)
            {
                tempBuffer[index++] = array[pos1++];
            }

            while (pos2 <= right)
            {
                tempBuffer[index++] = array[pos2++];
            }

            for (i = left; i <= right; ++i)
            {
                array[i] = tempBuffer[i - left];
            }
        }