## org.apache.bcel.generic
Class Select

    java.lang.Object
      org.apache.bcel.generic.Instruction
          org.apache.bcel.generic.BranchInstruction
              org.apache.bcel.generic.Select

All Implemented Interfaces:
  Serializable, Cloneable, InstructionTargeter, StackProducer, VariableLengthInstruction

Direct Known Subclasses:
  LOOKUPSWITCH, TABLESWITCH

    public abstract class Select

extends BranchInstruction
implements VariableLengthInstruction, StackProducer

Select - Abstract super class for LOOKUPSWITCH and TABLESWITCH instructions.

We use our super's `target` property as the default target.

Version:
  $Id: Select.java 386056 2006-03-15 11:31:56Z tcurdt $
See Also:
  `LOOKUPSWITCH`, `TABLESWITCH`, `InstructionList`, Serialized Form

Field Summary
`protected int` `fixed_length`
`protected int[]` `indices`
`protected int[]` `match`
`protected int` `match_length`
`protected int` `padding`
`protected InstructionHandle[]` `targets`

Fields inherited from class org.apache.bcel.generic.BranchInstruction
`index, position, target`

Fields inherited from class org.apache.bcel.generic.Instruction
`length, opcode`

Method Summary
`protected Object` `clone()`
`boolean` `containsTarget(InstructionHandle ih)`
`void` `dump(DataOutputStream out)` Dump instruction as byte code to stream out.
`int[]` `getIndices()`
`int[]` `getMatchs()`
`InstructionHandle[]` `getTargets()`
`protected void` `initFromFile(ByteSequence bytes, boolean wide)` Read needed data (e.g.
`void` `setTarget(int i, InstructionHandle target)` Set branch target for `i'th case
`String` `toString(boolean verbose)` Long output format: <position in byte code> <name of opcode> "["<opcode number>"]" "("<length of instruction>")" "<"<target instruction>">" "@"<branch target offset>
`protected int` `updatePosition(int offset, int max_offset)` Since this is a variable length instruction, it may shift the following instructions which then need to update their position.
`void` `updateTarget(InstructionHandle old_ih, InstructionHandle new_ih)`

Methods inherited from class org.apache.bcel.generic.BranchInstruction
`getIndex, getTarget, getTargetOffset, getTargetOffset, setTarget`

Methods inherited from class org.apache.bcel.generic.Instruction
`accept, consumeStack, copy, equals, getComparator, getLength, getName, getOpcode, produceStack, readInstruction, setComparator, toString, toString`

Methods inherited from class java.lang.Object
`finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Methods inherited from interface org.apache.bcel.generic.StackProducer
`produceStack`

Field Detail

### match

    protected int[] match

### indices

    protected int[] indices

### targets

    protected InstructionHandle[] targets

### fixed_length

    protected int fixed_length

### match_length

    protected int match_length

### padding

    protected int padding

Method Detail

### updatePosition

    protected int updatePosition(int offset,
                                 int max_offset)

  Since this is a variable length instruction, it may shift the following instructions which then need to update their position. Called by InstructionList.setPositions when setting the position for every instruction. In the presence of variable length instructions `setPositions' performs multiple passes over the instruction list to calculate the correct (byte) positions and offsets by calling this function.

  Overrides:
    `updatePosition` in class `BranchInstruction`
  Parameters:
    `offset` - additional offset caused by preceding (variable length) instructions
    `max_offset` - the maximum offset that may be caused by these instructions
  Returns:
    additional offset caused by possible change of this instruction's length

### dump

    public void dump(DataOutputStream out)
              throws IOException

  Dump instruction as byte code to stream out.

  Overrides:
    `dump` in class `BranchInstruction`
  Parameters:
    `out` - Output stream
  Throws:
    `IOException`

### initFromFile

    protected void initFromFile(ByteSequence bytes,
                                boolean wide)
                         throws IOException

  Read needed data (e.g. index) from file.

  Overrides:
    `initFromFile` in class `BranchInstruction`
  Parameters:
    `bytes` - input stream
    `wide` - wide prefix?
  Throws:
    `IOException`
  See Also:
    `InstructionList`

### toString

    public String toString(boolean verbose)

  Description copied from class: `BranchInstruction`
  Long output format: <position in byte code> <name of opcode> "["<opcode number>"]" "("<length of instruction>")" "<"<target instruction>">" "@"<branch target offset>

  Overrides:
    `toString` in class `BranchInstruction`
  Parameters:
    `verbose` - long/short format switch
  Returns:
    mnemonic for instruction

### setTarget

    public void setTarget(int i,
                          InstructionHandle target)

  Set branch target for `i'th case

### updateTarget

    public void updateTarget(InstructionHandle old_ih,
                             InstructionHandle new_ih)

  Specified by:
    `updateTarget` in interface `InstructionTargeter`
  Overrides:
    `updateTarget` in class `BranchInstruction`
  Parameters:
    `old_ih` - old target
    `new_ih` - new target

### containsTarget

    public boolean containsTarget(InstructionHandle ih)

  Specified by:
    `containsTarget` in interface `InstructionTargeter`
  Overrides:
    `containsTarget` in class `BranchInstruction`
  Returns:
    true, if ih is target of this instruction

### clone

    protected Object clone()
                    throws CloneNotSupportedException

  Overrides:
    `clone` in class `Object`
  Throws:
    `CloneNotSupportedException`

### getMatchs

    public int[] getMatchs()

  Returns:
    array of match indices

### getIndices

    public int[] getIndices()

  Returns:
    array of match target offsets

### getTargets

    public InstructionHandle[] getTargets()

  Returns:
    array of match targets

Copyright © 2002-2006 Apache Software Foundation. All Rights Reserved.