handle_last method

void handle_last()

Implementation

void handle_last() {
  if (this.value == null) {
    return;
  }
  var _last = this.value!;
  var max_rles = max_poses[_last.part];
  if (max_rles == null) {
    max_rles = []; // List<int>.empty();
    max_poses[_last.part] = max_rles;
  }
  for (int idx in max_rles) {
    final prev = this.ret[idx];
    if (prev.cnt > _last.cnt) {
      // println!(">>>>> last={:?}->{}->prev={:?}", _last, idx, prev);
      _last.max = false;
    } else if (prev.cnt == _last.cnt) {
      // nothing
    } else if (prev.cnt < _last.cnt) {
      // println!("<<<<< last={:?}->{}->prev={:?}", _last, idx, prev);
      //this.ret[idx].max = false;
      prev.max = false;
    }
  }
  //println!("push:{}:{:?}", this.ret.len(), _last);
  max_rles.add(this.ret.length);
  _last.pos = this.ret.length;
  this.ret.add(_last);
}