68 lines
1.8 KiB
C#
68 lines
1.8 KiB
C#
using System.IO;
|
|
using System.Net.Http.Headers;
|
|
|
|
namespace BITKit
|
|
{
|
|
|
|
public class BinaryBuilder
|
|
{
|
|
private readonly MemoryStream _memoryStream = new();
|
|
internal readonly BinaryWriter writer;
|
|
|
|
private BinaryBuilder()
|
|
{
|
|
writer = new BinaryWriter(_memoryStream);
|
|
}
|
|
public static BinaryBuilder Create()
|
|
{
|
|
return new BinaryBuilder();
|
|
}
|
|
|
|
public BinaryBuilder WriteObject(object obj)
|
|
{
|
|
BITBinary.Write(writer,obj);
|
|
return this;
|
|
}
|
|
public byte[] Build()
|
|
{
|
|
writer.Dispose();
|
|
var _bytes = _memoryStream.ToArray();
|
|
_memoryStream.Close();
|
|
return _memoryStream.ToArray();
|
|
}
|
|
}
|
|
public static class BinaryBuilderExtensions
|
|
{
|
|
public static BinaryBuilder Write(this BinaryBuilder self, bool value)
|
|
{
|
|
self.writer.Write(value);
|
|
return self;
|
|
}
|
|
public static BinaryBuilder Write(this BinaryBuilder self, float value)
|
|
{
|
|
self.writer.Write(value);
|
|
return self;
|
|
}
|
|
public static BinaryBuilder Write(this BinaryBuilder self, int value)
|
|
{
|
|
self.writer.Write(value);
|
|
return self;
|
|
}
|
|
public static BinaryBuilder Write(this BinaryBuilder self, long value)
|
|
{
|
|
self.writer.Write(value);
|
|
return self;
|
|
}
|
|
public static BinaryBuilder Write(this BinaryBuilder self, byte value)
|
|
{
|
|
self.writer.Write(value);
|
|
return self;
|
|
}
|
|
public static BinaryBuilder Write(this BinaryBuilder self, string value)
|
|
{
|
|
self.writer.Write(value);
|
|
return self;
|
|
}
|
|
}
|
|
}
|