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); }
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); } }