public HtmlNameIndex LookupName(int nameLength, Token.LexicalUnit unit) { InternalDebug.Assert(nameLength >= 0); if (nameLength != 0 && nameLength <= HtmlNameData.MAX_NAME) { var nameHashValue = (short)(((uint)token.CalculateHashLowerCase(unit) ^ HtmlNameData.NAME_HASH_MODIFIER) % HtmlNameData.NAME_HASH_SIZE); var nameIndex = (int)HtmlNameData.nameHashTable[nameHashValue]; if (nameIndex > 0) { do { var name = HtmlNameData.names[nameIndex].name; if (name.Length == nameLength) { if (token.IsContiguous(unit)) { if (name[0] == ParseSupport.ToLowerCase(token.buffer[unit.headOffset])) { if (nameLength == 1 || token.CaseInsensitiveCompareRunEqual(unit.headOffset + 1, name, 1)) { return((HtmlNameIndex)nameIndex); } } } else if (token.CaseInsensitiveCompareEqual(unit, name)) { return((HtmlNameIndex)nameIndex); } } nameIndex++; }while (HtmlNameData.names[nameIndex].hash == nameHashValue); } } return(HtmlNameIndex.Unknown); }
public HtmlNameIndex LookupName(int nameLength, Token.LexicalUnit unit) { if (nameLength != 0 && nameLength <= 14) { short num = (short)((ulong)(token.CalculateHashLowerCase(unit) ^ 221) % 601uL); int num2 = (int)HtmlNameData.nameHashTable[(int)num]; if (num2 > 0) { while (true) { string name = HtmlNameData.names[num2].name; if (name.Length == nameLength) { if (token.IsContiguous(unit)) { if (name[0] == ParseSupport.ToLowerCase(token.buffer[unit.headOffset]) && (nameLength == 1 || token.CaseInsensitiveCompareRunEqual(unit.headOffset + 1, name, 1))) { break; } } else if (token.CaseInsensitiveCompareEqual(unit, name)) { goto Block_7; } } num2++; if (HtmlNameData.names[num2].hash != num) { return(HtmlNameIndex.Unknown); } } return((HtmlNameIndex)num2); Block_7: return((HtmlNameIndex)num2); } } return(HtmlNameIndex.Unknown); }