nextOid function

String nextOid()

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);
}