// // Copyright (C) 2006 United States Government as represented by the // Administrator of the National Aeronautics and Space Administration // (NASA). All Rights Reserved. // // This software is distributed under the NASA Open Source Agreement // (NOSA), version 1.3. The NOSA has been approved by the Open Source // Initiative. See the file NOSA-1.3-JPF at the top of the distribution // directory tree for the complete NOSA document. // // THE SUBJECT SOFTWARE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY OF ANY // KIND, EITHER EXPRESSED, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT // LIMITED TO, ANY WARRANTY THAT THE SUBJECT SOFTWARE WILL CONFORM TO // SPECIFICATIONS, ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR // A PARTICULAR PURPOSE, OR FREEDOM FROM INFRINGEMENT, ANY WARRANTY THAT // THE SUBJECT SOFTWARE WILL BE ERROR FREE, OR ANY WARRANTY THAT // DOCUMENTATION, IF PROVIDED, WILL CONFORM TO THE SUBJECT SOFTWARE. // package gov.nasa.jpf.search; import gov.nasa.jpf.JPFListener; /** * interface to register for notification by the Search object. * Observer role in same-name pattern */ public interface SearchListener extends JPFListener { /** * got the next state * Note - this will be notified before any potential propertyViolated, in which * case the currentError will be already set */ void stateAdvanced (Search search); /** * state is fully explored */ void stateProcessed (Search search); /** * state was backtracked one step */ void stateBacktracked (Search search); /** * some state is not going to appear in any path anymore */ void statePurged (Search search); /** * somebody stored the state */ void stateStored (Search search); /** * a previously generated state was restored * (can be on a completely different path) */ void stateRestored (Search search); /** * there was a probe request, e.g. from a periodical timer * note this is called synchronously from within the JPF execution loop * (after instruction execution) */ void searchProbed (Search search); /** * JPF encountered a property violation. * Note - this is always preceeded by a stateAdvanced */ void propertyViolated (Search search); /** * we get this after we enter the search loop, but BEFORE the first forward */ void searchStarted (Search search); /** * there was some contraint hit in the search, we back out * could have been turned into a property, but usually is an attribute of * the search, not the application */ void searchConstraintHit (Search search); /** * we're done, either with or without a preceeding error */ void searchFinished (Search search); }