1 /* 2 * @(#)IPath.java 3 * 4 * Copyright (C) 2002-2003 Matt Albrecht 5 * groboclown@users.sourceforge.net 6 * http://groboutils.sourceforge.net 7 * 8 * Part of the GroboUtils package at: 9 * http://groboutils.sourceforge.net 10 * 11 * Permission is hereby granted, free of charge, to any person obtaining a 12 * copy of this software and associated documentation files (the "Software"), 13 * to deal in the Software without restriction, including without limitation 14 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 15 * and/or sell copies of the Software, and to permit persons to whom the 16 * Software is furnished to do so, subject to the following conditions: 17 * 18 * The above copyright notice and this permission notice shall be included in 19 * all copies or substantial portions of the Software. 20 * 21 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 22 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 23 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 24 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 25 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 26 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 27 * DEALINGS IN THE SOFTWARE. 28 */ 29 package net.sourceforge.groboutils.mbtf.v1; 30 31 32 /** 33 * An ordered set of transitions plus a start state, which can be iterated 34 * through to discover a state-machine transition path. 35 * 36 * @author Matt Albrecht <a HREF="mailto:groboclown@users.sourceforge.net">groboclown@users.sourceforge.net</a> 37 * @version $Date: 2003/02/10 22:52:24 $ 38 * @since June 12, 2002 39 */ 40 public interface IPath 41 { 42 /** 43 * Generate an iterator for this path. The iterator will only return 44 * transition elements. 45 * 46 * @return a new iterator for the path. 47 */ 48 public IPathIterator iterator(); 49 50 51 /** 52 * Retrieve the starting state for this path. 53 * 54 * @return the start state for the path, which can never be <tt>null</tt>. 55 */ 56 public IState getStartState(); 57 58 59 /** 60 * Returns the number of transitions in the path. This is named "size" to 61 * correspond to the <tt>java.util</tt> 62 * container classes terminology. 63 * 64 * @return the path transition count. 65 */ 66 public int size(); 67 68 69 /** 70 * Returns the number of states visited in the path, which should 71 * always equal <tt>size() + 2</tt>, due to the start and final states, 72 * unless there are no transitions, in which case the depth is 1 73 * (there must always be a start state). 74 * 75 * @return the depth of the path. 76 */ 77 public int getDepth(); 78 } 79 80