protected void Write(WritingContext Context) { if (bIsFatBinary) { // Write the header Context.Write(Magic); Context.Write(NumArchs); Context.PushPosition(); foreach (FatBinaryArch Arch in Archs) { Context.Write(Arch.CpuType); Context.Write(Arch.CpuSubType); Context.Write(Arch.Offset); Context.Write(Arch.Size); Context.Write(Arch.Align); } int FileIdx = 0; foreach (MachObjectFile MachFile in MachObjectFiles) { Archs[FileIdx].Offset = Convert.ToUInt32(Context.Position); MachFile.Write(Context); Archs[FileIdx].Size = Convert.ToUInt32(Context.Position) - Archs[FileIdx].Offset; FileIdx++; } Context.PopPosition(); // Write updated header. foreach (FatBinaryArch Arch in Archs) { Context.Write(Arch.CpuType); Context.Write(Arch.CpuSubType); Context.Write(Arch.Offset); Context.Write(Arch.Size); Context.Write(Arch.Align); } } else { // Should only be one... MachObjectFiles[0].Write(Context); } }