ParametricCrc constructor

ParametricCrc(
  1. int width,
  2. Comparable _polynomial,
  3. dynamic _initialValue,
  4. dynamic _finalMask, {
  5. bool inputReflected = true,
  6. bool outputReflected = true,
})

Implementation

ParametricCrc(
    int width, this._polynomial, this._initialValue, this._finalMask,
    {bool inputReflected = true, bool outputReflected = true})
    : _inputReflected = inputReflected,
      _outputReflected = outputReflected,
      assert((!shouldUseBigInt(width) &&
              _polynomial is int &&
              _initialValue is int &&
              _finalMask is int) ||
          (shouldUseBigInt(width) &&
              _polynomial is BigInt &&
              _initialValue is BigInt &&
              _finalMask is BigInt)),
      super(width) {
  // TODO
  assert(_inputReflected == _outputReflected,
      'Different input and output reflection flag is not supported yet.');
  assert((width % 8) == 0, 'Bit level checksums not supported yet.');

  final key = Tuple2(_polynomial, _inputReflected);
  _table = _generatedTables.putIfAbsent(
      key, () => createByteLookupTable(width, _polynomial, _inputReflected));
}