public void ReadRequestedStrings(IReader reader, Pointer baseLocation, CachedStringTable output) { uint baseOffset = baseLocation.AsOffset(); int lastEnd = -1; foreach (int offset in _requestedStrings) { if (offset <= lastEnd) continue; reader.SeekTo(baseOffset + offset); string str = reader.ReadAscii(); output.CacheString(offset, str); lastEnd = offset + str.Length; } }
internal void ResolveStrings(CachedStringTable requestedStrings) { StringValue = requestedStrings.GetString(_stringTableOffset); }
private CachedStringTable LoadStrings(StructureValueCollection values, IReader reader, StringTableReader stringReader, MetaAddressConverter addrConverter) { int stringsSize = (int)values.GetNumber("script string table size"); Pointer stringsLocation = new Pointer(values.GetNumber("script string table address"), addrConverter); CachedStringTable result = new CachedStringTable(); stringReader.ReadRequestedStrings(reader, stringsLocation, result); return result; }