jaroslav@288: /* jaroslav@288: * To change this template, choose Tools | Templates jaroslav@288: * and open the template in the editor. jaroslav@288: */ jaroslav@288: package org.apidesign.javap; jaroslav@288: jaroslav@288: /** jaroslav@288: * jaroslav@288: * @author Jaroslav Tulach jaroslav@288: */ jaroslav@288: public final class TrapDataIterator { jaroslav@288: private final java.util.Map exStart = new java.util.HashMap(); jaroslav@288: private final java.util.Map exStop = new java.util.HashMap(); jaroslav@288: private final java.util.Deque current = new java.util.ArrayDeque(); jaroslav@288: jaroslav@288: TrapDataIterator(Vector exceptionTable) { jaroslav@288: for (int i=0 ; i < exceptionTable.size(); i++) { jaroslav@288: final TrapData td = (TrapData)exceptionTable.elementAt(i); jaroslav@288: exStart.put(td.start_pc, td); jaroslav@288: exStop.put(td.end_pc, td); jaroslav@288: } jaroslav@288: } jaroslav@288: jaroslav@288: public void advanceTo(int i) { jaroslav@288: TrapData e = exStart.get((short) i); jaroslav@288: if (e != null) { jaroslav@288: current.addFirst(e); jaroslav@288: } jaroslav@288: e = exStop.get((short) i); jaroslav@288: if (e != null) { jaroslav@288: current.remove(e); jaroslav@288: } jaroslav@288: } jaroslav@288: jaroslav@288: public boolean useTry() { jaroslav@288: return !current.isEmpty(); jaroslav@288: } jaroslav@288: jaroslav@288: public TrapData[] current() { jaroslav@288: return current.toArray(new TrapData[0]); jaroslav@288: } jaroslav@288: }