unsafe internal int GetDataItemFromRegionName(String name) {
BCLDebug.Assert(name!=null,"CultureTable.GetDataItemFromRegionName(): name!=null");
Object dataItem;
if ((dataItem = hashByRegionName[name]) != null) {
return (Int32)dataItem;
}
int left = 0;
int right = m_pCultureHeader->numRegionNames - 1;
while (left <= right) {
int mid = (left+right)/2;
int result = CompareStringToStringPoolStringBinary(name, m_pRegionNameIndex[mid].strOffset);
if (result == 0) {
int index = m_pRegionNameIndex[mid].dataItemIndex;
hashByRegionName[name] = index;
// m_pRegionNameIndex[i].dateItemIndex is the record number for
// the information of a culture.
return (index);
}
if (result < 0) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return (-1);
}