using System; using System.Collections.Generic; // Token: 0x02000091 RID: 145 public class StringFast { // Token: 0x06000E18 RID: 3608 RVA: 0x0010F638 File Offset: 0x0010D838 public StringFast(int initialCapacity = 32) { this.m_charsCapacity = initialCapacity; this.m_buffer = new char[initialCapacity]; } // Token: 0x06000E19 RID: 3609 RVA: 0x0010F676 File Offset: 0x0010D876 public bool IsEmpty() { if (!this.m_isStringGenerated) { return this.m_bufferPos == 0; } return this.m_stringGenerated == null; } // Token: 0x06000E1A RID: 3610 RVA: 0x0010F693 File Offset: 0x0010D893 public override string ToString() { if (!this.m_isStringGenerated) { this.m_stringGenerated = new string(this.m_buffer, 0, this.m_bufferPos); this.m_isStringGenerated = true; } return this.m_stringGenerated; } // Token: 0x06000E1B RID: 3611 RVA: 0x0010F6C2 File Offset: 0x0010D8C2 public bool IsModified(int newControlValue) { bool flag = newControlValue != this.m_valueControlInt; if (flag) { this.m_valueControlInt = newControlValue; } return flag; } // Token: 0x06000E1C RID: 3612 RVA: 0x0010F6DA File Offset: 0x0010D8DA public bool IsModified(object newControlValue) { bool flag = !newControlValue.Equals(this.m_valueControl); if (flag) { this.m_valueControl = newControlValue; } return flag; } // Token: 0x06000E1D RID: 3613 RVA: 0x0010F6F5 File Offset: 0x0010D8F5 public void Set(string str) { this.Clear(); this.Append(str); this.m_stringGenerated = str; this.m_isStringGenerated = true; } // Token: 0x06000E1E RID: 3614 RVA: 0x0010F714 File Offset: 0x0010D914 public void Set(object str) { this.Set(str.ToString()); } // Token: 0x06000E1F RID: 3615 RVA: 0x0010F722 File Offset: 0x0010D922 public void Set(T1 str1, T2 str2) { this.Clear(); this.Append(str1); this.Append(str2); } // Token: 0x06000E20 RID: 3616 RVA: 0x0010F745 File Offset: 0x0010D945 public void Set(T1 str1, T2 str2, T3 str3) { this.Clear(); this.Append(str1); this.Append(str2); this.Append(str3); } // Token: 0x06000E21 RID: 3617 RVA: 0x0010F775 File Offset: 0x0010D975 public void Set(T1 str1, T2 str2, T3 str3, T4 str4) { this.Clear(); this.Append(str1); this.Append(str2); this.Append(str3); this.Append(str4); } // Token: 0x06000E22 RID: 3618 RVA: 0x0010F7B4 File Offset: 0x0010D9B4 public void Set(params object[] str) { this.Clear(); for (int i = 0; i < str.Length; i++) { this.Append(str[i]); } } // Token: 0x06000E23 RID: 3619 RVA: 0x0010F7E0 File Offset: 0x0010D9E0 public StringFast Clear() { this.m_bufferPos = 0; this.m_isStringGenerated = false; return this; } // Token: 0x06000E24 RID: 3620 RVA: 0x0010F7F4 File Offset: 0x0010D9F4 public StringFast Append(string value) { if (value == null) { value = ""; } this.ReallocateIFN(value.Length); int length = value.Length; for (int i = 0; i < length; i++) { this.m_buffer[this.m_bufferPos + i] = value[i]; } this.m_bufferPos += length; this.m_isStringGenerated = false; return this; } // Token: 0x06000E25 RID: 3621 RVA: 0x0010F856 File Offset: 0x0010DA56 public StringFast Append(object value) { this.Append(value.ToString()); return this; } // Token: 0x06000E26 RID: 3622 RVA: 0x0010F868 File Offset: 0x0010DA68 public StringFast Append(int value) { this.ReallocateIFN(16); if (value < 0) { value = -value; char[] buffer = this.m_buffer; int num = this.m_bufferPos; this.m_bufferPos = num + 1; buffer[num] = 45; } int num2 = 0; do { char[] buffer2 = this.m_buffer; int num = this.m_bufferPos; this.m_bufferPos = num + 1; buffer2[num] = (ushort)(48 + value % 10); value /= 10; num2++; } while (value != 0); for (int i = num2 / 2 - 1; i >= 0; i--) { char c = this.m_buffer[this.m_bufferPos - i - 1]; this.m_buffer[this.m_bufferPos - i - 1] = this.m_buffer[this.m_bufferPos - num2 + i]; this.m_buffer[this.m_bufferPos - num2 + i] = c; } this.m_isStringGenerated = false; return this; } // Token: 0x06000E27 RID: 3623 RVA: 0x0010F92C File Offset: 0x0010DB2C public StringFast Append(float valueF) { double num = (double)valueF; this.m_isStringGenerated = false; this.ReallocateIFN(32); if (num == 0.0) { char[] buffer = this.m_buffer; int num2 = this.m_bufferPos; this.m_bufferPos = num2 + 1; buffer[num2] = 48; return this; } if (num < 0.0) { num = -num; char[] buffer2 = this.m_buffer; int num2 = this.m_bufferPos; this.m_bufferPos = num2 + 1; buffer2[num2] = 45; } int num3 = 0; while (num < 1000000.0) { num *= 10.0; num3++; } long num4 = (long)Math.Round(num); int num5 = 0; bool flag = true; while (num4 != 0L || num3 >= 0) { if (num4 % 10L != 0L || num3 <= 0) { flag = false; } if (!flag) { this.m_buffer[this.m_bufferPos + num5++] = (char)(48L + num4 % 10L); } if (--num3 == 0 && !flag) { this.m_buffer[this.m_bufferPos + num5++] = '.'; } num4 /= 10L; } this.m_bufferPos += num5; for (int i = num5 / 2 - 1; i >= 0; i--) { char c = this.m_buffer[this.m_bufferPos - i - 1]; this.m_buffer[this.m_bufferPos - i - 1] = this.m_buffer[this.m_bufferPos - num5 + i]; this.m_buffer[this.m_bufferPos - num5 + i] = c; } return this; } // Token: 0x06000E28 RID: 3624 RVA: 0x0010FA9C File Offset: 0x0010DC9C public StringFast Replace(string oldStr, string newStr) { if (this.m_bufferPos == 0) { return this; } if (this.m_replacement == null) { this.m_replacement = new List(); } for (int i = 0; i < this.m_bufferPos; i++) { bool flag = false; if (this.m_buffer[i] == oldStr[0]) { int num = 1; while (num < oldStr.Length && this.m_buffer[i + num] == oldStr[num]) { num++; } flag = num >= oldStr.Length; } if (flag) { i += oldStr.Length - 1; if (newStr != null) { for (int j = 0; j < newStr.Length; j++) { this.m_replacement.Add(newStr[j]); } } } else { this.m_replacement.Add(this.m_buffer[i]); } } this.ReallocateIFN(this.m_replacement.Count - this.m_bufferPos); for (int k = 0; k < this.m_replacement.Count; k++) { this.m_buffer[k] = this.m_replacement[k]; } this.m_bufferPos = this.m_replacement.Count; this.m_replacement.Clear(); this.m_isStringGenerated = false; return this; } // Token: 0x06000E29 RID: 3625 RVA: 0x0010FBD8 File Offset: 0x0010DDD8 private void ReallocateIFN(int nbCharsToAdd) { if (this.m_bufferPos + nbCharsToAdd > this.m_charsCapacity) { this.m_charsCapacity = Math.Max(this.m_charsCapacity + nbCharsToAdd, this.m_charsCapacity * 2); this.newChars = new char[this.m_charsCapacity]; this.m_buffer.CopyTo(this.newChars, 0); this.m_buffer = this.newChars; } } // Token: 0x04001686 RID: 5766 private string m_stringGenerated = ""; // Token: 0x04001687 RID: 5767 private bool m_isStringGenerated; // Token: 0x04001688 RID: 5768 private char[] newChars; // Token: 0x04001689 RID: 5769 private char[] m_buffer; // Token: 0x0400168A RID: 5770 private int m_bufferPos; // Token: 0x0400168B RID: 5771 private int m_charsCapacity; // Token: 0x0400168C RID: 5772 private List m_replacement; // Token: 0x0400168D RID: 5773 private object m_valueControl; // Token: 0x0400168E RID: 5774 private int m_valueControlInt = int.MinValue; }