/// <inheritdoc /> public bool TryLookup(uint key, [MaybeNullWhen(false)] out string str) { if (!_locations.TryGetValue(key, out var loc)) { str = default; return(false); } switch (_type) { case StringsFileFormat.Normal: str = BinaryStringUtility.ParseUnknownLengthString(this._stringData.Slice(loc)); break; case StringsFileFormat.LengthPrepended: try { str = BinaryStringUtility.ParsePrependedString(this._stringData.Slice(loc), 4); } catch (ArgumentOutOfRangeException) { throw new ArgumentOutOfRangeException("Strings file malformed."); } break; default: throw new NotImplementedException(); } return(true); }
private string Get(int loc) { switch (_type) { case StringsFileFormat.Normal: return(BinaryStringUtility.ParseUnknownLengthString(this._stringData.Slice(loc))); case StringsFileFormat.LengthPrepended: try { return(BinaryStringUtility.ParsePrependedString(this._stringData.Slice(loc), 4)); } catch (ArgumentOutOfRangeException) { throw new ArgumentOutOfRangeException("Strings file malformed."); } default: throw new NotImplementedException(); } }