testAndDeclare method

bool testAndDeclare(
  1. int counter
)

Implementation

bool testAndDeclare(int counter) {
  if (counter < lastProcessed - data.length) {
    return false; // too less
  }

  if (counter > lastProcessed) {
    var shiftRange = counter - lastProcessed;
    Uint8List newData = Uint8List(data.length);
    for (int i = 0; i < newData.length; i++) {
      int b = 0;
      int oldAddressOfCell = i - shiftRange;
      if (oldAddressOfCell >= 0 && oldAddressOfCell < data.length) {
        b = data[oldAddressOfCell];
      }
      newData[i] = b;
    }
    data = newData;
    data[0] = 1;
    lastProcessed = counter;
    return true;
  }

  int index = lastProcessed - counter;
  if (index >= 0 && index < data.length) {
    if (data[index] == 0) {
      data[lastProcessed - counter] = 1;
      return true;
    }
  }

  return false; // already used
}