Example #1
0
        private static unsafe int CompareStringOrdinalAscii(char *s1, int count1, char *s2, int count2, bool ignoreCase)
        {
            int countMin = Math.Min(count1, count2);

            {
                for (int i = 0; i < countMin; i++)
                {
                    char c1 = ignoreCase ? TextInfo.ChangeCaseAscii(s1[i]) : s1[i];
                    char c2 = ignoreCase ? TextInfo.ChangeCaseAscii(s2[i]) : s2[i];

                    if (c1 < c2)
                    {
                        return(-1);
                    }
                    else if (c1 > c2)
                    {
                        return(1);
                    }
                }
            }

            if (count1 == count2)
            {
                return(0);
            }
            if (count1 > count2)
            {
                return(1);
            }

            return(-1);
        }
Example #2
0
        private unsafe int GetHashCodeOfStringCore(string source, CompareOptions options)
        {
            Contract.Assert(source != null);
            Contract.Assert((options & (CompareOptions.Ordinal | CompareOptions.OrdinalIgnoreCase)) == 0);

            // TODO: Implement This Fully.
            int hash = 5381;

            unchecked
            {
                for (int i = 0; i < source.Length; i++)
                {
                    hash = ((hash << 5) + hash) + TextInfo.ChangeCaseAscii(source[i]);
                }
            }

            return(hash);
        }
Example #3
0
        // PAL ends here

        private static bool StringEqualsAscii(string s1, string s2, bool ignoreCase = true)
        {
            if (s1.Length != s2.Length)
            {
                return(false);
            }

            for (int i = 0; i < s1.Length; i++)
            {
                char c1 = ignoreCase ? TextInfo.ChangeCaseAscii(s1[i]) : s1[i];
                char c2 = ignoreCase ? TextInfo.ChangeCaseAscii(s2[i]) : s2[i];

                if (c1 != c2)
                {
                    return(false);
                }
            }

            return(true);
        }