internal unsafe int CompareStringToStringPoolStringBinary(String name, int offset) {
int test = 0;
char* pCharValues = unchecked((char*)(m_pDataPool + offset));
// In the case of empty string, pCharValues[0] will have a size of 1, so we should check pCharValues[1] for empty string.
if (pCharValues[1] == 0) {
if(name.Length == 0) {
return (0);
}
return (1);
}
for(int i = 0; (i < (int)pCharValues[0]) && (i < name.Length); i++) {
BCLDebug.Assert(!(name[i] >= 'A' && name[i] <= 'Z'), "name should be in lowercase");
// A little case insensitivity, for ASCII only.
test = name[i] - ((pCharValues[i + 1] <= 'Z' && pCharValues[i + 1] >= 'A') ?
(pCharValues[i + 1] + 'a' - 'A'):
(pCharValues[i + 1]));
if(test != 0) {
break;
}
}
return(test == 0 ? name.Length - (int)pCharValues[0] : test);
}
}