01: //
02: //Copyright (C) 2005 United States Government as represented by the
03: //Administrator of the National Aeronautics and Space Administration
04: //(NASA). All Rights Reserved.
05: //
06: //This software is distributed under the NASA Open Source Agreement
07: //(NOSA), version 1.3. The NOSA has been approved by the Open Source
08: //Initiative. See the file NOSA-1.3-JPF at the top of the distribution
09: //directory tree for the complete NOSA document.
10: //
11: //THE SUBJECT SOFTWARE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY OF ANY
12: //KIND, EITHER EXPRESSED, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT
13: //LIMITED TO, ANY WARRANTY THAT THE SUBJECT SOFTWARE WILL CONFORM TO
14: //SPECIFICATIONS, ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR
15: //A PARTICULAR PURPOSE, OR FREEDOM FROM INFRINGEMENT, ANY WARRANTY THAT
16: //THE SUBJECT SOFTWARE WILL BE ERROR FREE, OR ANY WARRANTY THAT
17: //DOCUMENTATION, IF PROVIDED, WILL CONFORM TO THE SUBJECT SOFTWARE.
18: //
19:
20: package gov.nasa.jpf.jvm.choice;
21:
22: import gov.nasa.jpf.Config;
23: import gov.nasa.jpf.jvm.DoubleChoiceGenerator;
24: import gov.nasa.jpf.jvm.JVM;
25:
26: /**
27: * ChoiceGenerator instance that produces a simple 3 value enumeration
28: *
29: */
30: public class DoubleThresholdGenerator extends DoubleChoiceGenerator {
31:
32: double low, threshold, high;
33: int state;
34:
35: public DoubleThresholdGenerator(Config conf, String id) {
36: super (id);
37:
38: low = conf.getDouble(id + ".low");
39: threshold = conf.getDouble(id + ".threshold");
40: high = conf.getDouble(id + ".high");
41: state = -1;
42: }
43:
44: public boolean hasMoreChoices(JVM vm) {
45: return (state < 2);
46: }
47:
48: public double getNextChoice(JVM vm) {
49: switch (state) {
50: case -1:
51: case 0:
52: return low;
53: case 1:
54: return threshold;
55: default:
56: return high;
57: }
58: }
59:
60: public void advance(JVM vm) {
61: state++;
62: }
63: }
|