- Subject: Re: [slang-users] C Structure help ...
- From: Michael Noble <mnoble@xxxxxxxxxxxxx>
- Date: Fri, 8 Jun 2007 14:05:53 -0400
> What are the advantages/disadvantages of using passed values
> versus POP'd values ?
The main advantage of explicitly popping arguments from the stack
is flexibility. For example, it's cleaner/easier to support
functions with a variable number of arguments.
Another reason to choose explicit popping is because it facilitates
custom usage messages. For example, if your wrapper is coded as
> apgn_replace(char *value, int *attribute)
and you call it with 0 or 1 arguments then something like
<stdin>:1:<top-level>:Stack Underflow Error
is returned. Not terribly helpful. However, coded as
> apgn_replace( VOID )
then in the wrapper you can do things like
if (SLang_Num_Function_Args < SOMETHING ||
pop_arg_one() == FAIL ||
pop_arg_two() == FAIL || ...)
emit_helpful_usage_message( ...);
As a concrete example, consider the hypot() intrinsic called
from ISIS (our astrophysical modeling and analysis tool):
isis> hypot
<stdin>:1:<top-level>:Stack Underflow Error
If we replace it with a parallel version generated by SLIRP
isis> import("phypot")
and again call it with no arguments
isis> hypot
Usage: double = hypot(double,double)
This function has been vectorized and parallelized.
the result is much more useful, no?
Hope This Helps,
Mike
[2007 date index]
[2007 thread index]
[Thread Prev] [Thread Next]
[Date Prev] [Date Next]