예제 #1
0
 public void Write(IStructWriter writer, RelocationTable item)
 {
     foreach (var(header, entries) in item.Relocations)
     {
         writer.Write(header);
         writer.WriteArray(entries);
     }
 }
 public static ulong WriteArray <T>(this IStructWriter writer, T[] arr, ulong offset) where T : struct
 {
     if (arr == null)
     {
         throw new ArgumentNullException(nameof(arr));
     }
     writer.Offset = offset;
     return(WriteArray(writer, arr));
 }
예제 #3
0
        public void Write(IStructWriter writer, HintNameEntry item)
        {
            writer.Write(item.ExportNamePointerTableIndex);
            writer.WriteArray(Encoding.ASCII.GetBytes(item.Name));
            var lastByteOffset = writer.Write <byte>(0); // String zero termination

            // A trailing zero-pad byte appears after the trailing null byte, if necessary,
            // to align the next entry on an even boundary.
            if ((lastByteOffset + 1) % 2 != 0)
            {
                writer.Write <byte>(0);
            }
        }
        public static ulong WriteArray <T>(this IStructWriter writer, T[] arr) where T : struct
        {
            if (arr == null)
            {
                throw new ArgumentNullException(nameof(arr));
            }

            var writtenOffset = writer.Offset;

            foreach (var item in arr)
            {
                writer.Write(item);
            }
            return(writtenOffset);
        }
 public static ulong Write <T>(this IStructWriter writer, T item, ulong offset) where T : struct
 {
     writer.Offset = offset;
     writer.Write(item);
     return(offset);
 }
예제 #6
0
 public void Write(T representation, IStructWriter writer)
 {
     writer.Write(representation);
 }