Example #1
0
        public static IDataType <DataType> Map(ILiteralToken token, IConfiguration configuration)
        {
            switch (token?.LiteralType)
            {
            case null:
                return(null);

            case LiteralTokenType.Date:
                return(ConvertToTypedDataType <DateTime, DateToken, DateType>(token, typedToken => new DateType(typedToken.TypedValue)));

            case LiteralTokenType.Float:
                return(ConvertToTypedDataType <double, FloatToken, FloatType>(token, typedToken => new FloatType(typedToken.TypedValue)));

            case LiteralTokenType.LimitedInteger:
                return(ConvertToTypedDataType <BigInteger, LimitedIntegerToken, LimitedIntegerType>(token, typedToken => new LimitedIntegerType(typedToken.TypedValue, ((LimitedIntegerToken)token).SignAndBitWidth, configuration)));

            case LiteralTokenType.Time:
                return(ConvertToTypedDataType <TimeSpan, TimeToken, TimeType>(token, typedToken => new TimeType(typedToken.TypedValue)));

            case LiteralTokenType.Timespan:
                return(ConvertToTypedDataType <TimeSpan, TimespanToken, TimespanType>(token, typedToken => new TimespanType(typedToken.TypedValue)));

            case LiteralTokenType.UnlimitedInteger:
                return(ConvertToTypedDataType <BigInteger, UnlimitedIntegerToken, UnlimitedIntegerType>(token, typedToken => new UnlimitedIntegerType(typedToken.TypedValue)));

            default:
                throw new TypeConversionException($"Unhandled literal token type '{token.LiteralType}' while converting to a data type.");
            }
        }
        void ConvertToString(ILiteralToken token, int numBase)
        {
            var baseStr = numBase.ToString();
            var numStr  = "";

            switch (numBase)
            {
            case 16:
                numStr = token.ToHex();
                break;

            case 10:
                numStr = token.ToDec();
                break;

            case 8:
                numStr = token.ToOct();
                break;

            case 2:
                numStr = token.ToBin();
                break;

            default:
                baseStr = "";
                return;
            }

            numRun.Text  = numStr;
            baseRun.Text = baseStr;
        }
        string PrintLiteral(ILiteralToken litToken)
        {
            if (litToken == null)
            {
                return(null);
            }

            return(litToken.LiteralType == LiteralTokenType.Timespan
                ? $"'{litToken}' "
                : $"{litToken} ");
        }
Example #4
0
        static TDataType ConvertToDataType <TDataType>(LiteralTokenType tokenType)
            where TDataType : class, IDataType <DataType>
        {
            ILiteralToken literalToken = TestCommon.MakeLiteralToken(tokenType);
            var           dataType     = ((ICalcEngine)CalcEngine.Instance).ConvertToDataType(literalToken, null);

            dataType.Should().NotBeNull();
            dataType.Should().BeOfType <TDataType>();
            var typedDataType = dataType as TDataType;

            typedDataType.Should().NotBeNull();
            return(typedDataType);
        }
Example #5
0
 public IDataType <DataType> ConvertToTypedDataType(ILiteralToken token, IConfiguration configuration)
 => DataMapper.Map(token, configuration);
Example #6
0
 IDataType ICalcEngine.ConvertToDataType(ILiteralToken token, IConfiguration configuration)
 => DataMapper.Map(token, configuration);
Example #7
0
 static IDataType <DataType> ConvertToTypedDataType <TBaseType, TTypedToken, TDataType>(ILiteralToken token, Func <TTypedToken, TDataType> createDataTypeFunc)
     where TTypedToken : class, ILiteralToken, ILiteralToken <TBaseType, TTypedToken>
     where TDataType : class, IDataType <DataType>
 => (token is TTypedToken typedToken)