/* Copyright 2015 Google Inc. All Rights Reserved. | |
Distributed under MIT license. | |
See file LICENSE for detail or copy at https://opensource.org/licenses/MIT | |
*/ | |
namespace Org.Brotli.Dec | |
{ | |
/// <summary>A set of utility methods.</summary> | |
internal sealed class Utils | |
{ | |
private static readonly byte[] ByteZeroes = new byte[1024]; | |
private static readonly int[] IntZeroes = new int[1024]; | |
/// <summary>Fills byte array with zeroes.</summary> | |
/// <remarks> | |
/// Fills byte array with zeroes. | |
/// <p> Current implementation uses | |
/// <see cref="System.Array.Copy(object, int, object, int, int)"/> | |
/// , so it should be used for length not | |
/// less than 16. | |
/// </remarks> | |
/// <param name="dest">array to fill with zeroes</param> | |
/// <param name="offset">the first byte to fill</param> | |
/// <param name="length">number of bytes to change</param> | |
internal static void FillWithZeroes(byte[] dest, int offset, int length) | |
{ | |
int cursor = 0; | |
while (cursor < length) | |
{ | |
int step = System.Math.Min(cursor + 1024, length) - cursor; | |
System.Array.Copy(ByteZeroes, 0, dest, offset + cursor, step); | |
cursor += step; | |
} | |
} | |
/// <summary>Fills int array with zeroes.</summary> | |
/// <remarks> | |
/// Fills int array with zeroes. | |
/// <p> Current implementation uses | |
/// <see cref="System.Array.Copy(object, int, object, int, int)"/> | |
/// , so it should be used for length not | |
/// less than 16. | |
/// </remarks> | |
/// <param name="dest">array to fill with zeroes</param> | |
/// <param name="offset">the first item to fill</param> | |
/// <param name="length">number of item to change</param> | |
internal static void FillWithZeroes(int[] dest, int offset, int length) | |
{ | |
int cursor = 0; | |
while (cursor < length) | |
{ | |
int step = System.Math.Min(cursor + 1024, length) - cursor; | |
System.Array.Copy(IntZeroes, 0, dest, offset + cursor, step); | |
cursor += step; | |
} | |
} | |
} | |
} |