JD2022-TU1/main/tools/lib/AbstractPlugin/InMemoryBlob.cs

100 lines
2.2 KiB
C#

using System.IO;
using System;
namespace Plugin
{
/// <summary>
/// In memory blob allows to serialize objects to memory stream. Eventually, we might add debugging support as well.
/// </summary>
public class InMemoryBlob : IBlob
{
private readonly BinaryWriter _writer;
private readonly BinaryReader _reader;
public InMemoryBlob(Stream stream)
{
_writer = new BinaryWriter(stream);
_reader = new BinaryReader(stream);
}
public void extract(ref bool value)
{
value = _reader.ReadBoolean();
}
public void push(bool value)
{
_writer.Write(value);
}
public void extract(ref int value)
{
value = _reader.ReadInt32();
}
public void push(int value)
{
_writer.Write(value);
}
public void extract(ref float value)
{
value = _reader.ReadSingle();
}
public void push(float value)
{
_writer.Write(value);
}
public void extract(ref uint value)
{
value = _reader.ReadUInt32();
}
public void push(uint value)
{
_writer.Write(value);
}
public void extract(ref string value)
{
value = _reader.ReadString();
}
public void push(string value)
{
_writer.Write(value);
}
public void extractPath(ref string value)
{
value = _reader.ReadString();
}
public void pushPath(string value)
{
_writer.Write(value);
}
public void extractString8(ref string value)
{
value = _reader.ReadString();
}
public void pushString8(string value)
{
_writer.Write(value);
}
byte[] IBlob.extractBinaryArray()
{
throw new Exception("The method or operation is not implemented.");
}
void IBlob.pushBytesArray(byte[] array)
{
throw new Exception("The method or operation is not implemented.");
}
}
}