<?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='IO:Address' id=''>
  <import-decl name='RT0' id='RT0' export='no' module='RT0'/>
  <import-decl name='Exception' id='Exception' export='no' module='Exception'/>
  <import-decl name='Object' id='Object' export='no' module='Object'/>
  <import-decl name='IO' id='IO' export='no' module='IO'/>
  <type-decl name='Port' id='Port' export='yes'>
    <oberon-doc>
      <summary>Port number of an Internet host.</summary>
      <p pad-after='yes' no-indent='yes'>Port number of an Internet host.  A value in the range <samp>0..65335</samp>.</p>
    </oberon-doc>
    <type>
      <type-name module='#predef' name='LONGINT'/>
    </type>
  </type-decl>
  <type-decl name='SockAddr' id='SockAddr' export='yes'>
    <type>
      <pointer>
        <pointer-base>
          <array>
            <element-type>
              <type-name module='#predef' name='CHAR'/>
            </element-type>
          </array>
        </pointer-base>
      </pointer>
    </type>
  </type-decl>
  <var-decl name='inet4Loopback' id='inet4Loopback' export='read-only'>
    <oberon-doc>
      <summary>The internet address <samp>127.0.0.1</samp> referring to this machine, typically called <samp>localhost</samp>.</summary>
      <p pad-after='yes' no-indent='yes'>The internet address <samp>127.0.0.1</samp> referring to this machine, typically called <samp>localhost</samp>.</p>
    </oberon-doc>
    <type>
      <type-name name='Inet4' href='#Inet4'/>
    </type>
  </var-decl>
  <var-decl name='inet4Any' id='inet4Any' export='read-only'>
    <oberon-doc>
      <summary>Stands for "any incoming address" when binding to an address.</summary>
      <p pad-after='yes' no-indent='yes'>Stands for "any incoming address" when binding to an address.  This is the usual address in the host part of <oberon-type href='#SocketInet'>SocketInet</oberon-type> to accept Internet connections on a server port.</p>
    </oberon-doc>
    <type>
      <type-name name='Inet4' href='#Inet4'/>
    </type>
  </var-decl>
  <var-decl name='inet4Broadcast' id='inet4Broadcast' export='read-only'>
    <oberon-doc>
      <summary>The address to send a broadcast message.</summary>
      <p pad-after='yes' no-indent='yes'>The address to send a broadcast message.</p>
    </oberon-doc>
    <type>
      <type-name name='Inet4' href='#Inet4'/>
    </type>
  </var-decl>
  <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='Inet'>
    <type-decl name='Inet' id='Inet' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='InetDesc' href='#InetDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='InetDesc' id='InetDesc' export='no'>
      <type>
        <record/>
      </type>
    </type-decl>
    <procedure name='GetByName' id='GetByName' export='yes'>
      <oberon-doc>
        <summary>Determines the IP address of a host, given the host's DNS name.</summary>
        <p pad-after='yes' no-indent='yes'>Determines the IP address of a host, given the host's DNS name.  The host name <code>NIL</code> refers to the local host.</p>
      </oberon-doc>
      <formal-parameters>
        <parameter-decl name='host' id='GetByName.host' export='no' variable-parameter='no'>
          <type>
            <type-name module='Object' name='String8' href='Object#String8'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name name='Inet' href='#Inet'/>
        </result-type>
        <exceptions>
          <type-name name='UnknownHostException' href='#UnknownHostException'/>
        </exceptions>
      </formal-parameters>
    </procedure>
    <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'/>
      <inherited-method module='Object' name='ToString' class='Object' href='Object#ObjectDesc.ToString'/>
    </base-class>
  </class>
  <class name='Inet4'>
    <type-decl name='Inet4' id='Inet4' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='Inet4Desc' href='#Inet4Desc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='Inet4Desc' id='Inet4Desc' export='no'>
      <type>
        <record/>
      </type>
    </type-decl>
    <procedure name='ToString' id='Inet4Desc.ToString' export='yes'>
      <doc-inherited-from module='Object' name='ToString' class='Object' href='Object#ObjectDesc.ToString'/>
      <oberon-doc>
        <summary>Returns a string representation of the object.</summary>
        <p pad-after='yes' no-indent='yes'>Returns a string representation of the object.  Typically, the string is some form of <left-quote/>natural<right-quote/> representation of the value.  For complex objects, it should describe the type and essential attributes of the object.  The exact format of the returned value is intentionally left vague.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='addr' id='Inet4Desc.ToString.addr' export='no' variable-parameter='no'>
          <type>
            <type-name name='Inet4' href='#Inet4'/>
          </type>
        </receiver-decl>
        <result-type>
          <type-name name='STRING' href='#STRING'/>
        </result-type>
      </formal-parameters>
      <redefined-method module='Object' name='ToString' class='Object' href='Object#ObjectDesc.ToString'/>
      <redefined-method module='Object' name='ToString' class='Object' href='Object#ObjectDesc.ToString'/>
    </procedure>
    <procedure name='Equals' id='Inet4Desc.Equals' export='yes'>
      <doc-inherited-from module='Object' name='Equals' class='Object' href='Object#ObjectDesc.Equals'/>
      <oberon-doc>
        <summary>Indicates whether some other object is "equal to" this one.</summary>
        <p pad-after='yes' no-indent='yes'>Indicates whether some other object is "equal to" this one.</p>
        <p pad-after='yes' no-indent='no'>The <oberon-proc href='Object#ObjectDesc.Equals'>Object.Equals</oberon-proc> method implements an equivalence relation:</p>
        <itemize pad-after='yes'>
          <itemize-mark><bullet/></itemize-mark>
          <item pad-after='yes'>
            <p pad-after='no' no-indent='yes'>It is reflexive: for any reference value <samp>x</samp>, <samp>x.Equals(x)</samp> should return <code>TRUE</code>.</p>
          </item>
          <item pad-after='yes'>
            <p pad-after='no' no-indent='yes'>It is symmetric: for any reference values <samp>x</samp> and <samp>y</samp>, <samp>x.Equals(y)</samp> should return <code>TRUE</code> if and only if <samp>y.Equals(x)</samp> returns <code>TRUE</code>.</p>
          </item>
          <item pad-after='yes'>
            <p pad-after='no' no-indent='yes'>It is transitive: for any reference values <samp>x</samp>, <samp>y</samp>, and <samp>z</samp>, if <samp>x.Equals(y)</samp> returns <code>TRUE</code> and <samp>y.Equals(z)</samp> returns <code>TRUE</code>, then <samp>x.Equals(z)</samp> should return <code>TRUE</code>.</p>
          </item>
          <item pad-after='yes'>
            <p pad-after='no' no-indent='yes'>It is consistent: for any reference values <samp>x</samp> and <samp>y</samp>, multiple invocations of <samp>x.Equals(y)</samp> consistently return <code>TRUE</code> or consistently return <code>FALSE</code>, provided no information used in equals comparisons on the object is modified.</p>
          </item>
          <item pad-after='no'>
            <p pad-after='no' no-indent='yes'>For any non-<code>NIL</code> reference value <samp>x</samp>, <samp>x.Equals(NIL)</samp> should return <code>FALSE</code>.</p>
          </item>
        </itemize>
        <p pad-after='yes' no-indent='no'>The <samp>Equals</samp> method for class <oberon-type href='Object#Object'>Object</oberon-type> implements the most discriminating possible equivalence relation on objects; that is, for any reference values <samp>x</samp> and <samp>y</samp>, this method returns <code>TRUE</code> if and only if <samp>x</samp> and <samp>y</samp> refer to the same object (<samp>x=y</samp> has the value <code>TRUE</code>).</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='addr' id='Inet4Desc.Equals.addr' export='no' variable-parameter='no'>
          <type>
            <type-name name='Inet4' href='#Inet4'/>
          </type>
        </receiver-decl>
        <parameter-decl name='y' id='Inet4Desc.Equals.y' export='no' variable-parameter='no'>
          <type>
            <type-name module='Object' name='Object' href='Object#Object'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name module='#predef' name='BOOLEAN'/>
        </result-type>
      </formal-parameters>
      <redefined-method module='Object' name='Equals' class='Object' href='Object#ObjectDesc.Equals'/>
      <redefined-method module='Object' name='Equals' class='Object' href='Object#ObjectDesc.Equals'/>
    </procedure>
    <procedure name='HashCode' id='Inet4Desc.HashCode' export='yes'>
      <doc-inherited-from module='Object' name='HashCode' class='Object' href='Object#ObjectDesc.HashCode'/>
      <oberon-doc>
        <summary>Returns a hash code value for the object.</summary>
        <p pad-after='yes' no-indent='yes'>Returns a hash code value for the object.  This method is supported for the benefit of dictionaries such as those provided by <oberon-module href='ADT:Dictionary#'>ADT:Dictionary</oberon-module>..</p>
        <p pad-after='yes' no-indent='no'>The general contract of <oberon-proc href='Object#ObjectDesc.HashCode'>Object.HashCode</oberon-proc> is:</p>
        <itemize pad-after='yes'>
          <itemize-mark><bullet/></itemize-mark>
          <item pad-after='yes'>
            <p pad-after='no' no-indent='yes'>Whenever it is invoked on the same object more than once during an execution of an application, the <oberon-proc href='Object#ObjectDesc.HashCode'>Object.HashCode</oberon-proc> method must consistently return the same integer, provided no information used in equals comparisons on the object is modified.  This integer need not remain consistent from one execution of an application to another execution of the same application.</p>
          </item>
          <item pad-after='yes'>
            <p pad-after='no' no-indent='yes'>If two objects are equal according to the <oberon-proc href='Object#ObjectDesc.Equals'>Object.Equals</oberon-proc> method, then calling the <oberon-proc href='Object#ObjectDesc.HashCode'>Object.HashCode</oberon-proc> method on each of the two objects must produce the same integer result.</p>
          </item>
          <item pad-after='no'>
            <p pad-after='no' no-indent='yes'>It is <emph>not</emph> required that if two objects are unequal according to the <oberon-proc href='Object#ObjectDesc.Equals'>Object.Equals</oberon-proc> method, then calling the <oberon-proc href='Object#ObjectDesc.HashCode'>Object.HashCode</oberon-proc> method on each of the two objects must produce distinct integer results.  However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of dictionaries.</p>
          </item>
        </itemize>
        <p pad-after='yes' no-indent='no'>As much as is reasonably practical, the <oberon-proc href='Object#ObjectDesc.HashCode'>Object.HashCode</oberon-proc> method defined by class <oberon-type href='Object#Object'>Object</oberon-type> does return distinct integers for distinct objects.  (This is typically implemented by converting the internal address of the object into an integer, but this implementation technique is not required.)</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='addr' id='Inet4Desc.HashCode.addr' export='no' variable-parameter='no'>
          <type>
            <type-name name='Inet4' href='#Inet4'/>
          </type>
        </receiver-decl>
        <result-type>
          <type-name module='Object' name='Hash' href='Object#Hash'/>
        </result-type>
      </formal-parameters>
      <redefined-method module='Object' name='HashCode' class='Object' href='Object#ObjectDesc.HashCode'/>
      <redefined-method module='Object' name='HashCode' class='Object' href='Object#ObjectDesc.HashCode'/>
    </procedure>
    <base-class module='IO:Address' class='Inet' href='#Inet'>
      <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'/>
        <inherited-method module='Object' name='ToString' class='Object' href='Object#ObjectDesc.ToString'/>
      </base-class>
    </base-class>
  </class>
  <class name='Socket'>
    <type-decl name='Socket' id='Socket' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='SocketDesc' href='#SocketDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='SocketDesc' id='SocketDesc' export='no'>
      <type>
        <record/>
      </type>
    </type-decl>
    <procedure name='GetSockAddr' id='SocketDesc.GetSockAddr' export='yes'>
      <oberon-doc>
        <summary>Return the socket address <oberon-param href='#SocketDesc.GetSockAddr.s'>s</oberon-param>, in the format expected by the functions of libc.</summary>
        <p pad-after='yes' no-indent='yes'>Return the socket address <oberon-param href='#SocketDesc.GetSockAddr.s'>s</oberon-param>, in the format expected by the functions of libc.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='s' id='SocketDesc.GetSockAddr.s' export='no' variable-parameter='no'>
          <type>
            <type-name name='Socket' href='#Socket'/>
          </type>
        </receiver-decl>
        <result-type>
          <type-name name='SockAddr' href='#SockAddr'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <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'/>
      <inherited-method module='Object' name='ToString' class='Object' href='Object#ObjectDesc.ToString'/>
    </base-class>
  </class>
  <class name='SocketInet'>
    <type-decl name='SocketInet' id='SocketInet' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='SocketInetDesc' href='#SocketInetDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='SocketInetDesc' id='SocketInetDesc' export='no'>
      <type>
        <record>
          <field-decl name='host' id='SocketInetDesc.host' export='read-only'>
            <oberon-doc>
              <summary>IP address of the host.</summary>
              <p pad-after='yes' no-indent='yes'>IP address of the host.</p>
            </oberon-doc>
            <type>
              <type-name name='Inet' href='#Inet'/>
            </type>
          </field-decl>
          <field-decl name='port' id='SocketInetDesc.port' export='read-only'>
            <oberon-doc>
              <summary>Port number of the socket.</summary>
              <p pad-after='yes' no-indent='yes'>Port number of the socket.  A number between zero and 65535.</p>
            </oberon-doc>
            <type>
              <type-name module='#predef' name='Port'/>
            </type>
          </field-decl>
        </record>
      </type>
    </type-decl>
    <procedure name='GetSocketInet' id='GetSocketInet' export='yes'>
      <oberon-doc>
        <summary>Return an Internet socket address for the given host address and port number.</summary>
        <p pad-after='yes' no-indent='yes'>Return an Internet socket address for the given host address and port number.</p>
      </oberon-doc>
      <formal-parameters>
        <parameter-decl name='host' id='GetSocketInet.host' export='no' variable-parameter='no'>
          <type>
            <type-name name='Inet' href='#Inet'/>
          </type>
        </parameter-decl>
        <parameter-decl name='port' id='GetSocketInet.port' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='Port'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name name='SocketInet' href='#SocketInet'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='ToString' id='SocketInetDesc.ToString' export='yes'>
      <doc-inherited-from module='Object' name='ToString' class='Object' href='Object#ObjectDesc.ToString'/>
      <oberon-doc>
        <summary>Returns a string representation of the object.</summary>
        <p pad-after='yes' no-indent='yes'>Returns a string representation of the object.  Typically, the string is some form of <left-quote/>natural<right-quote/> representation of the value.  For complex objects, it should describe the type and essential attributes of the object.  The exact format of the returned value is intentionally left vague.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='s' id='SocketInetDesc.ToString.s' export='no' variable-parameter='no'>
          <type>
            <type-name name='SocketInet' href='#SocketInet'/>
          </type>
        </receiver-decl>
        <result-type>
          <type-name name='STRING' href='#STRING'/>
        </result-type>
      </formal-parameters>
      <redefined-method module='Object' name='ToString' class='Object' href='Object#ObjectDesc.ToString'/>
      <redefined-method module='Object' name='ToString' class='Object' href='Object#ObjectDesc.ToString'/>
    </procedure>
    <procedure name='Equals' id='SocketInetDesc.Equals' export='yes'>
      <doc-inherited-from module='Object' name='Equals' class='Object' href='Object#ObjectDesc.Equals'/>
      <oberon-doc>
        <summary>Indicates whether some other object is "equal to" this one.</summary>
        <p pad-after='yes' no-indent='yes'>Indicates whether some other object is "equal to" this one.</p>
        <p pad-after='yes' no-indent='no'>The <oberon-proc href='Object#ObjectDesc.Equals'>Object.Equals</oberon-proc> method implements an equivalence relation:</p>
        <itemize pad-after='yes'>
          <itemize-mark><bullet/></itemize-mark>
          <item pad-after='yes'>
            <p pad-after='no' no-indent='yes'>It is reflexive: for any reference value <samp>x</samp>, <samp>x.Equals(x)</samp> should return <code>TRUE</code>.</p>
          </item>
          <item pad-after='yes'>
            <p pad-after='no' no-indent='yes'>It is symmetric: for any reference values <samp>x</samp> and <samp>y</samp>, <samp>x.Equals(y)</samp> should return <code>TRUE</code> if and only if <samp>y.Equals(x)</samp> returns <code>TRUE</code>.</p>
          </item>
          <item pad-after='yes'>
            <p pad-after='no' no-indent='yes'>It is transitive: for any reference values <samp>x</samp>, <samp>y</samp>, and <samp>z</samp>, if <samp>x.Equals(y)</samp> returns <code>TRUE</code> and <samp>y.Equals(z)</samp> returns <code>TRUE</code>, then <samp>x.Equals(z)</samp> should return <code>TRUE</code>.</p>
          </item>
          <item pad-after='yes'>
            <p pad-after='no' no-indent='yes'>It is consistent: for any reference values <samp>x</samp> and <samp>y</samp>, multiple invocations of <samp>x.Equals(y)</samp> consistently return <code>TRUE</code> or consistently return <code>FALSE</code>, provided no information used in equals comparisons on the object is modified.</p>
          </item>
          <item pad-after='no'>
            <p pad-after='no' no-indent='yes'>For any non-<code>NIL</code> reference value <samp>x</samp>, <samp>x.Equals(NIL)</samp> should return <code>FALSE</code>.</p>
          </item>
        </itemize>
        <p pad-after='yes' no-indent='no'>The <samp>Equals</samp> method for class <oberon-type href='Object#Object'>Object</oberon-type> implements the most discriminating possible equivalence relation on objects; that is, for any reference values <samp>x</samp> and <samp>y</samp>, this method returns <code>TRUE</code> if and only if <samp>x</samp> and <samp>y</samp> refer to the same object (<samp>x=y</samp> has the value <code>TRUE</code>).</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='s' id='SocketInetDesc.Equals.s' export='no' variable-parameter='no'>
          <type>
            <type-name name='SocketInet' href='#SocketInet'/>
          </type>
        </receiver-decl>
        <parameter-decl name='y' id='SocketInetDesc.Equals.y' export='no' variable-parameter='no'>
          <type>
            <type-name module='Object' name='Object' href='Object#Object'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name module='#predef' name='BOOLEAN'/>
        </result-type>
      </formal-parameters>
      <redefined-method module='Object' name='Equals' class='Object' href='Object#ObjectDesc.Equals'/>
      <redefined-method module='Object' name='Equals' class='Object' href='Object#ObjectDesc.Equals'/>
    </procedure>
    <procedure name='HashCode' id='SocketInetDesc.HashCode' export='yes'>
      <doc-inherited-from module='Object' name='HashCode' class='Object' href='Object#ObjectDesc.HashCode'/>
      <oberon-doc>
        <summary>Returns a hash code value for the object.</summary>
        <p pad-after='yes' no-indent='yes'>Returns a hash code value for the object.  This method is supported for the benefit of dictionaries such as those provided by <oberon-module href='ADT:Dictionary#'>ADT:Dictionary</oberon-module>..</p>
        <p pad-after='yes' no-indent='no'>The general contract of <oberon-proc href='Object#ObjectDesc.HashCode'>Object.HashCode</oberon-proc> is:</p>
        <itemize pad-after='yes'>
          <itemize-mark><bullet/></itemize-mark>
          <item pad-after='yes'>
            <p pad-after='no' no-indent='yes'>Whenever it is invoked on the same object more than once during an execution of an application, the <oberon-proc href='Object#ObjectDesc.HashCode'>Object.HashCode</oberon-proc> method must consistently return the same integer, provided no information used in equals comparisons on the object is modified.  This integer need not remain consistent from one execution of an application to another execution of the same application.</p>
          </item>
          <item pad-after='yes'>
            <p pad-after='no' no-indent='yes'>If two objects are equal according to the <oberon-proc href='Object#ObjectDesc.Equals'>Object.Equals</oberon-proc> method, then calling the <oberon-proc href='Object#ObjectDesc.HashCode'>Object.HashCode</oberon-proc> method on each of the two objects must produce the same integer result.</p>
          </item>
          <item pad-after='no'>
            <p pad-after='no' no-indent='yes'>It is <emph>not</emph> required that if two objects are unequal according to the <oberon-proc href='Object#ObjectDesc.Equals'>Object.Equals</oberon-proc> method, then calling the <oberon-proc href='Object#ObjectDesc.HashCode'>Object.HashCode</oberon-proc> method on each of the two objects must produce distinct integer results.  However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of dictionaries.</p>
          </item>
        </itemize>
        <p pad-after='yes' no-indent='no'>As much as is reasonably practical, the <oberon-proc href='Object#ObjectDesc.HashCode'>Object.HashCode</oberon-proc> method defined by class <oberon-type href='Object#Object'>Object</oberon-type> does return distinct integers for distinct objects.  (This is typically implemented by converting the internal address of the object into an integer, but this implementation technique is not required.)</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='s' id='SocketInetDesc.HashCode.s' export='no' variable-parameter='no'>
          <type>
            <type-name name='SocketInet' href='#SocketInet'/>
          </type>
        </receiver-decl>
        <result-type>
          <type-name module='Object' name='Hash' href='Object#Hash'/>
        </result-type>
      </formal-parameters>
      <redefined-method module='Object' name='HashCode' class='Object' href='Object#ObjectDesc.HashCode'/>
      <redefined-method module='Object' name='HashCode' class='Object' href='Object#ObjectDesc.HashCode'/>
    </procedure>
    <procedure name='GetSockAddr' id='SocketInetDesc.GetSockAddr' export='yes'>
      <doc-inherited-from module='IO:Address' name='GetSockAddr' class='Socket' href='#SocketDesc.GetSockAddr'/>
      <oberon-doc>
        <summary>Return the socket address <oberon-param href='#SocketInetDesc.GetSockAddr.s'>s</oberon-param>, in the format expected by the functions of libc.</summary>
        <p pad-after='yes' no-indent='yes'>Return the socket address <oberon-param href='#SocketInetDesc.GetSockAddr.s'>s</oberon-param>, in the format expected by the functions of libc.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='s' id='SocketInetDesc.GetSockAddr.s' export='no' variable-parameter='no'>
          <type>
            <type-name name='SocketInet' href='#SocketInet'/>
          </type>
        </receiver-decl>
        <result-type>
          <type-name name='SockAddr' href='#SockAddr'/>
        </result-type>
      </formal-parameters>
      <redefined-method module='IO:Address' name='GetSockAddr' class='Socket' href='#SocketDesc.GetSockAddr'/>
    </procedure>
    <base-class module='IO:Address' class='Socket' href='#Socket'>
      <inherited-method module='IO:Address' name='GetSockAddr' class='Socket' href='#SocketDesc.GetSockAddr'/>
      <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'/>
        <inherited-method module='Object' name='ToString' class='Object' href='Object#ObjectDesc.ToString'/>
      </base-class>
    </base-class>
  </class>
  <class name='UnknownHostException'>
    <type-decl name='UnknownHostException' id='UnknownHostException' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='UnknownHostExceptionDesc' href='#UnknownHostExceptionDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='UnknownHostExceptionDesc' id='UnknownHostExceptionDesc' export='no'>
      <type>
        <record/>
      </type>
    </type-decl>
    <base-class module='IO' class='Error' href='IO#Error'>
      <inherited-method module='IO' name='INIT' class='Error' href='IO#ErrorDesc.INIT'/>
      <base-class module='Exception' class='Exception' href='Exception#Exception'>
        <inherited-method module='Exception' name='GetMessage' class='Exception' href='Exception#ExceptionDesc.GetMessage'/>
        <inherited-method module='Exception' name='Name' class='Exception' href='Exception#ExceptionDesc.Name'/>
        <inherited-method module='Exception' name='WriteBacktrace' class='Exception' href='Exception#ExceptionDesc.WriteBacktrace'/>
      </base-class>
    </base-class>
  </class>
  <module-ref name='Object'>
    <ref-target type='html' relative-uri='../Object.html'/>
  </module-ref>
  <module-ref name='IO'>
    <ref-target type='html' relative-uri='../IO.html'/>
  </module-ref>
  <module-ref name='Exception'>
    <ref-target type='html' relative-uri='../Exception.html'/>
  </module-ref>
  <module-ref name='ADT:Dictionary'>
    <ref-target type='html' relative-uri='../ADT/Dictionary.html'/>
  </module-ref>
</interface-description>
