2 * Copyright (C) 2014, United States Government, as represented by the
3 * Administrator of the National Aeronautics and Space Administration.
6 * The Java Pathfinder core (jpf-core) platform is licensed under the
7 * Apache License, Version 2.0 (the "License"); you may not use this file except
8 * in compliance with the License. You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0.
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
19 package gov.nasa.jpf.vm.choice;
21 import gov.nasa.jpf.vm.ChoiceGeneratorBase;
22 import gov.nasa.jpf.vm.LongChoiceGenerator;
27 public class RandomOrderLongCG extends ChoiceGeneratorBase<Long> implements LongChoiceGenerator {
28 protected long[] choices;
30 protected int nextIdx;
32 public RandomOrderLongCG (LongChoiceGenerator sub) {
34 setPreviousChoiceGenerator(sub.getPreviousChoiceGenerator());
35 choices = new long[sub.getTotalNumberOfChoices()];
36 for (int i = 0; i < choices.length; i++) {
38 choices[i] = sub.getNextChoice();
40 for (int i = choices.length - 1; i > 0; i--) { // all but first
41 int j = random.nextInt(i + 1);
42 long tmp = choices[i];
43 choices[i] = choices[j];
50 public Long getChoice (int idx){
51 if (idx >= 0 && idx < choices.length){
54 throw new IllegalArgumentException("choice index out of range: " + idx);
60 public Long getNextChoice() {
61 return new Long(choices[nextIdx]);
65 public void advance() {
66 if (nextIdx + 1 < choices.length) nextIdx++;
70 public int getProcessedNumberOfChoices() {
75 public int getTotalNumberOfChoices() {
76 return choices.length;
80 public boolean hasMoreChoices() {
81 return !isDone && (nextIdx + 1 < choices.length);
92 public Class<Long> getChoiceType() {