721354a0d3b6fb88a2d96358d97b9c5c8b914eca
[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 class FunctionCall extends AbstractSuffixExpression {
10
11   /** the function name. */
12   public Expression functionName;
13
14   /** the arguments. */
15   public Expression[] args;
16
17   public FunctionCall(final Expression prefix,
18                       final Expression[] args,
19                       final int sourceEnd) {
20     super(prefix.sourceStart, sourceEnd);
21     this.functionName = prefix;
22     this.args = args;
23   }
24
25   /**
26    * Return the expression as String.
27    * @return the expression
28    */
29   public String toStringExpression() {
30     final StringBuffer buff = new StringBuffer(functionName.toStringExpression());
31     buff.append('(');
32     if (args != null) {
33       for (int i = 0; i < args.length; i++) {
34         final Expression arg = args[i];
35         if (i != 0) {
36           buff.append(',');
37         }
38         buff.append(arg.toStringExpression());
39       }
40     }
41     buff.append(')');
42     return buff.toString();
43   }
44
45   /**
46    * Get the variables from outside (parameters, globals ...)
47    */
48   public void getOutsideVariable(final List list) {
49   }
50
51   /**
52    * get the modified variables.
53    */
54   public void getModifiedVariable(final List list) {
55     if (args != null) {
56       for (int i = 0; i < args.length; i++) {
57         args[i].getModifiedVariable(list);
58       }
59     }
60   }
61
62   /**
63    * Get the variables used.
64    */
65   public void getUsedVariable(final List list) {
66     functionName.getUsedVariable(list);
67     if (args != null) {
68       for (int i = 0; i < args.length; i++) {
69         args[i].getUsedVariable(list);
70       }
71     }
72   }
73 }