示例#1
0
        /**
         * Returns the input type for the {@code FieldMetaType} that this is...
         * @param input
         * @param enc
         * @return
         */
        public T DecodeType <T>(FieldMetaType type, string input, IEncoder enc)
        {
            switch (type)
            {
            case FieldMetaType.List:
            case FieldMetaType.String: return(ChangeType <T>(input));

            case FieldMetaType.DateTime: return(ChangeType <T>(((DateEncoder)enc).Parse(input)));

            case FieldMetaType.Boolean: return(ChangeType <T>(bool.Parse(input) == true ? 1 : 0));

            case FieldMetaType.Coord:
            case FieldMetaType.Geo:
            {
                string[] parts = input.Split(';');         // [\\s]*\\;[\\s]*
                return(ChangeType <T>(new Tuple(double.Parse(parts[0], NumberFormatInfo.InvariantInfo), double.Parse(parts[1], NumberFormatInfo.InvariantInfo), double.Parse(parts[2], NumberFormatInfo.InvariantInfo))));
            }

            case FieldMetaType.Integer:
            case FieldMetaType.Float: return(ChangeType <T>(double.Parse(input, NumberFormatInfo.InvariantInfo)));   //return ChangeType<T>(input);

            case FieldMetaType.SparseArray:
            case FieldMetaType.DenseArray:
            {
                return(ChangeType <T>(input.Replace("[", "").Replace("]", "")        // [\\s]*\\;[\\s]*
                                      .Split(',').Select(s => Convert.ToInt32(s)).ToArray()));
            }

            default: return(default(T));
            }
        }
示例#2
0
            public object Get <TDecode>(string key)
            {
                int                 idx    = _parent.indexFieldMap[key];
                FieldMetaType       fmt    = fTypes[idx];
                FieldMetaTypeHelper helper = new FieldMetaTypeHelper(key);

                return(helper.DecodeType <TDecode>(fmt, arr[idx + 1], _parent.indexToEncoderMap[idx]));
            }
示例#3
0
        /**
         * Returns the {@link Encoder} matching this field type.
         * @return
         */
        public IEncoder NewEncoder(FieldMetaType type)
        {
            switch (type)
            {
            case FieldMetaType.List:
            case FieldMetaType.String: return(SDRCategoryEncoder.GetBuilder().Build());

            case FieldMetaType.DateTime: return(DateEncoder.GetBuilder().Build());

            case FieldMetaType.Boolean: return(ScalarEncoder.GetBuilder().Build());

            case FieldMetaType.Coord: return(CoordinateEncoder.GetBuilder().Build());

            case FieldMetaType.Geo: return(GeospatialCoordinateEncoder.GetGeobuilder().Build());

            case FieldMetaType.Integer:
            case FieldMetaType.Float: return(RandomDistributedScalarEncoder.GetBuilder().Build());

            case FieldMetaType.DenseArray:
            case FieldMetaType.SparseArray: return(SDRPassThroughEncoder.GetSptBuilder().Build());

            default: return(null);
            }
        }