85 lines
1.8 KiB
C#
85 lines
1.8 KiB
C#
//
|
|
// Author:
|
|
// Jb Evain (jbevain@gmail.com)
|
|
//
|
|
// Copyright (c) 2008 - 2015 Jb Evain
|
|
// Copyright (c) 2008 - 2011 Novell, Inc.
|
|
//
|
|
// Licensed under the MIT/X11 license.
|
|
//
|
|
|
|
using System.IO;
|
|
|
|
namespace MonoFN.Cecil.PE
|
|
{
|
|
internal class BinaryStreamWriter : BinaryWriter
|
|
{
|
|
public int Position
|
|
{
|
|
get { return (int)BaseStream.Position; }
|
|
set { BaseStream.Position = value; }
|
|
}
|
|
public BinaryStreamWriter(Stream stream) : base(stream) { }
|
|
|
|
public void WriteByte(byte value)
|
|
{
|
|
Write(value);
|
|
}
|
|
|
|
public void WriteUInt16(ushort value)
|
|
{
|
|
Write(value);
|
|
}
|
|
|
|
public void WriteInt16(short value)
|
|
{
|
|
Write(value);
|
|
}
|
|
|
|
public void WriteUInt32(uint value)
|
|
{
|
|
Write(value);
|
|
}
|
|
|
|
public void WriteInt32(int value)
|
|
{
|
|
Write(value);
|
|
}
|
|
|
|
public void WriteUInt64(ulong value)
|
|
{
|
|
Write(value);
|
|
}
|
|
|
|
public void WriteBytes(byte[] bytes)
|
|
{
|
|
Write(bytes);
|
|
}
|
|
|
|
public void WriteDataDirectory(DataDirectory directory)
|
|
{
|
|
Write(directory.VirtualAddress);
|
|
Write(directory.Size);
|
|
}
|
|
|
|
public void WriteBuffer(ByteBuffer buffer)
|
|
{
|
|
Write(buffer.buffer, 0, buffer.length);
|
|
}
|
|
|
|
protected void Advance(int bytes)
|
|
{
|
|
BaseStream.Seek(bytes, SeekOrigin.Current);
|
|
}
|
|
|
|
public void Align(int align)
|
|
{
|
|
align--;
|
|
int position = Position;
|
|
int bytes = ((position + align) & ~align) - position;
|
|
|
|
for (int i = 0; i < bytes; i++)
|
|
WriteByte(0);
|
|
}
|
|
}
|
|
} |