protected void ProcessChar(char currentCharacter)
{
switch (_state)
{
case ParserState.StartOfRecord:
{
//TODO: should we add ignore null byte attribute to dialect?
// if (IsNull(currentCharacter))
// {
// break;
// }
//TODO: can this be executed?
// if (IsEndOfLine(currentCharacter))
// {
// _state = ParserState.EndOfRecord;
// break;
// }
_state = ParserState.StartOfField;
goto case ParserState.StartOfField;
}
case ParserState.StartOfField:
ProcessStartOfField(currentCharacter);
break;
case ParserState.EscapedCharacter:
ProcessEscapedChar(currentCharacter);
break;
case ParserState.InField:
ProcessInField(currentCharacter);
break;
case ParserState.InQuotedField:
ProcessInQuotedField(currentCharacter);
break;
case ParserState.EscapeInQuotedField:
ProcessEscapeInQuotedField(currentCharacter);
break;
case ParserState.QuoteInQuotedField:
ProcessQuoteInQuotedField(currentCharacter);
break;
}
}