Ejemplo n.º 1
0
        // comparison stops at null terminator, terminator parameter, or end-of-block -- whichever comes first.
        internal bool Utf8NullTerminatedEquals(int offset, string text, MetadataStringDecoder utf8Decoder, char terminator, bool ignoreCase)
        {
            FastComparisonResult result = Utf8NullTerminatedFastCompare(offset, text, 0, out _, terminator, ignoreCase);

            if (result == FastComparisonResult.Inconclusive)
            {
                string decoded = PeekUtf8NullTerminated(offset, null, utf8Decoder, out _, terminator);
                return(decoded.Equals(text, ignoreCase ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal));
            }

            return(result == FastComparisonResult.Equal);
        }
Ejemplo n.º 2
0
        // comparison stops at null terminator, terminator parameter, or end-of-block -- whichever comes first.
        internal bool Utf8NullTerminatedStartsWith(int offset, string text, MetadataStringDecoder utf8Decoder, char terminator, bool ignoreCase)
        {
            FastComparisonResult result = Utf8NullTerminatedFastCompare(offset, text, 0, out _, terminator, ignoreCase);

            switch (result)
            {
            case FastComparisonResult.Equal:
            case FastComparisonResult.BytesStartWithText:
                return(true);

            case FastComparisonResult.Unequal:
            case FastComparisonResult.TextStartsWithBytes:
                return(false);

            default:
                Debug.Assert(result == FastComparisonResult.Inconclusive);
                string decoded = PeekUtf8NullTerminated(offset, null, utf8Decoder, out _, terminator);
                return(decoded.StartsWith(text, ignoreCase ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal));
            }
        }
Ejemplo n.º 3
0
        // comparison stops at null terminator, terminator parameter, or end-of-block -- whichever comes first.
        internal bool Utf8NullTerminatedStartsWith(int offset, string text, MetadataStringDecoder utf8Decoder, char terminator = '\0')
        {
            FastComparisonResult result = Utf8NullTerminatedFastCompare(offset, text, terminator);

            switch (result)
            {
            case FastComparisonResult.Equal:
            case FastComparisonResult.IsPrefix:
                return(true);

            case FastComparisonResult.Unequal:
                return(false);

            default:
                Debug.Assert(result == FastComparisonResult.Inconclusive);
                int    bytesRead;
                string decoded = PeekUtf8NullTerminated(offset, null, utf8Decoder, out bytesRead, terminator);
                return(decoded.StartsWith(text, StringComparison.Ordinal));
            }
        }