<?xml version='1.0' encoding='ISO-8859-1' standalone='no'?>
<!DOCTYPE interface-description SYSTEM 'file:///usr/pkgsrc/lang/oo2c/work.macaroon/oo2c_32-2.0.11/rsrc/OOC/xml/interface-description.dtd'>
<interface-description name='Time' id=''>
  <import-decl name='SysClock' id='SysClock' export='no' module='SysClock'/>
  <const-decl name='msecPerSec' id='msecPerSec' export='yes' value='unknown'>
    <oberon-doc>
      <summary>Number of millseconds in a second.</summary>
      <p pad-after='yes' no-indent='yes'>Number of millseconds in a second.</p>
    </oberon-doc>
  </const-decl>
  <const-decl name='msecPerMin' id='msecPerMin' export='yes' value='unknown'>
    <oberon-doc>
      <summary>Number of millseconds in a minute.</summary>
      <p pad-after='yes' no-indent='yes'>Number of millseconds in a minute.</p>
    </oberon-doc>
  </const-decl>
  <const-decl name='msecPerHour' id='msecPerHour' export='yes' value='unknown'>
    <oberon-doc>
      <summary>Number of millseconds in an hour.</summary>
      <p pad-after='yes' no-indent='yes'>Number of millseconds in an hour.</p>
    </oberon-doc>
  </const-decl>
  <const-decl name='msecPerDay' id='msecPerDay' export='yes' value='unknown'>
    <oberon-doc>
      <summary>Number of millseconds in a day.</summary>
      <p pad-after='yes' no-indent='yes'>Number of millseconds in a day.</p>
    </oberon-doc>
  </const-decl>
  <procedure name='GetTime' id='GetTime' export='yes'>
    <oberon-doc>
      <summary>Set <oberon-param href='#GetTime.t'>t</oberon-param> to the current time of day.</summary>
      <p pad-after='yes' no-indent='yes'>Set <oberon-param href='#GetTime.t'>t</oberon-param> to the current time of day.  In case of failure (that is, if SysClock.CanGetClock() is <code>FALSE</code>) the time <samp>00:00 UTC</samp> on <samp>Jan 1 1970</samp> is returned.  This procedure is typically much faster than doing <oberon-proc href='SysClock#GetClock'>SysClock.GetClock</oberon-proc> followed by <oberon-proc href='Calendar#SetTimeStamp'>Calendar.SetTimeStamp</oberon-proc>.</p>
    </oberon-doc>
    <formal-parameters>
      <parameter-decl name='t' id='GetTime.t' export='no' variable-parameter='yes'>
        <type>
          <type-name name='TimeStamp' href='#TimeStamp'/>
        </type>
      </parameter-decl>
    </formal-parameters>
  </procedure>
  <import-decl name='-RT0' id='-RT0' export='no' module='RT0'/>
  <import-decl name='-Object' id='-Object' export='no' module='Object'/>
  <import-decl name='-Exception' id='-Exception' export='no' module='Exception'/>
  <class name='TimeStamp'>
    <type-decl name='TimeStamp' id='TimeStamp' export='yes'>
      <oberon-doc>
        <summary>The TimeStamp is a compressed date/time format with the advantage over the Unix time stamp of being able to represent any date/time in the <oberon-type href='SysClock#DateTime'>SysClock.DateTime</oberon-type> type.</summary>
        <p pad-after='yes' no-indent='yes'>The TimeStamp is a compressed date/time format with the advantage over the Unix time stamp of being able to represent any date/time in the <oberon-type href='SysClock#DateTime'>SysClock.DateTime</oberon-type> type.  <emph>Note</emph>: <oberon-type href='#TimeStamp'>TimeStamp</oberon-type> is in UTC or local time when time zones are not supported by the local operating system.</p>
      </oberon-doc>
      <type>
        <record>
          <field-decl name='days' id='TimeStamp.days' export='read-only'>
            <oberon-doc>
              <summary>Modified Julian days since <samp>17 Nov 1858</samp>.</summary>
              <p pad-after='yes' no-indent='yes'>Modified Julian days since <samp>17 Nov 1858</samp>.  This quantity can be negative to represent dates occuring before day zero.</p>
            </oberon-doc>
            <type>
              <type-name module='#predef' name='LONGINT'/>
            </type>
          </field-decl>
          <field-decl name='msecs' id='TimeStamp.msecs' export='read-only'>
            <oberon-doc>
              <summary>Milliseconds since <samp>00:00</samp>.</summary>
              <p pad-after='yes' no-indent='yes'>Milliseconds since <samp>00:00</samp>.</p>
            </oberon-doc>
            <type>
              <type-name module='#predef' name='LONGINT'/>
            </type>
          </field-decl>
        </record>
      </type>
    </type-decl>
    <procedure name='InitTimeStamp' id='InitTimeStamp' export='yes'>
      <oberon-doc>
        <summary>Initialize the TimeStamp <oberon-param href='#InitTimeStamp.t'>t</oberon-param> with <oberon-param href='#InitTimeStamp.days'>days</oberon-param> days and <oberon-param href='#InitTimeStamp.msecs'>msecs</oberon-param> mS.</summary>
        <p pad-after='yes' no-indent='yes'>Initialize the TimeStamp <oberon-param href='#InitTimeStamp.t'>t</oberon-param> with <oberon-param href='#InitTimeStamp.days'>days</oberon-param> days and <oberon-param href='#InitTimeStamp.msecs'>msecs</oberon-param> mS.</p>
        <pre-cond pad-after='yes'>
          <p pad-after='no' no-indent='yes'>msecs&gt;=0</p>
        </pre-cond>
      </oberon-doc>
      <formal-parameters>
        <parameter-decl name='t' id='InitTimeStamp.t' export='no' variable-parameter='yes'>
          <type>
            <type-name name='TimeStamp' href='#TimeStamp'/>
          </type>
        </parameter-decl>
        <parameter-decl name='days' id='InitTimeStamp.days' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='LONGINT'/>
          </type>
        </parameter-decl>
        <parameter-decl name='msecs' id='InitTimeStamp.msecs' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='LONGINT'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='Add' id='TimeStamp.Add' export='yes'>
      <oberon-doc>
        <summary>Adds the interval <oberon-param href='#TimeStamp.Add.b'>b</oberon-param> to the time stamp <oberon-param href='#TimeStamp.Add.a'>a</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Adds the interval <oberon-param href='#TimeStamp.Add.b'>b</oberon-param> to the time stamp <oberon-param href='#TimeStamp.Add.a'>a</oberon-param>.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='a' id='TimeStamp.Add.a' export='no' variable-parameter='yes'>
          <type>
            <type-name name='TimeStamp' href='#TimeStamp'/>
          </type>
        </receiver-decl>
        <parameter-decl name='b' id='TimeStamp.Add.b' export='no' variable-parameter='no'>
          <type>
            <type-name name='Interval' href='#Interval'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='Sub' id='TimeStamp.Sub' export='yes'>
      <oberon-doc>
        <summary>Subtracts the interval <oberon-param href='#TimeStamp.Sub.b'>b</oberon-param> from the time stamp <oberon-param href='#TimeStamp.Sub.a'>a</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Subtracts the interval <oberon-param href='#TimeStamp.Sub.b'>b</oberon-param> from the time stamp <oberon-param href='#TimeStamp.Sub.a'>a</oberon-param>.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='a' id='TimeStamp.Sub.a' export='no' variable-parameter='yes'>
          <type>
            <type-name name='TimeStamp' href='#TimeStamp'/>
          </type>
        </receiver-decl>
        <parameter-decl name='b' id='TimeStamp.Sub.b' export='no' variable-parameter='no'>
          <type>
            <type-name name='Interval' href='#Interval'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='Delta' id='TimeStamp.Delta' export='yes'>
      <oberon-doc>
        <post-cond pad-after='yes'>
          <p pad-after='no' no-indent='yes'>c = a - b</p>
        </post-cond>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='a' id='TimeStamp.Delta.a' export='no' variable-parameter='yes'>
          <type>
            <type-name name='TimeStamp' href='#TimeStamp'/>
          </type>
        </receiver-decl>
        <parameter-decl name='b' id='TimeStamp.Delta.b' export='no' variable-parameter='no'>
          <type>
            <type-name name='TimeStamp' href='#TimeStamp'/>
          </type>
        </parameter-decl>
        <parameter-decl name='c' id='TimeStamp.Delta.c' export='no' variable-parameter='yes'>
          <type>
            <type-name name='Interval' href='#Interval'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='Cmp' id='TimeStamp.Cmp' export='yes'>
      <oberon-doc>
        <summary>Compares <oberon-param href='#TimeStamp.Cmp.a'>a</oberon-param> to <oberon-param href='#TimeStamp.Cmp.b'>b</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Compares <oberon-param href='#TimeStamp.Cmp.a'>a</oberon-param> to <oberon-param href='#TimeStamp.Cmp.b'>b</oberon-param>.  Result:</p>
        <table pad-after='yes'>
          <table-row pad-after='yes'>
            <table-first-column pad-after='no'><code>-1</code></table-first-column>
            <item pad-after='no'>
              <p pad-after='no' no-indent='yes'>a&lt;b</p>
            </item>
          </table-row>
          <table-row pad-after='yes'>
            <table-first-column pad-after='no'><code>0</code></table-first-column>
            <item pad-after='no'>
              <p pad-after='no' no-indent='yes'>a=b</p>
            </item>
          </table-row>
          <table-row pad-after='no'>
            <table-first-column pad-after='no'><code>1</code></table-first-column>
            <item pad-after='no'>
              <p pad-after='no' no-indent='yes'>a&gt;b</p>
            </item>
          </table-row>
        </table>
        <p pad-after='yes' no-indent='no'>This means the comparison can be directly extrapolated to a comparison between the two numbers, for example,</p>
        <example pad-after='yes'>Cmp(a,b)&lt;0  then a&lt;b
Cmp(a,b)=0  then a=b
Cmp(a,b)&gt;0  then a&gt;b
Cmp(a,b)&gt;=0 then a&gt;=b
</example>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='a' id='TimeStamp.Cmp.a' export='no' variable-parameter='yes'>
          <type>
            <type-name name='TimeStamp' href='#TimeStamp'/>
          </type>
        </receiver-decl>
        <parameter-decl name='b' id='TimeStamp.Cmp.b' export='no' variable-parameter='no'>
          <type>
            <type-name name='TimeStamp' href='#TimeStamp'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name module='#predef' name='SHORTINT'/>
        </result-type>
      </formal-parameters>
    </procedure>
  </class>
  <class name='Interval'>
    <type-decl name='Interval' id='Interval' export='yes'>
      <oberon-doc>
        <summary>The Interval is a delta time measure which can be used to increment a <oberon-type href='#TimeStamp'>TimeStamp</oberon-type> or find the time difference between two <oberon-type href='#TimeStamp'>TimeStamp</oberon-type>s.</summary>
        <p pad-after='yes' no-indent='yes'>The Interval is a delta time measure which can be used to increment a <oberon-type href='#TimeStamp'>TimeStamp</oberon-type> or find the time difference between two <oberon-type href='#TimeStamp'>TimeStamp</oberon-type>s.  The maximum number of milliseconds in an interval will be the value <oberon-const href='#msecPerDay'>msecPerDay</oberon-const>.</p>
      </oberon-doc>
      <type>
        <record>
          <field-decl name='dayInt' id='Interval.dayInt' export='read-only'>
            <oberon-doc>
              <summary>Number of days in this interval.</summary>
              <p pad-after='yes' no-indent='yes'>Number of days in this interval.</p>
            </oberon-doc>
            <type>
              <type-name module='#predef' name='LONGINT'/>
            </type>
          </field-decl>
          <field-decl name='msecInt' id='Interval.msecInt' export='read-only'>
            <oberon-doc>
              <summary>The number of milliseconds in this interval.</summary>
              <p pad-after='yes' no-indent='yes'>The number of milliseconds in this interval.  This number is from [0, <oberon-const href='#msecPerDay'>msecPerDay</oberon-const>[.</p>
            </oberon-doc>
            <type>
              <type-name module='#predef' name='LONGINT'/>
            </type>
          </field-decl>
        </record>
      </type>
    </type-decl>
    <procedure name='InitInterval' id='InitInterval' export='yes'>
      <oberon-doc>
        <summary>Initialize the Interval <oberon-param href='#InitInterval.int'>int</oberon-param> with <oberon-param href='#InitInterval.days'>days</oberon-param> days and <oberon-param href='#InitInterval.msecs'>msecs</oberon-param> mS.</summary>
        <p pad-after='yes' no-indent='yes'>Initialize the Interval <oberon-param href='#InitInterval.int'>int</oberon-param> with <oberon-param href='#InitInterval.days'>days</oberon-param> days and <oberon-param href='#InitInterval.msecs'>msecs</oberon-param> mS.</p>
        <pre-cond pad-after='yes'>
          <p pad-after='no' no-indent='yes'>msecs&gt;=0</p>
        </pre-cond>
      </oberon-doc>
      <formal-parameters>
        <parameter-decl name='int' id='InitInterval.int' export='no' variable-parameter='yes'>
          <type>
            <type-name name='Interval' href='#Interval'/>
          </type>
        </parameter-decl>
        <parameter-decl name='days' id='InitInterval.days' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='LONGINT'/>
          </type>
        </parameter-decl>
        <parameter-decl name='msecs' id='InitInterval.msecs' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='LONGINT'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='Add' id='Interval.Add' export='yes'>
      <oberon-doc>
        <post-cond pad-after='yes'>
          <p pad-after='no' no-indent='yes'>a = a + b</p>
        </post-cond>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='a' id='Interval.Add.a' export='no' variable-parameter='yes'>
          <type>
            <type-name name='Interval' href='#Interval'/>
          </type>
        </receiver-decl>
        <parameter-decl name='b' id='Interval.Add.b' export='no' variable-parameter='no'>
          <type>
            <type-name name='Interval' href='#Interval'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='Sub' id='Interval.Sub' export='yes'>
      <oberon-doc>
        <post-cond pad-after='yes'>
          <p pad-after='no' no-indent='yes'>a = a - b</p>
        </post-cond>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='a' id='Interval.Sub.a' export='no' variable-parameter='yes'>
          <type>
            <type-name name='Interval' href='#Interval'/>
          </type>
        </receiver-decl>
        <parameter-decl name='b' id='Interval.Sub.b' export='no' variable-parameter='no'>
          <type>
            <type-name name='Interval' href='#Interval'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='Cmp' id='Interval.Cmp' export='yes'>
      <oberon-doc>
        <summary>Compares <oberon-param href='#Interval.Cmp.a'>a</oberon-param> to <oberon-param href='#Interval.Cmp.b'>b</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Compares <oberon-param href='#Interval.Cmp.a'>a</oberon-param> to <oberon-param href='#Interval.Cmp.b'>b</oberon-param>.  Result:</p>
        <table pad-after='yes'>
          <table-row pad-after='yes'>
            <table-first-column pad-after='no'><code>-1</code></table-first-column>
            <item pad-after='no'>
              <p pad-after='no' no-indent='yes'>a&lt;b</p>
            </item>
          </table-row>
          <table-row pad-after='yes'>
            <table-first-column pad-after='no'><code>0</code></table-first-column>
            <item pad-after='no'>
              <p pad-after='no' no-indent='yes'>a=b</p>
            </item>
          </table-row>
          <table-row pad-after='no'>
            <table-first-column pad-after='no'><code>1</code></table-first-column>
            <item pad-after='no'>
              <p pad-after='no' no-indent='yes'>a&gt;b</p>
            </item>
          </table-row>
        </table>
        <p pad-after='yes' no-indent='no'>This means the comparison can be directly extrapolated to a comparison between the two numbers, for example,</p>
        <example pad-after='yes'>Cmp(a,b)&lt;0  then a&lt;b
Cmp(a,b)=0  then a=b
Cmp(a,b)&gt;0  then a&gt;b
Cmp(a,b)&gt;=0 then a&gt;=b
</example>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='a' id='Interval.Cmp.a' export='no' variable-parameter='yes'>
          <type>
            <type-name name='Interval' href='#Interval'/>
          </type>
        </receiver-decl>
        <parameter-decl name='b' id='Interval.Cmp.b' export='no' variable-parameter='no'>
          <type>
            <type-name name='Interval' href='#Interval'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name module='#predef' name='SHORTINT'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='Scale' id='Interval.Scale' export='yes'>
      <oberon-doc>
        <pre-cond pad-after='yes'>
          <p pad-after='no' no-indent='yes'>b&gt;=0;</p>
        </pre-cond>
        <post-cond pad-after='yes'>
          <p pad-after='no' no-indent='yes'>a := a*b</p>
        </post-cond>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='a' id='Interval.Scale.a' export='no' variable-parameter='yes'>
          <type>
            <type-name name='Interval' href='#Interval'/>
          </type>
        </receiver-decl>
        <parameter-decl name='b' id='Interval.Scale.b' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='LONGREAL'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='Fraction' id='Interval.Fraction' export='yes'>
      <oberon-doc>
        <pre-cond pad-after='yes'>
          <p pad-after='no' no-indent='yes'>b&lt;&gt;0</p>
        </pre-cond>
        <post-cond pad-after='yes'>
          <p pad-after='no' no-indent='yes'>RETURN a/b</p>
        </post-cond>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='a' id='Interval.Fraction.a' export='no' variable-parameter='yes'>
          <type>
            <type-name name='Interval' href='#Interval'/>
          </type>
        </receiver-decl>
        <parameter-decl name='b' id='Interval.Fraction.b' export='no' variable-parameter='no'>
          <type>
            <type-name name='Interval' href='#Interval'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name module='#predef' name='LONGREAL'/>
        </result-type>
      </formal-parameters>
    </procedure>
  </class>
  <module-ref name='SysClock'>
    <ref-target type='html' relative-uri='SysClock.html'/>
  </module-ref>
</interface-description>
