// Copyright 2017-2018 Alexander Luzgarev
using System;
using System.IO;
namespace MatFileHandler.Tests
{
///
/// A method of writing an IMatFile into a stream that is "unaligned".
///
public class MatFileWritingToUnalignedMemoryStream : MatFileWritingMethod
{
private readonly MatFileWriterOptions? _maybeOptions;
///
/// Initializes a new instance of the class.
///
/// Options for the .
public MatFileWritingToUnalignedMemoryStream(MatFileWriterOptions? maybeOptions)
{
_maybeOptions = maybeOptions;
}
///
public override byte[] WriteMatFile(IMatFile matFile)
{
using var memoryStream = new MemoryStream();
memoryStream.Seek(3, SeekOrigin.Begin);
var matFileWriter = _maybeOptions switch
{
{ } options => new MatFileWriter(memoryStream, options),
_ => new MatFileWriter(memoryStream),
};
matFileWriter.Write(matFile);
var fullArray = memoryStream.ToArray();
var length = fullArray.Length - 3;
var result = new byte[length];
Buffer.BlockCopy(fullArray, 3, result, 0, length);
return result;
}
}
}