1 /* StepFilter.java -- a step filter 2 Copyright (C) 2005, 2007 Free Software Foundation 3 4 This file is part of GNU Classpath. 5 6 GNU Classpath is free software; you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation; either version 2, or (at your option) 9 any later version. 10 11 GNU Classpath is distributed in the hope that it will be useful, but 12 WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with GNU Classpath; see the file COPYING. If not, write to the 18 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 19 02110-1301 USA. 20 21 Linking this library statically or dynamically with other modules is 22 making a combined work based on this library. Thus, the terms and 23 conditions of the GNU General Public License cover the whole 24 combination. 25 26 As a special exception, the copyright holders of this library give you 27 permission to link this library with independent modules to produce an 28 executable, regardless of the license terms of these independent 29 modules, and to copy and distribute the resulting executable under 30 terms of your choice, provided that you also meet, for each linked 31 terms of your choice, provided that you also meet, for each linked 32 independent module, the terms and conditions of the license of that 33 module. An independent module is a module which is not derived from 34 or based on this library. If you modify this library, you may extend 35 this exception to your version of the library, but you are not 36 obligated to do so. If you do not wish to do so, delete this 37 exception statement from your version. */ 38 39 40 package gnu.classpath.jdwp.event.filters; 41 42 import gnu.classpath.jdwp.event.Event; 43 import gnu.classpath.jdwp.exception.InvalidThreadException; 44 import gnu.classpath.jdwp.id.ThreadId; 45 46 /** 47 * "An event filter which restricts reported step events to those which 48 * satisfy depth and size constraints. This modifier can only be used with 49 * step event kinds." 50 * 51 * This "filter" is not really a filter. It is simply a way to communicate 52 * stepping information in a convenient way between the JDWP backend and 53 * the virtual machine. 54 * 55 * Consequently, this "filter" always matches. 56 * 57 * @author Keith Seitz (keiths@redhat.com) 58 */ 59 public class StepFilter 60 implements IEventFilter 61 { 62 private ThreadId _tid; 63 private int _size; 64 private int _depth; 65 66 /** 67 * Constructs a new StepFilter 68 * 69 * @param tid ID of the thread in which to step 70 * @param size size of each step 71 * @param depth relative call stack limit 72 * @throws InvalidThreadException if thread is invalid 73 */ StepFilter(ThreadId tid, int size, int depth)74 public StepFilter (ThreadId tid, int size, int depth) 75 throws InvalidThreadException 76 { 77 if (tid.getReference().get () == null) 78 throw new InvalidThreadException (tid.getId ()); 79 80 _tid = tid; 81 _size = size; 82 _depth = depth; 83 } 84 85 /** 86 * Returns the thread in which to step 87 * 88 * @return the thread's ID 89 */ getThread()90 public ThreadId getThread () 91 { 92 return _tid; 93 } 94 95 /** 96 * Returns the size of each step (insn, line) 97 * 98 * @return the step size 99 * @see gnu.classpath.jdwp.JdwpConstants.StepSize 100 */ getSize()101 public int getSize () 102 { 103 return _size; 104 } 105 106 /** 107 * Returns the relative call stack limit (into, over, out) 108 * 109 * @return how to step 110 * @see gnu.classpath.jdwp.JdwpConstants.StepDepth 111 */ getDepth()112 public int getDepth () 113 { 114 return _depth; 115 } 116 117 /** 118 * Does the given event match the filter? 119 * 120 * @param event the <code>Event</code> to scrutinize 121 */ matches(Event event)122 public boolean matches (Event event) 123 { 124 return true; 125 } 126 } 127