improved parser string handling
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / compiler / ast / Define.java
1 package net.sourceforge.phpdt.internal.compiler.ast;
2
3 import net.sourceforge.phpdt.internal.compiler.ast.declarations.VariableUsage;
4 import net.sourceforge.phpdt.internal.compiler.parser.Outlineable;
5 import net.sourceforge.phpdt.internal.ui.PHPUiImages;
6 import org.eclipse.jface.resource.ImageDescriptor;
7 import org.eclipse.jface.text.Position;
8
9 import java.util.List;
10
11 /**
12  * a Define.
13  * define(expression,expression)
14  * 
15  * @author Matthieu Casanova
16  */
17 public final class Define extends Statement implements Outlineable {
18
19   private final Expression defineName;
20   private final Expression defineValue;
21
22   private final Object parent;
23   private final Position position;
24
25   public Define(final Object parent,
26                 final Expression defineName,
27                 final Expression defineValue,
28                 final int sourceStart,
29                 final int sourceEnd) {
30     super(sourceStart, sourceEnd);
31     this.parent = parent;
32     this.defineName = defineName;
33     this.defineValue = defineValue;
34     position = new Position(sourceStart, sourceEnd);
35   }
36
37   public String toString(final int tab) {
38     final String nameString = defineName.toStringExpression();
39     final String valueString = defineValue.toStringExpression();
40     final StringBuffer buff = new StringBuffer(tab + 10 + nameString.length() + valueString.length());
41     buff.append(tabString(tab));
42     buff.append("define(");
43     buff.append(nameString);
44     buff.append(", ");
45     buff.append(valueString);
46     buff.append(")");
47     return buff.toString();
48   }
49
50   public String toString() {
51     final String nameString = defineName.toStringExpression();
52     final String valueString = defineValue.toStringExpression();
53     final StringBuffer buff = new StringBuffer(nameString.length() + valueString.length() + 3);
54     buff.append(nameString);
55     buff.append(" = ");
56     buff.append(valueString);
57     return buff.toString();
58   }
59
60   public ImageDescriptor getImage() {
61     return PHPUiImages.DESC_VAR;
62   }
63
64   public Object getParent() {
65     return parent;
66   }
67
68   public Position getPosition() {
69     return position;
70   }
71
72   /**
73    * Get the variables from outside (parameters, globals ...)
74    *
75    * @param list the list where we will put variables
76    */
77   public void getOutsideVariable(final List list) {
78     list.add(new VariableUsage(defineName.toStringExpression(), sourceStart));//todo: someday : evaluate the defineName
79   }
80
81   /**
82    * get the modified variables.
83    *
84    * @param list the list where we will put variables
85    */
86   public void getModifiedVariable(final List list) {}
87
88   /**
89    * Get the variables used.
90    *
91    * @param list the list where we will put variables
92    */
93   public void getUsedVariable(final List list) {}
94 }