Exemplo n.º 1
0
 internal void Reset()
 {
     textLineCount  = 0;
     textLineLength = 0;
     lineCount      = 0;
     lineLength     = 0;
     inLineState    = FtLineState.Out;
 }
Exemplo n.º 2
0
        internal LineParser(SerializationCore myCore, CharReader myCharReader)
        {
            core       = myCore;
            charReader = myCharReader;

            // Reset
            textLineCount  = 0;
            textLineLength = 0;
            lineCount      = 0;
            lineLength     = 0;
            inLineState    = FtLineState.Out;
        }
Exemplo n.º 3
0
        internal void ParseChar(char aChar, bool endOfLineToBeEmbedded, out LineEndedType lineEndedType)
        {
            switch (inLineState)
            {
            case FtLineState.InNextTextOut:
                Debug.Assert(aChar == LineFeedChar && endOfLineToBeEmbedded, ((int)(InternalError.LineParser_ParseChar_InNextTextOut)).ToString());
                inLineState   = FtLineState.InTextOut;
                lineEndedType = LineEndedType.Not;
                break;

            case FtLineState.InTextOut:
                textLineCount++;
                textLineLength = 0;
                inLineState    = FtLineState.In;
                ParseInChar(aChar, endOfLineToBeEmbedded, out lineEndedType);
                break;

            case FtLineState.In:
                ParseInChar(aChar, endOfLineToBeEmbedded, out lineEndedType);
                break;

            case FtLineState.InPendingNextLineFeed:
                Debug.Assert(aChar == LineFeedChar && !endOfLineToBeEmbedded, ((int)(InternalError.LineParser_ParseChar_InPendingNextLineFeed)).ToString());
                inLineState   = FtLineState.Out;
                lineEndedType = LineEndedType.Continued;
                break;

            case FtLineState.Out:
                lineCount++;
                lineLength = 0;
                textLineCount++;
                textLineLength = 0;
                inLineState    = FtLineState.In;
                ParseInChar(aChar, endOfLineToBeEmbedded, out lineEndedType);
                break;

            default:
                throw FtInternalException.Create(InternalError.LineParser_ParseChar_Unsupported_InLineState, inLineState.ToString());
            }

            lineLength++;
            textLineLength++;
        }
Exemplo n.º 4
0
 internal void ExitLine()
 {
     Debug.Assert(InLine, "LineParser.ExitLine() called when not In Line");
     inLineState = FtLineState.Out;
 }
Exemplo n.º 5
0
        private void ParseInChar(char aChar, bool embedEndOfLine, out LineEndedType lineEndedType)
        {
            switch (core.EndOfLineType)
            {
            case FtEndOfLineType.Auto:
                switch (aChar)
                {
                case CarriageReturnChar:
                    if (embedEndOfLine)
                    {
                        if (charReader.Peek() == LineFeedChar)
                        {
                            inLineState = FtLineState.InNextTextOut;
                        }
                        else
                        {
                            inLineState = FtLineState.InTextOut;
                        }
                        lineEndedType = LineEndedType.Not;
                    }
                    else
                    {
                        inLineState   = (charReader.Peek() == LineFeedChar) ? FtLineState.InPendingNextLineFeed : FtLineState.Out;
                        lineEndedType = LineEndedType.Initiated;
                    }
                    break;

                case LineFeedChar:
                    if (embedEndOfLine)
                    {
                        inLineState   = FtLineState.InTextOut;
                        lineEndedType = LineEndedType.Not;
                    }
                    else
                    {
                        inLineState   = FtLineState.Out;
                        lineEndedType = LineEndedType.Initiated;
                    }
                    break;

                default:
                    lineLength++;
                    textLineLength++;
                    lineEndedType = LineEndedType.Not;
                    break;
                }
                break;

            case FtEndOfLineType.CrLf:
                if (aChar != CarriageReturnChar)
                {
                    lineEndedType = LineEndedType.Not;
                }
                else
                {
                    if (embedEndOfLine)
                    {
                        if (charReader.Peek() == LineFeedChar)
                        {
                            inLineState = FtLineState.InNextTextOut;
                        }
                        else
                        {
                            inLineState = FtLineState.InTextOut;
                        }
                        lineEndedType = LineEndedType.Not;
                    }
                    else
                    {
                        if (charReader.Peek() != LineFeedChar)
                        {
                            lineEndedType = LineEndedType.Not;
                        }
                        else
                        {
                            inLineState   = FtLineState.InPendingNextLineFeed;
                            lineEndedType = LineEndedType.Initiated;
                        }
                    }
                }
                break;

            case FtEndOfLineType.Char:
                if (embedEndOfLine)
                {
                    inLineState   = FtLineState.InTextOut;
                    lineEndedType = LineEndedType.Not;
                }
                else
                {
                    inLineState   = FtLineState.Out;
                    lineEndedType = LineEndedType.Initiated;
                }
                break;

            default:
                throw FtInternalException.Create(InternalError.LineParser_ParseInChar_UnsupportedEndOfLineType, core.EndOfLineType.ToString());
            }
        }