<?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='IntConv' id=''>
  <import-decl name='Conv' id='Conv' export='no' module='ConvTypes'/>
  <type-decl name='ConvResults' id='ConvResults' export='yes'>
    <oberon-doc>
      <summary>One of <oberon-const href='#strAllRight'>strAllRight</oberon-const>, <oberon-const href='#strOutOfRange'>strOutOfRange</oberon-const>, <oberon-const href='#strWrongFormat'>strWrongFormat</oberon-const>, or <oberon-const href='#strEmpty'>strEmpty</oberon-const>.</summary>
      <p pad-after='yes' no-indent='yes'>One of <oberon-const href='#strAllRight'>strAllRight</oberon-const>, <oberon-const href='#strOutOfRange'>strOutOfRange</oberon-const>, <oberon-const href='#strWrongFormat'>strWrongFormat</oberon-const>, or <oberon-const href='#strEmpty'>strEmpty</oberon-const>.</p>
    </oberon-doc>
    <type>
      <type-name module='Conv' name='ConvResults' href='ConvTypes#ConvResults'/>
    </type>
  </type-decl>
  <const-decl name='strAllRight' id='strAllRight' export='yes' value='unknown'>
    <oberon-doc>
      <summary>The string format is correct for the corresponding conversion.</summary>
      <p pad-after='yes' no-indent='yes'>The string format is correct for the corresponding conversion.</p>
    </oberon-doc>
  </const-decl>
  <const-decl name='strOutOfRange' id='strOutOfRange' export='yes' value='unknown'>
    <oberon-doc>
      <summary>The string is well-formed but the value cannot be represented.</summary>
      <p pad-after='yes' no-indent='yes'>The string is well-formed but the value cannot be represented.</p>
    </oberon-doc>
  </const-decl>
  <const-decl name='strWrongFormat' id='strWrongFormat' export='yes' value='unknown'>
    <oberon-doc>
      <summary>The string is in the wrong format for the conversion.</summary>
      <p pad-after='yes' no-indent='yes'>The string is in the wrong format for the conversion.</p>
    </oberon-doc>
  </const-decl>
  <const-decl name='strEmpty' id='strEmpty' export='yes' value='unknown'>
    <oberon-doc>
      <summary>The given string is empty.</summary>
      <p pad-after='yes' no-indent='yes'>The given string is empty.</p>
    </oberon-doc>
  </const-decl>
  <procedure name='ScanInt' id='ScanInt' export='yes'>
    <oberon-doc>
      <summary>Represents the start state of a finite state scanner for signed whole numbers<em-dash/>assigns class of <oberon-param href='#ScanInt.inputCh'>inputCh</oberon-param> to <oberon-param href='#ScanInt.chClass'>chClass</oberon-param> and a procedure representing the next state to <oberon-param href='#ScanInt.nextState'>nextState</oberon-param>.</summary>
      <p pad-after='yes' no-indent='yes'>Represents the start state of a finite state scanner for signed whole numbers<em-dash/>assigns class of <oberon-param href='#ScanInt.inputCh'>inputCh</oberon-param> to <oberon-param href='#ScanInt.chClass'>chClass</oberon-param> and a procedure representing the next state to <oberon-param href='#ScanInt.nextState'>nextState</oberon-param>.</p>
      <p pad-after='yes' no-indent='no'>The call of <samp>ScanInt(inputCh,chClass,nextState)</samp> shall assign values to <oberon-param href='#ScanInt.chClass'>chClass</oberon-param> and <oberon-param href='#ScanInt.nextState'>nextState</oberon-param> depending upon the value of <oberon-param href='#ScanInt.inputCh'>inputCh</oberon-param> as shown in the following table.</p>
      <example pad-after='yes'>Procedure       inputCh         chClass         nextState (a procedure
                                                with behaviour of)
<em-dash/>
<em-dash/><em-dash/>       <em-dash/><em-dash/><em-dash/>       <em-dash/><em-dash/>--        <em-dash/><em-dash/><em-dash/>ScanInt         space           padding         ScanInt
                sign            valid           SState
                decimal digit   valid           WState
                other           invalid         ScanInt
SState          decimal digit   valid           WState
                other           invalid         SState
WState          decimal digit   valid           WState
                other           terminator      --
</example>
      <p pad-after='yes' no-indent='no'>NOTE 1 -- The procedure <oberon-proc href='#ScanInt'>ScanInt</oberon-proc> corresponds to the start state of a finite state machine to scan for a character sequence that forms a signed whole number.  It may be used to control the actions of a finite state interpreter.  As long as the value of <oberon-param href='#ScanInt.chClass'>chClass</oberon-param> is other than <oberon-const href='ConvTypes#terminator'>Conv.terminator</oberon-const> or <oberon-const href='ConvTypes#invalid'>Conv.invalid</oberon-const>, the interpreter should call the procedure whose value is assigned to <oberon-param href='#ScanInt.nextState'>nextState</oberon-param> by the previous call, supplying the next character from the sequence to be scanned.  It may be appropriate for the interpreter to ignore characters classified as <oberon-const href='ConvTypes#invalid'>Conv.invalid</oberon-const>, and proceed with the scan.  This would be the case, for example, with interactive input, if only valid characters are being echoed in order to give interactive users an immediate indication of badly-formed data.  If the character sequence end before one is classified as a terminator, the string-terminator character should be supplied as input to the finite state scanner.  If the preceeding character sequence formed a complete number, the string-terminator will be classified as <oberon-const href='ConvTypes#terminator'>Conv.terminator</oberon-const>, otherwise it will be classified as <oberon-const href='ConvTypes#invalid'>Conv.invalid</oberon-const>.</p>
    </oberon-doc>
    <formal-parameters>
      <parameter-decl name='inputCh' id='ScanInt.inputCh' export='no' variable-parameter='no'>
        <type>
          <type-name module='#predef' name='CHAR'/>
        </type>
      </parameter-decl>
      <parameter-decl name='chClass' id='ScanInt.chClass' export='no' variable-parameter='yes'>
        <type>
          <type-name module='Conv' name='ScanClass' href='ConvTypes#ScanClass'/>
        </type>
      </parameter-decl>
      <parameter-decl name='nextState' id='ScanInt.nextState' export='no' variable-parameter='yes'>
        <type>
          <type-name module='Conv' name='ScanState' href='ConvTypes#ScanState'/>
        </type>
      </parameter-decl>
    </formal-parameters>
  </procedure>
  <procedure name='FormatInt' id='FormatInt' export='yes'>
    <oberon-doc>
      <summary>Returns the format of the string value for conversion to LONGINT.</summary>
      <p pad-after='yes' no-indent='yes'>Returns the format of the string value for conversion to LONGINT.</p>
    </oberon-doc>
    <formal-parameters>
      <parameter-decl name='str' id='FormatInt.str' export='no' variable-parameter='no'>
        <type>
          <array>
            <element-type>
              <type-name module='#predef' name='CHAR'/>
            </element-type>
          </array>
        </type>
      </parameter-decl>
      <result-type>
        <type-name module='#predef' name='ConvResults'/>
      </result-type>
    </formal-parameters>
  </procedure>
  <procedure name='ValueInt' id='ValueInt' export='yes'>
    <oberon-doc>
      <summary>Returns the value corresponding to the signed whole number string value <oberon-param href='#ValueInt.str'>str</oberon-param> if <oberon-param href='#ValueInt.str'>str</oberon-param> is well-formed.</summary>
      <p pad-after='yes' no-indent='yes'>Returns the value corresponding to the signed whole number string value <oberon-param href='#ValueInt.str'>str</oberon-param> if <oberon-param href='#ValueInt.str'>str</oberon-param> is well-formed.  Otherwise, result is undefined.</p>
    </oberon-doc>
    <formal-parameters>
      <parameter-decl name='str' id='ValueInt.str' export='no' variable-parameter='no'>
        <type>
          <array>
            <element-type>
              <type-name module='#predef' name='CHAR'/>
            </element-type>
          </array>
        </type>
      </parameter-decl>
      <result-type>
        <type-name module='#predef' name='LONGINT'/>
      </result-type>
    </formal-parameters>
  </procedure>
  <procedure name='LengthInt' id='LengthInt' export='yes'>
    <oberon-doc>
      <summary>Returns the number of characters in the string representation of <oberon-param href='#LengthInt.int'>int</oberon-param>.</summary>
      <p pad-after='yes' no-indent='yes'>Returns the number of characters in the string representation of <oberon-param href='#LengthInt.int'>int</oberon-param>.  This value corresponds to the capacity of an array <samp>str</samp> which is of the minimum capacity needed to avoid truncation of the result in the call <samp>IntStr.IntToStr(int,str)</samp>.</p>
    </oberon-doc>
    <formal-parameters>
      <parameter-decl name='int' id='LengthInt.int' export='no' variable-parameter='no'>
        <type>
          <type-name module='#predef' name='LONGINT'/>
        </type>
      </parameter-decl>
      <result-type>
        <type-name module='#predef' name='INTEGER'/>
      </result-type>
    </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'/>
  <module-ref name='ConvTypes'>
    <ref-target type='html' relative-uri='ConvTypes.html'/>
  </module-ref>
</interface-description>
