<?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:Error' id=''>
  <import-decl name='Channel' id='Channel' export='no' module='Channel'/>
  <import-decl name='M' id='M' export='no' module='Msg'/>
  <import-decl name='URI' id='URI' export='no' module='URI'/>
  <type-decl name='Msg' id='Msg' export='yes'>
    <type>
      <type-name module='M' name='Msg' href='Msg#Msg'/>
    </type>
  </type-decl>
  <type-decl name='Code' id='Code' export='yes'>
    <type>
      <type-name module='M' name='Code' href='Msg#Code'/>
    </type>
  </type-decl>
  <type-decl name='Char' id='Char' export='yes'>
    <type>
      <type-name module='M' name='Char' href='Msg#Char'/>
    </type>
  </type-decl>
  <type-decl name='LChar' id='LChar' export='yes'>
    <type>
      <type-name module='M' name='LChar' href='Msg#LChar'/>
    </type>
  </type-decl>
  <type-decl name='String' id='String' export='yes'>
    <type>
      <type-name module='M' name='String' href='Msg#String'/>
    </type>
  </type-decl>
  <type-decl name='StringPtr' id='StringPtr' export='yes'>
    <type>
      <type-name module='M' name='StringPtr' href='Msg#StringPtr'/>
    </type>
  </type-decl>
  <type-decl name='LString' id='LString' export='yes'>
    <type>
      <type-name module='M' name='LString' href='Msg#LString'/>
    </type>
  </type-decl>
  <type-decl name='LStringPtr' id='LStringPtr' export='yes'>
    <type>
      <type-name module='M' name='LStringPtr' href='Msg#LStringPtr'/>
    </type>
  </type-decl>
  <var-decl name='errMsgLineBase' id='errMsgLineBase' export='yes'>
    <oberon-doc>
      <summary>Line number used to refer to the first line in a file in an error message.</summary>
      <p pad-after='yes' no-indent='yes'>Line number used to refer to the first line in a file in an error message.  The default is <samp>0</samp>.  Most programs count lines beginning at <samp>1</samp>, so you might want to change this before calling the XML parser.</p>
    </oberon-doc>
    <type>
      <type-name module='#predef' name='LONGINT'/>
    </type>
  </var-decl>
  <var-decl name='errMsgColumnBase' id='errMsgColumnBase' export='yes'>
    <oberon-doc>
      <summary>Column number used to refer to the first character of a line in an error message.</summary>
      <p pad-after='yes' no-indent='yes'>Column number used to refer to the first character of a line in an error message.  The default is <samp>0</samp>.</p>
    </oberon-doc>
    <type>
      <type-name module='#predef' name='LONGINT'/>
    </type>
  </var-decl>
  <var-decl name='errMsgCharPosBase' id='errMsgCharPosBase' export='yes'>
    <oberon-doc>
      <summary>Character position used to refer to the first character of a file in an error message.</summary>
      <p pad-after='yes' no-indent='yes'>Character position used to refer to the first character of a file in an error message.  The default is <samp>0</samp>.</p>
    </oberon-doc>
    <type>
      <type-name module='#predef' name='LONGINT'/>
    </type>
  </var-decl>
  <procedure name='New' id='New' export='yes'>
    <formal-parameters>
      <parameter-decl name='context' id='New.context' export='no' variable-parameter='no'>
        <type>
          <type-name name='Context' href='#Context'/>
        </type>
      </parameter-decl>
      <parameter-decl name='code' id='New.code' export='no' variable-parameter='no'>
        <type>
          <type-name module='#predef' name='Code'/>
        </type>
      </parameter-decl>
      <result-type>
        <type-name name='Msg' href='#Msg'/>
      </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'/>
  <class name='Mapping'>
    <type-decl name='Mapping' id='Mapping' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='MappingDesc' href='#MappingDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='MappingDesc' id='MappingDesc' export='no'>
      <type>
        <record/>
      </type>
    </type-decl>
  </class>
  <class name='Context'>
    <type-decl name='Context' id='Context' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='ContextDesc' href='#ContextDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='ContextDesc' id='ContextDesc' export='yes'>
      <type>
        <record/>
      </type>
    </type-decl>
    <procedure name='InitContext' id='InitContext' export='yes'>
      <formal-parameters>
        <parameter-decl name='c' id='InitContext.c' export='no' variable-parameter='no'>
          <type>
            <type-name name='Context' href='#Context'/>
          </type>
        </parameter-decl>
        <parameter-decl name='id' id='InitContext.id' export='no' variable-parameter='no'>
          <type>
            <type-name module='M' name='String' href='Msg#String'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='NewContext' id='NewContext' export='yes'>
      <oberon-doc>
        <summary>Creates a new error context, using the id <oberon-param href='#NewContext.id'>id</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Creates a new error context, using the id <oberon-param href='#NewContext.id'>id</oberon-param>.  <oberon-param href='#NewContext.id'>id</oberon-param> should be a module name.</p>
      </oberon-doc>
      <formal-parameters>
        <parameter-decl name='id' id='NewContext.id' export='no' variable-parameter='no'>
          <type>
            <type-name module='M' name='String' href='Msg#String'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name name='Context' href='#Context'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='WriteTemplate' id='ContextDesc.WriteTemplate' export='yes'>
      <formal-parameters>
        <receiver-decl name='context' id='ContextDesc.WriteTemplate.context' export='no' variable-parameter='no'>
          <type>
            <type-name name='Context' href='#Context'/>
          </type>
        </receiver-decl>
        <parameter-decl name='msg' id='ContextDesc.WriteTemplate.msg' export='no' variable-parameter='no'>
          <type>
            <type-name module='M' name='Msg' href='Msg#Msg'/>
          </type>
        </parameter-decl>
        <parameter-decl name='msgText' id='ContextDesc.WriteTemplate.msgText' export='no' variable-parameter='no'>
          <type>
            <type-name module='M' name='LString' href='Msg#LString'/>
          </type>
        </parameter-decl>
        <parameter-decl name='templ' id='ContextDesc.WriteTemplate.templ' export='no' variable-parameter='yes'>
          <type>
            <type-name module='M' name='LString' href='Msg#LString'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='GetTemplate' id='ContextDesc.GetTemplate' export='yes'>
      <doc-inherited-from module='Msg' name='GetTemplate' class='Context' href='Msg#ContextDesc.GetTemplate'/>
      <oberon-doc>
        <summary>Returns a template string for the message <oberon-param href='#ContextDesc.GetTemplate.msg'>msg</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Returns a template string for the message <oberon-param href='#ContextDesc.GetTemplate.msg'>msg</oberon-param>.  The string may contain attribute references.  Instead of the reference <samp>${foo}</samp>, the procedure <oberon-proc href='Msg#MsgDesc.GetText'>Msg.GetText</oberon-proc> will insert the textual representation of the attribute with the name <samp>foo</samp>.  The special reference <samp>${MSG_CONTEXT}</samp> is replaced by the value of <oberon-field href='Msg#ContextDesc.id'>context.id</oberon-field>, and <samp>${MSG_CODE}</samp> with <oberon-field href='Msg#MsgDesc.code'>msg.code</oberon-field>.</p>
        <p pad-after='yes' no-indent='no'>The default implementation returns this string:</p>
        <example pad-after='yes'>MSG_CONTEXT: ${MSG_CONTEXT}
MSG_CODE: ${MSG_CODE}
attribute_name: ${attribute_name}
</example>
        <p pad-after='yes' no-indent='no'>The last line is repeated for every attribute name.  The lines are separated by <oberon-const href='CharClass#eol'>CharClass.eol</oberon-const>.</p>
        <pre-cond pad-after='yes'>
          <p pad-after='no' no-indent='yes'><oberon-param href='#ContextDesc.GetTemplate.msg'>msg</oberon-param> is not <code>NIL</code>.</p>
        </pre-cond>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='context' id='ContextDesc.GetTemplate.context' export='no' variable-parameter='no'>
          <type>
            <type-name name='Context' href='#Context'/>
          </type>
        </receiver-decl>
        <parameter-decl name='msg' id='ContextDesc.GetTemplate.msg' export='no' variable-parameter='no'>
          <type>
            <type-name name='Msg' href='#Msg'/>
          </type>
        </parameter-decl>
        <parameter-decl name='templ' id='ContextDesc.GetTemplate.templ' export='no' variable-parameter='yes'>
          <type>
            <type-name name='LString' href='#LString'/>
          </type>
        </parameter-decl>
      </formal-parameters>
      <redefined-method module='Msg' name='GetTemplate' class='Context' href='Msg#ContextDesc.GetTemplate'/>
    </procedure>
    <procedure name='SetString' id='ContextDesc.SetString' export='yes'>
      <oberon-doc>
        <summary>Maps the error code <oberon-param href='#ContextDesc.SetString.code'>code</oberon-param> onto the error text <oberon-param href='#ContextDesc.SetString.str'>str</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Maps the error code <oberon-param href='#ContextDesc.SetString.code'>code</oberon-param> onto the error text <oberon-param href='#ContextDesc.SetString.str'>str</oberon-param>.  If a mapping for <oberon-param href='#ContextDesc.SetString.code'>code</oberon-param> exists, it is replaced with the new one.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='context' id='ContextDesc.SetString.context' export='no' variable-parameter='no'>
          <type>
            <type-name name='Context' href='#Context'/>
          </type>
        </receiver-decl>
        <parameter-decl name='code' id='ContextDesc.SetString.code' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='Code'/>
          </type>
        </parameter-decl>
        <parameter-decl name='str' id='ContextDesc.SetString.str' export='no' variable-parameter='no'>
          <type>
            <type-name name='String' href='#String'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <base-class module='Msg' class='Context' href='Msg#Context'>
      <inherited-method module='Msg' name='GetTemplate' class='Context' href='Msg#ContextDesc.GetTemplate'/>
      <inherited-field module='Msg' name='id' class='Context' href='Msg#ContextDesc.id'/>
    </base-class>
  </class>
  <class name='List'>
    <type-decl name='List' id='List' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='ListDesc' href='#ListDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='ListDesc' id='ListDesc' export='no'>
      <type>
        <record/>
      </type>
    </type-decl>
    <procedure name='NewList' id='NewList' export='yes'>
      <oberon-doc>
        <summary>Creates new error list.</summary>
        <p pad-after='yes' no-indent='yes'>Creates new error list.</p>
      </oberon-doc>
      <formal-parameters>
        <result-type>
          <type-name name='List' href='#List'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='Write' id='ListDesc.Write' export='yes'>
      <oberon-doc>
        <summary>Writes the list of error messages to the ouput channel <oberon-param href='#ListDesc.Write.ch'>ch</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Writes the list of error messages to the ouput channel <oberon-param href='#ListDesc.Write.ch'>ch</oberon-param>.  The channel must be writable.  The generated list is prefixed by the name of the file to which the errors refer.  File names relative to the current working directory are rewritten to relative path names, using the list's `cwdURI' as base.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='errList' id='ListDesc.Write.errList' export='no' variable-parameter='no'>
          <type>
            <type-name name='List' href='#List'/>
          </type>
        </receiver-decl>
        <parameter-decl name='ch' id='ListDesc.Write.ch' export='no' variable-parameter='no'>
          <type>
            <type-name module='Channel' name='Channel' href='Channel#Channel'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <base-class module='Msg' class='MsgList' href='Msg#MsgList'>
      <inherited-method module='Msg' name='Append' class='MsgList' href='Msg#MsgListDesc.Append'/>
      <inherited-method module='Msg' name='AppendList' class='MsgList' href='Msg#MsgListDesc.AppendList'/>
      <inherited-field module='Msg' name='msgCount' class='MsgList' href='Msg#MsgListDesc.msgCount'/>
      <inherited-field module='Msg' name='msgList' class='MsgList' href='Msg#MsgListDesc.msgList'/>
    </base-class>
  </class>
  <module-ref name='Msg'>
    <ref-target type='html' relative-uri='../Msg.html'/>
  </module-ref>
  <module-ref name='Channel'>
    <ref-target type='html' relative-uri='../Channel.html'/>
  </module-ref>
  <module-ref name='CharClass'>
    <ref-target type='html' relative-uri='../CharClass.html'/>
  </module-ref>
</interface-description>
