Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > 94a4f7d3ef121dc9291cc0566822165d > files > 148

ghc-MissingH-devel-1.1.0.3-2.fc14.x86_64.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--Rendered using the Haskell Html Library v0.2-->
<HTML
><HEAD
><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
><TITLE
>Data.Progress.Tracker</TITLE
><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"
></SCRIPT
><SCRIPT TYPE="text/javascript"
>window.onload = function () {setSynopsis("mini_Data-Progress-Tracker.html")};</SCRIPT
></HEAD
><BODY
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="topbar"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD
><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
></TD
><TD CLASS="title"
>MissingH-1.1.0.3: Large utility library</TD
><TD CLASS="topbut"
><A HREF="src/Data-Progress-Tracker.html"
>Source code</A
></TD
><TD CLASS="topbut"
><A HREF="index.html"
>Contents</A
></TD
><TD CLASS="topbut"
><A HREF="doc-index.html"
>Index</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="modulebar"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD
><FONT SIZE="6"
>Data.Progress.Tracker</FONT
></TD
><TD ALIGN="right"
><TABLE CLASS="narrow" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="infohead"
>Portability</TD
><TD CLASS="infoval"
>portable</TD
></TR
><TR
><TD CLASS="infohead"
>Stability</TD
><TD CLASS="infoval"
>provisional</TD
></TR
><TR
><TD CLASS="infohead"
>Maintainer</TD
><TD CLASS="infoval"
>John Goerzen &lt;jgoerzen@complete.org&gt; </TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="section4"
><B
>Contents</B
></TD
></TR
><TR
><TD
><DL
><DT
><A HREF="#1"
>Introduction
</A
></DT
><DT
><A HREF="#2"
>Updating
</A
></DT
><DT
><A HREF="#3"
>Reading and Processing
</A
></DT
><DT
><A HREF="#4"
>Types
</A
></DT
><DT
><A HREF="#5"
>Utilities
</A
></DT
></DL
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
>Description</TD
></TR
><TR
><TD CLASS="doc"
><P
>Tools for tracking the status of a long operation.
</P
><P
>Written by John Goerzen, jgoerzen@complete.org 
</P
><P
>See also <A HREF="Data-Progress-Meter.html"
>Data.Progress.Meter</A
> 
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
>Synopsis</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="#v%3AnewProgress"
>newProgress</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AnewProgress%27"
>newProgress'</A
> :: <A HREF="Data-Progress-Tracker.html#t%3AProgressStatus"
>ProgressStatus</A
> -&gt; [<A HREF="Data-Progress-Tracker.html#t%3AProgressCallback"
>ProgressCallback</A
>] -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AaddCallback"
>addCallback</A
> :: <A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
> -&gt; <A HREF="Data-Progress-Tracker.html#t%3AProgressCallback"
>ProgressCallback</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AaddParent"
>addParent</A
> :: <A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
> -&gt; <A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AincrP"
>incrP</A
> :: <A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AincrP%27"
>incrP'</A
> :: <A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsetP"
>setP</A
> :: <A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsetP%27"
>setP'</A
> :: <A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AincrTotal"
>incrTotal</A
> :: <A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsetTotal"
>setTotal</A
> :: <A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AfinishP"
>finishP</A
> :: <A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AgetSpeed"
>getSpeed</A
> :: (<A HREF="Data-Progress-Tracker.html#t%3AProgressStatuses"
>ProgressStatuses</A
> a (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> b), <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AFractional"
>Fractional</A
> b) =&gt; a -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AgetETR"
>getETR</A
> :: (<A HREF="Data-Progress-Tracker.html#t%3AProgressStatuses"
>ProgressStatuses</A
> a (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
>), <A HREF="Data-Progress-Tracker.html#t%3AProgressStatuses"
>ProgressStatuses</A
> a (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
>)) =&gt; a -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AgetETA"
>getETA</A
> :: (<A HREF="Data-Progress-Tracker.html#t%3AProgressStatuses"
>ProgressStatuses</A
> a (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
>), <A HREF="Data-Progress-Tracker.html#t%3AProgressStatuses"
>ProgressStatuses</A
> a (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
>)) =&gt; a -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A HREF="#t%3AProgressStatus"
>ProgressStatus</A
>  = <A HREF="#v%3AProgressStatus"
>ProgressStatus</A
> {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="recfield"
><A HREF="#v%3AcompletedUnits"
>completedUnits</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
></TD
></TR
><TR
><TD CLASS="recfield"
><A HREF="#v%3AtotalUnits"
>totalUnits</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
></TD
></TR
><TR
><TD CLASS="recfield"
><A HREF="#v%3AstartTime"
>startTime</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
></TD
></TR
><TR
><TD CLASS="recfield"
><A HREF="#v%3AtrackerName"
>trackerName</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
></TD
></TR
><TR
><TD CLASS="recfield"
><A HREF="#v%3AtimeSource"
>timeSource</A
> :: <A HREF="Data-Progress-Tracker.html#t%3AProgressTimeSource"
>ProgressTimeSource</A
></TD
></TR
></TABLE
>}</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A HREF="#t%3AProgress"
>Progress</A
> </TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3AProgressTimeSource"
>ProgressTimeSource</A
> = <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3AProgressCallback"
>ProgressCallback</A
> = <A HREF="Data-Progress-Tracker.html#t%3AProgressStatus"
>ProgressStatus</A
> -&gt; <A HREF="Data-Progress-Tracker.html#t%3AProgressStatus"
>ProgressStatus</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>class</SPAN
>  <A HREF="#t%3AProgressStatuses"
>ProgressStatuses</A
> a b  <SPAN CLASS="keyword"
>where</SPAN
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="#v%3AwithStatus"
>withStatus</A
> :: a -&gt; (<A HREF="Data-Progress-Tracker.html#t%3AProgressStatus"
>ProgressStatus</A
> -&gt; b) -&gt; b</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AdefaultTimeSource"
>defaultTimeSource</A
> :: <A HREF="Data-Progress-Tracker.html#t%3AProgressTimeSource"
>ProgressTimeSource</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="1"
><A NAME="1"
>Introduction
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="doc"
><P
>ProgressTracker is a module for tracking the progress on long-running
operations.  It can be thought of as the back end engine behind
a status bar.  ProgressTracker can do things such as track how far along
a task is, provide an estimated time of completion, estimated time remaining,
current speed, etc.  It is designed to be as generic as possible; it can even
base its speed calculations on something other than the system clock.
</P
><P
>ProgressTracker also supports a notion of a parent tracker.  This is used when
a large task is composed of several individual tasks which may also be
long-running.  Downloading many large files over the Internet is a common
example of this.
</P
><P
>Any given ProgressTracker can be told about one or more parent trackers.  
When the child tracker's status is updated, the parent tracker's status is
also updated in the same manner.  Therefore, the progress on each individual
component, as well as the overall progress, can all be kept in sync
automatically.
</P
><P
>Finally, you can register callbacks.  Callbacks are functions that are called
whenever the status of a tracker changes.  They'll be passed the old and new
status and are intended to do things like update on-screen status displays.
</P
><P
>The cousin module Data.Progress.Meter can be used to nicely render
these trackers on a console.
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:newProgress"
><A NAME="v%3AnewProgress"
></A
></A
><B
>newProgress</B
></TD
><TD CLASS="declbut"
><A HREF="src/Data-Progress-Tracker.html#newProgress"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
></TD
><TD CLASS="rdoc"
>Name of this tracker
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
></TD
><TD CLASS="rdoc"
>Total units expected
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
><P
>Create a new <TT
><A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
></TT
> object with the given name and number
of total units initialized as given.  The start time will be initialized
with the current time at the present moment according to the system clock.
The units completed will be set to 0, the time source will be set to the
system clock, and the parents and callbacks will be empty.
</P
><P
>If you need more control, see 'newProgress\''.
</P
><P
>Example:
</P
><PRE
> prog &lt;- newProgress &quot;mytracker&quot; 1024
</PRE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:newProgress'"
><A NAME="v%3AnewProgress%27"
></A
></A
><B
>newProgress'</B
> :: <A HREF="Data-Progress-Tracker.html#t%3AProgressStatus"
>ProgressStatus</A
> -&gt; [<A HREF="Data-Progress-Tracker.html#t%3AProgressCallback"
>ProgressCallback</A
>] -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
></TD
><TD CLASS="declbut"
><A HREF="src/Data-Progress-Tracker.html#newProgress%27"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Create a new <TT
><A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
></TT
> object initialized with the given status and 
callbacks.
No adjustment to the <TT
><A HREF="Data-Progress-Tracker.html#v%3AstartTime"
>startTime</A
></TT
> will be made.  If you
want to use the system clock, you can initialize <TT
><A HREF="Data-Progress-Tracker.html#v%3AstartTime"
>startTime</A
></TT
> with
the return value of <TT
><A HREF="Data-Progress-Tracker.html#v%3AdefaultTimeSource"
>defaultTimeSource</A
></TT
> and also pass <TT
><A HREF="Data-Progress-Tracker.html#v%3AdefaultTimeSource"
>defaultTimeSource</A
></TT
>
as the timing source. 
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:addCallback"
><A NAME="v%3AaddCallback"
></A
></A
><B
>addCallback</B
> :: <A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
> -&gt; <A HREF="Data-Progress-Tracker.html#t%3AProgressCallback"
>ProgressCallback</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
><TD CLASS="declbut"
><A HREF="src/Data-Progress-Tracker.html#addCallback"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Adds an new callback to an existing <TT
><A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
></TT
>.  The callback will be
called whenever the object's status is updated, except by the call to finishP.
</P
><P
>Please note that the Progress object will be locked while the callback is 
running, so the callback will not be able to make any modifications to it.
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:addParent"
><A NAME="v%3AaddParent"
></A
></A
><B
>addParent</B
></TD
><TD CLASS="declbut"
><A HREF="src/Data-Progress-Tracker.html#addParent"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: <A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
></TD
><TD CLASS="rdoc"
>The child object
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
></TD
><TD CLASS="rdoc"
>The parent to add to this child
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
>Adds a new parent to an existing <TT
><A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
></TT
>.  The parent
will automatically have its completed and total counters incremented
by the value of those counters in the existing <TT
><A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
></TT
>. 
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="2"
><A NAME="2"
>Updating
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:incrP"
><A NAME="v%3AincrP"
></A
></A
><B
>incrP</B
> :: <A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
><TD CLASS="declbut"
><A HREF="src/Data-Progress-Tracker.html#incrP"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Increment the completed unit count in the <TT
><A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
></TT
> object
by the amount given.  If the value as given exceeds the total, then
the total will also be raised to match this value so that the 
completed count never exceeds the total.
</P
><P
>You can decrease the completed unit count by supplying a negative number
here. 
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:incrP'"
><A NAME="v%3AincrP%27"
></A
></A
><B
>incrP'</B
> :: <A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
><TD CLASS="declbut"
><A HREF="src/Data-Progress-Tracker.html#incrP%27"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Like <TT
><A HREF="Data-Progress-Tracker.html#v%3AincrP"
>incrP</A
></TT
>, but never modify the total. 
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:setP"
><A NAME="v%3AsetP"
></A
></A
><B
>setP</B
> :: <A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
><TD CLASS="declbut"
><A HREF="src/Data-Progress-Tracker.html#setP"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Set the completed unit count in the <TT
><A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
></TT
> object to the specified
value.  Unlike <TT
><A HREF="Data-Progress-Tracker.html#v%3AincrP"
>incrP</A
></TT
>, this function sets the count to a specific value,
rather than adding to the existing value.  If this value exceeds the total,
then the total will also be raised to match this value so that the completed
count never exceeds teh total. 
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:setP'"
><A NAME="v%3AsetP%27"
></A
></A
><B
>setP'</B
> :: <A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
><TD CLASS="declbut"
><A HREF="src/Data-Progress-Tracker.html#setP%27"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Like <TT
><A HREF="Data-Progress-Tracker.html#v%3AsetP"
>setP</A
></TT
>, but never modify the total. 
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:incrTotal"
><A NAME="v%3AincrTotal"
></A
></A
><B
>incrTotal</B
> :: <A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
><TD CLASS="declbut"
><A HREF="src/Data-Progress-Tracker.html#incrTotal"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Increment the total unit count in the <TT
><A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
></TT
> object by the amount
given.  This would rarely be needed, but could be needed in some special cases 
when the total number of units is not known in advance. 
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:setTotal"
><A NAME="v%3AsetTotal"
></A
></A
><B
>setTotal</B
> :: <A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
><TD CLASS="declbut"
><A HREF="src/Data-Progress-Tracker.html#setTotal"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Set the total unit count in the <TT
><A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
></TT
> object to the specified
value.  Like <TT
><A HREF="Data-Progress-Tracker.html#v%3AincrTotal"
>incrTotal</A
></TT
>, this would rarely be needed. 
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:finishP"
><A NAME="v%3AfinishP"
></A
></A
><B
>finishP</B
> :: <A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
><TD CLASS="declbut"
><A HREF="src/Data-Progress-Tracker.html#finishP"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Call this when you are finished with the object.  It is especially
important to do this when parent objects are involved.
</P
><P
>This will simply set the totalUnits to the current completedUnits count,
but will not call the callbacks.  It will additionally propogate
any adjustment in totalUnits to the parents, whose callbacks <EM
>will</EM
> be
called.
</P
><P
>This ensures that the total expected counts on the parent are always correct.
Without doing this, if, say, a transfer ended earlier than expected, ETA 
values on the parent would be off since it would be expecting more data than
actually arrived. 
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="3"
><A NAME="3"
>Reading and Processing
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:getSpeed"
><A NAME="v%3AgetSpeed"
></A
></A
><B
>getSpeed</B
> :: (<A HREF="Data-Progress-Tracker.html#t%3AProgressStatuses"
>ProgressStatuses</A
> a (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> b), <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AFractional"
>Fractional</A
> b) =&gt; a -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Progress-Tracker.html#getSpeed"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Returns the speed in units processed per time unit.  (If you are
using the default time source, this would be units processed per second).
This obtains the current speed solely from analyzing the <TT
><A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
></TT
> object.
</P
><P
>If no time has elapsed yet, returns 0.
</P
><P
>You can use this against either a <TT
><A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
></TT
> object or a <TT
><A HREF="Data-Progress-Tracker.html#t%3AProgressStatus"
>ProgressStatus</A
></TT
>
object.  This is in the IO monad because the speed is based on the current
time.
</P
><P
>Example:
</P
><PRE
> getSpeed progressobj &gt;&gt;= print
</PRE
><P
>Don't let the type of this function confuse you.  It is a fancy way of saying
that it can take either a <TT
><A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
></TT
> or a <TT
><A HREF="Data-Progress-Tracker.html#t%3AProgressStatus"
>ProgressStatus</A
></TT
> object, and returns
a number that is valid as any Fractional type, such as a Double, Float, or
Rational. 
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:getETR"
><A NAME="v%3AgetETR"
></A
></A
><B
>getETR</B
> :: (<A HREF="Data-Progress-Tracker.html#t%3AProgressStatuses"
>ProgressStatuses</A
> a (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
>), <A HREF="Data-Progress-Tracker.html#t%3AProgressStatuses"
>ProgressStatuses</A
> a (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
>)) =&gt; a -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
></TD
><TD CLASS="declbut"
><A HREF="src/Data-Progress-Tracker.html#getETR"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Returns the estimated time remaining, in standard time units. 
</P
><P
>Returns 0 whenever <TT
><A HREF="Data-Progress-Tracker.html#v%3AgetSpeed"
>getSpeed</A
></TT
> would return 0.
</P
><P
>See the comments under <TT
><A HREF="Data-Progress-Tracker.html#v%3AgetSpeed"
>getSpeed</A
></TT
> for information about this function's type
and result. 
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:getETA"
><A NAME="v%3AgetETA"
></A
></A
><B
>getETA</B
> :: (<A HREF="Data-Progress-Tracker.html#t%3AProgressStatuses"
>ProgressStatuses</A
> a (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
>), <A HREF="Data-Progress-Tracker.html#t%3AProgressStatuses"
>ProgressStatuses</A
> a (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
>)) =&gt; a -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
></TD
><TD CLASS="declbut"
><A HREF="src/Data-Progress-Tracker.html#getETA"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Returns the estimated system clock time of completion, in standard
time units.  Returns the current time whenever <TT
><A HREF="Data-Progress-Tracker.html#v%3AgetETR"
>getETR</A
></TT
> would return 0.
</P
><P
>See the comments under <TT
><A HREF="Data-Progress-Tracker.html#v%3AgetSpeed"
>getSpeed</A
></TT
> for information about this function's type
and result. 
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="4"
><A NAME="4"
>Types
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><SPAN CLASS="keyword"
>data</SPAN
>  <A NAME="t:ProgressStatus"
><A NAME="t%3AProgressStatus"
></A
></A
><B
>ProgressStatus</B
>  </TD
><TD CLASS="declbut"
><A HREF="src/Data-Progress-Tracker.html#ProgressStatus"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="ndoc"
>The main progress status record. 
</TD
></TR
><TR
><TD CLASS="section4"
>Constructors</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="5" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:ProgressStatus"
><A NAME="v%3AProgressStatus"
></A
></A
><B
>ProgressStatus</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="body" COLSPAN="2"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:completedUnits"
><A NAME="v%3AcompletedUnits"
></A
></A
><B
>completedUnits</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:totalUnits"
><A NAME="v%3AtotalUnits"
></A
></A
><B
>totalUnits</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:startTime"
><A NAME="v%3AstartTime"
></A
></A
><B
>startTime</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:trackerName"
><A NAME="v%3AtrackerName"
></A
></A
><B
>trackerName</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
></TD
><TD CLASS="rdoc"
>An identifying string
</TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:timeSource"
><A NAME="v%3AtimeSource"
></A
></A
><B
>timeSource</B
> :: <A HREF="Data-Progress-Tracker.html#t%3AProgressTimeSource"
>ProgressTimeSource</A
></TD
><TD CLASS="rdoc"
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="section4"
><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:ProgressStatus')" ALT="show/hide"
> Instances</TD
></TR
><TR
><TD CLASS="body"
><DIV ID="i:ProgressStatus" STYLE="display:block;"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="Data-Progress-Tracker.html#t%3AProgressStatuses"
>ProgressStatuses</A
> <A HREF="Data-Progress-Tracker.html#t%3AProgressStatus"
>ProgressStatus</A
> b</TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><SPAN CLASS="keyword"
>data</SPAN
>  <A NAME="t:Progress"
><A NAME="t%3AProgress"
></A
></A
><B
>Progress</B
>  </TD
><TD CLASS="declbut"
><A HREF="src/Data-Progress-Tracker.html#Progress"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="ndoc"
>The main Progress object. 
</TD
></TR
><TR
><TD CLASS="section4"
><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Progress')" ALT="show/hide"
> Instances</TD
></TR
><TR
><TD CLASS="body"
><DIV ID="i:Progress" STYLE="display:block;"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="decl"
>ProgressRecords <A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
> (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> b)</TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Data-Progress-Tracker.html#t%3AProgressStatuses"
>ProgressStatuses</A
> <A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
> (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> b)</TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:ProgressTimeSource"
><A NAME="t%3AProgressTimeSource"
></A
></A
><B
>ProgressTimeSource</B
> = <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
></TD
><TD CLASS="declbut"
><A HREF="src/Data-Progress-Tracker.html#ProgressTimeSource"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>A function that, when called, yields the current time. 
The default is <TT
><A HREF="Data-Progress-Tracker.html#v%3AdefaultTimeSource"
>defaultTimeSource</A
></TT
>. 
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:ProgressCallback"
><A NAME="t%3AProgressCallback"
></A
></A
><B
>ProgressCallback</B
> = <A HREF="Data-Progress-Tracker.html#t%3AProgressStatus"
>ProgressStatus</A
> -&gt; <A HREF="Data-Progress-Tracker.html#t%3AProgressStatus"
>ProgressStatus</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
><TD CLASS="declbut"
><A HREF="src/Data-Progress-Tracker.html#ProgressCallback"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>The type for a callback function for the progress tracker.
When given at creation time to 'newProgress\'' or when added via <TT
><A HREF="Data-Progress-Tracker.html#v%3AaddCallback"
>addCallback</A
></TT
>,
these functions get called every time the status of the tracker changes.
</P
><P
>This function is passed two <TT
><A HREF="Data-Progress-Tracker.html#t%3AProgressStatus"
>ProgressStatus</A
></TT
> records: the first
reflects the status prior to the update, and the second reflects
the status after the update.
</P
><P
>Please note that the owning <TT
><A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
></TT
> object will be locked while the
callback is running, so the callback will not be able to make changes to it. 
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><SPAN CLASS="keyword"
>class</SPAN
>  <A NAME="t:ProgressStatuses"
><A NAME="t%3AProgressStatuses"
></A
></A
><B
>ProgressStatuses</B
> a b  <SPAN CLASS="keyword"
>where</SPAN
></TD
><TD CLASS="declbut"
><A HREF="src/Data-Progress-Tracker.html#ProgressStatuses"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="section4"
>Methods</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:withStatus"
><A NAME="v%3AwithStatus"
></A
></A
><B
>withStatus</B
> :: a -&gt; (<A HREF="Data-Progress-Tracker.html#t%3AProgressStatus"
>ProgressStatus</A
> -&gt; b) -&gt; b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Progress-Tracker.html#withStatus"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Lets you examine the <TT
><A HREF="Data-Progress-Tracker.html#t%3AProgressStatus"
>ProgressStatus</A
></TT
> that is contained 
       within a <TT
><A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
></TT
> object.  You can simply pass
       a <TT
><A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
></TT
> object and a function to <TT
><A HREF="Data-Progress-Tracker.html#v%3AwithStatus"
>withStatus</A
></TT
>, and
       <TT
><A HREF="Data-Progress-Tracker.html#v%3AwithStatus"
>withStatus</A
></TT
> will lock the <TT
><A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
></TT
> object (blocking any
       modifications while you are reading it), then pass the object
       to your function.  If you happen to already have a <TT
><A HREF="Data-Progress-Tracker.html#t%3AProgressStatus"
>ProgressStatus</A
></TT
>
       object, withStatus will also accept it and simply pass it unmodified
       to the function. 
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="section4"
><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:ProgressStatuses')" ALT="show/hide"
> Instances</TD
></TR
><TR
><TD CLASS="body"
><DIV ID="i:ProgressStatuses" STYLE="display:block;"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="Data-Progress-Tracker.html#t%3AProgressStatuses"
>ProgressStatuses</A
> <A HREF="Data-Progress-Tracker.html#t%3AProgressStatus"
>ProgressStatus</A
> b</TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Data-Progress-Tracker.html#t%3AProgressStatuses"
>ProgressStatuses</A
> <A HREF="Data-Progress-Tracker.html#t%3AProgress"
>Progress</A
> (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> b)</TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="5"
><A NAME="5"
>Utilities
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:defaultTimeSource"
><A NAME="v%3AdefaultTimeSource"
></A
></A
><B
>defaultTimeSource</B
> :: <A HREF="Data-Progress-Tracker.html#t%3AProgressTimeSource"
>ProgressTimeSource</A
></TD
><TD CLASS="declbut"
><A HREF="src/Data-Progress-Tracker.html#defaultTimeSource"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>The default time source for the system.  This is defined as:
</P
><PRE
>getClockTime &gt;&gt;= (return . clockTimeToEpoch)
</PRE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="botbar"
>Produced by <A HREF="http://www.haskell.org/haddock/"
>Haddock</A
> version 2.6.1</TD
></TR
></TABLE
></BODY
></HTML
>