org.eclipse.wst.jsdt.core

## Interface IFunction

All Superinterfaces:
  IJavaScriptElement, ILookupScope, IMember, IParent, ISourceManipulation, ISourceReference

    public interface IFunction
    extends IMember

Represents a function or a method (or constructor) declared in a type.

This interface is not intended to be implemented by clients.

Provisional API: This class/interface is part of an interim API that is still under development and expected to change significantly before reaching stability. It is being made available at this early stage to solicit feedback from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken (repeatedly) as the API evolves.

### Field Summary

### Fields inherited from interface org.eclipse.wst.jsdt.core.IJavaScriptElement

`CLASS_FILE, EXPORT_CONTAINER, EXPORT_DECLARATION, FIELD, IMPORT_CONTAINER, IMPORT_DECLARATION, INITIALIZER, JAVASCRIPT_MODEL, JAVASCRIPT_PROJECT, JAVASCRIPT_UNIT, LOCAL_VARIABLE, METHOD, PACKAGE_FRAGMENT, PACKAGE_FRAGMENT_ROOT, TYPE`

### Method Summary

All Methods Instance Methods Abstract Methods
`java.lang.String` `getElementName()` Returns the simple name of this function or method.
`IFunction` `getFunction(java.lang.String selector, java.lang.String[] parameterTypeSignatures)`
`java.lang.String` `getKey()` Returns the binding key for this method.
`int` `getNumberOfParameters()` Returns the number of parameters of this method.
`java.lang.String[]` `getParameterNames()` Returns the names of parameters in this method.
`java.lang.String[]` `getParameterTypes()` Returns the type signatures for the parameters of this method.
`java.lang.String[]` `getRawParameterNames()` Returns the names of parameters in this method.
`java.lang.String` `getReturnType()` Returns the type signature of the return value of this method.
`java.lang.String` `getSignature()` Returns the signature of this method.
`boolean` `isConstructor()` Returns whether this method is a constructor.
`boolean` `isResolved()` Returns whether this method represents a resolved method.
`boolean` `isSimilar(IFunction method)` Returns whether this method is similar to the given method.

### Methods inherited from interface org.eclipse.wst.jsdt.core.IMember

`getCategories, getClassFile, getDeclaringType, getFlags, getJavaScriptUnit, getJSdocRange, getNameRange, getOccurrenceCount, getType, getTypeRoot, isBinary`

### Methods inherited from interface org.eclipse.wst.jsdt.core.IJavaScriptElement

`exists, getAncestor, getAttachedJavadoc, getCommonSuperType, getCorrespondingResource, getDisplayName, getElementType, getHandleIdentifier, getHostPath, getJavaScriptModel, getJavaScriptProject, getOpenable, getParent, getPath, getPrimaryElement, getResource, getSchedulingRule, getUnderlyingResource, isReadOnly, isStructureKnown, isVirtual`

### Methods inherited from interface org.eclipse.wst.jsdt.core.ILookupScope

`newNameLookup, newNameLookup, newSearchableNameEnvironment, newSearchableNameEnvironment`

### Methods inherited from interface org.eclipse.wst.jsdt.core.ISourceReference

`exists, getSource, getSourceRange`

### Methods inherited from interface org.eclipse.wst.jsdt.core.ISourceManipulation

`copy, delete, move, rename`

### Methods inherited from interface org.eclipse.wst.jsdt.core.IParent

`getChildren, hasChildren`

### Method Detail

#### getElementName

    java.lang.String getElementName()

Returns the simple name of this function or method. For a constructor, this returns the simple name of the declaring type. Note: This holds whether the constructor appears in a source or binary type This is a handle-only method.

Specified by:
  `getElementName` in interface `IJavaScriptElement`
Returns:
  the simple name of this method

#### getNumberOfParameters

    int getNumberOfParameters()

Returns the number of parameters of this method. This is a handle-only method.

Returns:
  the number of parameters of this method

#### getKey

    java.lang.String getKey()

Returns the binding key for this method. A binding key is a key that uniquely identifies this method. It allows access to generic info for parameterized methods.

Returns:
  the binding key for this method
See Also:
  `IBinding.getKey()`, `BindingKey`

#### getParameterNames

    java.lang.String[] getParameterNames()
                                  throws JavaScriptModelException

Returns the names of parameters in this method. Returns an empty array if this method has no parameters.

For example, a method declared as `function foo( text, length)` would return the array `{"text","length"}`.

Returns:
  the names of parameters in this method, an empty array if this method has no parameters
Throws:
  `JavaScriptModelException` - if this element does not exist or if an exception occurs while accessing its corresponding resource.

#### getParameterTypes

    java.lang.String[] getParameterTypes()

Returns the type signatures for the parameters of this method. Returns an empty array if this method has no parameters. This is a handle-only method.

The type signatures may be either unresolved (for source types) or resolved (for binary types), and either basic (for basic types) or rich (for parameterized types). See `Signature` for details.

Returns:
  the type signatures for the parameters of this method, an empty array if this method has no parameters
See Also:
  `Signature`

#### getRawParameterNames

    java.lang.String[] getRawParameterNames()
                                     throws JavaScriptModelException

Returns the names of parameters in this method. Returns an empty array if this method has no parameters.

For example, a method declared as `function foo( text, length)` would return the array `{"text","length"}`. For the same method in a binary, this would return `{"arg0", "arg1"}`.

Returns:
  the names of parameters in this method, an empty array if this method has no parameters
Throws:
  `JavaScriptModelException` - if this element does not exist or if an exception occurs while accessing its corresponding resource.

#### getReturnType

    java.lang.String getReturnType()
                            throws JavaScriptModelException

Returns the type signature of the return value of this method. For constructors, this returns the signature for void.

Until EMCAScript 4 is supported, types are inferred by analying the code, and are not necessarily accurate.

For example, a source method declared as `function getName(){return "abc"}` would return `"QString;"`.

The type signature may be either unresolved (for source types) or resolved (for binary types), and either basic (for basic types) or rich (for parameterized types). See `Signature` for details.

Returns:
  the type signature of the return value of this method, void for constructors
Throws:
  `JavaScriptModelException` - if this element does not exist or if an exception occurs while accessing its corresponding resource.
See Also:
  `Signature`

#### getSignature

    java.lang.String getSignature()
                           throws JavaScriptModelException

Returns the signature of this method. This includes the signatures for the parameter types and return type, but does not include the method name, exception types, or type parameters.

For example, a source method declared as `public void foo(String text, int length)` would return `"(QString;I)V"`.

The type signatures embedded in the method signature may be either unresolved (for source types) or resolved (for binary types), and either basic (for basic types) or rich (for parameterized types). See `Signature` for details.

Returns:
  the signature of this method
Throws:
  `JavaScriptModelException` - if this element does not exist or if an exception occurs while accessing its corresponding resource.
See Also:
  `Signature`

#### isConstructor

    boolean isConstructor()
                   throws JavaScriptModelException

Returns whether this method is a constructor.

Returns:
  true if this method is a constructor, false otherwise
Throws:
  `JavaScriptModelException` - if this element does not exist or if an exception occurs while accessing its corresponding resource.

#### isResolved

    boolean isResolved()

Returns whether this method represents a resolved method. If a method is resoved, its key contains resolved information.

Returns:
  whether this method represents a resolved method.

#### isSimilar

    boolean isSimilar(IFunction method)

Returns whether this method is similar to the given method. Two methods are similar if:

- their element names are equal
- they have the same number of parameters
- the simple names of their parameter types are equal

This is a handle-only method.

Parameters:
  `method` - the given method
Returns:
  true if this method is similar to the given method.
See Also:
  `Signature.getSimpleName(char[])`

#### getFunction

    IFunction getFunction(java.lang.String selector,
                          java.lang.String[] parameterTypeSignatures)