nextOid function
Returns the next unique object ID.
Implementation
String nextOid() {
final bytes = <int>[],
values = getRandomInts(_intLen);
assert(values.length == _intLen);
var remainding = 0;
l_gen:
for (int i = values.length, bl = 0; --i >= 0;) {
int val = values[i];
if (val < 0)
val = -val;
for (int j = _charPerInt;;) {
bytes.add(_escOid(val % _ccRange));
if (++bl >= oidLength) break l_gen;
val = val ~/ _ccRange;
if (--j == 0) {
remainding = (remainding << 2) + val;
break;
}
}
}
// We don't end OID with [$dot] (for easy parsing in, say, markdown)
if (bytes.last == $dot) {
assert(_ccExtra.last == $dot); //we assumet it so we mod `_ccRange - 1` below
bytes.last = _escOid(remainding % (_ccRange - 1));
}
return String.fromCharCodes(bytes);
}