Uuid constructor
Uuid(- {Map<String, dynamic> options}
)
Implementation
Uuid({Map<String, dynamic> options}) {
options = (options != null) ? options : Map();
_byteToHex = List<String>(256);
_hexToByte = Map<String, int>();
// Easy number <-> hex conversion
for (var i = 0; i < 256; i++) {
var hex = List<int>();
hex.add(i);
_byteToHex[i] = convert.hex.encode(hex);
_hexToByte[_byteToHex[i]] = i;
}
// Sets initial seedBytes, node, and clock seq based on mathRNG.
var v1PositionalArgs = (options['v1rngPositionalArgs'] != null) ? options['v1rngPositionalArgs'] : [];
var v1NamedArgs = (options['v1rngNamedArgs'] != null)
? options['v1rngNamedArgs'] as Map<Symbol, dynamic>
: const <Symbol, dynamic>{};
_seedBytes = (options['v1rng'] != null)
? Function.apply(options['v1rng'], v1PositionalArgs, v1NamedArgs)
: UuidUtil.mathRNG();
// Set the globalRNG function to mathRNG with the option to set an alternative globally
var gPositionalArgs = (options['grngPositionalArgs'] != null) ? options['grngPositionalArgs'] : [];
var gNamedArgs = (options['grngNamedArgs'] != null)
? options['grngNamedArgs'] as Map<Symbol, dynamic>
: const <Symbol, dynamic>{};
_globalRNG = () {
return (options['grng'] != null)
? Function.apply(options['grng'], gPositionalArgs, gNamedArgs)
: UuidUtil.mathRNG();
};
// Per 4.5, create a 48-bit node id (47 random bits + multicast bit = 1)
_nodeId = [_seedBytes[0] | 0x01, _seedBytes[1], _seedBytes[2], _seedBytes[3], _seedBytes[4], _seedBytes[5]];
// Per 4.2.2, randomize (14 bit) clockseq
_clockSeq = (_seedBytes[6] << 8 | _seedBytes[7]) & 0x3ffff;
}