Package org.biojava.utils.bytecode

# Class InstructionVector

java.lang.Object
org.biojava.utils.bytecode.InstructionVector

All Implemented Interfaces:
  `CodeGenerator`

public class InstructionVector extends Object implements CodeGenerator
A list of Instructions and/or other CodeGenerator objects.

Author:
  Thomas Down, Matthew Pocock

## Constructor Summary

Constructors
Constructor
Description
`InstructionVector()`

## Method Summary

Modifier and Type
Method
Description
`void`
`add(int pos, CodeGenerator g)`
`void`
`add(CodeGenerator g)`
`CodeGenerator`
`generatorAt(int pos)`
`Label`
`getEndLabel()`
`Label`
`getStartLabel()`
`void`
`remove(int pos)`
`int`
`size()`
`int`
`stackDelta()`
Return the change in the stack dept this generator will cause.
`int`
`stackDepth()`
Return the total depth of the stack required by this CodeGenerator.
`void`
`writeCode(CodeContext ctx)`
Write the byte or bytes for this CodeGenerator to a CodeContext.

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

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

## Constructor Details

### InstructionVector

public InstructionVector()

## Method Details

### add

public void add(CodeGenerator g)

### size

public int size()

### add

public void add(int pos, CodeGenerator g)

### remove

public void remove(int pos)

### generatorAt

public CodeGenerator generatorAt(int pos)

### getStartLabel

public Label getStartLabel()

### getEndLabel

public Label getEndLabel()

### writeCode

public void writeCode(CodeContext ctx) throws CodeException
Description copied from interface: `CodeGenerator`
Write the byte or bytes for this CodeGenerator to a CodeContext.

Specified by:
  `writeCode` in interface `CodeGenerator`
Parameters:
  `ctx` - a CodeContext to write to
Throws:
  `CodeException` - if there was some failure in writing to the context

### stackDepth

public int stackDepth()
Description copied from interface: `CodeGenerator`
Return the total depth of the stack required by this CodeGenerator.

For single byte-code instructions, this will be the same as stackDelta() if stackDelta() is positive, zero otherwise. For a compound instruction, this will be the maximum stack depth required to execute all sub-instructions.

Specified by:
  `stackDepth` in interface `CodeGenerator`
Returns:
  the stack depth needed

### stackDelta

public int stackDelta()
Description copied from interface: `CodeGenerator`
Return the change in the stack dept this generator will cause.

In the case of an instruction that adds items to the stack, stackDelta will be positive. For instructions that removes items from the stack, this will be negative.

Specified by:
  `stackDelta` in interface `CodeGenerator`
Returns:
  the change between stack depth before and after execution of this code