void IDkmCustomVisualizer.EvaluateVisualizedExpression(DkmVisualizedExpression expression, out DkmEvaluationResult resultObject) { Debug.Print("UE4PV: EvaluateVisualizedExpression('{0}'/'{1}', [{2}])", Utility.GetExpressionFullName(expression), Utility.GetExpressionName(expression), expression.TagValue ); // Sanity check to confirm this is only being invoked for UObject types. @TODO: Remove eventually. // Believe this method is only invoked on DkmRootVisualizedExpression instances, not children. Debug.Assert(expression.VisualizerId == Guids.Visualizer.UObject); UE4Visualizer visualizer = null; bool result = UE4VisualizerRegistrar.TryCreateVisualizer(expression, out visualizer); if (!result) { OnVisualizerMatchFailed(expression, out resultObject); return; } // Evaluate the visualization result DkmEvaluationResult eval = visualizer.EvaluationResult; resultObject = eval; // Associate the visualizer with the expression expression.SetDataItem <ExpressionDataItem>( DkmDataCreationDisposition.CreateAlways, new ExpressionDataItem(visualizer) ); }
void IDkmCustomVisualizer.EvaluateVisualizedExpression(DkmVisualizedExpression expression, out DkmEvaluationResult resultObject) { Debug.Print("UE4PV: EvaluateVisualizedExpression('{0}'/'{1}', [{2}])", Utility.GetExpressionFullName(expression), Utility.GetExpressionName(expression), expression.TagValue ); // Sanity check to confirm this is only being invoked for UObject types. @TODO: Remove eventually. // Believe this method is only invoked on DkmRootVisualizedExpression instances, not children. Debug.Assert(expression.VisualizerId == Guids.Visualizer.UObject); UE4Visualizer visualizer = null; bool result = UE4VisualizerRegistrar.TryCreateVisualizer(expression, out visualizer); if(!result) { OnVisualizerMatchFailed(expression, out resultObject); return; } // Evaluate the visualization result DkmEvaluationResult eval = visualizer.EvaluationResult; resultObject = eval; // Associate the visualizer with the expression expression.SetDataItem<ExpressionDataItem>( DkmDataCreationDisposition.CreateAlways, new ExpressionDataItem(visualizer) ); }
/// <summary> /// Evaluates the specified visualized expression using our custom evaluator. /// </summary> public void EvaluateVisualizedExpression(DkmVisualizedExpression visualizedExpression, out DkmEvaluationResult resultObject) { VSContext.InitializeInteractiveExecution(); VSCustomVisualizerEvaluator evaluator = new VSCustomVisualizerEvaluator(visualizedExpression); resultObject = evaluator.EvaluationResult; visualizedExpression.SetDataItem(DkmDataCreationDisposition.CreateAlways, evaluator); }
void IDkmCustomVisualizer.EvaluateVisualizedExpression(DkmVisualizedExpression expression, out DkmEvaluationResult resultObject) { BasicVisualizer visualizer = null; DkmFailedEvaluationResult failureResult = null; if (!TryGetRegisteredVisualizer(expression, out visualizer, out failureResult)) { resultObject = failureResult; return; } DkmEvaluationResult evalResult = visualizer.EvaluationResult; EvaluationDataItem resultDataItem = new EvaluationDataItem(expression, evalResult); expression.SetDataItem(DkmDataCreationDisposition.CreateAlways, resultDataItem); string name = null; string fullName = null; Utility.GetExpressionName(expression, out name, out fullName); if (evalResult.TagValue == DkmEvaluationResult.Tag.SuccessResult) { DkmSuccessEvaluationResult successResult = (DkmSuccessEvaluationResult)evalResult; resultObject = DkmSuccessEvaluationResult.Create( successResult.InspectionContext, successResult.StackFrame, name, successResult.FullName, successResult.Flags, successResult.Value, successResult.EditableValue, successResult.Type, successResult.Category, successResult.Access, successResult.StorageType, successResult.TypeModifierFlags, successResult.Address, successResult.CustomUIVisualizers, successResult.ExternalModules, resultDataItem); } else { DkmFailedEvaluationResult failResult = (DkmFailedEvaluationResult)evalResult; resultObject = DkmFailedEvaluationResult.Create( failResult.InspectionContext, failResult.StackFrame, name, fullName, failResult.ErrorMessage, failResult.Flags, null); return; } }
void IDkmCustomVisualizer.EvaluateVisualizedExpression(DkmVisualizedExpression expression, out DkmEvaluationResult resultObject) { BasicVisualizer visualizer = null; DkmFailedEvaluationResult failureResult = null; if (!TryGetRegisteredVisualizer(expression, out visualizer, out failureResult)) { resultObject = failureResult; return; } DkmEvaluationResult evalResult = visualizer.EvaluationResult; EvaluationDataItem resultDataItem = new EvaluationDataItem(expression, evalResult); expression.SetDataItem(DkmDataCreationDisposition.CreateAlways, resultDataItem); string name = null; string fullName = null; Utility.GetExpressionName(expression, out name, out fullName); if (evalResult.TagValue == DkmEvaluationResult.Tag.SuccessResult) { DkmSuccessEvaluationResult successResult = (DkmSuccessEvaluationResult)evalResult; resultObject = DkmSuccessEvaluationResult.Create( successResult.InspectionContext, successResult.StackFrame, name, successResult.FullName, successResult.Flags, successResult.Value, successResult.EditableValue, successResult.Type, successResult.Category, successResult.Access, successResult.StorageType, successResult.TypeModifierFlags, successResult.Address, successResult.CustomUIVisualizers, successResult.ExternalModules, resultDataItem); } else { DkmFailedEvaluationResult failResult = (DkmFailedEvaluationResult)evalResult; resultObject = DkmFailedEvaluationResult.Create( failResult.InspectionContext, failResult.StackFrame, name, fullName, failResult.ErrorMessage, failResult.Flags, null); return; } }
void IDkmCustomVisualizer.EvaluateVisualizedExpression(DkmVisualizedExpression expression, out DkmEvaluationResult resultObject) { if (KUE4VS.ExtContext.Instance.ExtensionOptions.EnablePropVis == false) { /* var LangExpr = DkmLanguageExpression.Create(DefaultEE.CppLanguage, DkmEvaluationFlags.None, Utility.GetExpressionFullName(expression), null); * expression.EvaluateExpressionCallback(expression.InspectionContext, LangExpr, expression.StackFrame, out resultObject); * return; */ resultObject = null; return; } Debug.Print("UE4PV: EvaluateVisualizedExpression('{0}'/'{1}', [{2}])", Utility.GetExpressionFullName(expression), Utility.GetExpressionName(expression), expression.TagValue ); // Sanity check to confirm this is only being invoked for UObject types. @TODO: Remove eventually. // Believe this method is only invoked on DkmRootVisualizedExpression instances, not children. Debug.Assert(expression.VisualizerId == Guids.Visualizer.UObject); UE4Visualizer visualizer = null; bool result = UE4VisualizerRegistrar.TryCreateVisualizer(expression, out visualizer); if (!result) { OnVisualizerMatchFailed(expression, out resultObject); return; } // Evaluate the visualization result DkmEvaluationResult eval = visualizer.EvaluationResult; resultObject = eval; // Associate the visualizer with the expression expression.SetDataItem <ExpressionDataItem>( DkmDataCreationDisposition.CreateAlways, new ExpressionDataItem(visualizer) ); }