string GetExistingStringImpl(char[] buffer, int start, int length, StringHash hash) { var cursor = GetSearchCursor(hash); while (cursor.MightHaveMore) { var value = cursor.NextString(); if (value != null && UnsafeStringComparer.AreEqual(value, buffer, start, length)) { return(value); } } return(null); }
/// <summary> /// Uses the characters from a buffer to check whether a string exists in the set, and retrieve it if so. /// </summary> /// <param name="chars">A pointer to the string to search for.</param> /// <param name="count">The length of the string (in chars).</param> /// <param name="knownHashValue">(optional) If the StringHash has already been calculated, you can provide it here to save re-calculation.</param> /// <returns>If found in the set, the existing string is returned. If not found, null is returned.</returns> public unsafe string GetExistingString(char *chars, int count, StringHash knownHashValue = default(StringHash)) { if (knownHashValue == default(StringHash)) { knownHashValue = StringHash.GetHash(chars, count); } var cursor = GetSearchCursor(knownHashValue); while (cursor.MightHaveMore) { var value = cursor.NextString(); if (value != null && UnsafeStringComparer.AreEqual(value, chars, count)) { return(value); } } return(null); }