Hi!
----
The following testcase contains a simple "stopwatch" type which tracks
the time between the functions "start" and "stop" and maintains a
variable "diff" which contains the difference:
-- snip --
typeset -T stopwatch_t=(
float starttime=nan
float stoptime=nan
float diff=nan
function start
{
(( _.starttime=SECONDS ))
return 0
}
function stop
{
(( _.stoptime=SECONDS ))
return 0
}
function reset
{
(( _.starttime=nan , _.stoptime=nan ))
}
function diff.get
{
(( .sh.value=_.stoptime-_.starttime ))
print -u2 "#mark"
return 0
}
)
stopwatch_t sw
sw.start
sleep 2.1
sw.stop
printf "time=%f\n" sw.diff
-- snip --
However when I run this testcase with ast-ksh.2009-06-22 it only prints:
-- snip --
time=nan
-- snip --
... while the expected output should AFAIK be:
-- snip --
#mark
time=2.1000
-- snip --
AFAIK two things go wrong there:
1. Using $ printf "time=%f\n" sw.diff # to call the discipline method
stopwatch_t.diff.get does not work, however it works when I replace
"sw.diff" with "${sw.diff}"
2. The somehow the value assigned to ".sh.value" does not make it to the
"printf" builtin... but I am not sure why this happens...
----
Bye,
Roland
--
__ . . __
(o.\ \/ /.o) [email protected]
\__\/\/__/ MPEG specialist, C&&JAVA&&Sun&&Unix programmer
/O /==\ O\ TEL +49 641 3992797
(;O/ \/ \O;)
_______________________________________________
ast-users mailing list
[email protected]
https://mailman.research.att.com/mailman/listinfo/ast-users