public static void ValidateSentinel(this BitReader reader, byte[] expectedSentinel) { if (expectedSentinel.Length != 16) { throw new InvalidOperationException("Expected sentinel must be 16 bytes"); } reader.AlignToByte(); ValidateBytes(reader, expectedSentinel); }
internal static DwgHeaderVariables Parse(BitReader reader, DwgVersionId version) { var header = new DwgHeaderVariables(); reader.ValidateSentinel(StartSentinel); reader.StartCrcCheck(); var size = reader.Read_RL(); var startOffset = reader.Offset; header.ReadVariables(reader, version); reader.AlignToByte(); var unreadByteCount = Math.Max(startOffset + size - reader.Offset, 0); var unreadBytes = reader.ReadBytes(unreadByteCount); reader.ValidateCrc(initialValue: InitialCrcValue); reader.ValidateSentinel(EndSentinel); return(header); }