public void WriteWord(long offset, ushort value)
{
var localOffset = GetLocalOffset((uint)offset);
var segment = segments[GetSegmentNo((uint)offset)];
if(localOffset == SegmentSize - 1) // cross segment write
{
var bytes = BitConverter.GetBytes(value);
Marshal.WriteByte(segment + localOffset, bytes[0]);
var secondSegment = segments[GetSegmentNo((uint)(offset + 1))];
Marshal.WriteByte(secondSegment, bytes[1]);
return;
}
Marshal.WriteInt16(segment + localOffset, unchecked((short)value));
}