Browse Source

More printing stuff in explicit StateValues.

git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@3590 bbc10eb1-c90d-0410-af57-cb519fbb1720
master
Dave Parker 14 years ago
parent
commit
22d46d0cbb
  1. 76
      prism/src/explicit/StateValues.java

76
prism/src/explicit/StateValues.java

@ -29,6 +29,8 @@ package explicit;
import java.util.BitSet; import java.util.BitSet;
import java.util.List; import java.util.List;
import jdd.JDDNode;
import parser.State; import parser.State;
import parser.type.Type; import parser.type.Type;
import parser.type.TypeBool; import parser.type.TypeBool;
@ -52,7 +54,7 @@ public class StateValues
protected int[] valuesI; protected int[] valuesI;
protected double[] valuesD; protected double[] valuesD;
protected BitSet valuesB; protected BitSet valuesB;
// Model info // Model info
protected List<State> statesList; protected List<State> statesList;
@ -491,52 +493,78 @@ public class StateValues
*/ */
public void print(PrismLog log) throws PrismException public void print(PrismLog log) throws PrismException
{ {
print(log, true, false, true);
printFiltered(log, null, true, false, true);
}
/**
* Print part of vector to a log/file (non-zero entries only).
* @param log The log
* @param filter A BitSet specifying which states to print for.
*/
public void printFiltered(PrismLog log, BitSet filter) throws PrismException
{
printFiltered(log, filter, true, false, true);
} }
/** /**
* Print vector to a log/file.
* Print part of vector to a log/file (non-zero entries only).
* @param log The log * @param log The log
* @param filter A BitSet specifying which states to print for (null if all).
* @param printSparse Print non-zero elements only? * @param printSparse Print non-zero elements only?
* @param printMatlab Print in Matlab format? * @param printMatlab Print in Matlab format?
* @param printStates Print states (variable values) for each element? * @param printStates Print states (variable values) for each element?
*/ */
public void print(PrismLog log, boolean printSparse, boolean printMatlab, boolean printStates) throws PrismException
public void printFiltered(PrismLog log, BitSet filter, boolean printSparse, boolean printMatlab, boolean printStates) throws PrismException
{ {
int i; int i;
boolean some = false;
// Header for Matlab format // Header for Matlab format
if (printMatlab) if (printMatlab)
log.println(!printSparse ? "v = [" : "v = sparse(" + size + ",1);"); log.println(!printSparse ? "v = [" : "v = sparse(" + size + ",1);");
// Print vector
if (filter == null) {
for (i = 0; i < size; i++) {
some |= printLine(log, i, printSparse, printMatlab, printStates);
}
} else {
for (i = filter.nextSetBit(0); i >= 0; i = filter.nextSetBit(i + 1)) {
some |= printLine(log, i, printSparse, printMatlab, printStates);
}
}
// Check if all zero // Check if all zero
if (printSparse && !printMatlab && getNNZ() == 0) {
if (printSparse && !printMatlab && !some) {
log.println("(all zero)"); log.println("(all zero)");
return; return;
} }
// Print vector
for (i = 0; i < size; i++) {
if (!printSparse || isNonZero(i)) {
if (printSparse)
log.print(printMatlab ? "v(" + (i + 1) + ")" : i);
if (printStates && !printMatlab && statesList != null) {
log.print(":" + statesList.get(i).toString());
}
if (printSparse)
log.print("=");
log.print(getValue(i));
if (printMatlab && printSparse)
log.print(";");
log.println();
}
}
// Footer for Matlab format // Footer for Matlab format
if (printMatlab && !printSparse) if (printMatlab && !printSparse)
log.println("];"); log.println("];");
} }
private boolean printLine(PrismLog log, int i, boolean printSparse, boolean printMatlab, boolean printStates) throws PrismException
{
if (!printSparse || isNonZero(i)) {
if (printSparse)
log.print(printMatlab ? "v(" + (i + 1) + ")" : i);
if (printStates && !printMatlab && statesList != null) {
log.print(":" + statesList.get(i).toString());
}
if (printSparse)
log.print("=");
log.print(getValue(i));
if (printMatlab && printSparse)
log.print(";");
log.println();
return true;
} else {
return false;
}
}
/** /**
* Make a (deep) copy of this vector * Make a (deep) copy of this vector
*/ */

Loading…
Cancel
Save