From 2efea0dda633bc4e4538dea52134c3b746dfa1a9 Mon Sep 17 00:00:00 2001 From: Dave Parker Date: Thu, 3 Sep 2009 15:49:48 +0000 Subject: [PATCH] Export to string array option in StateList (unused) + tidy. git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@1440 bbc10eb1-c90d-0410-af57-cb519fbb1720 --- prism/src/prism/StateList.java | 3 ++ prism/src/prism/StateListMTBDD.java | 64 +++++++++++++++++++---------- 2 files changed, 45 insertions(+), 22 deletions(-) diff --git a/prism/src/prism/StateList.java b/prism/src/prism/StateList.java index b8be03cf..5218a719 100644 --- a/prism/src/prism/StateList.java +++ b/prism/src/prism/StateList.java @@ -26,6 +26,8 @@ package prism; +import java.util.List; + import jdd.*; import parser.Values; @@ -38,6 +40,7 @@ public interface StateList void print(PrismLog log); void printMatlab(PrismLog log); void printDot(PrismLog log); + public List exportToStringList(); void print(PrismLog log, int n); void printMatlab(PrismLog log, int n); boolean includes(JDDNode state); diff --git a/prism/src/prism/StateListMTBDD.java b/prism/src/prism/StateListMTBDD.java index 9b643517..8834dfa7 100644 --- a/prism/src/prism/StateListMTBDD.java +++ b/prism/src/prism/StateListMTBDD.java @@ -26,11 +26,12 @@ package prism; +import java.util.*; + import jdd.*; import odd.*; import parser.Values; import parser.VarList; -import parser.ast.Expression; import parser.type.*; // list of states (mtbdd) @@ -61,8 +62,11 @@ public class StateListMTBDD implements StateList // log for output from print method PrismLog outputLog; + // string array when exporting + List strList; + // output format - enum OutputFormat { NORMAL, MATLAB, DOT }; + enum OutputFormat { NORMAL, MATLAB, DOT, STRINGS }; OutputFormat outputFormat = OutputFormat.NORMAL; // constructor @@ -103,50 +107,64 @@ public class StateListMTBDD implements StateList return (size > Long.MAX_VALUE) ? "" + size : "" + Math.round(size); } - // print whole list + // print/export whole list public void print(PrismLog log) { + outputFormat = OutputFormat.NORMAL; limit = false; - count = 0; - doPrint(log); + outputLog = log; + doPrint(); } public void printMatlab(PrismLog log) { outputFormat = OutputFormat.MATLAB; - print(log); - outputFormat = OutputFormat.NORMAL; + limit = false; + outputLog = log; + doPrint(); } public void printDot(PrismLog log) { outputFormat = OutputFormat.DOT; - print(log); - outputFormat = OutputFormat.NORMAL; + limit = false; + outputLog = log; + doPrint(); + } + public List exportToStringList() + { + strList = new ArrayList((int)size); + outputFormat = OutputFormat.STRINGS; + limit = false; + doPrint(); + return strList; } // print first n states of list public void print(PrismLog log, int n) { + outputFormat = OutputFormat.NORMAL; limit = true; numToPrint = n; - count = 0; - doPrint(log); + outputLog = log; + doPrint(); } public void printMatlab(PrismLog log, int n) { outputFormat = OutputFormat.MATLAB; - print(log, n); - outputFormat = OutputFormat.NORMAL; + limit = true; + numToPrint = n; + outputLog = log; + doPrint(); } // printing method - public void doPrint(PrismLog log) + public void doPrint() { int i; - outputLog = log; + count = 0; for (i = 0; i < varList.getNumVars(); i++) { varValues[i] = 0; } @@ -168,6 +186,7 @@ public class StateListMTBDD implements StateList { int i, j; JDDNode e, t; + String varsString; // if we've printed enough states, stop if (limit) if (count >= numToPrint) return; @@ -184,23 +203,24 @@ public class StateListMTBDD implements StateList case DOT: outputLog.print(n + " [label=\"" + n + "\\n("); break; } j = varList.getNumVars(); + varsString = ""; for (i = 0; i < j; i++) { // integer variable if (varList.getType(i) instanceof TypeInt) { - outputLog.print(varValues[i]+varList.getLow(i)); + varsString += varValues[i]+varList.getLow(i); } // boolean variable else { - outputLog.print(varValues[i] == 1); + varsString += (varValues[i] == 1); } - if (i < j-1) outputLog.print(","); + if (i < j-1) varsString += ","; } switch (outputFormat) { - case NORMAL: outputLog.print(")"); break; - case MATLAB: break; - case DOT: outputLog.print(")\"];"); break; + case NORMAL: outputLog.println(varsString + ")"); break; + case MATLAB: outputLog.println(varsString); break; + case DOT: outputLog.println(varsString + ")\"];"); break; + case STRINGS: strList.add(varsString); } - outputLog.println(); count++; return;