converting Calc functions to jump functions
W.Donkers at dci-electronics.nl
Thu Jun 2 07:18:51 UTC 2016
I started converting the new Calc functions IFS and SWITCH to jump functions.
So far, the general part has been done.
I experience a problem where the functions IFS and SWITCH differ from the other jump functions (IF, CHOOSE, IFERROR, IFNA).
The other jump functions do 1 evaluation (of the first argument) and then jump to an argument that is to be the output.
The new jump functions need to evaluate at least 2 arguments.
And that is where I get stuck.
The first argument is on the stack, i.e. GetStackType() returns a type and ScInterpreter::sp is 1.
When I jump to the next argument to be evaluated, with aCode.Jump( pJump[ nIdx ], pJump[ pJump[ 0 ] ] ), ScInterpreter::sp is 0 afterwards.
How do I get the argument I jumped to (that part works) on the stack to be evaluated?
I hope you can shed some light on this jump mechanism.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the LibreOffice