private static string GetNextToken(byte terminalCh, byte[] src, ref int offset, ref int count) { int num = CsvDecoder.IndexOf(terminalCh, src, offset, count); if (num == -1) { return(null); } int num2 = num - offset; string result = (string)CsvDecoder.DecodeString(src, offset, num2); int num3 = num2 + 1; offset += num3; count -= num3; return(result); }
public static object DecodeKeyValuePair(byte[] src, int offset, int count) { string nextToken = CsvDecoder.GetNextToken(SpecialCharacters.ColonByte, src, ref offset, ref count); if (string.IsNullOrEmpty(nextToken)) { return(null); } string nextToken2 = CsvDecoder.GetNextToken(SpecialCharacters.EqualsByte, src, ref offset, ref count); if (string.IsNullOrEmpty(nextToken2) || !SpecialCharacters.IsValidKey(nextToken2)) { return(null); } object obj; if (nextToken.Equals("Dt", StringComparison.OrdinalIgnoreCase)) { obj = CsvDecoder.DecodeDateTime(src, offset, count); } else if (nextToken.Equals("I32", StringComparison.OrdinalIgnoreCase)) { obj = CsvDecoder.DecodeInt32(src, offset, count); } else if (nextToken.Equals("S", StringComparison.OrdinalIgnoreCase)) { obj = CsvDecoder.DecodeString(src, offset, count); } else if (nextToken.Equals("F", StringComparison.OrdinalIgnoreCase)) { obj = CsvDecoder.DecodeFloat(src, offset, count); } else { if (!nextToken.Equals("Dbl", StringComparison.OrdinalIgnoreCase)) { return(null); } obj = CsvDecoder.DecodeDouble(src, offset, count); } if (obj == null) { return(null); } return(new KeyValuePair <string, object>(nextToken2, obj)); }