On 26/06/2008, Cedric Blancher <[EMAIL PROTECTED]> wrote:
> On 25/06/2008, Roland Mainz <[EMAIL PROTECTED]> wrote:
> > "I. Szczesniak" wrote:
> > > On 6/25/08, Cedric Blancher <[EMAIL PROTECTED]> wrote:
> > > > Does ksh have a way to copy shell functions? I have to write a script
> > > > which has to add a discipline function to variables loaded from a
> file
> > > > via . (which is the output of another application and can't be
> > > > changed) and the number goes into the tens of thousands.
> > > > I'm using eval "function ${var}.get { $function }" but this is slow
> > > > and uses much memory per variable ($function contains 400 bytes of
> > > > script code) and the system has only memory for 128MB.
> > >
> > > Try this:
> > >
> > > function function_common
> > > {
> > > $function
> > > }
> > >
> > > eval "function ${var}.get { function_common \"[EMAIL PROTECTED]" }"
> >
> >
> > IMO it may be nice to think about the old idea for "nameref for
> > functions", e.g. "nameref -f funcptr = myfunction" or "function -n
> > funcptr = myfunction". The case above (and many other complex issues
> > related to get/set/unset functions and other cases where C/C++/JAVA code
> > would use function pointers) could be reduced to a simple "function
> > pointer (or better: nameref) assignment".
> >
> > The example above could then be reduced to:
> > -- snip --
> > function function_common
> > {
> > $function
> > }
> >
> > eval "function -n ${var}.get = function_common"
> > -- snip --
> >
> > ... and this would even be faster since we could replace the whole {
> > argument expansion pass for "$@" + the function call itself } with a
> > direct function call through the function nameref... and it may save
> > some memory since no wrapper functions (e.g. the wrapper which calls
> > "function_common" in Irek's example) need to be created.
>
>
> Do you have an example which works?
>
>
> function x
> {
> print x
> }
> nameref -f y=x
> y
>
>
> returns:
>
>
> Usage: typeset [-bflnprstuxACHS] [-a[type]] [-i[base]] [-E[n]] [-F[n]]
> [-L[n]] [-R[n]] [-X[n]] [-h string] [-T tname] [-Z[n]]
> [name[=value]...]
> Or:[name[=value]...]
> typeset[name[=value]...]
> [[name[=value]...]
> options[name[=value]...]
> ] -f [name...]
>
> (ksh 20080624, Fedora 8, i586)
Hello?
Cedric
--
Cedric Blancher <[EMAIL PROTECTED]>
Institute Pasteur
_______________________________________________
ast-users mailing list
[email protected]
https://mailman.research.att.com/mailman/listinfo/ast-users