private void Flush() { if (uncompressedStream == null) { return; } fileWriter.Write(MatfileHelper.MatlabDataTypeNumber(typeof(ZlibStream))); byte[] compressedBuffer = ZlibStream.CompressBuffer(uncompressedStream.ToArray()); fileWriter.Write((UInt32)compressedBuffer.Length); fileWriter.Write(compressedBuffer); uncompressedStream = null; }
private void WriteFlags(Type arrayElementDataType) { //write 4 values for flag block //Array flags use uint32 data type writeStream.Write(MatfileHelper.MatlabDataTypeNumber(typeof(UInt32))); //flag block length (always 8) writeStream.Write((int)8); //array class writeStream.Write(MatfileHelper.MatlabArrayTypeNumber(arrayElementDataType)); //padding (always 0) writeStream.Write((int)0); }
private void WriteDimensionsPlaceholder() { //data type contained in dimensions subelement: Int32 writeStream.Write(MatfileHelper.MatlabDataTypeNumber(typeof(Int32))); //always 8 bytes long writeStream.Write((int)8); //store position, so we can later overwrite these 2 placeholders dimensionsStartPosition = writeStream.BaseStream.Position; //placeholder for first dimension for (int i = 0; i < dimensions.Length * MatfileHelper.MatlabBytesPerType(typeof(Int32)); i++) { writeStream.Write((byte)0xee); } totalPaddingAdded += writeStream.AdvanceTo8ByteBoundary(); }
private void WriteName(string name) { //write 4 values for name block //data type contained in name block (always 1) writeStream.Write(MatfileHelper.MatlabDataTypeNumber(typeof(SByte))); //size (without padding!) int nameLength = name.Length; writeStream.Write((int)nameLength); //write name itself for (int i = 0; i < nameLength; i++) { writeStream.Write((byte)name[i]); } totalPaddingAdded += writeStream.AdvanceTo8ByteBoundary(); }