100 lines
2.2 KiB
C#
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.");
|
|
}
|
|
}
|
|
}
|