1 package net.sourceforge.phpdt.internal.debug.core.watch;
3 import java.util.Vector;
5 import net.sourceforge.phpdt.internal.debug.core.PHPDBGProxy;
6 import net.sourceforge.phpdt.internal.debug.core.model.PHPDebugTarget;
7 import net.sourceforge.phpdt.internal.debug.core.model.PHPStackFrame;
8 import net.sourceforge.phpdt.internal.debug.core.model.PHPValue;
9 import net.sourceforge.phpdt.internal.debug.core.model.PHPVariable;
11 import org.eclipse.debug.core.model.IDebugElement;
12 import org.eclipse.debug.core.model.IWatchExpressionDelegate;
13 import org.eclipse.debug.core.model.IWatchExpressionListener;
14 import org.eclipse.debug.core.model.IWatchExpressionResult;
19 public class PHPWatchExpressionDelegate implements IWatchExpressionDelegate {
21 public void evaluateExpression(String expression, IDebugElement context,
22 IWatchExpressionListener listener) {
23 IWatchExpressionResult x;
27 if (!(context instanceof PHPStackFrame)) {
28 x = new PHPWatchExpressionResult(expression, null, null);
29 listener.watchEvaluationFinished(x);
33 dbg = ((PHPDebugTarget) context.getDebugTarget()).getPHPDBGProxy();
34 s = (PHPStackFrame) context;
37 PHPVariable result[] = dbg.eval(s, expression);
39 if (result.length == 0) {
40 x = new PHPWatchExpressionResult(expression, null, null);
42 switch (result[0].getReferenceType()) {
43 case PHPValue.PEVT_ARRAY:
44 case PHPValue.PEVT_OBJECT:
45 result[0].setName(expression);
49 x = new PHPWatchExpressionResult(expression, result[0]
52 } catch (Exception e) {
57 x = new PHPWatchExpressionResult(expression, null, s1);
60 listener.watchEvaluationFinished(x);
63 private void reset(PHPVariable variable) {
67 switch (variable.getReferenceType()) {
68 case PHPValue.PEVT_ARRAY:
69 value = (PHPValue) variable.getValue();
70 variables = value.getChildVariables();
71 for (int i = 0; i < variables.size(); i++) {
72 PHPVariable var = (PHPVariable) variables.get(i);
73 String name = var.getName();
74 if (var.getLongName().equals(name)) {
77 var.setParent(variable);
82 case PHPValue.PEVT_OBJECT:
83 value = (PHPValue) variable.getValue();
84 variables = value.getChildVariables();
85 for (int i = 0; i < variables.size(); i++) {
86 PHPVariable var = (PHPVariable) variables.get(i);
87 var.setParent(variable);