summaryrefslogtreecommitdiff
path: root/Library/PackageCache/com.unity.textmeshpro@2.0.1/Scripts/Runtime/TMP_TextParsingUtilities.cs
diff options
context:
space:
mode:
authorAndrew Lee <alee14498@protonmail.com>2020-04-19 17:19:32 -0400
committerAndrew Lee <alee14498@protonmail.com>2020-04-19 17:19:32 -0400
commitc55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78 (patch)
treeee4d51c7c1d633e11f46453ef1edd3c77c4ef9f7 /Library/PackageCache/com.unity.textmeshpro@2.0.1/Scripts/Runtime/TMP_TextParsingUtilities.cs
downloadProject-Sandbox-c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78.tar.gz
Project-Sandbox-c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78.tar.bz2
Project-Sandbox-c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78.zip
Inital commit
Diffstat (limited to 'Library/PackageCache/com.unity.textmeshpro@2.0.1/Scripts/Runtime/TMP_TextParsingUtilities.cs')
-rw-r--r--Library/PackageCache/com.unity.textmeshpro@2.0.1/Scripts/Runtime/TMP_TextParsingUtilities.cs136
1 files changed, 136 insertions, 0 deletions
diff --git a/Library/PackageCache/com.unity.textmeshpro@2.0.1/Scripts/Runtime/TMP_TextParsingUtilities.cs b/Library/PackageCache/com.unity.textmeshpro@2.0.1/Scripts/Runtime/TMP_TextParsingUtilities.cs
new file mode 100644
index 0000000..8501803
--- /dev/null
+++ b/Library/PackageCache/com.unity.textmeshpro@2.0.1/Scripts/Runtime/TMP_TextParsingUtilities.cs
@@ -0,0 +1,136 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace TMPro
+{
+ public class TMP_TextParsingUtilities
+ {
+ private static readonly TMP_TextParsingUtilities s_Instance = new TMP_TextParsingUtilities();
+
+ /// <summary>
+ /// Default constructor
+ /// </summary>
+ static TMP_TextParsingUtilities() { }
+
+
+ /// <summary>
+ /// Get a singleton instance of the TextModuleUtilities.
+ /// </summary>
+ public static TMP_TextParsingUtilities instance
+ {
+ get { return s_Instance; }
+ }
+
+
+ /// <summary>
+ /// Function returning the hashcode value of a given string.
+ /// </summary>
+ public static uint GetHashCode(string s)
+ {
+ uint hashCode = 0;
+
+ for (int i = 0; i < s.Length; i++)
+ hashCode = ((hashCode << 5) + hashCode) ^ ToUpperASCIIFast(s[i]);
+
+ return hashCode;
+ }
+
+ public static int GetHashCodeCaseSensitive(string s)
+ {
+ int hashCode = 0;
+
+ for (int i = 0; i < s.Length; i++)
+ hashCode = ((hashCode << 5) + hashCode) ^ s[i];
+
+ return hashCode;
+ }
+
+
+ /// <summary>
+ /// Table used to convert character to lowercase.
+ /// </summary>
+ const string k_LookupStringL = "-------------------------------- !-#$%&-()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[-]^_`abcdefghijklmnopqrstuvwxyz{|}~-";
+
+ /// <summary>
+ /// Table used to convert character to uppercase.
+ /// </summary>
+ const string k_LookupStringU = "-------------------------------- !-#$%&-()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[-]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~-";
+
+
+ /// <summary>
+ /// Get lowercase version of this ASCII character.
+ /// </summary>
+ //[MethodImpl(MethodImplOptions.AggressiveInlining)]
+ public static char ToLowerASCIIFast(char c)
+ {
+ if (c > k_LookupStringL.Length - 1)
+ return c;
+
+ return k_LookupStringL[c];
+ }
+
+
+ /// <summary>
+ /// Get uppercase version of this ASCII character.
+ /// </summary>
+ //[MethodImpl(MethodImplOptions.AggressiveInlining)]
+ public static char ToUpperASCIIFast(char c)
+ {
+ if (c > k_LookupStringU.Length - 1)
+ return c;
+
+ return k_LookupStringU[c];
+ }
+
+
+ /// <summary>
+ /// Get uppercase version of this ASCII character.
+ /// </summary>
+ //[MethodImpl(MethodImplOptions.AggressiveInlining)]
+ public static uint ToUpperASCIIFast(uint c)
+ {
+ if (c > k_LookupStringU.Length - 1)
+ return c;
+
+ return k_LookupStringU[(int)c];
+ }
+
+
+ /// <summary>
+ /// Get lowercase version of this ASCII character.
+ /// </summary>
+ //[MethodImpl(MethodImplOptions.AggressiveInlining)]
+ public static uint ToLowerASCIIFast(uint c)
+ {
+ if (c > k_LookupStringL.Length - 1)
+ return c;
+
+ return k_LookupStringL[(int)c];
+ }
+
+
+ /// <summary>
+ /// Check if Unicode is High Surrogate
+ /// </summary>
+ /// <param name="c"></param>
+ /// <returns></returns>
+ //[MethodImpl(MethodImplOptions.AggressiveInlining)]
+ public static bool IsHighSurrogate(uint c)
+ {
+ return c > 0xD800 && c < 0xDBFF;
+ }
+
+ /// <summary>
+ /// Check if Unicode is Low Surrogate
+ /// </summary>
+ /// <param name="c"></param>
+ /// <returns></returns>
+ //[MethodImpl(MethodImplOptions.AggressiveInlining)]
+ public static bool IsLowSurrogate(uint c)
+ {
+ return c > 0xDC00 && c < 0xDFFF;
+ }
+
+ }
+}