<?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:Select' id=''>
  <import-decl name='SYSTEM' id='SYSTEM' export='no' module='SYSTEM'/>
  <import-decl name='Object' id='Object' export='no' module='Object'/>
  <import-decl name='IO' id='IO' export='no' module='IO'/>
  <import-decl name='StdChannels' id='StdChannels' export='no' module='IO:StdChannels'/>
  <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='SelectionKey'>
    <type-decl name='SelectionKey' id='SelectionKey' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='SelectionKeyDesc' href='#SelectionKeyDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='SelectionKeyDesc' id='SelectionKeyDesc' export='no'>
      <type>
        <record/>
      </type>
    </type-decl>
    <base-class module='IO' class='SelectionKey' href='IO#SelectionKey'>
      <inherited-method module='IO' name='Attach' class='SelectionKey' href='IO#SelectionKeyDesc.Attach'/>
      <inherited-method module='IO' name='Cancel' class='SelectionKey' href='IO#SelectionKeyDesc.Cancel'/>
      <inherited-method module='IO' name='SetInterestOps' class='SelectionKey' href='IO#SelectionKeyDesc.SetInterestOps'/>
      <inherited-field module='IO' name='attachment' class='SelectionKey' href='IO#SelectionKeyDesc.attachment'/>
      <inherited-field module='IO' name='channel' class='SelectionKey' href='IO#SelectionKeyDesc.channel'/>
      <inherited-field module='IO' name='fd' class='SelectionKey' href='IO#SelectionKeyDesc.fd'/>
      <inherited-field module='IO' name='interestOps' class='SelectionKey' href='IO#SelectionKeyDesc.interestOps'/>
      <inherited-field module='IO' name='nextKey' class='SelectionKey' href='IO#SelectionKeyDesc.nextKey'/>
      <inherited-field module='IO' name='selector' class='SelectionKey' href='IO#SelectionKeyDesc.selector'/>
      <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='Selector'>
    <type-decl name='Selector' id='Selector' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='SelectorDesc' href='#SelectorDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='SelectorDesc' id='SelectorDesc' export='no'>
      <type>
        <record/>
      </type>
    </type-decl>
    <procedure name='Init' id='Init' export='yes'>
      <formal-parameters>
        <parameter-decl name='s' id='Init.s' export='no' variable-parameter='no'>
          <type>
            <type-name name='Selector' href='#Selector'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='Open' id='Open' export='yes'>
      <formal-parameters>
        <result-type>
          <type-name name='Selector' href='#Selector'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='AddSelectionKey' id='SelectorDesc.AddSelectionKey' export='yes'>
      <doc-inherited-from module='IO' name='AddSelectionKey' class='Selector' href='IO#SelectorDesc.AddSelectionKey'/>
      <oberon-doc>
        <summary>Private method of the selector.</summary>
        <p pad-after='yes' no-indent='yes'>Private method of the selector.  Create and initialize a selection key.  The caller is responsible for adding the key to the selector.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='s' id='SelectorDesc.AddSelectionKey.s' export='no' variable-parameter='no'>
          <type>
            <type-name name='Selector' href='#Selector'/>
          </type>
        </receiver-decl>
        <parameter-decl name='fd' id='SelectorDesc.AddSelectionKey.fd' export='no' variable-parameter='no'>
          <type>
            <type-name module='IO' name='FileDescriptor' href='IO#FileDescriptor'/>
          </type>
        </parameter-decl>
        <parameter-decl name='channel' id='SelectorDesc.AddSelectionKey.channel' export='no' variable-parameter='no'>
          <type>
            <type-name module='IO' name='Channel' href='IO#Channel'/>
          </type>
        </parameter-decl>
        <parameter-decl name='ops' id='SelectorDesc.AddSelectionKey.ops' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='SET'/>
          </type>
        </parameter-decl>
        <parameter-decl name='attachment' id='SelectorDesc.AddSelectionKey.attachment' export='no' variable-parameter='no'>
          <type>
            <type-name module='Object' name='Object' href='Object#Object'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name module='IO' name='SelectionKey' href='IO#SelectionKey'/>
        </result-type>
      </formal-parameters>
      <redefined-method module='IO' name='AddSelectionKey' class='Selector' href='IO#SelectorDesc.AddSelectionKey'/>
    </procedure>
    <procedure name='RemoveSelectionKey' id='SelectorDesc.RemoveSelectionKey' export='yes'>
      <doc-inherited-from module='IO' name='RemoveSelectionKey' class='Selector' href='IO#SelectorDesc.RemoveSelectionKey'/>
      <oberon-doc>
        <summary>Private method of the selector.</summary>
        <p pad-after='yes' no-indent='yes'>Private method of the selector.  Do any bookkeeping require to eliminate the selection key.  The caller is responsible for removing the key from the selector's list of keys.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='s' id='SelectorDesc.RemoveSelectionKey.s' export='no' variable-parameter='no'>
          <type>
            <type-name name='Selector' href='#Selector'/>
          </type>
        </receiver-decl>
        <parameter-decl name='k' id='SelectorDesc.RemoveSelectionKey.k' export='no' variable-parameter='no'>
          <type>
            <type-name module='IO' name='SelectionKey' href='IO#SelectionKey'/>
          </type>
        </parameter-decl>
      </formal-parameters>
      <redefined-method module='IO' name='RemoveSelectionKey' class='Selector' href='IO#SelectorDesc.RemoveSelectionKey'/>
    </procedure>
    <procedure name='Close' id='SelectorDesc.Close' export='yes'>
      <doc-inherited-from module='IO' name='Close' class='Selector' href='IO#SelectorDesc.Close'/>
      <oberon-doc>
        <summary>Cancel all selection keys registered for the selector <oberon-param href='#SelectorDesc.Close.s'>s</oberon-param> and close the selector.</summary>
        <p pad-after='yes' no-indent='yes'>Cancel all selection keys registered for the selector <oberon-param href='#SelectorDesc.Close.s'>s</oberon-param> and close the selector.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='s' id='SelectorDesc.Close.s' export='no' variable-parameter='no'>
          <type>
            <type-name name='Selector' href='#Selector'/>
          </type>
        </receiver-decl>
      </formal-parameters>
      <redefined-method module='IO' name='Close' class='Selector' href='IO#SelectorDesc.Close'/>
    </procedure>
    <procedure name='Select' id='SelectorDesc.Select' export='yes'>
      <doc-inherited-from module='IO' name='Select' class='Selector' href='IO#SelectorDesc.Select'/>
      <oberon-doc>
        <summary>Determine if operations on registered channels are ready.</summary>
        <p pad-after='yes' no-indent='yes'>Determine if operations on registered channels are ready.  The function returns the number of channels with a non-empty ready set.  Result is <samp>0</samp> if no channels are ready or have become ready until the time the specified timeout expires.  If this function is called with a channel already being ready, then it behaves as if a timeout of zero had been requested.</p>
        <p pad-after='yes' no-indent='no'>After a call to <oberon-proc href='IO#SelectorDesc.Select'>Selector.Select</oberon-proc>, the method <oberon-proc href='IO#SelectorDesc.NextKey'>Selector.NextKey</oberon-proc> iterates over all ready channels.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='s' id='SelectorDesc.Select.s' export='no' variable-parameter='no'>
          <type>
            <type-name name='Selector' href='#Selector'/>
          </type>
        </receiver-decl>
        <parameter-decl name='sec' id='SelectorDesc.Select.sec' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='LONGINT'/>
          </type>
        </parameter-decl>
        <parameter-decl name='usec' id='SelectorDesc.Select.usec' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='LONGINT'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name module='#predef' name='LONGINT'/>
        </result-type>
        <exceptions>
          <type-name module='IO' name='Error' href='IO#Error'/>
        </exceptions>
      </formal-parameters>
      <redefined-method module='IO' name='Select' class='Selector' href='IO#SelectorDesc.Select'/>
    </procedure>
    <procedure name='NextKey' id='SelectorDesc.NextKey' export='yes'>
      <doc-inherited-from module='IO' name='NextKey' class='Selector' href='IO#SelectorDesc.NextKey'/>
      <oberon-doc>
        <summary>Return the next selection key of selector <oberon-param href='#SelectorDesc.NextKey.s'>s</oberon-param> with a non-empty intersection of <oberon-field href='IO#SelectionKeyDesc.interestOps'>SelectionKey.interestOps</oberon-field> and <oberon-field href='IO#ChannelDesc.readyOps'>Channel.readyOps</oberon-field>.</summary>
        <p pad-after='yes' no-indent='yes'>Return the next selection key of selector <oberon-param href='#SelectorDesc.NextKey.s'>s</oberon-param> with a non-empty intersection of <oberon-field href='IO#SelectionKeyDesc.interestOps'>SelectionKey.interestOps</oberon-field> and <oberon-field href='IO#ChannelDesc.readyOps'>Channel.readyOps</oberon-field>.  Result is <code>NIL</code> if no such channel exists.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='s' id='SelectorDesc.NextKey.s' export='no' variable-parameter='no'>
          <type>
            <type-name name='Selector' href='#Selector'/>
          </type>
        </receiver-decl>
        <result-type>
          <type-name name='SelectionKey' href='#SelectionKey'/>
        </result-type>
      </formal-parameters>
      <redefined-method module='IO' name='NextKey' class='Selector' href='IO#SelectorDesc.NextKey'/>
    </procedure>
    <base-class module='IO' class='Selector' href='IO#Selector'>
      <inherited-method module='IO' name='AddSelectionKey' class='Selector' href='IO#SelectorDesc.AddSelectionKey'/>
      <inherited-method module='IO' name='Close' class='Selector' href='IO#SelectorDesc.Close'/>
      <inherited-method module='IO' name='NextKey' class='Selector' href='IO#SelectorDesc.NextKey'/>
      <inherited-method module='IO' name='RemoveCanceled' class='Selector' href='IO#SelectorDesc.RemoveCanceled'/>
      <inherited-method module='IO' name='RemoveSelectionKey' class='Selector' href='IO#SelectorDesc.RemoveSelectionKey'/>
      <inherited-method module='IO' name='Select' class='Selector' href='IO#SelectorDesc.Select'/>
      <inherited-field module='IO' name='keys' class='Selector' href='IO#SelectorDesc.keys'/>
      <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>
  <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>
</interface-description>
