private static string RangesToCode3(Pair<uint, uint>[] ranges, int first, int last)
{
//we know that c >= ranges[first].Item1
if (first == last)
return string.Format("(c <= 0x{0:X})", ranges[first].Item2);
else
{
int middle = (first + last + 1) / 2;
string s1 = RangesToCode3(ranges, first, middle - 1);
string s2 = RangesToCode3(ranges, middle, last);
return string.Format("(c < 0x{0:X} ? {1} : {2})", ranges[middle].Item1, s1, s2);
}
}