protected override void SaveInternal(VirtualWriter wtr) { root = Location.Address; ComputeOffset(); wtr.Write(c); wtr.WriteStamp(stamp); wtr.Write(maVer); wtr.Write(miVer); wtr.Write(noName); wtr.Write(noID); foreach (ResourceEntry i in es) { if ((i.Type & EntryType.Name) == EntryType.Name) { uint strOffset = strO[i.Name]; wtr.Write(strOffset | 0x80000000); wtr.SaveLocation(); wtr.SetPosition(root + strOffset); wtr.WriteUnicodeString(i.Name); wtr.LoadLocation(); } else if ((i.Type & EntryType.ID) == EntryType.ID) { wtr.Write(i.ID); } if ((i.Type & EntryType.Subdirectory) == EntryType.Subdirectory) { uint dirOffset = dirO[i.Data as Subdirectory]; wtr.Write(dirOffset | 0x80000000); wtr.SaveLocation(); wtr.SetPosition(root + dirOffset); (i.Data as Subdirectory).Save(wtr, this); wtr.LoadLocation(); } else if ((i.Type & EntryType.DataEntry) == EntryType.DataEntry) { uint dateOffset = dateO[i.Data as DataEntry]; wtr.Write(dateOffset); wtr.SaveLocation(); wtr.SetPosition(root + dateOffset); (i.Data as DataEntry).Save(wtr, this); wtr.LoadLocation(); } } }
internal void Save(VirtualWriter wtr, ResourceDirectory dir) { wtr.Write(c); wtr.WriteStamp(stamp); wtr.Write(maVer); wtr.Write(miVer); wtr.Write(noName); wtr.Write(noID); foreach (ResourceEntry i in Items) { if ((i.Type & EntryType.Name) == EntryType.Name) { uint strOffset = dir.strO[i.Name]; wtr.Write(strOffset | 0x80000000); wtr.SaveLocation(); wtr.SetPosition(dir.root + strOffset); wtr.WriteUnicodeString(i.Name); wtr.LoadLocation(); } else if ((i.Type & EntryType.ID) == EntryType.ID) { wtr.Write(i.ID); } if ((i.Type & EntryType.Subdirectory) == EntryType.Subdirectory) { uint dirOffset = dir.dirO[i.Data as Subdirectory]; wtr.Write(dirOffset | 0x80000000); wtr.SaveLocation(); wtr.SetPosition(dir.root + dirOffset); (i.Data as Subdirectory).Save(wtr, dir); wtr.LoadLocation(); } else if ((i.Type & EntryType.DataEntry) == EntryType.DataEntry) { uint dateOffset = dir.dateO[i.Data as DataEntry]; wtr.Write(dateOffset); wtr.SaveLocation(); wtr.SetPosition(dir.root + dateOffset); (i.Data as DataEntry).Save(wtr, dir); wtr.LoadLocation(); } } }