public EvalResult RunEval(string code)
        {
            var sw   = Stopwatch.StartNew();
            var eval = CompileAndEval(code);

            sw.Stop();

            var compileTime = sw.Elapsed;
            var evalResult  = new EvalResult(null, eval, sw.Elapsed, compileTime);

            //this hack is to test if we're about to send an object that can't be serialized back to the caller.
            //if the object can't be serialized, return a failure instead.
            try
            {
                JsonConvert.SerializeObject(evalResult);
            }
            catch (Exception ex)
            {
                evalResult = new EvalResult
                {
                    Code           = code,
                    CompileTime    = compileTime,
                    ConsoleOut     = eval,
                    ExecutionTime  = sw.Elapsed,
                    ReturnTypeName = "Brainfk Type",
                    ReturnValue    = $"An exception occurred when serializing the response: {ex.GetType().Name}: {ex.Message}"
                };
            }
            return(evalResult);
        }
Exemple #2
0
        public static bool Step(Expression criteria, IList <Variable> variables, IList <VariableLimitation> limitations, double absoluteStep, double relativeStep, int cacheGeneration = 0)
        {
            if (cacheGeneration == 0)
            {
                cacheGeneration = Expression.NextAutoIncrementId;
            }

            var variablesCount = variables.Count;
            var derivatives    = new Expression[variablesCount];

            for (var variableIndex = 0; variableIndex < variablesCount; variableIndex++)
            {
                derivatives[variableIndex] = criteria.Derivate(variables[variableIndex]);
            }
            return(Step(
                       () =>
            {
                var result = new EvalResult()
                {
                    Value = criteria.Evaluate(cacheGeneration),
                    Derivatives = new double[variablesCount]
                };
                for (var variableIndex = 0; variableIndex < variablesCount; variableIndex++)
                {
                    result.Derivatives[variableIndex] = derivatives[variableIndex].Evaluate(cacheGeneration);
                }
                cacheGeneration = Expression.NextAutoIncrementId;
                return result;
            },
                       variables, limitations, absoluteStep, relativeStep
                       ));
        }
        public async Task <IActionResult> GetAsync(int id, String username, String pw)
        {
            HttpClient client = new HttpClient();

            HttpResponseMessage _responseToken = client.GetAsync("http://iwi-mostwanted-secret.azurewebsites.net/api/secret/token?username="******"&pw=" + pw).Result;

            if (!_responseToken.StatusCode.ToString().Equals("OK"))
            {
                return(BadRequest("Username/PW falsch"));
            }
            String token = _responseToken.Content.ReadAsStringAsync().Result;

            client.DefaultRequestHeaders.Add("Authorization", token);
            HttpResponseMessage _response = client.GetAsync("http://iwi-mostwanted-evaluation.azurewebsites.net/api/eval/" + id).Result;
            String ResponseCode           = _response.StatusCode.ToString();

            if (ResponseCode.Equals("NotFound"))
            {
                return(BadRequest("Auswertung nicht gefunden"));
            }
            else if (ResponseCode.Equals("BadRequest"))
            {
                return(BadRequest("Keine Berechtigung"));
            }
            else
            {
                EvalResult _erg = JsonConvert.DeserializeObject <EvalResult>(_response.Content.ReadAsStringAsync().Result);
                return(Ok(_erg));
            }
        }
Exemple #4
0
        public Task <bool> EvaluateExpression(string expression, string code, EvalResult result)
        {
            EnsureConfigured();
            try
            {
                object retResult;
                bool   hasResult;

                printer.Reset();
                if (!String.IsNullOrEmpty(code))
                {
                    var ret = eval.Evaluate(code, out retResult, out hasResult);
                }
                result.Result = eval.Evaluate(expression);
                return(Task.FromResult(true));
            }
            catch (Exception ex)
            {
                Log.Error($"Error creating a new instance of {expression}");
                if (printer.Messages.Count != 0)
                {
                    result.Messages = printer.Messages.ToArray();
                }
                else
                {
                    result.Messages = new EvalMessage[] { new EvalMessage("error", ex.ToString()) };
                }
                if (!result.HasResult && result.Messages.Length == 0)
                {
                    result.Messages = new EvalMessage[] { new EvalMessage("error", "Internal Error") };
                }
                eval = null;
            }
            return(Task.FromResult(false));
        }
 public CorDebugEval (CorDebugThread thread) 
 {
     m_appDomain = thread.Chain.ActiveFrame.AppDomain;
     m_threadReal = thread;
     m_resultType = EvalResult.NotFinished;
     ResetScratchPadLocation ();            
 }
        public static DerivResult central_derivative(DerivFunction f, double x, double h)
        {
            double     r_0;
            EvalResult res   = central_deriv(f, x, h);
            double     error = res.abserr_round + res.abserr_trunc;

            r_0 = res.result;

            if (res.abserr_round < res.abserr_trunc && (res.abserr_round > 0 && res.abserr_trunc > 0))
            {
                double error_opt;

                /* Compute an optimised stepsize to minimize the total error,
                 * using the scaling of the truncation error (O(h^2)) and
                 * rounding error (O(1/h)). */

                double h_opt = h * Math.Pow(res.abserr_round / (2.0 * res.abserr_trunc), 1.0 / 3.0);
                res       = central_deriv(f, x, h_opt);
                error_opt = res.abserr_round + res.abserr_trunc;

                /* Check that the new error is smaller, and that the new derivative
                 * is consistent with the error bounds of the original estimate. */

                if (error_opt < error && Math.Abs(res.result - r_0) < 4.0 * error)
                {
                    r_0   = res.result;
                    error = error_opt;
                }
            }

            return(new DerivResult(r_0, error));
        }
Exemple #7
0
 private void MangleAllLine(int total_anys,
                            int cur_anys, List <string> ret,
                            List <Expression.EvalResult> args_in)
 {
     if (cur_anys == total_anys)
     {
         var m = Mangle(target, args_in);
         if (!ret.Contains(m))
         {
             ret.Add(m);
         }
     }
     else
     {
         for (int i = 0; i < args_in.Count; i++)
         {
             if (args_in[i].Type == EvalResult.ResultType.Any)
             {
                 continue;
             }
             List <EvalResult> new_args_in = new List <EvalResult>(args_in);
             new_args_in[i] = new EvalResult {
                 Type = EvalResult.ResultType.Any
             };
             MangleAllLine(total_anys, cur_anys + 1, ret, new_args_in);
         }
     }
 }
        public static void TrackResult(this EvalResult result, TelemetryClient telemetryClient, ILogger logger)
        {
            try
            {
                var evt = new EventTelemetry("eval")
                {
                    Timestamp = DateTimeOffset.UtcNow
                };

                evt.Metrics.Add("CompileTime", result.CompileTime.TotalMilliseconds);
                evt.Metrics.Add("ExecutionTime", result.ExecutionTime.TotalMilliseconds);

                evt.Properties.Add("Code", result.Code);
                evt.Properties.Add("ConsoleOut", result.ConsoleOut);
                evt.Properties.Add("ReturnValue", JsonConvert.SerializeObject(result.ReturnValue, Formatting.Indented));
                evt.Properties.Add("ExceptionType", result.ExceptionType);
                evt.Properties.Add("Exception", result.Exception);

                telemetryClient.TrackEvent(evt);
            }
            catch (Exception ex)
            {
                logger.LogWarning($"Failed to record telemetry event: {ex}");
            }
        }
Exemple #9
0
        public override EvalResult Evaluate(MakeState s)
        {
            EvalResult elabel = label.Evaluate(s);
            EvalResult eindex = index.Evaluate(s);

            switch (elabel.Type)
            {
            case EvalResult.ResultType.String:
                return(new EvalResult(new string(elabel.strval[(int)eindex.AsInt], 1)));

            case EvalResult.ResultType.Array:
            {
                var idx = eindex.AsInt;
                if (idx < 0 || idx >= elabel.arrval.Count)
                {
                    return new EvalResult {
                               Type = EvalResult.ResultType.Null
                    }
                }
                ;
                else
                {
                    return(elabel.arrval[(int)idx]);
                }
            }

            case EvalResult.ResultType.Object:
                return(elabel.objval[eindex.strval]);

            default:
                throw new Statement.SyntaxException("indexing cannot be applied to object of type: " + elabel.Type.ToString());
            }
        }
Exemple #10
0
 public void EvalTest()
 {
     EvalTest("LocalsTest4.py", 2, "g", 1, EvalResult.Value("baz", "int", "42"));
     EvalTest("LocalsTest3.py", 2, "f", 0, EvalResult.Value("x", "int", "42"));
     EvalTest("LocalsTest3.py", 2, "f", 0, EvalResult.Exception("not_defined", "name 'not_defined' is not defined"));
     EvalTest("LocalsTest3.py", 2, "f", 0, EvalResult.ErrorExpression("/2", "unexpected token '/'\r\n"));
 }
Exemple #11
0
        async Task <bool> Evaluate(string code, EvalResult result, string initCode, bool retryOnError)
        {
            try
            {
                printer.Reset();
                if (initCode != null)
                {
                    eval.Evaluate(initCode, out object retResult, out bool result_set);
                }
                result.Result = eval.Evaluate(code);
                return(true);
            }
            catch (Exception ex)
            {
                if (retryOnError)
                {
                    eval = null;
                    EnsureConfigured();
                    return(await Evaluate(code, result, initCode, false));
                }

                Log.Error($"Error evalutaing code");
                eval = null;
                if (printer.Messages.Count != 0)
                {
                    result.Messages = printer.Messages.ToArray();
                }
                else
                {
                    result.Messages = new[] { new EvalMessage("error", ex.ToString()) };
                }
                return(false);
            }
        }
Exemple #12
0
        async Task <EvalResult> EvalOnMainThread(EvalRequest code, CancellationToken token)
        {
            object     result     = null;
            bool       hasResult  = false;
            EvalResult evalResult = new EvalResult();

            var sw = new System.Diagnostics.Stopwatch();

            Log.Debug($"Evaluation request {code}");

            sw.Start();

            if (code.Xaml != null)
            {
                result = await LoadXAML(code.Xaml, code.XamlType, code.Declarations, evalResult);

                hasResult = result != null;
            }
            else
            {
                throw new NotSupportedException();
            }
            sw.Stop();

            Log.Debug($"Evaluation ended with result  {result}");

            evalResult.Duration  = sw.Elapsed;
            evalResult.Result    = result;
            evalResult.HasResult = hasResult;
            return(evalResult);
        }
Exemple #13
0
        public static double SurfaceEnergyChangerate(LevelSetTracker LsTrk, ConventionalDGField[] uI, double sigma, bool Norm, int momentFittingorder)
        {
            double Changerate_Surface = 0.0;

            var SchemeHelper         = LsTrk.GetXDGSpaceMetrics(new[] { LsTrk.GetSpeciesId("A") }, momentFittingorder, 1).XQuadSchemeHelper;
            CellQuadratureScheme cqs = SchemeHelper.GetLevelSetquadScheme(0, LsTrk.Regions.GetCutCellMask());

            ScalarFunctionEx SurfaceChangerate = GetInterfaceDivergenceFunc(LsTrk, uI, Norm);

            CellQuadrature.GetQuadrature(new int[] { 1 }, LsTrk.GridDat,
                                         cqs.Compile(LsTrk.GridDat, momentFittingorder),
                                         delegate(int i0, int Length, QuadRule QR, MultidimensionalArray EvalResult) {
                SurfaceChangerate(i0, Length, QR.Nodes, EvalResult.ExtractSubArrayShallow(-1, -1, 0));
            },
                                         delegate(int i0, int Length, MultidimensionalArray ResultsOfIntegration) {
                for (int i = 0; i < Length; i++)
                {
                    Changerate_Surface += ResultsOfIntegration[i, 0];
                }
            }
                                         ).Execute();

            double Changerate_Esurf;

            if (Norm)
            {
                Changerate_Esurf = sigma * Changerate_Surface.Sqrt();
            }
            else
            {
                Changerate_Esurf = sigma * Changerate_Surface;
            }

            return(Changerate_Esurf);
        }
Exemple #14
0
        private EvalResult eval14(Tile lastTile, int depth, bool riichi = true, bool tsumo = false, bool isLastTile = false, EvalResult partialEvalResult = null)
        {
            var res = partialEvalResult;

            if (res == null)
            {
                res = new EvalResult();
                int normalDistance;
                res.Distance       = calcDistance(out normalDistance);
                res.NormalDistance = normalDistance;
            }

            if (depth <= 1 || res.Distance == -1)
            {
                if (res.Distance == -1)
                {
                    res.E_Point = calcPoint(lastTile, riichi, tsumo, isLastTile);
                }
                res.E_PromotionCount = new List <double>();
                return(res);
            }
            else
            {
                EvalResult tmpResult;
                chooseDiscardForAtk(out tmpResult, calcOptimization: false, depth: depth - 1);
                return(tmpResult);
            }
        }
Exemple #15
0
        public static double EnergyBalanceNormAtInterface(XDGField P, VectorField <XDGField> U, ConventionalDGField[] Umean, SinglePhaseField C, double muA, double muB, double sigma, int momentFittingOrder)
        {
            LevelSetTracker LsTrk = P.Basis.Tracker;

            double energyBal_Norm = 0.0;

            ScalarFunctionEx energyBalFunc = GetEnergyBalanceFunc(P, U, Umean, C, muA, muB, sigma, true);

            var SchemeHelper         = LsTrk.GetXDGSpaceMetrics(new[] { LsTrk.GetSpeciesId("A") }, momentFittingOrder, 1).XQuadSchemeHelper;
            CellQuadratureScheme cqs = SchemeHelper.GetLevelSetquadScheme(0, LsTrk.Regions.GetCutCellMask());

            CellQuadrature.GetQuadrature(new int[] { 1 }, LsTrk.GridDat,
                                         cqs.Compile(LsTrk.GridDat, momentFittingOrder),
                                         delegate(int i0, int Length, QuadRule QR, MultidimensionalArray EvalResult) {
                energyBalFunc(i0, Length, QR.Nodes, EvalResult.ExtractSubArrayShallow(-1, -1, 0));
            },
                                         delegate(int i0, int Length, MultidimensionalArray ResultsOfIntegration) {
                for (int i = 0; i < Length; i++)
                {
                    energyBal_Norm += ResultsOfIntegration[i, 0];
                }
            }
                                         ).Execute();

            return(energyBal_Norm.Sqrt());
        }
Exemple #16
0
        public async Task <bool> EvaluateCode(string code, EvalResult result, string initCode = null)
        {
            if (string.IsNullOrEmpty(code))
            {
                return(false);
            }

            EnsureConfigured();
            try
            {
                ScriptState state;
                if (initCode != null)
                {
                    state = await CSharpScript.RunAsync(initCode);

                    await state.ContinueWithAsync(code);
                }
                else
                {
                    state = await CSharpScript.RunAsync(code);
                }
                result.Result = state.ReturnValue;
            }
            catch (CompilationErrorException ex)
            {
                Log.Error($"Error evaluating code");
                result.Messages = new EvalMessage[] { new EvalMessage("error", ex.ToString()) };
                return(false);
            }
            return(true);
        }
Exemple #17
0
        public override EvalResult Eval(RunePhrase sn)
        {
            var arg = sn._children?.First();

            if (arg == null)
            {
                return(EvalResult.Fail());
            }
            var argtype = arg._rune.ResultType();

            if (argtype == RuneType.Effect)
            {
                return(arg.Eval());
            }
            if (argtype == RuneType.Reference)
            {
                // TODO: for now we use BEH, which points to ITargetable.
                // other runes could refer by different means, for example:
                // ZU WATHIJDOET, referring to the spell cast by your target
                Inscription?target = null;
                this.caster.Target?.ReferenceWhenTargeted.TryPickT2(out target, out _);
                if (target == null)
                {
                    return(EvalResult.Fail());
                }
                return(target.InscribedSpell.Eval());
            }
            return(EvalResult.Fail());
        }
 public CorDebugEval(CorDebugThread thread)
 {
     m_appDomain  = thread.Chain.ActiveFrame.AppDomain;
     m_threadReal = thread;
     m_resultType = EvalResult.NotFinished;
     ResetScratchPadLocation();
 }
        internal EvalResult Evaluate(User user, IFeatureStore featureStore, EventFactory eventFactory)
        {
            IList <FeatureRequestEvent> prereqEvents = new List <FeatureRequestEvent>();
            EvalResult evalResult = new EvalResult(null, null, prereqEvents);

            if (user == null || user.Key == null)
            {
                Log.WarnFormat("User or user key is null when evaluating flag: {0} returning null",
                               Key);

                return(evalResult);
            }

            if (On)
            {
                evalResult = Evaluate(user, featureStore, prereqEvents, eventFactory);
                if (evalResult.Result != null)
                {
                    return(evalResult);
                }
            }
            evalResult.Variation = OffVariation;
            evalResult.Result    = OffVariationValue;
            return(evalResult);
        }
Exemple #20
0
        /// <summary>
        /// Preview the specified evaluation result.
        /// </summary>
        /// <param name="res">Res.</param>
        public virtual async Task Preview(EvalResult res)
        {
            Log.Information($"Visualizing result {res.ResultType}");

            var  result = TypeActivator(res.ResultType);
            Page page   = result as Page;

            if (page == null && result is View view)
            {
                page = new ContentPage {
                    Content = view
                };
            }
            if (page != null)
            {
                if (viewModelsMapping.TryGetValue(res.ResultType, out object viewModel))
                {
                    page.BindingContext = viewModel;
                }
                await EnsurePresented();

                NavigationPage.SetHasNavigationBar(previewPage, true);
                previewPage.ChangePage(page);
            }
        }
        public async Task <bool> CreateTypeInstance(string typeName, EvalResult result)
        {
            EnsureConfigured();
            try
            {
                using (var loader = new InteractiveAssemblyLoader())
                {
                    var script = CSharpScript.Create($"new {typeName} ()", options, assemblyLoader: loader);
                    var state  = await script.RunAsync();

                    result.Result = state.ReturnValue;
                }
            }
            catch (CompilationErrorException ex)
            {
                Log.Exception(ex);
                Log.Error($"Error evaluating new instance of {typeName}");
                result.Messages = new EvalMessage[] { new EvalMessage {
                                                          MessageType = "error", Text = ex.ToString()
                                                      } };
            }
            catch (Exception ex)
            {
                Log.Exception(ex);
                Log.Error($"Unhandled rrror creating new instance of {typeName}");
                result.Messages = new EvalMessage[] { new EvalMessage {
                                                          MessageType = "error", Text = ex.ToString()
                                                      } };
            }
            return(false);
        }
Exemple #22
0
        private bool shouldReach(Tile discardTile, EvalResult evalResult)
        {
            if (player.reached || player.fuuro.VisibleCount != 0 || evalResult.Distance > 0)
            {
                return(false);
            }

            bool changeRanking       = false;
            int  rankingWithReach    = 0;
            int  rankingWithoutReach = 0;

            player.hand.Remove(discardTile);
            player.graveyard.Add(discardTile);
            EvalResult evalResultWithoutReach = eval13(1, false);

            if (isAllLast())
            {
                rankingWithReach    = expectedRankingWhenAgari(riichi: true);
                rankingWithoutReach = expectedRankingWhenAgari(riichi: false);
                changeRanking       = rankingWithReach < rankingWithoutReach;
                Trace.WriteLine(string.Format("Expected Ranking: w/ reach {0}, w/o reach {1}", rankingWithReach, rankingWithoutReach));
            }
            player.graveyard.Remove(discardTile);
            player.hand.Add(discardTile);

            return(gameData.remainingTile >= 4 && // 牌山还有枚数
                   (evalResultWithoutReach.E_Point < 3500 + evalResult.E_PromotionCount[0] * 500 || gameData.players.Count(p => p.reached) >= 2) && // 期望得点越小或听牌枚数越多,越应该立直 或 立直人数 >=2
                   !shouldDef(evalResult) && // 没有在防守状态
                   !(isAllLast() && !changeRanking && !(player.direction == Direction.E && rankingWithoutReach > 1) && evalResultWithoutReach.E_Point > 0) && // 如果All last且立直不改变顺位,除非是尾亲且和了也不是top,否则不立直
                   evalResult.E_PromotionCount[0] > 1 && // 没有空听或听枚数只剩1张的牌
                   evalResult.OptimizationCount < evalResult.E_PromotionCount[0] * 3); // 改良数量不是特别多
        }
Exemple #23
0
        public static double EnergyJumpAtInterface(LevelSetTracker LsTrk, VectorField <XDGField> Velocity, XDGField Pressure, double muA, double muB, bool Norm, int momentFittingorder)
        {
            double EnergyJump = 0.0;

            ScalarFunctionEx EnergyJumpFunc = GetEnergyJumpFunc(LsTrk, Velocity, Pressure, muA, muB, Norm);

            var SchemeHelper         = LsTrk.GetXDGSpaceMetrics(new[] { LsTrk.GetSpeciesId("A") }, momentFittingorder, 1).XQuadSchemeHelper;
            CellQuadratureScheme cqs = SchemeHelper.GetLevelSetquadScheme(0, LsTrk.Regions.GetCutCellMask());

            CellQuadrature.GetQuadrature(new int[] { 1 }, LsTrk.GridDat,
                                         cqs.Compile(LsTrk.GridDat, momentFittingorder),
                                         delegate(int i0, int Length, QuadRule QR, MultidimensionalArray EvalResult) {
                EnergyJumpFunc(i0, Length, QR.Nodes, EvalResult.ExtractSubArrayShallow(-1, -1, 0));
            },
                                         delegate(int i0, int Length, MultidimensionalArray ResultsOfIntegration) {
                for (int i = 0; i < Length; i++)
                {
                    EnergyJump += ResultsOfIntegration[i, 0];
                }
            }
                                         ).Execute();

            if (Norm)
            {
                EnergyJump.Sqrt();
            }

            return(EnergyJump);
        }
Exemple #24
0
 private void check_null(EvalResult ea)
 {
     if (ea.Type == EvalResult.ResultType.Null)
     {
         throw new Exception("null not allowed in expression");
     }
 }
Exemple #25
0
        Tuple <UIViewController, bool> GetViewer(EvalResult resp)
        {
            var vc = resp.Result as UIViewController;

            if (vc != null)
            {
                return(Tuple.Create(vc, true));
            }

            var sv = GetSpecialView(resp.Result);

            vc = sv as UIViewController;
            if (vc != null)
            {
                return(Tuple.Create(vc, false));
            }

            var v = sv as UIView;

            if (v != null)
            {
                vc      = new UIViewController();
                vc.View = v;
                return(Tuple.Create(vc, false));
            }

            vc = new ObjectInspector(resp.Result);
            return(Tuple.Create(vc, true));
        }
Exemple #26
0
        public static double CurvatureEnergy(LevelSetTracker LsTrk, SinglePhaseField Curvature, double sigma, ConventionalDGField[] uI, bool ExtVel, bool Norm, int momentFittingorder)
        {
            double EnergyCurv = 0.0;

            var SchemeHelper         = LsTrk.GetXDGSpaceMetrics(new[] { LsTrk.GetSpeciesId("A") }, momentFittingorder, 1).XQuadSchemeHelper;
            CellQuadratureScheme cqs = SchemeHelper.GetLevelSetquadScheme(0, LsTrk.Regions.GetCutCellMask());

            ScalarFunctionEx CurvEnergyFunc = GetCurvatureEnergyFunc(LsTrk, Curvature, sigma, uI, ExtVel, Norm);

            CellQuadrature.GetQuadrature(new int[] { 1 }, LsTrk.GridDat,
                                         cqs.Compile(LsTrk.GridDat, momentFittingorder),
                                         delegate(int i0, int Length, QuadRule QR, MultidimensionalArray EvalResult) {
                CurvEnergyFunc(i0, Length, QR.Nodes, EvalResult.ExtractSubArrayShallow(-1, -1, 0));
            },
                                         delegate(int i0, int Length, MultidimensionalArray ResultsOfIntegration) {
                for (int i = 0; i < Length; i++)
                {
                    EnergyCurv += ResultsOfIntegration[i, 0];
                }
            }
                                         ).Execute();

            if (Norm)
            {
                EnergyCurv.Sqrt();
            }

            return(EnergyCurv);
        }
        private MultidimensionalArray EdgeQuadrature2CellBoundary(ICompositeQuadRule <QuadRule> surfRule)
        {
            int J   = this.GridData.iLogicalCells.NoOfLocalUpdatedCells;
            var ret = MultidimensionalArray.Create(J);
            var E2C = this.GridData.iLogicalEdges.CellIndices;

            BoSSS.Foundation.Quadrature.EdgeQuadrature.GetQuadrature(
                new int[] { 1 }, this.GridData,
                surfRule,
                delegate(int i0, int Length, QuadRule Qr, MultidimensionalArray EvalResult) { // Evaluate
                EvalResult.SetAll(1.0);
            },
                delegate(int i0, int Length, MultidimensionalArray ResultsOfIntegration) { // SaveIntegrationResults
                for (int i = 0; i < Length; i++)
                {
                    int iEdge  = i0 + i;
                    int jCell0 = E2C[iEdge, 0];
                    int jCell1 = E2C[iEdge, 1];

                    ret[jCell0] += ResultsOfIntegration[i, 0];
                    if (jCell1 >= 0)
                    {
                        ret[jCell1] += ResultsOfIntegration[i, 0];
                    }
                }
            }).Execute();

            return(ret);
        }
Exemple #28
0
        public Task <bool> EvaluateCode(string code, EvalResult result)
        {
            if (string.IsNullOrEmpty(code))
            {
                return(Task.FromResult(false));
            }

            EnsureConfigured();

            try
            {
                printer.Reset();
                eval.Evaluate(code, out object retResult, out bool result_set);
                result.Result = retResult;
                return(Task.FromResult(true));
            }
            catch (Exception ex)
            {
                Log.Error($"Error evalutaing code");
                eval = null;
                if (printer.Messages.Count != 0)
                {
                    result.Messages = printer.Messages.ToArray();
                }
                else
                {
                    result.Messages = new[] { new EvalMessage("error", ex.ToString()) };
                }
                return(Task.FromResult(false));
            }
        }
Exemple #29
0
        async Task <EvalResult> EvalOnMainThread(EvalRequest code, CancellationToken token)
        {
            EvalResult evalResult = new EvalResult();

            var sw = new System.Diagnostics.Stopwatch();

            Log.Debug($"Evaluation request {code}");

            sw.Start();

            currentEvalRequest = code;
            await evaluator.EvaluateExpression(code.NewTypeExpression,
                                               code.NeedsRebuild?code.Declarations : null,
                                               evalResult);

            if (evalResult.Result != null)
            {
                LoadXAML(evalResult.Result, code.Xaml, evalResult);
            }
            sw.Stop();

            Log.Debug($"Evaluation ended with result  {evalResult.Result}");

            evalResult.Duration = sw.Elapsed;
            return(evalResult);
        }
Exemple #30
0
        protected virtual Page CreateViewFromResult(EvalResult res)
        {
            Page page;

            if (!res.HasResult)
            {
                res.Result = TypeActivator(res.ResultType);
            }
            if (res.Result is View view)
            {
                page = new ContentPage {
                    Content = view
                };
            }
            else
            {
                page = res.Result as Page;
            }
            if (page != null)
            {
                if (viewModelsMapping.TryGetValue(res.ResultType, out object viewModel))
                {
                    page.BindingContext = viewModel;
                }
            }
            return(page);
        }
Exemple #31
0
 public override Task Preview(EvalResult res)
 {
     State          = PreviewState.Preview;
     ErrorViewModel = null;
     EvalResult     = res;
     return(base.Preview(res));
 }
Exemple #32
0
 public EvalResult Eval(EvalRequest code, TaskScheduler mainScheduler, CancellationToken token)
 {
     var r = new EvalResult ();
     Task.Factory.StartNew (() =>
     {
         r = EvalOnMainThread (code, token);
     }, token, TaskCreationOptions.None, mainScheduler).Wait ();
     return r;
 }
Exemple #33
0
		partial void PlatformVisualize (EvalResult resp)
		{
			var val = resp.Result;
			var ty = val != null ? val.GetType () : typeof(object);

			Log ("{0} value = {1}", ty.FullName, val);

			ShowViewer (GetViewer (resp));
		}
		partial void PlatformVisualize (EvalResult res)
		{
			var val = res.Result;
			var ty = val != null ? val.GetType () : typeof(object);
			Log ("{0} value = {1}", ty.FullName, val);

			ShowViewerAsync (GetViewer (res.Result, true)).ContinueWith (t => {
				if (t.IsFaulted) {
					Log ("ShowViewer ERROR {0}", t.Exception);
				}
			});
		}
Exemple #35
0
 public EvalResult Eval(EvalRequest code, TaskScheduler mainScheduler, CancellationToken token)
 {
     var t = Task.Factory.StartNew(() => {
         var r = new EvalResult();
         r.HasResult = true;
         r.Result = new UILabel
         {
             BackgroundColor = UIColor.Red,
             Text = "Hello at " + DateTime.Now,
         };
         return r;
     }, token, TaskCreationOptions.None, mainScheduler);
     return t.Result;
 }
Exemple #36
0
		Tuple<UIViewController, bool> GetViewer (EvalResult resp)
		{
			var vc = resp.Result as UIViewController;
			if (vc != null)
				return Tuple.Create (vc, true);
			
			var sv = GetSpecialView (resp.Result);

			vc = sv as UIViewController;
			if (vc != null)
				return Tuple.Create (vc, false);

			var v = sv as UIView;
			if (v != null) {
				vc = new UIViewController ();
				vc.View = v;
				return Tuple.Create (vc, false);
			}

			vc = new ObjectInspector (resp.Result);
			return Tuple.Create (vc, true);
		}
Exemple #37
0
		void Visualize (EvalResult res)
		{
			if (!res.HasResult) {
				return;
			}
			try {
				Console.WriteLine ("LiveCode.Visualize: {0}", res.Result);
			// Analysis disable once EmptyGeneralCatchClause
			} catch (Exception) {				
			}
			visualizer.Visualize (res);
		}
        public void EndEval (EvalResult resultType, bool fSynchronousEval)
        {
            try
            {
                //This is used to avoid deadlock.  Suspend commands synchronizes on this.Process                
                Process.SuspendCommands(true);

                Debug.Assert(Utility.FImplies(fSynchronousEval, !m_fActive));

                if (fSynchronousEval || m_fActive)  //what to do if the eval isn't active anymore??
                {
                    bool fKillThread = false;

                    if (m_threadVirtual != null)
                    {
                        if (m_threadReal.GetLastCorDebugThread() != m_threadVirtual)
                            throw new ArgumentException();

                        m_threadReal.RemoveVirtualThread(m_threadVirtual);
                    }

                    //Stack frames don't appear if they are not refreshed
                    if (fSynchronousEval)
                    {
                        for (CorDebugThread thread = this.m_threadReal; thread != null; thread = thread.NextThread)
                        {
                            thread.RefreshChain();
                        }
                    }

                    if(m_fException)
                    {
                        resultType = EvalResult.Exception;
                    }

                    //Check to see if we are able to EndEval -- is this the last virtual thread?
                    m_fActive = false;
                    m_resultType = resultType;
                    switch (resultType)
                    {
                        case EvalResult.Complete:
                            Process.EnqueueEvent(new ManagedCallbacks.ManagedCallbackEval(m_threadReal, this, ManagedCallbacks.ManagedCallbackEval.EventType.EvalComplete));
                            break;

                        case EvalResult.Exception:
                            Process.EnqueueEvent(new ManagedCallbacks.ManagedCallbackEval(m_threadReal, this, ManagedCallbacks.ManagedCallbackEval.EventType.EvalException));                             
                            break;

                        case EvalResult.Abort:
                            fKillThread = true;
                            /* WARNING!!!!
                             * If we do not give VS a EvalComplete message within 3 seconds of them calling ICorDebugEval::Abort then VS will attempt a RudeAbort
                             * and will display a scary error message about a serious internal debugger error and ignore all future debugging requests, among other bad things.
                             */
                            Process.EnqueueEvent(new ManagedCallbacks.ManagedCallbackEval(m_threadReal, this, ManagedCallbacks.ManagedCallbackEval.EventType.EvalComplete));
                            break;
                    }

                    if (fKillThread && m_threadVirtual != null)
                    {
                        Engine.KillThread(m_threadVirtual.ID);
                    }

                    if (resultType == EvalResult.Abort)
                    {
                        Process.PauseExecution();
                    }
                }
            }
            finally
            {
                Process.SuspendCommands(false);
            }
        }
Exemple #39
0
		object GetViewer (EvalResult resp)
		{
			return resp.Result;
		}
Exemple #40
0
		void Visualize (EvalResult res)
		{
			if (!res.HasResult) {
				return;
			}
			try {
				Log ("Continuous.Visualize: {0}", res.Result);
			// Analysis disable once EmptyGeneralCatchClause
			} catch (Exception) {				
			}
			visualizer.Visualize (res);
		}
Exemple #41
0
        public override EvalResult Evaluate(MakeState s)
        {
            // Is it a register?
            if(Program.regs.ContainsKey(val.ToUpper()))
            {
                var e = new EvalResult();
                e.strval = val.ToUpper();
                e.intval = Program.regs[e.strval];
                e.Type = EvalResult.ResultType.Register;
                return e;
            }

            string full_name = val;

            // If defined in the current file, say so
            if (s.lo.ContainsKey(val))
            {
                // Yes - emit a relocation to the label
                Relocation r = new Relocation();
                r.TargetName = val;
                r.TargetSection = s.lo[val].Section;
                r.Addend = addend;
                r.SourceSection = s.cs;
                r.IsPCRel = is_pcrel;

                return new EvalResult(r);
            }
            else
            {
                // ld defines all unknown symbols as externals
                Relocation r = new Relocation();
                r.TargetName = val;
                r.TargetSection = null;
                r.Addend = addend;
                r.SourceSection = s.cs;
                r.IsPCRel = is_pcrel;

                return new EvalResult(r);
            }
            
            /*if (s.IsDefined(val) == true)
                 return s.GetDefine(val);
            {
                // Not defined in the current section.  Is it
                //  in another?
                if (s.lo.ContainsKey(val))
                {
                    // Yes - emit a relocation to the label
                    Relocation r = new Relocation();
                    r.TargetName = val;
                    r.TargetSection = s.lo[val].Section;
                    r.Addend = addend;
                    r.SourceSection = s.cs;
                    r.IsPCRel = is_pcrel;

                    return new EvalResult(r);
                }

                // ld defines all unknown symbols as externals
                Relocation rext = new Relocation();
                rext.TargetName = val;
                rext.TargetSection = null;
                rext.Addend = addend;
                rext.SourceSection = s.cs;
                rext.IsPCRel = is_pcrel;

                return new EvalResult(rext);
            }*/
        }
Exemple #42
0
        private void EvalTest(string filename, int lineNo, string frameName, int frameIndex, PythonEvaluationResultReprKind reprKind, EvalResult eval) {
            var debugger = new PythonDebugger();
            PythonThread thread = null;
            var process = DebugProcess(debugger, DebuggerTestPath + filename, (newproc, newthread) => {
                var breakPoint = newproc.AddBreakPoint(filename, lineNo);
                breakPoint.Add();
                thread = newthread;
            });

            AutoResetEvent brkHit = new AutoResetEvent(false);
            process.BreakpointHit += (sender, args) => {
                brkHit.Set();
            };

            try {
                process.Start();
                AssertWaited(brkHit);

                var frames = thread.Frames;

                PythonEvaluationResult obj = null;
                string errorMsg;
                if (eval.IsError) {
                    Assert.IsFalse(frames[frameIndex].TryParseText(eval.Expression, out errorMsg), "should not have been able to parse expression");
                    Assert.AreEqual(eval.ExceptionText, errorMsg);
                } else {
                    Assert.IsTrue(frames[frameIndex].TryParseText(eval.Expression, out errorMsg), "failed to parse expression");
                    Assert.IsNull(errorMsg);

                    Assert.AreEqual(frameName, frames[frameIndex].FunctionName);

                    var timeoutToken = new CancellationTokenSource(10000).Token;
                    obj = frames[frameIndex].ExecuteTextAsync(eval.Expression, reprKind)
                        .ContinueWith(t => t.Result, timeoutToken, TaskContinuationOptions.OnlyOnRanToCompletion, TaskScheduler.Current)
                        .GetAwaiter().GetResult();

                    eval.Validate(obj);
                }

                process.Continue();
                WaitForExit(process);
                process = null;
            } finally {
                if (process != null) {
                    process.Terminate();
                    WaitForExit(process, assert: false);
                }
            }
        }
Exemple #43
0
 private void EvalTest(string filename, int lineNo, string frameName, int frameIndex, EvalResult eval) {
     EvalTest(filename, lineNo, frameName, frameIndex, PythonEvaluationResultReprKind.Normal, eval);
 }
Exemple #44
0
		async void HandleRequest (HttpListenerContext c)
		{
			try {

				var path = c.Request.Url.AbsolutePath;
				var resString = "";

				Log ("REQ ON THREAD {0} {1}", Thread.CurrentThread.ManagedThreadId, path);

				if (path == "/watchChanges") {
					try {
						var reqStr = await new StreamReader (c.Request.InputStream, Encoding.UTF8).ReadToEndAsync ().ConfigureAwait (false);
						var req = JsonConvert.DeserializeObject<WatchChangesRequest> (reqStr);
						resString = JsonConvert.SerializeObject (await GetWatchChangesAsync (req));
					} catch (Exception ex) {
						Log (ex, "/watchChanges");
					}
				} else if (path == "/stopVisualizing") {
					try {
						resString = await Task.Factory.StartNew (() => {
							visualizer.StopVisualizing ();
							return "";
						}, CancellationToken.None, TaskCreationOptions.None, mainScheduler);
					} catch (Exception ex) {
						Log (ex, "/stopVisualizing");
					}
				}
				else {
					var reqStr = await new StreamReader (c.Request.InputStream, Encoding.UTF8).ReadToEndAsync ().ConfigureAwait (false);

//					Log (reqStr);

					var req = JsonConvert.DeserializeObject<EvalRequest> (reqStr);

					var token = CancellationToken.None;

					var resp = await Task.Factory.StartNew (() => {
						WatchStore.Clear ();
						var r = new EvalResult ();
						try {
							r = vm.Eval (req, mainScheduler, token);
						}
						catch (Exception ex) {
							Log (ex, "vm.Eval");
						}
						try {
							Task.Factory.StartNew (() =>
							{
								Visualize (r);
							}, token, TaskCreationOptions.None, mainScheduler).Wait ();
						}
						catch (Exception ex) {
							Log (ex, "Visualize");
						}
						var response = new EvalResponse {
							Messages = r.Messages,
							WatchValues = WatchStore.Values,
							Duration = r.Duration,
						};
						return Tuple.Create (r, JsonConvert.SerializeObject (response));
					}, token);

					Log (resp.Item2);

					resString = resp.Item2;
				}

				var bytes = Encoding.UTF8.GetBytes (resString);
				c.Response.StatusCode = 200;
				c.Response.ContentLength64 = bytes.LongLength;
				await c.Response.OutputStream.WriteAsync (bytes, 0, bytes.Length).ConfigureAwait (false);

			} catch (Exception ex) {
				Log (ex, "HandleRequest");
				c.Response.StatusCode = 500;
			} finally {
				c.Response.Close ();
			}
		}
Exemple #45
0
		partial void PlatformVisualize (EvalResult res);
Exemple #46
0
		public void Visualize (EvalResult res)
		{
			PlatformVisualize (res);
		}