X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/parser/PHPFunctionDeclaration.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/parser/PHPFunctionDeclaration.java index 31e473c..1c86a3f 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/parser/PHPFunctionDeclaration.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/parser/PHPFunctionDeclaration.java @@ -1,5 +1,8 @@ package net.sourceforge.phpdt.internal.compiler.parser; +import java.util.Enumeration; +import java.util.Hashtable; + import net.sourceforge.phpdt.internal.ui.PHPUiImages; import org.eclipse.jface.resource.ImageDescriptor; @@ -10,6 +13,18 @@ import org.eclipse.jface.resource.ImageDescriptor; */ public class PHPFunctionDeclaration extends PHPSegmentWithChildren { + /** The parameters of the function. */ + private final Hashtable parameters; + + /** The parameters of the function. */ + private final Hashtable declaredVariables; + + /** + * A String representation of the function (it's generated once because it needs to iterate + * a hashtable == long. + */ + private String stringRepresentation; + /** * Create a function declaration. * @param parent the parent object (it should be a php class) @@ -18,8 +33,24 @@ public class PHPFunctionDeclaration extends PHPSegmentWithChildren { */ public PHPFunctionDeclaration(Object parent, String name, int index) { super(parent, name, index); + parameters = null; + declaredVariables = null; } - + + /** + * Create a function declaration. + * @param parent the parent object (it should be a php class) + * @param name the name of the function + * @param index where the function is in the file + * @param parameters the list of parameters (it should contains only PHPVar) + */ + public PHPFunctionDeclaration(Object parent, String name, int index, Hashtable parameters) { + super(parent, name, index); + this.parameters = parameters; + declaredVariables = (Hashtable) parameters.clone(); + createStringView(); + } + /** * Get the image of a class. * @return the image that represents a php class @@ -27,4 +58,73 @@ public class PHPFunctionDeclaration extends PHPSegmentWithChildren { public ImageDescriptor getImage() { return PHPUiImages.DESC_FUN; } + + /** + * Return the string representation of the function. + * @return the string representation of the function + */ + public String toString() { + if (parameters == null) { + return super.toString(); + } + return stringRepresentation; + } + + /** + * Create the String representation of the function. + */ + private void createStringView() { + StringBuffer buff = new StringBuffer(name).append("("); + Enumeration vars = parameters.elements(); + boolean first = false; + while (vars.hasMoreElements()) { + PHPVarDeclaration o = (PHPVarDeclaration) vars.nextElement(); + if (first) { + buff.append(","); + } else { + first = true; + } + buff.append(o.toString()); + } + buff.append(")"); + stringRepresentation = buff.toString(); + } + + /** + * Return a parameter of the function + * @param parameterName the name of the parameter + * @return it will return the PHPVarDeclaration of the parameter asked, or null + */ + public PHPVarDeclaration getParameter(String parameterName) { + return (PHPVarDeclaration) parameters.get(parameterName); + } + + /** + * Return all parameters of the function. + * @return a hashtable containing all PHPVarDeclaration + */ + public Hashtable getParameters() { + return parameters; + } + + /** + * Return a variable of the function + * @param variableName the name of the parameter + * @return it will return the PHPVarDeclaration of the parameter asked, or null + */ + public PHPVarDeclaration getVariable(String variableName) { + return (PHPVarDeclaration) declaredVariables.get(variableName); + } + + /** + * Return all declared variables of the function. + * @return a hashtable containing all PHPVarDeclaration + */ + public Hashtable getVariables() { + return declaredVariables; + } + + public Object addVariable(PHPVarDeclaration var) { + return declaredVariables.put(var.getVariable().getName(),var); + } }