<?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='URI:Scheme:Hierarchical' id=''>
  <import-decl name='TextRider' id='TextRider' export='no' module='TextRider'/>
  <import-decl name='Object' id='Object' export='no' module='Object'/>
  <import-decl name='Exception' id='Exception' export='no' module='Exception'/>
  <import-decl name='StringBuffer' id='StringBuffer' export='no' module='ADT:StringBuffer'/>
  <import-decl name='URI' id='URI' export='no' module='URI'/>
  <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='Parameter'>
    <type-decl name='Parameter' id='Parameter' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='ParameterDesc' href='#ParameterDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='ParameterDesc' id='ParameterDesc' export='no'>
      <type>
        <record>
          <field-decl name='next' id='ParameterDesc.next' export='read-only'>
            <type>
              <type-name name='Parameter' href='#Parameter'/>
            </type>
          </field-decl>
          <field-decl name='string' id='ParameterDesc.string' export='read-only'>
            <oberon-doc>
              <summary>Parameter text.</summary>
              <p pad-after='yes' no-indent='yes'>Parameter text.  Any escaped characters have been replaced by their character value.</p>
            </oberon-doc>
            <type>
              <type-name name='STRING' href='#STRING'/>
            </type>
          </field-decl>
        </record>
      </type>
    </type-decl>
    <procedure name='InitParameter' id='InitParameter' export='yes'>
      <formal-parameters>
        <parameter-decl name='param' id='InitParameter.param' export='no' variable-parameter='no'>
          <type>
            <type-name name='Parameter' href='#Parameter'/>
          </type>
        </parameter-decl>
        <parameter-decl name='string' id='InitParameter.string' export='no' variable-parameter='no'>
          <type>
            <type-name name='STRING' href='#STRING'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='NewParameter' id='NewParameter' export='yes'>
      <formal-parameters>
        <parameter-decl name='string' id='NewParameter.string' export='no' variable-parameter='no'>
          <type>
            <type-name name='STRING' href='#STRING'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name name='Parameter' href='#Parameter'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='Copy' id='ParameterDesc.Copy' export='yes'>
      <formal-parameters>
        <receiver-decl name='param' id='ParameterDesc.Copy.param' export='no' variable-parameter='no'>
          <type>
            <type-name name='Parameter' href='#Parameter'/>
          </type>
        </receiver-decl>
        <parameter-decl name='dest' id='ParameterDesc.Copy.dest' export='no' variable-parameter='no'>
          <type>
            <type-name name='Parameter' href='#Parameter'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='Clone' id='ParameterDesc.Clone' export='yes'>
      <formal-parameters>
        <receiver-decl name='param' id='ParameterDesc.Clone.param' export='no' variable-parameter='no'>
          <type>
            <type-name name='Parameter' href='#Parameter'/>
          </type>
        </receiver-decl>
        <result-type>
          <type-name name='Parameter' href='#Parameter'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='WriteXML' id='ParameterDesc.WriteXML' export='yes'>
      <formal-parameters>
        <receiver-decl name='param' id='ParameterDesc.WriteXML.param' export='no' variable-parameter='no'>
          <type>
            <type-name name='Parameter' href='#Parameter'/>
          </type>
        </receiver-decl>
        <parameter-decl name='w' id='ParameterDesc.WriteXML.w' export='no' variable-parameter='no'>
          <type>
            <type-name module='TextRider' name='Writer' href='TextRider#Writer'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='Append' id='ParameterDesc.Append' export='yes'>
      <formal-parameters>
        <receiver-decl name='param' id='ParameterDesc.Append.param' export='no' variable-parameter='no'>
          <type>
            <type-name name='Parameter' href='#Parameter'/>
          </type>
        </receiver-decl>
        <parameter-decl name='sb' id='ParameterDesc.Append.sb' export='no' variable-parameter='no'>
          <type>
            <type-name module='StringBuffer' name='StringBuffer' href='ADT:StringBuffer#StringBuffer'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
  </class>
  <class name='Segment'>
    <type-decl name='Segment' id='Segment' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='SegmentDesc' href='#SegmentDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='SegmentDesc' id='SegmentDesc' export='no'>
      <type>
        <record>
          <field-decl name='next' id='SegmentDesc.next' export='read-only'>
            <type>
              <type-name name='Segment' href='#Segment'/>
            </type>
          </field-decl>
          <field-decl name='string' id='SegmentDesc.string' export='read-only'>
            <oberon-doc>
              <summary>Segment text.</summary>
              <p pad-after='yes' no-indent='yes'>Segment text.  Any escaped characters have been replaced by their character value.</p>
            </oberon-doc>
            <type>
              <type-name name='STRING' href='#STRING'/>
            </type>
          </field-decl>
          <field-decl name='paramList' id='SegmentDesc.paramList' export='read-only'>
            <oberon-doc>
              <summary>List of parameters for this segment.</summary>
              <p pad-after='yes' no-indent='yes'>List of parameters for this segment.</p>
            </oberon-doc>
            <type>
              <type-name name='Parameter' href='#Parameter'/>
            </type>
          </field-decl>
        </record>
      </type>
    </type-decl>
    <procedure name='InitSegment' id='InitSegment' export='yes'>
      <formal-parameters>
        <parameter-decl name='segm' id='InitSegment.segm' export='no' variable-parameter='no'>
          <type>
            <type-name name='Segment' href='#Segment'/>
          </type>
        </parameter-decl>
        <parameter-decl name='string' id='InitSegment.string' export='no' variable-parameter='no'>
          <type>
            <type-name name='STRING' href='#STRING'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='NewSegment' id='NewSegment' export='yes'>
      <formal-parameters>
        <parameter-decl name='string' id='NewSegment.string' export='no' variable-parameter='no'>
          <type>
            <type-name name='STRING' href='#STRING'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name name='Segment' href='#Segment'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='AppendParameter' id='SegmentDesc.AppendParameter' export='yes'>
      <formal-parameters>
        <receiver-decl name='segm' id='SegmentDesc.AppendParameter.segm' export='no' variable-parameter='no'>
          <type>
            <type-name name='Segment' href='#Segment'/>
          </type>
        </receiver-decl>
        <parameter-decl name='param' id='SegmentDesc.AppendParameter.param' export='no' variable-parameter='no'>
          <type>
            <type-name name='Parameter' href='#Parameter'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='Copy' id='SegmentDesc.Copy' export='yes'>
      <formal-parameters>
        <receiver-decl name='segm' id='SegmentDesc.Copy.segm' export='no' variable-parameter='no'>
          <type>
            <type-name name='Segment' href='#Segment'/>
          </type>
        </receiver-decl>
        <parameter-decl name='dest' id='SegmentDesc.Copy.dest' export='no' variable-parameter='no'>
          <type>
            <type-name name='Segment' href='#Segment'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='Clone' id='SegmentDesc.Clone' export='yes'>
      <formal-parameters>
        <receiver-decl name='segm' id='SegmentDesc.Clone.segm' export='no' variable-parameter='no'>
          <type>
            <type-name name='Segment' href='#Segment'/>
          </type>
        </receiver-decl>
        <result-type>
          <type-name name='Segment' href='#Segment'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='WriteXML' id='SegmentDesc.WriteXML' export='yes'>
      <formal-parameters>
        <receiver-decl name='segm' id='SegmentDesc.WriteXML.segm' export='no' variable-parameter='no'>
          <type>
            <type-name name='Segment' href='#Segment'/>
          </type>
        </receiver-decl>
        <parameter-decl name='w' id='SegmentDesc.WriteXML.w' export='no' variable-parameter='no'>
          <type>
            <type-name module='TextRider' name='Writer' href='TextRider#Writer'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='Append' id='SegmentDesc.Append' export='yes'>
      <formal-parameters>
        <receiver-decl name='segm' id='SegmentDesc.Append.segm' export='no' variable-parameter='no'>
          <type>
            <type-name name='Segment' href='#Segment'/>
          </type>
        </receiver-decl>
        <parameter-decl name='sb' id='SegmentDesc.Append.sb' export='no' variable-parameter='no'>
          <type>
            <type-name module='StringBuffer' name='StringBuffer' href='ADT:StringBuffer#StringBuffer'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
  </class>
  <class name='Generic'>
    <type-decl name='Generic' id='Generic' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='GenericDesc' href='#GenericDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='GenericDesc' id='GenericDesc' export='yes'>
      <oberon-doc>
        <summary>This class implements the generic hierarchical URI.</summary>
        <p pad-after='yes' no-indent='yes'>This class implements the generic hierarchical URI.</p>
      </oberon-doc>
      <type>
        <record>
          <field-decl name='pathList' id='GenericDesc.pathList' export='read-only'>
            <oberon-doc>
              <summary>List of path segments of an URI.</summary>
              <p pad-after='yes' no-indent='yes'>List of path segments of an URI.  A hierarchical URI may have an empty path.  In this case, this field is <code>NIL</code>.</p>
            </oberon-doc>
            <type>
              <type-name name='Segment' href='#Segment'/>
            </type>
          </field-decl>
          <field-decl name='absolutePath' id='GenericDesc.absolutePath' export='read-only'>
            <oberon-doc>
              <summary>If <code>TRUE</code>, then <oberon-field href='#GenericDesc.pathList'>pathList</oberon-field> is an absolute path beginning at the root of the authority's name space.</summary>
              <p pad-after='yes' no-indent='yes'>If <code>TRUE</code>, then <oberon-field href='#GenericDesc.pathList'>pathList</oberon-field> is an absolute path beginning at the root of the authority's name space.  Otherwise, the path is relative.</p>
            </oberon-doc>
            <type>
              <type-name module='#predef' name='BOOLEAN'/>
            </type>
          </field-decl>
        </record>
      </type>
    </type-decl>
    <procedure name='Init' id='Init' export='yes'>
      <oberon-doc>
        <summary>See <oberon-type href='#Generic'>Generic</oberon-type>.</summary>
        <p pad-after='yes' no-indent='yes'>See <oberon-type href='#Generic'>Generic</oberon-type>.</p>
      </oberon-doc>
      <formal-parameters>
        <parameter-decl name='uri' id='Init.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='Generic' href='#Generic'/>
          </type>
        </parameter-decl>
        <parameter-decl name='schemeId' id='Init.schemeId' export='no' variable-parameter='no'>
          <type>
            <type-name name='STRING' href='#STRING'/>
          </type>
        </parameter-decl>
        <parameter-decl name='authority' id='Init.authority' export='no' variable-parameter='no'>
          <type>
            <type-name module='URI' name='Authority' href='URI#Authority'/>
          </type>
        </parameter-decl>
        <parameter-decl name='query' id='Init.query' export='no' variable-parameter='no'>
          <type>
            <type-name module='URI' name='Query' href='URI#Query'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='New' id='New' export='yes'>
      <oberon-doc>
        <summary>See <oberon-type href='#Generic'>Generic</oberon-type>.</summary>
        <p pad-after='yes' no-indent='yes'>See <oberon-type href='#Generic'>Generic</oberon-type>.</p>
      </oberon-doc>
      <formal-parameters>
        <parameter-decl name='schemeId' id='New.schemeId' export='no' variable-parameter='no'>
          <type>
            <type-name name='STRING' href='#STRING'/>
          </type>
        </parameter-decl>
        <parameter-decl name='authority' id='New.authority' export='no' variable-parameter='no'>
          <type>
            <type-name module='URI' name='Authority' href='URI#Authority'/>
          </type>
        </parameter-decl>
        <parameter-decl name='query' id='New.query' export='no' variable-parameter='no'>
          <type>
            <type-name module='URI' name='Query' href='URI#Query'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name name='Generic' href='#Generic'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='AppendSegment' id='GenericDesc.AppendSegment' export='yes'>
      <oberon-doc>
        <summary>Adds the segment <oberon-param href='#GenericDesc.AppendSegment.segm'>segm</oberon-param> to the end of the list of path segments of <oberon-param href='#GenericDesc.AppendSegment.uri'>uri</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Adds the segment <oberon-param href='#GenericDesc.AppendSegment.segm'>segm</oberon-param> to the end of the list of path segments of <oberon-param href='#GenericDesc.AppendSegment.uri'>uri</oberon-param>.</p>
        <pre-cond pad-after='yes'>
          <p pad-after='no' no-indent='yes'><oberon-param href='#GenericDesc.AppendSegment.segm'>segm</oberon-param> has not been added to a URI previously.</p>
        </pre-cond>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='uri' id='GenericDesc.AppendSegment.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='Generic' href='#Generic'/>
          </type>
        </receiver-decl>
        <parameter-decl name='segm' id='GenericDesc.AppendSegment.segm' export='no' variable-parameter='no'>
          <type>
            <type-name name='Segment' href='#Segment'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='RemoveSegment' id='GenericDesc.RemoveSegment' export='yes'>
      <oberon-doc>
        <summary>Removes the segment <oberon-param href='#GenericDesc.RemoveSegment.segm'>segm</oberon-param> from the list of path segments of <oberon-param href='#GenericDesc.RemoveSegment.uri'>uri</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Removes the segment <oberon-param href='#GenericDesc.RemoveSegment.segm'>segm</oberon-param> from the list of path segments of <oberon-param href='#GenericDesc.RemoveSegment.uri'>uri</oberon-param>.</p>
        <pre-cond pad-after='yes'>
          <p pad-after='no' no-indent='yes'><oberon-param href='#GenericDesc.RemoveSegment.segm'>segm</oberon-param> is part of <oberon-param href='#GenericDesc.RemoveSegment.uri'>uri</oberon-param></p>
        </pre-cond>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='uri' id='GenericDesc.RemoveSegment.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='Generic' href='#Generic'/>
          </type>
        </receiver-decl>
        <parameter-decl name='segm' id='GenericDesc.RemoveSegment.segm' export='no' variable-parameter='no'>
          <type>
            <type-name name='Segment' href='#Segment'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='StripSegments' id='GenericDesc.StripSegments' export='yes'>
      <oberon-doc>
        <summary>Strips the last <oberon-param href='#GenericDesc.StripSegments.n'>n</oberon-param> segments from the hierarchical URI <oberon-param href='#GenericDesc.StripSegments.uri'>uri</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Strips the last <oberon-param href='#GenericDesc.StripSegments.n'>n</oberon-param> segments from the hierarchical URI <oberon-param href='#GenericDesc.StripSegments.uri'>uri</oberon-param>.</p>
        <pre-cond pad-after='yes'>
          <p pad-after='no' no-indent='yes'><oberon-param href='#GenericDesc.StripSegments.n'>n</oberon-param> &gt;= 0</p>
        </pre-cond>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='uri' id='GenericDesc.StripSegments.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='Generic' href='#Generic'/>
          </type>
        </receiver-decl>
        <parameter-decl name='n' id='GenericDesc.StripSegments.n' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='LONGINT'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='Clone' id='GenericDesc.Clone' export='yes'>
      <doc-inherited-from module='URI' name='Clone' class='URI' href='URI#URIDesc.Clone'/>
      <oberon-doc>
        <summary>Creates a deep copy of the URI referenced by <oberon-param href='#GenericDesc.Clone.uri'>uri</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Creates a deep copy of the URI referenced by <oberon-param href='#GenericDesc.Clone.uri'>uri</oberon-param>.  That is, it creates a new instance of <oberon-param href='#GenericDesc.Clone.uri'>uri</oberon-param> and calls <oberon-proc href='URI#URIDesc.Copy'>URI.Copy</oberon-proc> on it.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='uri' id='GenericDesc.Clone.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='Generic' href='#Generic'/>
          </type>
        </receiver-decl>
        <result-type>
          <type-name name='Generic' href='#Generic'/>
        </result-type>
      </formal-parameters>
      <redefined-method module='URI' name='Clone' class='URI' href='URI#URIDesc.Clone'/>
      <redefined-method module='URI' name='Clone' class='URI' href='URI#URIDesc.Clone'/>
    </procedure>
    <procedure name='Copy' id='GenericDesc.Copy' export='yes'>
      <doc-inherited-from module='URI' name='Copy' class='URI' href='URI#URIDesc.Copy'/>
      <oberon-doc>
        <summary>Copies contents of source <oberon-param href='#GenericDesc.Copy.uri'>uri</oberon-param> to target <oberon-param href='#GenericDesc.Copy.dest'>dest</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Copies contents of source <oberon-param href='#GenericDesc.Copy.uri'>uri</oberon-param> to target <oberon-param href='#GenericDesc.Copy.dest'>dest</oberon-param>.</p>
        <pre-cond pad-after='yes'>
          <p pad-after='no' no-indent='yes'>The dynamic type of <oberon-param href='#GenericDesc.Copy.dest'>dest</oberon-param> is an extension of the dynamic type of <oberon-param href='#GenericDesc.Copy.uri'>uri</oberon-param>.</p>
        </pre-cond>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='uri' id='GenericDesc.Copy.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='Generic' href='#Generic'/>
          </type>
        </receiver-decl>
        <parameter-decl name='dest' id='GenericDesc.Copy.dest' export='no' variable-parameter='no'>
          <type>
            <type-name module='URI' name='URI' href='URI#URI'/>
          </type>
        </parameter-decl>
      </formal-parameters>
      <redefined-method module='URI' name='Copy' class='HierarchicalURI' href='URI#HierarchicalURIDesc.Copy'/>
      <redefined-method module='URI' name='Copy' class='URI' href='URI#URIDesc.Copy'/>
    </procedure>
    <procedure name='ClearPath' id='GenericDesc.ClearPath' export='yes'>
      <doc-inherited-from module='URI' name='ClearPath' class='HierarchicalURI' href='URI#HierarchicalURIDesc.ClearPath'/>
      <oberon-doc>
        <summary>Sets the path component of <oberon-param href='#GenericDesc.ClearPath.uri'>uri</oberon-param> to the empty path.</summary>
        <p pad-after='yes' no-indent='yes'>Sets the path component of <oberon-param href='#GenericDesc.ClearPath.uri'>uri</oberon-param> to the empty path.  Unlike the authority or query component, an URI always includes a path component.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='uri' id='GenericDesc.ClearPath.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='Generic' href='#Generic'/>
          </type>
        </receiver-decl>
      </formal-parameters>
      <redefined-method module='URI' name='ClearPath' class='HierarchicalURI' href='URI#HierarchicalURIDesc.ClearPath'/>
    </procedure>
    <procedure name='NewAuthority' id='GenericDesc.NewAuthority' export='yes'>
      <doc-inherited-from module='URI' name='NewAuthority' class='HierarchicalURI' href='URI#HierarchicalURIDesc.NewAuthority'/>
      <oberon-doc>
        <summary>Creates a new instance of the authority component of URI <oberon-param href='#GenericDesc.NewAuthority.uri'>uri</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Creates a new instance of the authority component of URI <oberon-param href='#GenericDesc.NewAuthority.uri'>uri</oberon-param>.  The new object is subsequently filled in by parsing the authority component of the URI string (see <oberon-proc href='URI:Authority#ParseAuthority'>URI:Authority.ParseAuthority</oberon-proc>).</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='uri' id='GenericDesc.NewAuthority.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='Generic' href='#Generic'/>
          </type>
        </receiver-decl>
        <result-type>
          <type-name module='URI' name='Authority' href='URI#Authority'/>
        </result-type>
      </formal-parameters>
      <redefined-method module='URI' name='NewAuthority' class='HierarchicalURI' href='URI#HierarchicalURIDesc.NewAuthority'/>
    </procedure>
    <procedure name='NewQuery' id='GenericDesc.NewQuery' export='yes'>
      <doc-inherited-from module='URI' name='NewQuery' class='HierarchicalURI' href='URI#HierarchicalURIDesc.NewQuery'/>
      <oberon-doc>
        <summary>Creates a new instance of the query component of URI <oberon-param href='#GenericDesc.NewQuery.uri'>uri</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Creates a new instance of the query component of URI <oberon-param href='#GenericDesc.NewQuery.uri'>uri</oberon-param>.  The new object is subsequently filled in by parsing the query component of the URI string (see <oberon-proc href='URI:Query#ParseQuery'>URI:Query.ParseQuery</oberon-proc>).</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='uri' id='GenericDesc.NewQuery.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='Generic' href='#Generic'/>
          </type>
        </receiver-decl>
        <result-type>
          <type-name module='URI' name='Query' href='URI#Query'/>
        </result-type>
      </formal-parameters>
      <redefined-method module='URI' name='NewQuery' class='HierarchicalURI' href='URI#HierarchicalURIDesc.NewQuery'/>
    </procedure>
    <procedure name='ParsePath' id='GenericDesc.ParsePath' export='yes'>
      <doc-inherited-from module='URI' name='ParsePath' class='HierarchicalURI' href='URI#HierarchicalURIDesc.ParsePath'/>
      <oberon-doc>
        <summary>Parses the path component <oberon-param href='#GenericDesc.ParsePath.str'>str</oberon-param> of an URI.</summary>
        <p pad-after='yes' no-indent='yes'>Parses the path component <oberon-param href='#GenericDesc.ParsePath.str'>str</oberon-param> of an URI.  The parameter <oberon-param href='#GenericDesc.ParsePath.absolute'>absolute</oberon-param> indicates, whether the path is absolute or relative.  On success, the data is stored in the URI <oberon-param href='#GenericDesc.ParsePath.uri'>uri</oberon-param> and the result is <code>NIL</code>.  In case of error, an error message is returned and <oberon-param href='#GenericDesc.ParsePath.uri'>uri</oberon-param> is not modified.  A character position in an error message refers to an index in <oberon-param href='#GenericDesc.ParsePath.str'>str</oberon-param>, incremented by the value of <oberon-param href='#GenericDesc.ParsePath.offset'>offset</oberon-param>.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='uri' id='GenericDesc.ParsePath.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='Generic' href='#Generic'/>
          </type>
        </receiver-decl>
        <parameter-decl name='str' id='GenericDesc.ParsePath.str' export='no' variable-parameter='no'>
          <type>
            <type-name module='Object' name='CharsLatin1' href='Object#CharsLatin1'/>
          </type>
        </parameter-decl>
        <parameter-decl name='absolute' id='GenericDesc.ParsePath.absolute' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='BOOLEAN'/>
          </type>
        </parameter-decl>
        <parameter-decl name='offset' id='GenericDesc.ParsePath.offset' export='no' variable-parameter='no'>
          <type>
            <type-name module='URI' name='Offset' href='URI#Offset'/>
          </type>
        </parameter-decl>
        <exceptions>
          <type-name module='Exception' name='ParseError' href='Exception#ParseError'/>
        </exceptions>
      </formal-parameters>
      <redefined-method module='URI' name='ParsePath' class='HierarchicalURI' href='URI#HierarchicalURIDesc.ParsePath'/>
    </procedure>
    <procedure name='ResolveRelative' id='GenericDesc.ResolveRelative' export='yes'>
      <doc-inherited-from module='URI' name='ResolveRelative' class='HierarchicalURI' href='URI#HierarchicalURIDesc.ResolveRelative'/>
      <oberon-doc>
        <summary>Resolves the relative URI <oberon-param href='#GenericDesc.ResolveRelative.uri'>uri</oberon-param> to an absolute URI.</summary>
        <p pad-after='yes' no-indent='yes'>Resolves the relative URI <oberon-param href='#GenericDesc.ResolveRelative.uri'>uri</oberon-param> to an absolute URI.  The missing parts of <oberon-param href='#GenericDesc.ResolveRelative.uri'>uri</oberon-param> are taken from <oberon-param href='#GenericDesc.ResolveRelative.baseURI'>baseURI</oberon-param>.  This is the inverse transformation to <oberon-proc href='URI#URIDesc.MakeRelative'>URI.MakeRelative</oberon-proc>.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='uri' id='GenericDesc.ResolveRelative.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='Generic' href='#Generic'/>
          </type>
        </receiver-decl>
        <parameter-decl name='baseURI' id='GenericDesc.ResolveRelative.baseURI' export='no' variable-parameter='no'>
          <type>
            <type-name module='URI' name='HierarchicalURI' href='URI#HierarchicalURI'/>
          </type>
        </parameter-decl>
      </formal-parameters>
      <redefined-method module='URI' name='ResolveRelative' class='HierarchicalURI' href='URI#HierarchicalURIDesc.ResolveRelative'/>
    </procedure>
    <procedure name='MakeRelative' id='GenericDesc.MakeRelative' export='yes'>
      <doc-inherited-from module='URI' name='MakeRelative' class='URI' href='URI#URIDesc.MakeRelative'/>
      <oberon-doc>
        <summary>Converts <oberon-param href='#GenericDesc.MakeRelative.uri'>uri</oberon-param> into an URI relative to <oberon-param href='#GenericDesc.MakeRelative.baseURI'>baseURI</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Converts <oberon-param href='#GenericDesc.MakeRelative.uri'>uri</oberon-param> into an URI relative to <oberon-param href='#GenericDesc.MakeRelative.baseURI'>baseURI</oberon-param>.  The result is <oberon-param href='#GenericDesc.MakeRelative.uri'>uri</oberon-param> itself, if</p>
        <itemize pad-after='yes'>
          <itemize-mark><bullet/></itemize-mark>
          <item pad-after='yes'>
            <p pad-after='no' no-indent='yes'><oberon-param href='#GenericDesc.MakeRelative.baseURI'>baseURI</oberon-param> is <code>NIL</code>,</p>
          </item>
          <item pad-after='yes'>
            <p pad-after='no' no-indent='yes'><oberon-param href='#GenericDesc.MakeRelative.uri'>uri</oberon-param> is not an extension of <oberon-type href='URI#HierarchicalURI'>HierarchicalURI</oberon-type>, or</p>
          </item>
          <item pad-after='no'>
            <p pad-after='no' no-indent='yes'><oberon-param href='#GenericDesc.MakeRelative.uri'>uri</oberon-param> and <oberon-param href='#GenericDesc.MakeRelative.baseURI'>baseURI</oberon-param> have no common base.</p>
          </item>
        </itemize>
        <p pad-after='yes' no-indent='no'>Otherwise, a new URI is constructed that holds only those parts of <oberon-param href='#GenericDesc.MakeRelative.uri'>uri</oberon-param>, that cannot be derived from <oberon-param href='#GenericDesc.MakeRelative.baseURI'>baseURI</oberon-param>.  The inverse transformation is done by <oberon-proc href='URI#HierarchicalURIDesc.ResolveRelative'>HierarchicalURI.ResolveRelative</oberon-proc>.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='uri' id='GenericDesc.MakeRelative.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='Generic' href='#Generic'/>
          </type>
        </receiver-decl>
        <parameter-decl name='baseURI' id='GenericDesc.MakeRelative.baseURI' export='no' variable-parameter='no'>
          <type>
            <type-name module='URI' name='HierarchicalURI' href='URI#HierarchicalURI'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name name='Generic' href='#Generic'/>
        </result-type>
      </formal-parameters>
      <redefined-method module='URI' name='MakeRelative' class='HierarchicalURI' href='URI#HierarchicalURIDesc.MakeRelative'/>
      <redefined-method module='URI' name='MakeRelative' class='URI' href='URI#URIDesc.MakeRelative'/>
    </procedure>
    <procedure name='WriteXML' id='GenericDesc.WriteXML' export='yes'>
      <doc-inherited-from module='URI' name='WriteXML' class='URI' href='URI#URIDesc.WriteXML'/>
      <oberon-doc>
        <summary>Writes an XML fragment describing the URI <oberon-param href='#GenericDesc.WriteXML.uri'>uri</oberon-param> to the writer <oberon-param href='#GenericDesc.WriteXML.w'>w</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Writes an XML fragment describing the URI <oberon-param href='#GenericDesc.WriteXML.uri'>uri</oberon-param> to the writer <oberon-param href='#GenericDesc.WriteXML.w'>w</oberon-param>.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='uri' id='GenericDesc.WriteXML.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='Generic' href='#Generic'/>
          </type>
        </receiver-decl>
        <parameter-decl name='w' id='GenericDesc.WriteXML.w' export='no' variable-parameter='no'>
          <type>
            <type-name module='TextRider' name='Writer' href='TextRider#Writer'/>
          </type>
        </parameter-decl>
      </formal-parameters>
      <redefined-method module='URI' name='WriteXML' class='URI' href='URI#URIDesc.WriteXML'/>
      <redefined-method module='URI' name='WriteXML' class='URI' href='URI#URIDesc.WriteXML'/>
    </procedure>
    <procedure name='AppendPath' id='GenericDesc.AppendPath' export='yes'>
      <doc-inherited-from module='URI' name='AppendPath' class='HierarchicalURI' href='URI#HierarchicalURIDesc.AppendPath'/>
      <oberon-doc>
        <summary>Appends the textual representation of the path component of <oberon-param href='#GenericDesc.AppendPath.uri'>uri</oberon-param> to the string <oberon-param href='#GenericDesc.AppendPath.sb'>sb</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Appends the textual representation of the path component of <oberon-param href='#GenericDesc.AppendPath.uri'>uri</oberon-param> to the string <oberon-param href='#GenericDesc.AppendPath.sb'>sb</oberon-param>.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='uri' id='GenericDesc.AppendPath.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='Generic' href='#Generic'/>
          </type>
        </receiver-decl>
        <parameter-decl name='sb' id='GenericDesc.AppendPath.sb' export='no' variable-parameter='no'>
          <type>
            <type-name module='StringBuffer' name='StringBuffer' href='ADT:StringBuffer#StringBuffer'/>
          </type>
        </parameter-decl>
      </formal-parameters>
      <redefined-method module='URI' name='AppendPath' class='HierarchicalURI' href='URI#HierarchicalURIDesc.AppendPath'/>
    </procedure>
    <procedure name='ToString' id='GenericDesc.ToString' export='yes'>
      <doc-inherited-from module='URI' name='ToString' class='URI' href='URI#URIDesc.ToString'/>
      <oberon-doc>
        <summary>Converts the URI <oberon-param href='#GenericDesc.ToString.uri'>uri</oberon-param> to its string representation.</summary>
        <p pad-after='yes' no-indent='yes'>Converts the URI <oberon-param href='#GenericDesc.ToString.uri'>uri</oberon-param> to its string representation.  Reserved characters in the URI and characters that may not appear in a valid URI are escaped where necessary.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='uri' id='GenericDesc.ToString.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='Generic' href='#Generic'/>
          </type>
        </receiver-decl>
        <result-type>
          <type-name module='Object' name='String8' href='Object#String8'/>
        </result-type>
      </formal-parameters>
      <redefined-method module='URI' name='ToString' class='URI' href='URI#URIDesc.ToString'/>
      <redefined-method module='URI' name='ToString' class='URI' href='URI#URIDesc.ToString'/>
      <redefined-method module='Object' name='ToString' class='Object' href='Object#ObjectDesc.ToString'/>
    </procedure>
    <base-class module='URI' class='HierarchicalURI' href='URI#HierarchicalURI'>
      <inherited-method module='URI' name='AppendPath' class='HierarchicalURI' href='URI#HierarchicalURIDesc.AppendPath'/>
      <inherited-method module='URI' name='AuthorityMandatory' class='HierarchicalURI' href='URI#HierarchicalURIDesc.AuthorityMandatory'/>
      <inherited-method module='URI' name='ClearPath' class='HierarchicalURI' href='URI#HierarchicalURIDesc.ClearPath'/>
      <inherited-method module='URI' name='Copy' class='HierarchicalURI' href='URI#HierarchicalURIDesc.Copy'/>
      <inherited-method module='URI' name='MakeRelative' class='HierarchicalURI' href='URI#HierarchicalURIDesc.MakeRelative'/>
      <inherited-method module='URI' name='NewAuthority' class='HierarchicalURI' href='URI#HierarchicalURIDesc.NewAuthority'/>
      <inherited-method module='URI' name='NewQuery' class='HierarchicalURI' href='URI#HierarchicalURIDesc.NewQuery'/>
      <inherited-method module='URI' name='ParsePath' class='HierarchicalURI' href='URI#HierarchicalURIDesc.ParsePath'/>
      <inherited-method module='URI' name='ResolveRelative' class='HierarchicalURI' href='URI#HierarchicalURIDesc.ResolveRelative'/>
      <inherited-method module='URI' name='SetAuthority' class='HierarchicalURI' href='URI#HierarchicalURIDesc.SetAuthority'/>
      <inherited-method module='URI' name='SetQuery' class='HierarchicalURI' href='URI#HierarchicalURIDesc.SetQuery'/>
      <inherited-field module='URI' name='authority' class='HierarchicalURI' href='URI#HierarchicalURIDesc.authority'/>
      <inherited-field module='URI' name='query' class='HierarchicalURI' href='URI#HierarchicalURIDesc.query'/>
      <base-class module='URI' class='URI' href='URI#URI'>
        <inherited-method module='URI' name='AppendScheme' class='URI' href='URI#URIDesc.AppendScheme'/>
        <inherited-method module='URI' name='Clone' class='URI' href='URI#URIDesc.Clone'/>
        <inherited-method module='URI' name='GetChannel' class='URI' href='URI#URIDesc.GetChannel'/>
        <inherited-method module='URI' name='SetSchemeId' class='URI' href='URI#URIDesc.SetSchemeId'/>
        <inherited-method module='URI' name='ToString' class='URI' href='URI#URIDesc.ToString'/>
        <inherited-method module='URI' name='WriteXML' class='URI' href='URI#URIDesc.WriteXML'/>
        <inherited-field module='URI' name='schemeId' class='URI' href='URI#URIDesc.schemeId'/>
        <base-class module='Object' class='Object' href='Object#Object'>
          <inherited-method module='Object' name='Equals' class='Object' href='Object#ObjectDesc.Equals'/>
          <inherited-method module='Object' name='HashCode' class='Object' href='Object#ObjectDesc.HashCode'/>
        </base-class>
      </base-class>
    </base-class>
  </class>
  <module-ref name='Object'>
    <ref-target type='html' relative-uri='../../Object.html'/>
  </module-ref>
  <module-ref name='TextRider'>
    <ref-target type='html' relative-uri='../../TextRider.html'/>
  </module-ref>
  <module-ref name='Exception'>
    <ref-target type='html' relative-uri='../../Exception.html'/>
  </module-ref>
  <module-ref name='ADT:StringBuffer'>
    <ref-target type='html' relative-uri='../../ADT/StringBuffer.html'/>
  </module-ref>
  <module-ref name='URI'>
    <ref-target type='html' relative-uri='../../URI.html'/>
  </module-ref>
</interface-description>
