Files
BepInEx/Projects/BanquetForFools/Source/Assembly-CSharp/StringFast.cs
2025-05-21 20:40:04 +02:00

321 lines
7.3 KiB
C#

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, T2>(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, T2, T3>(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, T2, T3, T4>(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<char>();
}
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<char> m_replacement;
// Token: 0x0400168D RID: 5773
private object m_valueControl;
// Token: 0x0400168E RID: 5774
private int m_valueControlInt = int.MinValue;
}