public override Task <GetChildrenResponse> GetChildren( GetChildrenRequest request, ServerCallContext context) { var value = valueStore.GetObject(request.Value.Id); var children = value.GetChildren(request.Offset, request.Count); var response = new GetChildrenResponse(); for (uint n = 0; n < children.Count; ++n) { RemoteValue child = children[(int)n]; if (child != null) { response.Children[n + request.Offset] = GrpcFactoryUtils.CreateValue(child, valueStore.AddObject(child)); } } // (internal): Special case for pointers. LLDB names them $"*{value.GetName()}", but // Visual Studio just shows an empty name. if (value.TypeIsPointerType() && response.Children.ContainsKey(0) && response.Children[0].Name == $"*{value.GetName()}") { response.Children[0].Name = string.Empty; } return(Task.FromResult(response)); }
public override Task <EvaluateExpressionLldbEvalResponse> EvaluateExpressionLldbEval( EvaluateExpressionLldbEvalRequest request, ServerCallContext context) { var value = valueStore.GetObject(request.Value.Id); IDictionary <string, SbValue> contextValues = new Dictionary <string, SbValue>(); if (request.ContextVariables != null) { foreach (var contextVariable in request.ContextVariables) { var val = valueStore.GetObject(contextVariable.Value.Id); if (val != null) { contextValues.Add(contextVariable.Name, val.GetSbValue()); } } } var result = value.EvaluateExpressionLldbEval(request.Expression, contextValues); var response = new EvaluateExpressionLldbEvalResponse(); if (result != null) { response.Value = GrpcFactoryUtils.CreateValue(result, valueStore.AddObject(result)); } return(Task.FromResult(response)); }
public override Task <GetChildMemberWithNameResponse> GetChildMemberWithName( GetChildMemberWithNameRequest request, ServerCallContext context) { var value = valueStore.GetObject(request.Value.Id); var child = value.GetChildMemberWithName(request.Name); var response = new GetChildMemberWithNameResponse(); if (child != null) { response.Child = GrpcFactoryUtils.CreateValue(child, valueStore.AddObject(child)); } return(Task.FromResult(response)); }
public override Task <CloneResponse> Clone(CloneRequest request, ServerCallContext context) { RemoteValue value = valueStore.GetObject(request.Value.Id); RemoteValue cloneResult = value.Clone(); var response = new CloneResponse(); if (cloneResult != null) { response.CloneResult = GrpcFactoryUtils.CreateValue(cloneResult, valueStore.AddObject(cloneResult)); } return(Task.FromResult(response)); }
public override Task <GetValueForExpressionPathResponse> GetValueForExpressionPath( GetValueForExpressionPathRequest request, ServerCallContext context) { var value = valueStore.GetObject(request.Value.Id); var childValue = value.GetValueForExpressionPath(request.ExpressionPath); GetValueForExpressionPathResponse response = new GetValueForExpressionPathResponse(); if (childValue != null) { response.Value = GrpcFactoryUtils.CreateValue( childValue, valueStore.AddObject(childValue)); } return(Task.FromResult(response)); }
public override Task <AddressOfResponse> AddressOf( AddressOfRequest request, ServerCallContext context) { var value = valueStore.GetObject(request.Value.Id); var address = value.AddressOf(); var response = new AddressOfResponse(); if (address != null) { response.AddressValue = GrpcFactoryUtils.CreateValue( address, valueStore.AddObject(address)); } return(Task.FromResult(response)); }
public override Task <DereferenceResponse> Dereference( DereferenceRequest request, ServerCallContext context) { RemoteValue value = valueStore.GetObject(request.Value.Id); RemoteValue dereferenceResult = value.Dereference(); var response = new DereferenceResponse(); if (dereferenceResult != null) { response.DereferenceResult = GrpcFactoryUtils.CreateValue( dereferenceResult, valueStore.AddObject(dereferenceResult)); } return(Task.FromResult(response)); }
public override Task <EvaluateExpressionLldbEvalResponse> EvaluateExpressionLldbEval( EvaluateExpressionLldbEvalRequest request, ServerCallContext context) { RemoteFrame frame = frameStore.GetObject(request.Frame.Id); RemoteValue value = frame.EvaluateExpressionLldbEval(request.Expression); var response = new EvaluateExpressionLldbEvalResponse(); if (value != null) { response.Value = GrpcFactoryUtils.CreateValue(value, valueStore.AddObject(value)); } return(Task.FromResult(response)); }
public override Task <GetRegistersResponse> GetRegisters(GetRegistersRequest request, ServerCallContext context) { RemoteFrame frame = frameStore.GetObject(request.Frame.Id); List <RemoteValue> registers = frame.GetRegisters(); var response = new GetRegistersResponse(); response.Registers.Add( registers.Select(s => GrpcFactoryUtils.CreateValue( s, valueStore.AddObject(s))).ToList()); return(Task.FromResult(response)); }
public override Task <EvaluateExpressionResponse> EvaluateExpression( EvaluateExpressionRequest request, ServerCallContext context) { var value = valueStore.GetObject(request.Value.Id); var expressionResult = value.EvaluateExpression(request.Expression); var response = new EvaluateExpressionResponse(); if (expressionResult != null) { response.ExpressionResult = GrpcFactoryUtils.CreateValue( expressionResult, valueStore.AddObject(expressionResult)); } return(Task.FromResult(response)); }
public override Task <CreateValueFromAddressResponse> CreateValueFromAddress( CreateValueFromAddressRequest request, ServerCallContext context) { RemoteValue value = valueStore.GetObject(request.Value.Id); RemoteValue expressionResult = value.CreateValueFromAddress( request.Name, request.Address, typeStore.GetObject(request.Type.Id)); var response = new CreateValueFromAddressResponse(); if (expressionResult != null) { response.ExpressionResult = GrpcFactoryUtils.CreateValue( expressionResult, valueStore.AddObject(expressionResult)); } return(Task.FromResult(response)); }
public override Task <GetValueForVariablePathResponse> GetValueForVariablePath( GetValueForVariablePathRequest request, ServerCallContext context) { RemoteFrame frame = frameStore.GetObject(request.Frame.Id); RemoteValue value = frame.GetValueForVariablePath(request.VariablePath); var response = new GetValueForVariablePathResponse(); if (value != null) { response.Value = GrpcFactoryUtils.CreateValue(value, valueStore.AddObject(value)); } return(Task.FromResult(response)); }
public override Task <GetVariablesResponse> GetVariables(GetVariablesRequest request, ServerCallContext context) { RemoteFrame frame = frameStore.GetObject(request.Frame.Id); List <RemoteValue> variables = frame.GetVariables( request.Arguments, request.Locals, request.Statics, request.OnlyInScope); var response = new GetVariablesResponse(); response.Variables.Add( variables.Select(s => GrpcFactoryUtils.CreateValue( s, valueStore.AddObject(s))).ToList()); return(Task.FromResult(response)); }
public override Task <FindValueResponse> FindValue(FindValueRequest request, ServerCallContext context) { RemoteFrame frame = frameStore.GetObject(request.Frame.Id); RemoteValue variable = frame.FindValue(request.VariableName, request.ValueType.ConvertTo <LldbApi.ValueType>()); var response = new FindValueResponse(); if (variable != null) { response.Variable = GrpcFactoryUtils.CreateValue( variable, valueStore.AddObject(variable)); } return(Task.FromResult(response)); }
public override Task <GetCachedViewResponse> GetCachedView( GetCachedViewRequest request, ServerCallContext context) { var value = valueStore.GetObject(request.Value.Id); value.SetFormat(request.Format.ConvertTo <LldbApi.ValueFormat>()); var response = new GetCachedViewResponse { ValueInfo = CreateValueInfoAndUpdateStores(value) }; var addressOf = value.AddressOf(); if (addressOf != null) { response.AddressValue = GrpcFactoryUtils.CreateValue( addressOf, valueStore.AddObject(addressOf)); response.AddressInfo = CreateValueInfoAndUpdateStores(addressOf); } return(Task.FromResult(response)); }