Ejemplo n.º 1
0
  /**
   * Sets the specified range of characters in the character set so that subsequent calls to {@code
   * test} for characters within the range will return {@code true}.
   *
   * @see #union
   */
  private void set(Range r) {
    if (ranges.isEmpty()) {
      ranges.add(r);
      refreshAsciiSet();
      return;
    }

    int pos = find(r.first);
    if (((pos != ranges.size()) && ranges.get(pos).includes(r))
        || ((pos != 0) && ranges.get(pos - 1).includes(r))) {
      return;
    }
    if ((pos != 0) && ranges.get(pos - 1).mergeable(r)) {
      merge(pos - 1, r);
    } else if ((pos != ranges.size()) && ranges.get(pos).mergeable(r)) {
      merge(pos, r);
    } else {
      ranges.add(pos, r);
    }
    refreshAsciiSet();
  }