Microsoft.Automata.Internal.Utilities.HelperPredicates.RangesToCode2 C# (CSharp) Method

RangesToCode2() private static method

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