// Utilities for writing. /// <summary> /// Initialize the header and writer for writing. The value of fpMin and header /// should be passed to the other utility methods here. /// </summary> public static void BeginWrite(BinaryWriter writer, out long fpMin, out ModelHeader header) { Contracts.Assert(Marshal.SizeOf(typeof(ModelHeader)) == Size); Contracts.CheckValue(writer, nameof(writer)); fpMin = writer.FpCur(); header = default(ModelHeader); header.Signature = SignatureValue; header.VerWritten = VerWrittenCur; header.VerReadable = VerReadableCur; header.FpModel = ModelHeader.Size; // Write a blank header - the correct information is written by WriteHeaderAndTail. byte[] headerBytes = new byte[ModelHeader.Size]; writer.Write(headerBytes); Contracts.CheckIO(writer.FpCur() == fpMin + ModelHeader.Size); }