Example #1
0
        private int PrepareFunctionCall(int position, ushort nbParams, Stack <double> valueStack, Stack <int> returnStack)
        {
            var functionNameHash = NanTags.DecodeVariableRef(valueStack.Pop());

            var param = ReadParams(position, nbParams, valueStack);

            // Evaluate function.
            var evalResult = EvaluateFunctionCall(ref position, functionNameHash, nbParams, param, returnStack, valueStack);

            // Add result on stack as a value.
            if (NanTags.TypeOf(evalResult) != DataType.NoValue)
            {
                valueStack.Push(evalResult);
            }
            else if (NanTags.DecodeNonValue(evalResult) == NonValueType.Unit)
            {
                valueStack.Push(evalResult);
            }

            return(position);
        }