stack frame bugs fixed
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / compiler / ast / FunctionCall.java
1 package net.sourceforge.phpdt.internal.compiler.ast;
2
3 import java.util.List;
4
5 /**
6  * A Function call.
7  * @author Matthieu Casanova
8  */
9 public final class FunctionCall extends AbstractSuffixExpression {
10
11   /** the function name. */
12   private final Expression functionName;
13
14   /** the arguments. */
15   private final Expression[] args;
16
17   /**
18    * a function call.
19    * it's <code>functionName(args ...)
20    * @param functionName the function name
21    * @param args the arguments
22    * @param sourceEnd the source end
23    */
24   public FunctionCall(final Expression functionName,
25                       final Expression[] args,
26                       final int sourceEnd) {
27     super(functionName.sourceStart, sourceEnd);
28     this.functionName = functionName;
29     this.args = args;
30   }
31
32   /**
33    * Return the expression as String.
34    * @return the expression
35    */
36   public String toStringExpression() {
37     final StringBuffer buff = new StringBuffer(functionName.toStringExpression());
38     buff.append('(');
39     if (args != null) {
40       for (int i = 0; i < args.length; i++) {
41         final Expression arg = args[i];
42         if (i != 0) {
43           buff.append(',');
44         }
45         buff.append(arg.toStringExpression());
46       }
47     }
48     buff.append(')');
49     return buff.toString();
50   }
51
52   /**
53    * Get the variables from outside (parameters, globals ...)
54    *
55    * @param list the list where we will put variables
56    */
57   public void getOutsideVariable(final List list) {}
58
59   /**
60    * get the modified variables.
61    *
62    * @param list the list where we will put variables
63    */
64   public void getModifiedVariable(final List list) {
65     if (args != null) {
66       for (int i = 0; i < args.length; i++) {
67         args[i].getModifiedVariable(list);
68       }
69     }
70   }
71
72   /**
73    * Get the variables used.
74    *
75    * @param list the list where we will put variables
76    */
77   public void getUsedVariable(final List list) {
78     functionName.getUsedVariable(list);
79     if (args != null) {
80       for (int i = 0; i < args.length; i++) {
81         args[i].getUsedVariable(list);
82       }
83     }
84   }
85 }