<?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='XML:UnicodeBuffer' id=''>
  <import-decl name='Msg' id='Msg' export='no' module='Msg'/>
  <import-decl name='IO' id='IO' export='no' module='IO'/>
  <import-decl name='InputBuffer' id='InputBuffer' export='no' module='XML:InputBuffer'/>
  <import-decl name='Codec' id='Codec' export='no' module='XML:UnicodeCodec'/>
  <type-decl name='Char' id='Char' export='yes'>
    <oberon-doc>
      <summary>Character type used to represent the Unicode input data.</summary>
      <p pad-after='yes' no-indent='yes'>Character type used to represent the Unicode input data.</p>
    </oberon-doc>
    <type>
      <type-name module='#predef' name='LONGCHAR'/>
    </type>
  </type-decl>
  <type-decl name='CharArray' id='CharArray' export='yes'>
    <oberon-doc>
      <summary>Character array of arbitrary length.</summary>
      <p pad-after='yes' no-indent='yes'>Character array of arbitrary length.  This type is used for the character data of the input buffer.</p>
    </oberon-doc>
    <type>
      <pointer>
        <pointer-base>
          <array>
            <element-type>
              <type-name module='#predef' name='Char'/>
            </element-type>
          </array>
        </pointer-base>
      </pointer>
    </type>
  </type-decl>
  <type-decl name='CharPos' id='CharPos' export='yes'>
    <oberon-doc>
      <summary>Character position for a channel.</summary>
      <p pad-after='yes' no-indent='yes'>Character position for a channel.  The very first byte that would be read from the channel has position 0.</p>
    </oberon-doc>
    <type>
      <type-name module='#predef' name='LONGINT'/>
    </type>
  </type-decl>
  <const-decl name='markerEOB' id='markerEOB' export='yes' value='unknown'>
    <oberon-doc>
      <summary>This is the character value that is used to mark the end of the Unicode buffer.</summary>
      <p pad-after='yes' no-indent='yes'>This is the character value that is used to mark the end of the Unicode buffer.  It is the first non-input character after the last valid document character in the buffer.  Because this character code is never produced by the Unicode decoders, testing against this character code gives a definitive answer.  Calling <oberon-proc href='#InputDesc.NextBlock'>Input.NextBlock</oberon-proc> will replace the character with a valid character from the input document, or with <oberon-const href='#markerEOD'>markerEOD</oberon-const>.</p>
    </oberon-doc>
  </const-decl>
  <const-decl name='markerEOD' id='markerEOD' export='yes' value='unknown'>
    <oberon-doc>
      <summary>This character value marks the end of the document.</summary>
      <p pad-after='yes' no-indent='yes'>This character value marks the end of the document.  It is the first non-input character after the last valid document character in the buffer.  This character is never emitted by the Unicode decoders, and it is never replaced with another value.</p>
    </oberon-doc>
  </const-decl>
  <const-decl name='markerError' id='markerError' export='yes' value='unknown'>
    <oberon-doc>
      <summary>This character is inserted into the processor output for characters that are not valid in XML.</summary>
      <p pad-after='yes' no-indent='yes'>This character is inserted into the processor output for characters that are not valid in XML.</p>
    </oberon-doc>
  </const-decl>
  <const-decl name='sizeOfInputBuffer' id='sizeOfInputBuffer' export='yes' value='unknown'/>
  <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='Input'>
    <type-decl name='Input' id='Input' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='InputDesc' href='#InputDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='InputDesc' id='InputDesc' export='no'>
      <type>
        <record>
          <field-decl name='codecFactory' id='InputDesc.codecFactory' export='read-only'>
            <type>
              <type-name module='Codec' name='Factory' href='XML:UnicodeCodec#Factory'/>
            </type>
          </field-decl>
          <field-decl name='codec' id='InputDesc.codec' export='read-only'>
            <type>
              <type-name module='Codec' name='Codec' href='XML:UnicodeCodec#Codec'/>
            </type>
          </field-decl>
          <field-decl name='autoDetectedCodec' id='InputDesc.autoDetectedCodec' export='read-only'>
            <type>
              <type-name module='#predef' name='BOOLEAN'/>
            </type>
          </field-decl>
          <field-decl name='chars' id='InputDesc.chars' export='read-only'>
            <oberon-doc>
              <summary>Character data from input channel.</summary>
              <p pad-after='yes' no-indent='yes'>Character data from input channel.</p>
            </oberon-doc>
            <type>
              <type-name name='CharArray' href='#CharArray'/>
            </type>
          </field-decl>
          <field-decl name='offsetFromPos0' id='InputDesc.offsetFromPos0' export='read-only'>
            <oberon-doc>
              <summary>Offset of <samp>chars[0]</samp> from the beginning of the input text.</summary>
              <p pad-after='yes' no-indent='yes'>Offset of <samp>chars[0]</samp> from the beginning of the input text.</p>
            </oberon-doc>
            <type>
              <type-name module='#predef' name='CharPos'/>
            </type>
          </field-decl>
          <field-decl name='endOfBuffer' id='InputDesc.endOfBuffer' export='read-only'>
            <oberon-doc>
              <summary>Number of valid characters in <oberon-field href='#InputDesc.chars'>chars</oberon-field>.</summary>
              <p pad-after='yes' no-indent='yes'>Number of valid characters in <oberon-field href='#InputDesc.chars'>chars</oberon-field>.  All index values in the range [0..<oberon-field href='#InputDesc.endOfBuffer'>endOfBuffer</oberon-field>-1] hold valid characters.  The value of <samp>chars[endOfBuffer]</samp> is <oberon-const href='#markerEOB'>markerEOB</oberon-const>.</p>
            </oberon-doc>
            <type>
              <type-name module='#predef' name='CharPos'/>
            </type>
          </field-decl>
          <field-decl name='discardable' id='InputDesc.discardable' export='yes'>
            <oberon-doc>
              <summary>The client can define here how many bytes that have been read into the buffer will not be inspected again later, and can therefore be discarded by <oberon-proc href='#InputDesc.NextBlock'>Input.NextBlock</oberon-proc>.</summary>
              <p pad-after='yes' no-indent='yes'>The client can define here how many bytes that have been read into the buffer will not be inspected again later, and can therefore be discarded by <oberon-proc href='#InputDesc.NextBlock'>Input.NextBlock</oberon-proc>.  Possible values for this field are [0..<oberon-field href='#InputDesc.endOfBuffer'>endOfBuffer</oberon-field>].</p>
            </oberon-doc>
            <type>
              <type-name module='#predef' name='CharPos'/>
            </type>
          </field-decl>
          <field-decl name='errList' id='InputDesc.errList' export='read-only'>
            <oberon-doc>
              <summary>Error messages are appended to this list.</summary>
              <p pad-after='yes' no-indent='yes'>Error messages are appended to this list.</p>
            </oberon-doc>
            <type>
              <type-name module='Msg' name='MsgList' href='Msg#MsgList'/>
            </type>
          </field-decl>
        </record>
      </type>
    </type-decl>
    <procedure name='NextBlock' id='InputDesc.NextBlock' export='yes'>
      <oberon-doc>
        <summary>Tries to read additional data from <oberon-param href='#InputDesc.NextBlock.in'>in</oberon-param>'s channel.</summary>
        <p pad-after='yes' no-indent='yes'>Tries to read additional data from <oberon-param href='#InputDesc.NextBlock.in'>in</oberon-param>'s channel.  If at least one character could be read, result is <code>TRUE</code>.  <code>FALSE</code> means that not a single character was added to the buffer, either because the end of the file was reached, or because of a read error.  In the latter case, an message is added to <oberon-param href='#InputDesc.NextBlock.in'>in</oberon-param>'s error list.</p>
        <p pad-after='yes' no-indent='no'>A call to this buffer may change the fields <oberon-field href='#InputDesc.chars'>Input.chars</oberon-field>, <oberon-field href='#InputDesc.offsetFromPos0'>Input.offsetFromPos0</oberon-field>, and <oberon-field href='#InputDesc.endOfBuffer'>Input.endOfBuffer</oberon-field>.  If part of the buffer is discarded, <oberon-field href='#InputDesc.discardable'>Input.discardable</oberon-field> is set to zero.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='in' id='InputDesc.NextBlock.in' export='no' variable-parameter='no'>
          <type>
            <type-name name='Input' href='#Input'/>
          </type>
        </receiver-decl>
        <result-type>
          <type-name module='#predef' name='BOOLEAN'/>
        </result-type>
        <exceptions>
          <type-name module='IO' name='Error' href='IO#Error'/>
        </exceptions>
      </formal-parameters>
    </procedure>
    <procedure name='Close' id='InputDesc.Close' export='yes'>
      <oberon-doc>
        <summary>Closes the channel associated with buffer <oberon-param href='#InputDesc.Close.in'>in</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Closes the channel associated with buffer <oberon-param href='#InputDesc.Close.in'>in</oberon-param>.  Afterwards, no further operations are permitted on <oberon-param href='#InputDesc.Close.in'>in</oberon-param>, except for reading the field <oberon-field href='#InputDesc.errList'>Input.errList</oberon-field>.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='in' id='InputDesc.Close.in' export='no' variable-parameter='no'>
          <type>
            <type-name name='Input' href='#Input'/>
          </type>
        </receiver-decl>
        <exceptions>
          <type-name module='IO' name='Error' href='IO#Error'/>
        </exceptions>
      </formal-parameters>
    </procedure>
    <procedure name='SetCodec' id='InputDesc.SetCodec' export='yes'>
      <formal-parameters>
        <receiver-decl name='in' id='InputDesc.SetCodec.in' export='no' variable-parameter='no'>
          <type>
            <type-name name='Input' href='#Input'/>
          </type>
        </receiver-decl>
        <parameter-decl name='cf' id='InputDesc.SetCodec.cf' export='no' variable-parameter='no'>
          <type>
            <type-name module='Codec' name='Factory' href='XML:UnicodeCodec#Factory'/>
          </type>
        </parameter-decl>
        <parameter-decl name='autoDetect' id='InputDesc.SetCodec.autoDetect' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='BOOLEAN'/>
          </type>
        </parameter-decl>
        <exceptions>
          <type-name module='IO' name='Error' href='IO#Error'/>
        </exceptions>
      </formal-parameters>
    </procedure>
    <procedure name='InitInput' id='InitInput' export='yes'>
      <formal-parameters>
        <parameter-decl name='input' id='InitInput.input' export='no' variable-parameter='no'>
          <type>
            <type-name name='Input' href='#Input'/>
          </type>
        </parameter-decl>
        <parameter-decl name='new' id='InitInput.new' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='BOOLEAN'/>
          </type>
        </parameter-decl>
        <parameter-decl name='reader' id='InitInput.reader' export='no' variable-parameter='no'>
          <type>
            <type-name module='IO' name='ByteChannel' href='IO#ByteChannel'/>
          </type>
        </parameter-decl>
        <parameter-decl name='codecFactory' id='InitInput.codecFactory' export='no' variable-parameter='no'>
          <type>
            <type-name module='Codec' name='Factory' href='XML:UnicodeCodec#Factory'/>
          </type>
        </parameter-decl>
        <parameter-decl name='errList' id='InitInput.errList' export='no' variable-parameter='no'>
          <type>
            <type-name module='Msg' name='MsgList' href='Msg#MsgList'/>
          </type>
        </parameter-decl>
        <exceptions>
          <type-name module='IO' name='Error' href='IO#Error'/>
        </exceptions>
      </formal-parameters>
    </procedure>
    <procedure name='NewInput' id='NewInput' export='yes'>
      <oberon-doc>
        <summary>Create new input buffer for reader <oberon-param href='#NewInput.reader'>reader</oberon-param> and try to read the first block of data from it.</summary>
        <p pad-after='yes' no-indent='yes'>Create new input buffer for reader <oberon-param href='#NewInput.reader'>reader</oberon-param> and try to read the first block of data from it.  Returns an initialized input buffer with up to <oberon-const href='#sizeOfInputBuffer'>sizeOfInputBuffer</oberon-const> characters of input.</p>
      </oberon-doc>
      <formal-parameters>
        <parameter-decl name='reader' id='NewInput.reader' export='no' variable-parameter='no'>
          <type>
            <type-name module='IO' name='ByteChannel' href='IO#ByteChannel'/>
          </type>
        </parameter-decl>
        <parameter-decl name='codecFactory' id='NewInput.codecFactory' export='no' variable-parameter='no'>
          <type>
            <type-name module='Codec' name='Factory' href='XML:UnicodeCodec#Factory'/>
          </type>
        </parameter-decl>
        <parameter-decl name='errList' id='NewInput.errList' export='no' variable-parameter='no'>
          <type>
            <type-name module='Msg' name='MsgList' href='Msg#MsgList'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name name='Input' href='#Input'/>
        </result-type>
        <exceptions>
          <type-name module='IO' name='Error' href='IO#Error'/>
        </exceptions>
      </formal-parameters>
    </procedure>
  </class>
  <class name='Output'>
    <type-decl name='Output' id='Output' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='OutputDesc' href='#OutputDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='OutputDesc' id='OutputDesc' export='yes'>
      <type>
        <record>
          <field-decl name='codecFactory' id='OutputDesc.codecFactory' export='read-only'>
            <type>
              <type-name module='Codec' name='Factory' href='XML:UnicodeCodec#Factory'/>
            </type>
          </field-decl>
          <field-decl name='codec' id='OutputDesc.codec' export='read-only'>
            <oberon-doc>
              <summary>Any encoding errors are signalled by incrementing <oberon-field href='XML:UnicodeCodec#CodecDesc.invalidChars'>Codec.Codec.invalidChars</oberon-field>.</summary>
              <p pad-after='yes' no-indent='yes'>Any encoding errors are signalled by incrementing <oberon-field href='XML:UnicodeCodec#CodecDesc.invalidChars'>Codec.Codec.invalidChars</oberon-field>.</p>
            </oberon-doc>
            <type>
              <type-name module='Codec' name='Codec' href='XML:UnicodeCodec#Codec'/>
            </type>
          </field-decl>
          <field-decl name='writer' id='OutputDesc.writer' export='read-only'>
            <type>
              <type-name module='IO' name='ByteChannel' href='IO#ByteChannel'/>
            </type>
          </field-decl>
          <field-decl name='error' id='OutputDesc.error' export='read-only'>
            <type>
              <type-name module='IO' name='Error' href='IO#Error'/>
            </type>
          </field-decl>
        </record>
      </type>
    </type-decl>
    <procedure name='Write16I' id='OutputDesc.Write16I' export='yes'>
      <formal-parameters>
        <receiver-decl name='out' id='OutputDesc.Write16I.out' export='no' variable-parameter='no'>
          <type>
            <type-name name='Output' href='#Output'/>
          </type>
        </receiver-decl>
        <parameter-decl name='str' id='OutputDesc.Write16I.str' export='no' variable-parameter='no'>
          <type>
            <array>
              <element-type>
                <type-name module='#predef' name='Char'/>
              </element-type>
            </array>
          </type>
        </parameter-decl>
        <parameter-decl name='start' id='OutputDesc.Write16I.start' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='CharPos'/>
          </type>
        </parameter-decl>
        <parameter-decl name='end' id='OutputDesc.Write16I.end' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='CharPos'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='Write8I' id='OutputDesc.Write8I' export='yes'>
      <formal-parameters>
        <receiver-decl name='out' id='OutputDesc.Write8I.out' export='no' variable-parameter='no'>
          <type>
            <type-name name='Output' href='#Output'/>
          </type>
        </receiver-decl>
        <parameter-decl name='str' id='OutputDesc.Write8I.str' export='no' variable-parameter='no'>
          <type>
            <array>
              <element-type>
                <type-name module='#predef' name='CHAR'/>
              </element-type>
            </array>
          </type>
        </parameter-decl>
        <parameter-decl name='start' id='OutputDesc.Write8I.start' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='CharPos'/>
          </type>
        </parameter-decl>
        <parameter-decl name='end' id='OutputDesc.Write8I.end' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='CharPos'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='Write16' id='OutputDesc.Write16' export='yes'>
      <formal-parameters>
        <receiver-decl name='out' id='OutputDesc.Write16.out' export='no' variable-parameter='no'>
          <type>
            <type-name name='Output' href='#Output'/>
          </type>
        </receiver-decl>
        <parameter-decl name='str' id='OutputDesc.Write16.str' export='no' variable-parameter='no'>
          <type>
            <array>
              <element-type>
                <type-name module='#predef' name='Char'/>
              </element-type>
            </array>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='Write8' id='OutputDesc.Write8' export='yes'>
      <formal-parameters>
        <receiver-decl name='out' id='OutputDesc.Write8.out' export='no' variable-parameter='no'>
          <type>
            <type-name name='Output' href='#Output'/>
          </type>
        </receiver-decl>
        <parameter-decl name='str' id='OutputDesc.Write8.str' export='no' variable-parameter='no'>
          <type>
            <array>
              <element-type>
                <type-name module='#predef' name='CHAR'/>
              </element-type>
            </array>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='Flush' id='OutputDesc.Flush' export='yes'>
      <oberon-doc>
        <summary>Flushes the contents of the output buffer to the channel.</summary>
        <p pad-after='yes' no-indent='yes'>Flushes the contents of the output buffer to the channel.  Then, flush is called on the channel itself.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='out' id='OutputDesc.Flush.out' export='no' variable-parameter='no'>
          <type>
            <type-name name='Output' href='#Output'/>
          </type>
        </receiver-decl>
        <exceptions>
          <type-name module='IO' name='Error' href='IO#Error'/>
        </exceptions>
      </formal-parameters>
    </procedure>
    <procedure name='InitOutput' id='InitOutput' export='yes'>
      <formal-parameters>
        <parameter-decl name='out' id='InitOutput.out' export='no' variable-parameter='no'>
          <type>
            <type-name name='Output' href='#Output'/>
          </type>
        </parameter-decl>
        <parameter-decl name='new' id='InitOutput.new' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='BOOLEAN'/>
          </type>
        </parameter-decl>
        <parameter-decl name='writer' id='InitOutput.writer' export='no' variable-parameter='no'>
          <type>
            <type-name module='IO' name='ByteChannel' href='IO#ByteChannel'/>
          </type>
        </parameter-decl>
        <parameter-decl name='codecFactory' id='InitOutput.codecFactory' export='no' variable-parameter='no'>
          <type>
            <type-name module='Codec' name='Factory' href='XML:UnicodeCodec#Factory'/>
          </type>
        </parameter-decl>
        <parameter-decl name='createBOM' id='InitOutput.createBOM' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='BOOLEAN'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='NewOutput' id='NewOutput' export='yes'>
      <oberon-doc>
        <summary>Creates new output buffer for writer <oberon-param href='#NewOutput.writer'>writer</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Creates new output buffer for writer <oberon-param href='#NewOutput.writer'>writer</oberon-param>.</p>
      </oberon-doc>
      <formal-parameters>
        <parameter-decl name='writer' id='NewOutput.writer' export='no' variable-parameter='no'>
          <type>
            <type-name module='IO' name='ByteChannel' href='IO#ByteChannel'/>
          </type>
        </parameter-decl>
        <parameter-decl name='codecFactory' id='NewOutput.codecFactory' export='no' variable-parameter='no'>
          <type>
            <type-name module='Codec' name='Factory' href='XML:UnicodeCodec#Factory'/>
          </type>
        </parameter-decl>
        <parameter-decl name='createBOM' id='NewOutput.createBOM' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='BOOLEAN'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name name='Output' href='#Output'/>
        </result-type>
      </formal-parameters>
    </procedure>
  </class>
  <module-ref name='Msg'>
    <ref-target type='html' relative-uri='../Msg.html'/>
  </module-ref>
  <module-ref name='XML:UnicodeCodec'>
    <ref-target type='html' relative-uri='UnicodeCodec.html'/>
  </module-ref>
  <module-ref name='IO'>
    <ref-target type='html' relative-uri='../IO.html'/>
  </module-ref>
</interface-description>
