| /******************************************************************************* |
| * Copyright (c) 2017 Kichwa Coders Ltd. and others. |
| * This program and the accompanying materials are made |
| * available under the terms of the Eclipse Public License 2.0 |
| * which is available at https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| *******************************************************************************/ |
| package org.eclipse.lsp4e.debug.debugmodel; |
| |
| import java.util.ArrayList; |
| import java.util.List; |
| |
| import org.eclipse.debug.core.DebugException; |
| import org.eclipse.debug.core.model.IValue; |
| import org.eclipse.debug.core.model.IVariable; |
| import org.eclipse.lsp4j.debug.Variable; |
| import org.eclipse.lsp4j.debug.VariablesArguments; |
| |
| public final class DSPValue extends DSPDebugElement implements IValue { |
| |
| private DSPVariable modelVariable; |
| private Integer variablesReference; |
| private String value; |
| private IVariable[] cachedVariables; |
| |
| public DSPValue(DSPVariable variable, Integer variablesReference, String value) { |
| super(variable.getDebugTarget()); |
| this.modelVariable = variable; |
| this.variablesReference = variablesReference; |
| this.value = value; |
| } |
| |
| @Override |
| public IVariable[] getVariables() throws DebugException { |
| if (!hasVariables()) { |
| return new IVariable[0]; |
| } |
| if (cachedVariables == null) { |
| VariablesArguments arguments = new VariablesArguments(); |
| arguments.setVariablesReference(variablesReference); |
| Variable[] targetVariables = complete(getDebugTarget().getDebugProtocolServer().variables(arguments)) |
| .getVariables(); |
| |
| List<DSPVariable> variables = new ArrayList<>(); |
| for (Variable variable : targetVariables) { |
| variables.add(new DSPVariable(modelVariable.getDebugTarget(), variablesReference, variable.getName(), |
| variable.getValue(), variable.getVariablesReference())); |
| } |
| |
| cachedVariables = variables.toArray(new DSPVariable[variables.size()]); |
| } |
| return cachedVariables; |
| } |
| |
| @Override |
| public String getReferenceTypeName() throws DebugException { |
| // TODO |
| return modelVariable.getName(); |
| } |
| |
| @Override |
| public String getValueString() throws DebugException { |
| return value; |
| } |
| |
| @Override |
| public boolean isAllocated() throws DebugException { |
| // TODO |
| return true; |
| } |
| |
| @Override |
| public boolean hasVariables() throws DebugException { |
| return variablesReference != null && variablesReference > 0; |
| } |
| } |