testAndDeclare method
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
}