System.Text.EncoderFallbackBuffer.InternalGetNextChar C# (CSharp) Method

InternalGetNextChar() private method

private InternalGetNextChar ( ) : char
return char
        internal char InternalGetNextChar()
        {
            char ch = GetNextChar();
            bFallingBack = (ch != 0);
            if (ch == 0) iRecursionCount = 0;
            return ch;
        }

Usage Example

示例#1
0
        internal unsafe override int GetByteCount(char *chars, int charCount, EncoderNLS encoder)
        {
            char  c   = '\0';
            char *ptr = chars + charCount;
            EncoderFallbackBuffer      encoderFallbackBuffer = null;
            EncoderReplacementFallback encoderReplacementFallback;

            if (encoder != null)
            {
                c = encoder.charLeftOver;
                encoderReplacementFallback = (encoder.Fallback as EncoderReplacementFallback);
                if (encoder.InternalHasFallbackBuffer)
                {
                    encoderFallbackBuffer = encoder.FallbackBuffer;
                    if (encoderFallbackBuffer.Remaining > 0 && encoder.m_throwOnOverflow)
                    {
                        throw new ArgumentException(Environment.GetResourceString("Argument_EncoderFallbackNotEmpty", new object[]
                        {
                            this.EncodingName,
                            encoder.Fallback.GetType()
                        }));
                    }
                    encoderFallbackBuffer.InternalInitialize(chars, ptr, encoder, false);
                }
            }
            else
            {
                encoderReplacementFallback = (base.EncoderFallback as EncoderReplacementFallback);
            }
            if (encoderReplacementFallback != null && encoderReplacementFallback.MaxCharCount == 1)
            {
                if (c > '\0')
                {
                    charCount++;
                }
                return(charCount);
            }
            int num = 0;

            if (c > '\0')
            {
                encoderFallbackBuffer = encoder.FallbackBuffer;
                encoderFallbackBuffer.InternalInitialize(chars, ptr, encoder, false);
                encoderFallbackBuffer.InternalFallback(c, ref chars);
            }
            char c2;

            while ((c2 = ((encoderFallbackBuffer == null) ? '\0' : encoderFallbackBuffer.InternalGetNextChar())) != '\0' || chars < ptr)
            {
                if (c2 == '\0')
                {
                    c2 = *chars;
                    chars++;
                }
                if (c2 > '\u007f')
                {
                    if (encoderFallbackBuffer == null)
                    {
                        if (encoder == null)
                        {
                            encoderFallbackBuffer = this.encoderFallback.CreateFallbackBuffer();
                        }
                        else
                        {
                            encoderFallbackBuffer = encoder.FallbackBuffer;
                        }
                        encoderFallbackBuffer.InternalInitialize(ptr - charCount, ptr, encoder, false);
                    }
                    encoderFallbackBuffer.InternalFallback(c2, ref chars);
                }
                else
                {
                    num++;
                }
            }
            return(num);
        }
All Usage Examples Of System.Text.EncoderFallbackBuffer::InternalGetNextChar