private static Range GetRange(int start, int end) { Range range = new Range(start, end); range.Length = Codec.GetValidatedSuperCommandSize(range.Length); return(range); }
private static void CreateNodesFromCommand(int command, int byteCount, ChunkNodeCollection nodeCollection, int i, ChunkNode parentNode) { byteCount = Codec.GetValidatedSuperCommandSize(byteCount); if (byteCount > Codec.NormalCommandMax) { int reducedByteCount = Math.Min(byteCount, Codec.NormalCommandMax); nodeCollection.Add(i + reducedByteCount, new ChunkNode(parentNode, command, i, reducedByteCount)); } nodeCollection.Add(i + byteCount, new ChunkNode(parentNode, command, i, byteCount)); }
public Range GetMaxBackRange(int offset) { Range maxBackRange = Range.Empty; byte value = this.buffer[offset]; foreach (int otherOffset in this.byteDictionary[value]) { if (otherOffset >= offset) { break; } int iterator = offset; int backIterator = otherOffset; do { iterator++; backIterator++; }while (iterator < this.buffer.Length && this.buffer[backIterator] == this.buffer[iterator]); int start = otherOffset; int end = backIterator; Range backRange = new Range(start, end); backRange.Length = Codec.GetValidatedSuperCommandSize(backRange.Length); if (backRange.Length >= maxBackRange.Length) { maxBackRange = backRange; } } return(maxBackRange); }
public Range[] GetMaxBackRanges(int offset) { Range maxRange4n = Range.Empty; // Command 4 normal Range maxRange4s = Range.Empty; // Command 4 super Range maxRange6n = Range.Empty; // Command 6 normal Range maxRange6s = Range.Empty; // Command 6 super byte value = this.buffer[offset]; int startPosition = offset - 0xFF; if (startPosition < 0) { startPosition = 0; } foreach (int otherOffset in this.byteDictionary[value]) { if (otherOffset >= offset) { break; } int iterator = offset; int backIterator = otherOffset; do { iterator++; backIterator++; }while (iterator < this.buffer.Length && this.buffer[backIterator] == this.buffer[iterator]); int start = otherOffset; int end = backIterator; Range backRange = new Range(start, end); backRange.Length = Codec.GetValidatedSuperCommandSize(backRange.Length); if (otherOffset < startPosition) { if (backRange.Length >= maxRange4s.Length) { maxRange4s = backRange; } } else { if (backRange.Length >= maxRange6s.Length) { maxRange6s = backRange; } } } maxRange6n = maxRange6s; if (maxRange6n.Length <= Codec.NormalCommandMax) { maxRange6s = Range.Empty; } else { maxRange6n.Length = Codec.NormalCommandMax; } maxRange4n = maxRange4s; if (maxRange4n.Length <= Codec.NormalCommandMax) { maxRange4s = Range.Empty; } else { maxRange4n.Length = Codec.NormalCommandMax; } if (maxRange4n.Length == maxRange6n.Length) { maxRange4n = Range.Empty; } if (maxRange4s.Length == maxRange6s.Length) { maxRange4s = Range.Empty; } return(new[] { maxRange4n, maxRange4s, maxRange6n, maxRange6s }); }