Package serp.bytecode

# Class BCMethod

java.lang.Object
serp.bytecode.Attributes
serp.bytecode.Annotated
serp.bytecode.BCMember
serp.bytecode.BCMethod

All Implemented Interfaces:
  `BCEntity`, `VisitAcceptor`

public class BCMethod extends BCMember implements VisitAcceptor
A method of a class.

Author:
  Abe White

## Method Summary

Modifier and Type
Method
Description
`void`
`acceptVisit(BCVisitor visit)`
Accept a visit from a `BCVisitor`, calling the appropriate methods to notify the visitor that it has entered this entity, and to provide it with the proper callbacks for each sub-entity owned by this one.
`void`
`addParam(int pos, Class type)`
Add a parameter type to this method.
`void`
`addParam(int pos, String type)`
Add a parameter type to this method.
`void`
`addParam(int pos, BCClass type)`
Add a parameter type to this method.
`void`
`addParam(Class type)`
Add a parameter type to this method.
`void`
`addParam(String type)`
Add a parameter type to this method.
`void`
`addParam(BCClass type)`
Add a parameter type to this method.
`void`
`clearParams()`
Clear all parameters from this method.
`Code`
`getCode(boolean add)`
Return the code for the method.
`Exceptions`
`getExceptions(boolean add)`
Return the checked exceptions information for the method.
`BCClass[]`
`getParamBCs()`
Return the bytecode for all the parameter types for this method.
`String[]`
`getParamNames()`
Return the names of all the parameter types for this method.
`Class[]`
`getParamTypes()`
Return the `Class` objects for all the parameter types for this method.
`BCClass`
`getReturnBC()`
Return the bytecode for the return type of this method.
`String`
`getReturnName()`
Return the name of the type returned by this method.
`Class`
`getReturnType()`
Return the `Class` object for the return type of this method.
`boolean`
`isAbstract()`
Manipulate the method access flags.
`boolean`
`isBridge()`
Manipulate the method access flags.
`boolean`
`isNative()`
Manipulate the method access flags.
`boolean`
`isStrict()`
Manipulate the method access flags.
`boolean`
`isSynchronized()`
Manipulate the method access flags.
`boolean`
`isVarArgs()`
Manipulate the method access flags.
`boolean`
`removeCode()`
Remove the code attribute from the method.
`boolean`
`removeExceptions()`
Remove the exceptions attribute for the method.
`void`
`removeParam(int pos)`
Remove a parameter from this method.
`void`
`setAbstract(boolean on)`
Manipulate the method access flags.
`void`
`setBridge(boolean on)`
Manipulate the method access flags.
`void`
`setNative(boolean on)`
Manipulate the method access flags.
`void`
`setParam(int pos, Class type)`
Change a parameter type of this method.
`void`
`setParam(int pos, String type)`
Change a parameter type of this method.
`void`
`setParam(int pos, BCClass type)`
Change a parameter type of this method.
`void`
`setParams(Class[] types)`
Set the parameter type of this method.
`void`
`setParams(String[] names)`
Set the parameter types of this method.
`void`
`setParams(BCClass[] types)`
Set the parameter type of this method.
`void`
`setReturn(Class type)`
Set the return type of this method.
`void`
`setReturn(String name)`
Set the return type of this method.
`void`
`setReturn(BCClass type)`
Set the return type of this method.
`void`
`setStrict(boolean on)`
Manipulate the method access flags.
`void`
`setSynchronized(boolean on)`
Manipulate the method access flags.
`void`
`setVarArgs(boolean on)`
Manipulate the method access flags.

### Methods inherited from class serp.bytecode.BCMember

`getAccessFlags, getClassLoader, getDeclarer, getDescriptor, getDescriptorIndex, getName, getNameIndex, getPool, getProject, isDeprecated, isFinal, isPackage, isPrivate, isProtected, isPublic, isStatic, isSynthetic, isValid, makePackage, makePrivate, makeProtected, makePublic, setAccessFlags, setDeprecated, setDescriptor, setDescriptorIndex, setFinal, setName, setNameIndex, setStatic, setSynthetic`

### Methods inherited from class serp.bytecode.Annotated

`getDeclaredAnnotations, getDeclaredRuntimeAnnotations, removeDeclaredAnnotations, removeDeclaredRuntimeAnnotations`

### Methods inherited from class serp.bytecode.Attributes

`addAttribute, addAttribute, clearAttributes, getAttribute, getAttributes, getAttributes, removeAttribute, removeAttribute, setAttributes`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Method Details

### isSynchronized

public boolean isSynchronized()
Manipulate the method access flags.

### setSynchronized

public void setSynchronized(boolean on)
Manipulate the method access flags.

### isNative

public boolean isNative()
Manipulate the method access flags.

### setNative

public void setNative(boolean on)
Manipulate the method access flags.

### isAbstract

public boolean isAbstract()
Manipulate the method access flags.

### setAbstract

public void setAbstract(boolean on)
Manipulate the method access flags.

### isStrict

public boolean isStrict()
Manipulate the method access flags.

### setStrict

public void setStrict(boolean on)
Manipulate the method access flags.

### isVarArgs

public boolean isVarArgs()
Manipulate the method access flags.

### setVarArgs

public void setVarArgs(boolean on)
Manipulate the method access flags.

### isBridge

public boolean isBridge()
Manipulate the method access flags.

### setBridge

public void setBridge(boolean on)
Manipulate the method access flags.

### getReturnName

public String getReturnName()
Return the name of the type returned by this method. The name will be given in a form suitable for a `Class.forName(java.lang.String)` call.

See Also:
  - `BCMember.getDescriptor()`

### getReturnType

public Class getReturnType()
Return the `Class` object for the return type of this method.

See Also:
  - `BCMember.getDescriptor()`

### getReturnBC

public BCClass getReturnBC()
Return the bytecode for the return type of this method.

See Also:
  - `BCMember.getDescriptor()`

### setReturn

public void setReturn(String name)
Set the return type of this method.

### setReturn

public void setReturn(Class type)
Set the return type of this method.

### setReturn

public void setReturn(BCClass type)
Set the return type of this method.

### getParamNames

public String[] getParamNames()
Return the names of all the parameter types for this method. The names will be returned in a form suitable for a `Class.forName(java.lang.String)` call.

See Also:
  - `BCMember.getDescriptor()`

### getParamTypes

public Class[] getParamTypes()
Return the `Class` objects for all the parameter types for this method.

See Also:
  - `BCMember.getDescriptor()`

### getParamBCs

public BCClass[] getParamBCs()
Return the bytecode for all the parameter types for this method.

See Also:
  - `BCMember.getDescriptor()`

### setParams

public void setParams(String[] names)
Set the parameter types of this method.

See Also:
  - `BCMember.setDescriptor(java.lang.String)`

### setParams

public void setParams(Class[] types)
Set the parameter type of this method.

See Also:
  - `BCMember.setDescriptor(java.lang.String)`

### setParams

public void setParams(BCClass[] types)
Set the parameter type of this method.

See Also:
  - `BCMember.setDescriptor(java.lang.String)`

### addParam

public void addParam(String type)
Add a parameter type to this method.

### addParam

public void addParam(Class type)
Add a parameter type to this method.

### addParam

public void addParam(BCClass type)
Add a parameter type to this method.

### addParam

public void addParam(int pos, String type)
Add a parameter type to this method.

See Also:
  - `List.add(int,Object)`

### addParam

public void addParam(int pos, Class type)
Add a parameter type to this method.

See Also:
  - `List.add(int,Object)`

### addParam

public void addParam(int pos, BCClass type)
Add a parameter type to this method.

See Also:
  - `List.add(int,Object)`

### setParam

public void setParam(int pos, String type)
Change a parameter type of this method.

See Also:
  - `List.set(int,Object)`

### setParam

public void setParam(int pos, Class type)
Change a parameter type of this method.

See Also:
  - `List.set(int,Object)`

### setParam

public void setParam(int pos, BCClass type)
Change a parameter type of this method.

See Also:
  - `List.set(int,Object)`

### clearParams

public void clearParams()
Clear all parameters from this method.

### removeParam

public void removeParam(int pos)
Remove a parameter from this method.

### getExceptions

public Exceptions getExceptions(boolean add)
Return the checked exceptions information for the method. Acts internally through the `Attributes` interface.

Parameters:
  `add` - if true, a new exceptions attribute will be added if not already present
Returns:
  the exceptions information, or null if none and the `add` param is set to false

### removeExceptions

public boolean removeExceptions()
Remove the exceptions attribute for the method. Acts internally through the `Attributes` interface.

Returns:
  true if there was a value to remove

### getCode

public Code getCode(boolean add)
Return the code for the method. If the code already exists, its iterator will be reset to the first instruction. Acts internally through the `Attributes` interface.

Parameters:
  `add` - if true, a new code attribute will be added if not already present
Returns:
  the code for the metohd, or null if none and the `add` param is set to false

### removeCode

public boolean removeCode()
Remove the code attribute from the method. Acts internally through the `Attributes` interface.

Returns:
  true if there was a value to remove

### acceptVisit

public void acceptVisit(BCVisitor visit)
Description copied from interface: `VisitAcceptor`
Accept a visit from a `BCVisitor`, calling the appropriate methods to notify the visitor that it has entered this entity, and to provide it with the proper callbacks for each sub-entity owned by this one.

Specified by:
  `acceptVisit` in interface `VisitAcceptor`