public void add()

in jflex/src/main/java/jflex/core/unicode/IntCharSet.java [151:205]


  public void add(Interval interval) {
    if (DEBUG) assert interval.invariants();

    int size = intervals.size();

    for (int i = 0; i < size; i++) {
      Interval elem = intervals.get(i);

      if (elem.end + 1 >= interval.start) {
        if (elem.contains(interval)) {
          if (DEBUG) assert invariants();
          return;
        }

        if (elem.start > interval.end + 1) {
          intervals.add(i, Interval.copyOf(interval));
          if (DEBUG) assert invariants();
          return;
        }

        if (interval.start < elem.start) {
          elem.start = interval.start;
        }

        if (interval.end <= elem.end) {
          if (DEBUG) assert invariants();
          return;
        }

        elem.end = interval.end;

        i++;
        // delete all x with x.contains( interval.end )
        while (i < size) {
          Interval x = intervals.get(i);
          if (x.start > elem.end + 1) {
            if (DEBUG) assert invariants();
            return;
          }

          if (x.end > elem.end) {
            elem.end = x.end;
          }
          intervals.remove(i);
          size--;
        }

        if (DEBUG) assert invariants();
        return;
      }
    }

    intervals.add(Interval.copyOf(interval));
    if (DEBUG) assert invariants();
  }