예제 #1
0
        public Expr EvaluateToExpr(string exprText)
        {
            Expr outExpr;

            if (EnableCache && _exprCache.TryGetValue(exprText, out outExpr))
            {
                CacheHits++;
                return(outExpr);
            }

            KernelLink.Evaluate(exprText);
            KernelLink.WaitForAnswer();

            outExpr = KernelLink.GetExpr();

            CacheMisses++;

            if (EnableCache)
            {
                _exprCache.Add(exprText, outExpr);
            }

            //if (outExpr.ToString() == "Indeterminate")
            //{
            //    var x = 0;
            //}

            return(outExpr);
        }
예제 #2
0
        public string EvaluateToString(string exprText)
        {
            KernelLink.Evaluate(exprText);
            KernelLink.WaitForAnswer();

            var outExpr = KernelLink.GetString();

            CacheMisses++;

            return(outExpr);
        }
예제 #3
0
        public string EvaluateToString(Expr exprObject)
        {
            //string expr_text = expr_object.ToString();

            KernelLink.Evaluate(exprObject);
            KernelLink.WaitForAnswer();

            var outExpr = KernelLink.GetString();

            CacheMisses++;

            return(outExpr);
        }
예제 #4
0
        public Expr EvaluateToExpr(Expr exprObject)
        {
            Stopwatch.Start();

            Expr   outExpr;
            string exprText = null;

            if (EnableCache && _exprCache.TryGetValue(exprText = exprObject.ToString(), out outExpr))
            {
                CacheHits++;

                Stopwatch.Stop();

                return(outExpr);
            }

            KernelLink.Evaluate(exprObject);
            KernelLink.WaitForAnswer();

            outExpr = KernelLink.GetExpr();

            CacheMisses++;

            if (EnableCache)
            {
                _exprCache.Add(exprText ?? exprObject.ToString(), outExpr);
            }

            //if (outExpr.ToString() == "Indeterminate")
            //{
            //    var x = 0;
            //}

            Stopwatch.Stop();

            return(outExpr);
        }