Example #1
0
    private static string GetFunctionBodyGetKnownMethodIndex(ulong mask)
    {
        var shifts = HttpUtilitiesGeneratorHelpers.GetShifts(mask);

        var maskHexString = HttpUtilitiesGeneratorHelpers.MaskToHexString(mask);

        string bodyString;

        if (shifts.Length > 0)
        {
            var bitsCount = HttpUtilitiesGeneratorHelpers.CountBits(mask);

            var tmpReturn = string.Empty;
            foreach (var item in shifts)
            {
                if (tmpReturn.Length > 0)
                {
                    tmpReturn += " | ";
                }

                tmpReturn += string.Format(CultureInfo.InvariantCulture, "(tmp >> {1})", HttpUtilitiesGeneratorHelpers.MaskToHexString(item.Mask), item.Shift);
            }

            var mask2 = (ulong)(Math.Pow(2, bitsCount) - 1);

            string returnString = string.Format(CultureInfo.InvariantCulture, "return ({0}) & {1};", tmpReturn, HttpUtilitiesGeneratorHelpers.MaskToHexString(mask2));

            bodyString = string.Format(CultureInfo.InvariantCulture, "            const int magicNumer = {0};\r\n            var tmp = (int)value & magicNumer;\r\n            {1}", HttpUtilitiesGeneratorHelpers.MaskToHexString(mask), returnString);
        }
        else
        {
            bodyString = string.Format(CultureInfo.InvariantCulture, "return (int)(value & {0});", maskHexString);
        }

        return(bodyString);
    }