private bool FindEscape(GXDebugStream stream, GXDebugStream.ESCAPE escape, IList <GXDebugError> errors) { int byteValue; int escapeCount = 0; long errLoc = stream.Position; while ((byteValue = stream.ReadRaw()) != -1) { if (byteValue == 0xFF) { escapeCount++; if (escapeCount == 3) { byteValue = stream.ReadRaw(); if (byteValue != -1 && (byte)byteValue == escape.ToByte()) { return(true); } else { if (errLoc != -1) { errors.Add(new GXDebugError(errLoc, $"Cannot find escape sequence. Looking for { escape.ToByte() }, got { byteValue }")); errLoc = -1; } escapeCount = 0; } } } else { escapeCount = 0; } } if (stream.Position != errLoc && errLoc != -1) { errors.Add(new GXDebugError(errLoc, "Cannot find escape sequence")); } return(false); }
public static byte ToByte(this GXDebugStream.ESCAPE escape) { return((byte)escape); }