예제 #1
0
                static void Callback(ref FastStream fs)
                {
                    var argsNum = (int)fs.Pop();

                    object[] args = new object[argsNum];
                    for (int i = 0; i < argsNum; i++)
                    {
                        args[i] = fs.Pop();
                    }
                    ((CallbackDelegate)fs.Pop())(fs, args);
                }
예제 #2
0
                static void FinishReadDictionary(ref FastStream fs)
                {
                    var length = (int)fs.Pop();

                    if (length == 0)
                    {
                        fs.Push(new Dictionary <string, object>());
                        return;
                    }
                    var firstObject = fs.Pop();
                    var firstName   = (string)fs.Pop();

                    if (firstName == string.Empty)
                    {
                        var result = new object[length];
                        result[0] = firstObject;
                        for (int i = length - 1; i >= 1; i--)
                        {
                            result[i] = fs.Pop();
                            fs.Pop();
                        }
                        fs.Push(result);
                    }
                    else
                    {
                        var result = new Dictionary <string, object>(length);
                        result.Add(firstName, firstObject);
                        for (int i = length - 1; i >= 1; i--)
                        {
                            var value = fs.Pop();
                            var key   = (string)fs.Pop();
                            result.Add(key, value);
                        }
                        fs.Push(result);
                    }
                }