private static String SetFromProperty(String capname, bool invert, string pattern) {
int min = 0;
int max = _propTable.GetLength(0);
while (min != max) {
int mid = (min + max) / 2;
int res = String.Compare(capname, _propTable[mid,0], StringComparison.Ordinal);
if (res < 0)
max = mid;
else if (res > 0)
min = mid + 1;
else {
String set = _propTable[mid,1];
Debug.Assert(!String.IsNullOrEmpty(set), "Found a null/empty element in RegexCharClass prop table");
if (invert)
{
if (set[0] == Nullchar)
{
return set.Substring(1);
}
return Nullchar + set;
}
else
{
return set;
}
}
}
throw new ArgumentException(SR.GetString(SR.MakeException, pattern, SR.GetString(SR.UnknownProperty, capname)));
}