Search.java :  » Code-Analyzer » javapathfinder » gov » nasa » jpf » Java Open Source

Java Open Source » Code Analyzer » javapathfinder 
javapathfinder » gov » nasa » jpf » Search.java
//
// Copyright (C) 2005 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;

/**
 * Interface for a Strategy class to encapsulate the state space search algorithm.
 * This is one of the two major JPF abstractions (the other one being the VM)
 */
public interface Search {

  public static final String DEPTH_CONSTRAINT = "DEPTH";
  public static final String QUEUE_CONSTRAINT = "QUEUE";
  public static final String SIZE_CONSTRAINT = "SIZE";
  
  /**
   * add a listener for state changes
   */
  void addListener (SearchListener listener);

  void addProperty (Property property);
  void removeProperty (Property property);
  
  /**
   * return the search results (property violations)
   */
  ErrorList getErrors ();
  
  /**
   * do we have a next state (after advancing it)
   */
  boolean hasNextState();
  
  /**
   * has this state already been visited (only useful after advancing it)
   */
  boolean isNewState ();

  boolean isEndState ();
    
  /**
   * get current search depth
   */
  int getSearchDepth();

  /**
   * get the Transition that brought us into this state
   */
  Transition getTransition();
  
  /**
   * get a unique numeric id for this state
   */
  int getStateNumber();
  
  /**
   * answer the last hit search constraint code
   */
  String getSearchConstraint();
  
  /**
   * request a single backtrack step as the next transition
   */
  boolean requestBacktrack ();

  /**
   * does the search strategy allow listeners to do explicit backtracking
   */
  boolean supportsBacktrack ();

  /**
   * does this search strategy support state restoration
   */
  boolean supportsRestoreState ();
  
  /**
   * start the search process - this is the main driver for the VirtualMachine
   */
  void search ();

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.