public LOOKUPSWITCH(final int[] match, final InstructionHandle[] targets, final InstructionHandle defaultTarget) { super(org.apache.bcel.Const.LOOKUPSWITCH, match, targets, defaultTarget); /* alignment remainder assumed 0 here, until dump time. */ final short _length = (short) (9 + getMatch_length() * 8); super.setLength(_length); setFixed_length(_length); }
/** * @param match sorted array of match values, match[0] must be low value, * match[match_length - 1] high value * @param targets where to branch for matched values * @param defaultTarget default branch */ public TABLESWITCH(final int[] match, final InstructionHandle[] targets, final InstructionHandle defaultTarget) { super(org.apache.bcel.Const.TABLESWITCH, match, targets, defaultTarget); /* Alignment remainder assumed 0 here, until dump time */ final short _length = (short) (13 + getMatch_length() * 4); super.setLength(_length); setFixed_length(_length); }
/** * Read needed data (e.g. index) from file. */ @Override protected void initFromFile( final ByteSequence bytes, final boolean wide ) throws IOException { super.initFromFile(bytes, wide); // reads padding final int _match_length = bytes.readInt(); setMatch_length(_match_length); final short _fixed_length = (short) (9 + _match_length * 8); setFixed_length(_fixed_length); final short _length = (short) (_match_length + super.getPadding()); super.setLength(_length); super.setMatches(new int[_match_length]); super.setIndices(new int[_match_length]); super.setTargets(new InstructionHandle[_match_length]); for (int i = 0; i < _match_length; i++) { super.setMatch(i, bytes.readInt()); super.setIndices(i, bytes.readInt()); } }
/** * Read needed data (e.g. index) from file. */ @Override protected void initFromFile( final ByteSequence bytes, final boolean wide ) throws IOException { super.initFromFile(bytes, wide); final int low = bytes.readInt(); final int high = bytes.readInt(); final int _match_length = high - low + 1; setMatch_length(_match_length); final short _fixed_length = (short) (13 + _match_length * 4); setFixed_length(_fixed_length); super.setLength((short) (_fixed_length + super.getPadding())); super.setMatches(new int[_match_length]); super.setIndices(new int[_match_length]); super.setTargets(new InstructionHandle[_match_length]); for (int i = 0; i < _match_length; i++) { super.setMatch(i, low + i); super.setIndices(i, bytes.readInt()); } }