1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/javap/src/main/java/org/apidesign/javap/TrapDataIterator.java Sun Dec 09 16:16:19 2012 +0100
1.3 @@ -0,0 +1,42 @@
1.4 +/*
1.5 + * To change this template, choose Tools | Templates
1.6 + * and open the template in the editor.
1.7 + */
1.8 +package org.apidesign.javap;
1.9 +
1.10 +/**
1.11 + *
1.12 + * @author Jaroslav Tulach <jtulach@netbeans.org>
1.13 + */
1.14 +public final class TrapDataIterator {
1.15 + private final java.util.Map<Short, TrapData> exStart = new java.util.HashMap<Short, TrapData>();
1.16 + private final java.util.Map<Short, TrapData> exStop = new java.util.HashMap<Short, TrapData>();
1.17 + private final java.util.Deque<TrapData> current = new java.util.ArrayDeque<TrapData>();
1.18 +
1.19 + TrapDataIterator(Vector exceptionTable) {
1.20 + for (int i=0 ; i < exceptionTable.size(); i++) {
1.21 + final TrapData td = (TrapData)exceptionTable.elementAt(i);
1.22 + exStart.put(td.start_pc, td);
1.23 + exStop.put(td.end_pc, td);
1.24 + }
1.25 + }
1.26 +
1.27 + public void advanceTo(int i) {
1.28 + TrapData e = exStart.get((short) i);
1.29 + if (e != null) {
1.30 + current.addFirst(e);
1.31 + }
1.32 + e = exStop.get((short) i);
1.33 + if (e != null) {
1.34 + current.remove(e);
1.35 + }
1.36 + }
1.37 +
1.38 + public boolean useTry() {
1.39 + return !current.isEmpty();
1.40 + }
1.41 +
1.42 + public TrapData[] current() {
1.43 + return current.toArray(new TrapData[0]);
1.44 + }
1.45 +}