<?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='StringSearch:SubstringBM' id=''>
  <import-decl name='Object' id='Object' export='no' module='Object'/>
  <import-decl name='StringSearch' id='StringSearch' export='no' module='StringSearch'/>
  <import-decl name='SubstringBF' id='SubstringBF' export='no' module='StringSearch:SubstringBF'/>
  <const-decl name='ignoreCase' id='ignoreCase' export='yes' value='unknown'>
    <oberon-doc>
      <summary>See <oberon-const href='StringSearch#ignoreCase'>StringSearch.ignoreCase</oberon-const>.</summary>
      <p pad-after='yes' no-indent='yes'>See <oberon-const href='StringSearch#ignoreCase'>StringSearch.ignoreCase</oberon-const>.</p>
    </oberon-doc>
  </const-decl>
  <const-decl name='copyString' id='copyString' export='yes' value='unknown'>
    <oberon-doc>
      <summary>See <oberon-const href='StringSearch#copyString'>StringSearch.copyString</oberon-const>.</summary>
      <p pad-after='yes' no-indent='yes'>See <oberon-const href='StringSearch#copyString'>StringSearch.copyString</oberon-const>.</p>
    </oberon-doc>
  </const-decl>
  <var-decl name='factory' id='factory' export='read-only'>
    <type>
      <type-name name='Factory' href='#Factory'/>
    </type>
  </var-decl>
  <procedure name='SearchStart' id='SearchStart' export='yes'>
    <oberon-doc>
      <summary>PRIVATE.</summary>
      <p pad-after='yes' no-indent='yes'>PRIVATE.  Used by module RegexpDFA.</p>
    </oberon-doc>
    <formal-parameters>
      <parameter-decl name='matcher' id='SearchStart.matcher' export='no' variable-parameter='no'>
        <type>
          <type-name name='Matcher' href='#Matcher'/>
        </type>
      </parameter-decl>
      <parameter-decl name='string' id='SearchStart.string' export='no' variable-parameter='no'>
        <type>
          <array>
            <element-type>
              <type-name module='#predef' name='CHAR'/>
            </element-type>
          </array>
        </type>
      </parameter-decl>
      <parameter-decl name='pos' id='SearchStart.pos' export='no' variable-parameter='no'>
        <type>
          <type-name module='#predef' name='LONGINT'/>
        </type>
      </parameter-decl>
      <parameter-decl name='endpos' id='SearchStart.endpos' 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>
    </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='Factory'>
    <type-decl name='Factory' id='Factory' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='FactoryDesc' href='#FactoryDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='FactoryDesc' id='FactoryDesc' export='yes'>
      <oberon-doc>
        <summary>This class implements the Boyer-Moore string searching algorithm.</summary>
        <p pad-after='yes' no-indent='yes'>This class implements the Boyer-Moore string searching algorithm.  With a pattern length of <var>M</var> and a string length of <var>N</var>, a search operation never requires more than <var>M</var>+<var>N</var> character comparisons, and about <var>N</var>/<var>M</var> steps if the alphabet is not small and the pattern is not long.</p>
      </oberon-doc>
      <type>
        <record/>
      </type>
    </type-decl>
    <procedure name='InitFactory' id='InitFactory' export='yes'>
      <formal-parameters>
        <parameter-decl name='f' id='InitFactory.f' export='no' variable-parameter='no'>
          <type>
            <type-name name='Factory' href='#Factory'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='Compile' id='FactoryDesc.Compile' export='yes'>
      <doc-inherited-from module='StringSearch' name='Compile' class='Factory' href='StringSearch#FactoryDesc.Compile'/>
      <oberon-doc>
        <summary>Compile a expression, for example a regular expression pattern, into a <oberon-type href='StringSearch#Matcher'>Matcher</oberon-type> expression object.</summary>
        <p pad-after='yes' no-indent='yes'>Compile a expression, for example a regular expression pattern, into a <oberon-type href='StringSearch#Matcher'>Matcher</oberon-type> expression object.  The matcher object can be used for matching using its <oberon-proc href='StringSearch#MatcherDesc.MatchChars'>Matcher.MatchChars</oberon-proc> and <oberon-proc href='StringSearch#MatcherDesc.SearchChars'>Matcher.SearchChars</oberon-proc> methods.</p>
        <p pad-after='yes' no-indent='no'>The pattern's behaviour can be modified by specifying a <oberon-param href='#FactoryDesc.Compile.flags'>flags</oberon-param> value.  The set can include of the following variables: <oberon-const href='StringSearch#ignoreCase'>ignoreCase</oberon-const>, <oberon-const href='StringSearch#copyString'>copyString</oberon-const>.</p>
        <p pad-after='yes' no-indent='no'>Result is <code>NIL</code> if the given pattern is invalid.</p>
        <pre-cond pad-after='yes'>
          <p pad-after='no' no-indent='yes'>The value of <oberon-param href='#FactoryDesc.Compile.pattern'>pattern</oberon-param> does not contain the character <code>0X</code>.</p>
        </pre-cond>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='f' id='FactoryDesc.Compile.f' export='no' variable-parameter='no'>
          <type>
            <type-name name='Factory' href='#Factory'/>
          </type>
        </receiver-decl>
        <parameter-decl name='pattern' id='FactoryDesc.Compile.pattern' export='no' variable-parameter='no'>
          <type>
            <type-name module='Object' name='String8' href='Object#String8'/>
          </type>
        </parameter-decl>
        <parameter-decl name='flags' id='FactoryDesc.Compile.flags' export='no' variable-parameter='no'>
          <type>
            <type-name module='StringSearch' name='Flags' href='StringSearch#Flags'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name name='Matcher' href='#Matcher'/>
        </result-type>
      </formal-parameters>
      <redefined-method module='StringSearch' name='Compile' class='Factory' href='StringSearch#FactoryDesc.Compile'/>
    </procedure>
    <base-class module='StringSearch' class='Factory' href='StringSearch#Factory'>
      <inherited-method module='StringSearch' name='Compile' class='Factory' href='StringSearch#FactoryDesc.Compile'/>
      <inherited-method module='StringSearch' name='Destroy' class='Factory' href='StringSearch#FactoryDesc.Destroy'/>
      <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='Matcher'>
    <type-decl name='Matcher' id='Matcher' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='MatcherDesc' href='#MatcherDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='MatcherDesc' id='MatcherDesc' export='yes'>
      <type>
        <record/>
      </type>
    </type-decl>
    <procedure name='SearchChars' id='MatcherDesc.SearchChars' export='yes'>
      <doc-inherited-from module='StringSearch' name='SearchChars' class='Matcher' href='StringSearch#MatcherDesc.SearchChars'/>
      <oberon-doc>
        <summary>Scans through string looking for a location where this <oberon-type href='StringSearch#Matcher'>Matcher</oberon-type> produces a match, and return a corresponding <oberon-type href='StringSearch#MatchObject'>MatchObject</oberon-type> instance.</summary>
        <p pad-after='yes' no-indent='yes'>Scans through string looking for a location where this <oberon-type href='StringSearch#Matcher'>Matcher</oberon-type> produces a match, and return a corresponding <oberon-type href='StringSearch#MatchObject'>MatchObject</oberon-type> instance.  Returns <code>NIL</code> if no position in the string matches the pattern.  Note that this is different from finding a zero-length match at some point in the string.</p>
        <p pad-after='yes' no-indent='no'>The <oberon-param href='#MatcherDesc.SearchChars.pos'>pos</oberon-param> and <oberon-param href='#MatcherDesc.SearchChars.endpos'>endpos</oberon-param> parameters have the same meaning as for the <oberon-proc href='StringSearch#MatcherDesc.MatchChars'>Matcher.MatchChars</oberon-proc> method.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='matcher' id='MatcherDesc.SearchChars.matcher' export='no' variable-parameter='no'>
          <type>
            <type-name name='Matcher' href='#Matcher'/>
          </type>
        </receiver-decl>
        <parameter-decl name='string' id='MatcherDesc.SearchChars.string' export='no' variable-parameter='no'>
          <type>
            <array>
              <element-type>
                <type-name module='#predef' name='CHAR'/>
              </element-type>
            </array>
          </type>
        </parameter-decl>
        <parameter-decl name='pos' id='MatcherDesc.SearchChars.pos' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='LONGINT'/>
          </type>
        </parameter-decl>
        <parameter-decl name='endpos' id='MatcherDesc.SearchChars.endpos' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='LONGINT'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name name='MatchObject' href='#MatchObject'/>
        </result-type>
      </formal-parameters>
      <redefined-method module='StringSearch:SubstringBF' name='SearchChars' class='Matcher' href='StringSearch:SubstringBF#MatcherDesc.SearchChars'/>
      <redefined-method module='StringSearch' name='SearchChars' class='Matcher' href='StringSearch#MatcherDesc.SearchChars'/>
    </procedure>
    <procedure name='Search' id='MatcherDesc.Search' export='yes'>
      <doc-inherited-from module='StringSearch' name='Search' class='Matcher' href='StringSearch#MatcherDesc.Search'/>
      <oberon-doc>
        <summary>Like <oberon-proc href='StringSearch#MatcherDesc.SearchChars'>Matcher.SearchChars</oberon-proc>, but works on an instance of <oberon-type href='Object#String8'>Object.String8</oberon-type>.</summary>
        <p pad-after='yes' no-indent='yes'>Like <oberon-proc href='StringSearch#MatcherDesc.SearchChars'>Matcher.SearchChars</oberon-proc>, but works on an instance of <oberon-type href='Object#String8'>Object.String8</oberon-type>.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='matcher' id='MatcherDesc.Search.matcher' export='no' variable-parameter='no'>
          <type>
            <type-name name='Matcher' href='#Matcher'/>
          </type>
        </receiver-decl>
        <parameter-decl name='string' id='MatcherDesc.Search.string' export='no' variable-parameter='no'>
          <type>
            <type-name module='Object' name='String8' href='Object#String8'/>
          </type>
        </parameter-decl>
        <parameter-decl name='pos' id='MatcherDesc.Search.pos' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='LONGINT'/>
          </type>
        </parameter-decl>
        <parameter-decl name='endpos' id='MatcherDesc.Search.endpos' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='LONGINT'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name name='MatchObject' href='#MatchObject'/>
        </result-type>
      </formal-parameters>
      <redefined-method module='StringSearch:SubstringBF' name='Search' class='Matcher' href='StringSearch:SubstringBF#MatcherDesc.Search'/>
      <redefined-method module='StringSearch' name='Search' class='Matcher' href='StringSearch#MatcherDesc.Search'/>
    </procedure>
    <base-class module='StringSearch:SubstringBF' class='Matcher' href='StringSearch:SubstringBF#Matcher'>
      <inherited-method module='StringSearch:SubstringBF' name='Match' class='Matcher' href='StringSearch:SubstringBF#MatcherDesc.Match'/>
      <inherited-method module='StringSearch:SubstringBF' name='MatchChars' class='Matcher' href='StringSearch:SubstringBF#MatcherDesc.MatchChars'/>
      <inherited-method module='StringSearch:SubstringBF' name='Search' class='Matcher' href='StringSearch:SubstringBF#MatcherDesc.Search'/>
      <inherited-method module='StringSearch:SubstringBF' name='SearchChars' class='Matcher' href='StringSearch:SubstringBF#MatcherDesc.SearchChars'/>
      <base-class module='StringSearch' class='Matcher' href='StringSearch#Matcher'>
        <inherited-method module='StringSearch' name='Destroy' class='Matcher' href='StringSearch#MatcherDesc.Destroy'/>
        <inherited-field module='StringSearch' name='flags' class='Matcher' href='StringSearch#MatcherDesc.flags'/>
        <inherited-field module='StringSearch' name='groups' class='Matcher' href='StringSearch#MatcherDesc.groups'/>
        <inherited-field module='StringSearch' name='pattern' class='Matcher' href='StringSearch#MatcherDesc.pattern'/>
        <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>
    </base-class>
  </class>
  <class name='MatchObject'>
    <type-decl name='MatchObject' id='MatchObject' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='MatchObjectDesc' href='#MatchObjectDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='MatchObjectDesc' id='MatchObjectDesc' export='no'>
      <type>
        <record/>
      </type>
    </type-decl>
    <base-class module='StringSearch:SubstringBF' class='MatchObject' href='StringSearch:SubstringBF#MatchObject'>
      <inherited-method module='StringSearch:SubstringBF' name='End' class='MatchObject' href='StringSearch:SubstringBF#MatchObjectDesc.End'/>
      <inherited-method module='StringSearch:SubstringBF' name='Start' class='MatchObject' href='StringSearch:SubstringBF#MatchObjectDesc.Start'/>
      <base-class module='StringSearch' class='MatchObject' href='StringSearch#MatchObject'>
        <inherited-method module='StringSearch' name='Destroy' class='MatchObject' href='StringSearch#MatchObjectDesc.Destroy'/>
        <inherited-field module='StringSearch' name='endpos' class='MatchObject' href='StringSearch#MatchObjectDesc.endpos'/>
        <inherited-field module='StringSearch' name='matcher' class='MatchObject' href='StringSearch#MatchObjectDesc.matcher'/>
        <inherited-field module='StringSearch' name='pos' class='MatchObject' href='StringSearch#MatchObjectDesc.pos'/>
        <inherited-field module='StringSearch' name='string' class='MatchObject' href='StringSearch#MatchObjectDesc.string'/>
        <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>
    </base-class>
  </class>
  <module-ref name='Object'>
    <ref-target type='html' relative-uri='../Object.html'/>
  </module-ref>
  <module-ref name='StringSearch'>
    <ref-target type='html' relative-uri='../StringSearch.html'/>
  </module-ref>
  <module-ref name='StringSearch:SubstringBF'>
    <ref-target type='html' relative-uri='SubstringBF.html'/>
  </module-ref>
</interface-description>
