diff options
Diffstat (limited to 'src/algebra/axtimer.as.pamphlet')
-rw-r--r-- | src/algebra/axtimer.as.pamphlet | 191 |
1 files changed, 0 insertions, 191 deletions
diff --git a/src/algebra/axtimer.as.pamphlet b/src/algebra/axtimer.as.pamphlet deleted file mode 100644 index 76fefd66..00000000 --- a/src/algebra/axtimer.as.pamphlet +++ /dev/null @@ -1,191 +0,0 @@ -\documentclass{article} -\usepackage{open-axiom} -\begin{document} -\title{\$SPAD/src/algebra axtimer.as} -\author{The Axiom Team} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -\section{License} -<<license>>= ---Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. ---All rights reserved. --- ---Redistribution and use in source and binary forms, with or without ---modification, are permitted provided that the following conditions are ---met: --- --- - Redistributions of source code must retain the above copyright --- notice, this list of conditions and the following disclaimer. --- --- - Redistributions in binary form must reproduce the above copyright --- notice, this list of conditions and the following disclaimer in --- the documentation and/or other materials provided with the --- distribution. --- --- - Neither the name of The Numerical ALgorithms Group Ltd. nor the --- names of its contributors may be used to endorse or promote products --- derived from this software without specific prior written permission. --- ---THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS ---IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED ---TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A ---PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER ---OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, ---EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, ---PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR ---PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF ---LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING ---NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ---SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -@ -<<*>>= -<<license>> - --------------------------------------------------------------------------------- --- --- BasicMath: timer.as --- Objects for tracking time --- --------------------------------------------------------------------------------- --- - --- ToDo: Write so that start!(x) ; start!(x) ; stop!(x); stop!(x) works. - -#include "axiom.as" - -Z ==> Integer; - -Duration ==> Record(hours: Z, mins: Z, seconds: Z, milliseconds: Z); - -+++ Timer -+++ History: 22/5/94 Original version by MB. -+++ 9/4/97 [Peter Broadbery] incorporated into Basicmath. -+++ 7/8/97 [PAB] Hacked into axiom. -+++ Timer is a type whose elements are stopwatch timers, which can be used -+++ to time precisely various sections of code. -+++ The precision can be up to 1 millisecond but depends on the operating system. -+++ The times returned are CPU times used by the process that created the timer. - -Timer: BasicType with { - HMS: Z -> Duration; - ++ Returns (h, m, s, u) where n milliseconds is equal - ++ to h hours, m minutes, s seconds and u milliseconds. - read: % -> Z; - ++ Reads the timer t without stopping it. - ++ Returns the total accumulated time in milliseconds by all - ++ the start/stop cycles since t was created or last reset. - ++ If t is running, the time since the last start is added in, - ++ and t is not stopped or affected. - reset!: % -> %; - ++ Resets the timer t to 0 and stops it if it is running. - ++Returns the timer t after it is reset. - start!: % -> Z; - ++ Starts or restarts t, without resetting it to 0, - ++ It has no effect on t if it is already running. - ++ Returns 0 if t was already running, the absolute time at which - ++ the start/restart was done otherwise. - stop!: % -> Z; - ++ Stops t without resetting it to 0. - ++ It has no effect on t if it is not running. - ++ Returns the elapsed time in milliseconds since the last time t - ++ was restarted, 0 if t was not running. - timer: () -> %; - ++ Creates a timer, set to 0 and stopped. - ++ Returns the timer that has been created. - - coerce: % -> OutputForm; -#if 0 - gcTimer: () -> %; - ++ Returns the system garbage collection timer. - ++ Do not use for other purposes! -#endif -} == add { - -- time = total accumulated time since created or reset - -- start = absolute time of last start - -- running? = true if currently running, false if currently stopped - Rep ==> Record(time:Z, start:Z, running?:Boolean); - import { - BOOT_:_:GET_-INTERNAL_-RUN_-TIME: () -> Integer; - } from Foreign Lisp; - cpuTime(): Integer == BOOT_:_:GET_-INTERNAL_-RUN_-TIME(); - - import from Rep, Z, Boolean; - - timer():% == per [0, 0, false]; - - read(t:%):Z == { - rec := rep t; - ans := rec.time; - if rec.running? then ans := ans + cpuTime() - rec.start; - ans - } - - stop!(t:%):Z == { - local ans:Z; - rec := rep t; - if rec.running? then { - ans := cpuTime() - rec.start; - rec.time := rec.time + ans; - rec.running? := false - } - else ans := 0; - ans - } - - start!(t:%):Z == { - local ans:Z; - rec := rep t; - if not(rec.running?) then { - rec.start := ans := cpuTime(); - rec.running? := true; - } - else ans := 0; - ans - } - - reset!(t:%):% == { - rec := rep t; - rec.time := rec.start := 0; - rec.running? := false; - t - } - - HMS(m:Z): Duration == { - import from Record(quotient: Integer, remainder: Integer); - (h, m) := explode divide(m, 3600000); - (m, s) := explode divide(m, 60000); - (s, l) := explode divide(s, 1000); - [h, m, s, l] - } - -#if 0 - import { - gcTimer: () -> Pointer; - } from Foreign C; - - gcTimer(): % == (gcTimer())@Pointer pretend %; -#endif - coerce(x: %): OutputForm == { - import from List OutputForm; - assign(name: String, val: OutputForm): OutputForm == { - import from Symbol; - blankSeparate [outputForm(name::Symbol), outputForm("="::Symbol), val]; - } - state: Symbol := coerce(if rep(x).running? then "on" else "off"); - bracket [outputForm("Timer:"::Symbol), - commaSeparate [assign("state", outputForm state), - assign("value", (read x)::OutputForm)]]; - } - - (a: %) = (b: %): Boolean == error "No equality for Timers"; -} - -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} |