// Token: 0x060002A4 RID: 676 RVA: 0x0000C89C File Offset: 0x0000B89C internal static string Read(Record record, int lengthBits, ref int continueIndex, ref ushort offset) { string empty = string.Empty; UnicodeBytes.ReadState readState = new UnicodeBytes.ReadState(record, lengthBits, continueIndex, offset); UnicodeBytes.Read(readState); continueIndex = readState.ContinueIndex; offset = readState.Offset; return(new string(readState.CharactersRead.ToArray())); }
// Token: 0x060002A5 RID: 677 RVA: 0x0000C8E4 File Offset: 0x0000B8E4 private static void Read(UnicodeBytes.ReadState state) { Bytes recordData = state.GetRecordData(); bool flag = (state.OptionsFlags & 1) == 0; ushort num = (ushort)(recordData.Length - (int)state.Offset); if (state.CharactersRead.Count < (int)state.TotalCharacters) { ushort num2 = (ushort)((int)state.TotalCharacters - state.CharactersRead.Count); if (!flag) { num2 *= 2; } ushort num3; if (num < num2) { num3 = num; } else { num3 = num2; } byte[] array = recordData.Get((int)state.Offset, (int)num3).ByteArray; if (flag) { byte[] array2 = new byte[array.Length * 2]; for (int i = 0; i < array.Length; i++) { array2[2 * i] = array[i]; } array = array2; } state.Offset += num3; num -= num3; state.CharactersRead.AddRange(Encoding.Unicode.GetChars(array)); } bool flag2 = state.CharactersRead.Count == (int)state.TotalCharacters; if (state.HasRichTextSettings && num > 0 && flag2 && state.FormattingRunBytes.Count < (int)(state.FormattingRunCount * 4)) { ushort num3 = Math.Min(num, (ushort)Math.Min((int)(state.FormattingRunCount * 4), 65535)); state.FormattingRunBytes.AddRange(recordData.Get((int)state.Offset, (int)num3).ByteArray); state.Offset += num3; num -= num3; } if (state.HasAsianPhonetics && num > 0 && flag2 && (long)state.PhoneticSettingsBytes.Count < (long)((ulong)state.PhoneticSettingsByteCount)) { ushort num3 = Math.Min(num, (ushort)Math.Min(state.PhoneticSettingsByteCount, 65535U)); state.PhoneticSettingsBytes.AddRange(recordData.Get((int)state.Offset, (int)num3).ByteArray); state.Offset += num3; num -= num3; } if (state.CharactersRead.Count < (int)state.TotalCharacters || state.FormattingRunBytes.Count < (int)(state.FormattingRunCount * 4) || (long)state.PhoneticSettingsBytes.Count < (long)((ulong)state.PhoneticSettingsByteCount)) { state.Continue(true); UnicodeBytes.Read(state); return; } if (num == 0 && state.ContinueIndex + 1 < state.Record.Continues.Count) { state.Continue(false); } }