/// <summary> /// Creates a new <see cref="IxxHash"/> instance with the specified configuration. /// </summary> /// <param name="config">Configuration to use when constructing the instance.</param> /// <returns>A <see cref="IxxHash"/> instance.</returns> public IxxHash Create(IxxHashConfig config) { if (config == null) { throw new ArgumentNullException(nameof(config)); } return(new xxHash_Implementation(config)); }
/// <summary> /// Initializes a new instance of the <see cref="xxHash_Implementation" /> class. /// </summary> /// <param name="config">The configuration to use for this instance.</param> /// <exception cref="ArgumentNullException"><paramref name="config"/></exception> /// <exception cref="ArgumentOutOfRangeException"><paramref name="config"/>.<see cref="IxxHashConfig.HashSizeInBits"/>;<paramref name="config"/>.<see cref="IxxHashConfig.HashSizeInBits"/> must be contained within xxHash.ValidHashSizes</exception> public xxHash_Implementation(IxxHashConfig config) { if (config == null) { throw new ArgumentNullException(nameof(config)); } _config = config.Clone(); if (!_validHashSizes.Contains(_config.HashSizeInBits)) { throw new ArgumentOutOfRangeException($"{nameof(config)}.{nameof(config.HashSizeInBits)}", _config.HashSizeInBits, $"{nameof(config)}.{nameof(config.HashSizeInBits)} must be contained within xxHash.ValidHashSizes"); } }