public void nextChar()

in ui/src/com/jediterm/terminal/SubstringFinder.java [39:81]


  public void nextChar(int x, int y, CharBuffer characters, int index) {
    if (myTokens.size() == 0 || myTokens.get(myTokens.size() - 1).buf != characters) {
      myTokens.add(new TextToken(x, y, characters));
    }

    if (myCurrentLength == myPattern.length()) {
      myCurrentHash -= hashCodeForChar(myTokens.get(0).buf.charAt(myFirstIndex));
      if (myFirstIndex + 1 == myTokens.get(0).buf.length()) {
        myFirstIndex = 0;
        myTokens.remove(0);
      } else {
        myFirstIndex += 1;
      }
    } else {
      myCurrentLength += 1;
      if (myPower == 0) {
        myPower = 1;
      } else {
        myPower *= 31;
      }
    }

    myCurrentHash = 31 * myCurrentHash + charHash(characters.charAt(index));

    if (myCurrentLength == myPattern.length() && myCurrentHash == myPatternHash) {
      FindResult.FindItem item = new FindResult.FindItem(myTokens, myFirstIndex, index, -1);
      String itemText = item.getText();
      boolean matched = myPattern.equals(myIgnoreCase ? itemText.toLowerCase() : itemText);
      if (matched && accept(item)) {
        myResult.patternMatched(myTokens, myFirstIndex, index);
        myCurrentHash = 0;
        myCurrentLength = 0;
        myPower = 0;
        myTokens.clear();
        if (index + 1 < characters.length()) {
          myFirstIndex = index + 1;
          myTokens.add(new TextToken(x, y, characters));
        } else {
          myFirstIndex = 0;
        }
      }
    }
  }