// //Copyright (C) 2008 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.heuristic; import gov.nasa.jpf.vm.VM; /** * HeuristicState with a scalar, static priority. * Due to legacy reasons, lower values represent higher priorities */ public class PrioritizedState extends HeuristicState implements Comparable<PrioritizedState>{ int heuristicValue; // watch out, this is inverted: 0 is max priority public PrioritizedState(VM vm, int heuristicValue) { super(vm); this.heuristicValue = heuristicValue; } public int getPriority () { return heuristicValue; } /* * NOTE - since we can't use the Java 1.6 pollFirst()/pollLast() yet, * we have to use remove(o), which in turn requires "compareTo(a) == 0" to * be identical to "equals(o) == true", so we should implement both */ public int compareTo (PrioritizedState o) { int diff = heuristicValue - o.heuristicValue; if (diff == 0) { return (stateId - o.stateId); } else { return diff; } } public boolean equals (Object o) { if (o instanceof PrioritizedState) { PrioritizedState other = (PrioritizedState) o; return ((stateId == other.stateId) && (heuristicValue == other.heuristicValue)); } else { return false; } } public String toString() { return "{"+stateId+','+heuristicValue+'}'; } }