示例#1
0
        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);
        }
示例#2
0
        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));
        }