Browse Source

Refactor exportToDot methods for explicit model classes - subclasses just need to export their transitions, so it is easier to add more functionality regarding state info.

git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@8389 bbc10eb1-c90d-0410-af57-cb519fbb1720
master
Dave Parker 12 years ago
parent
commit
d3a267a2dc
  1. 9
      prism/src/explicit/DTMCExplicit.java
  2. 10
      prism/src/explicit/MDPExplicit.java
  3. 23
      prism/src/explicit/ModelExplicit.java
  4. 10
      prism/src/explicit/STPGAbstrSimple.java
  5. 6
      prism/src/param/ParamModel.java

9
prism/src/explicit/DTMCExplicit.java

@ -96,13 +96,8 @@ public abstract class DTMCExplicit extends ModelExplicit implements DTMC
}
@Override
public void exportToDotFile(PrismLog out, BitSet mark)
public void exportTransitionsToDotFile(int i, PrismLog out)
{
int i;
out.print("digraph " + getModelType() + " {\nsize=\"8,5\"\nnode [shape=box];\n");
for (i = 0; i < numStates; i++) {
if (mark != null && mark.get(i))
out.print(i + " [style=filled fillcolor=\"#cccccc\"]\n");
Iterator<Map.Entry<Integer, Double>> iter = getTransitionsIterator(i);
while (iter.hasNext()) {
Map.Entry<Integer, Double> e = iter.next();
@ -110,8 +105,6 @@ public abstract class DTMCExplicit extends ModelExplicit implements DTMC
out.print(e.getValue() + "\" ];\n");
}
}
out.print("}\n");
}
@Override
public void exportToPrismLanguage(String filename) throws PrismException

10
prism/src/explicit/MDPExplicit.java

@ -108,15 +108,11 @@ public abstract class MDPExplicit extends ModelExplicit implements MDP
}
@Override
public void exportToDotFile(PrismLog out, BitSet mark)
public void exportTransitionsToDotFile(int i, PrismLog out)
{
int i, j, numChoices;
int j, numChoices;
String nij;
Object action;
out.print("digraph " + getModelType() + " {\nsize=\"8,5\"\nnode [shape=box];\n");
for (i = 0; i < numStates; i++) {
if (mark != null && mark.get(i))
out.print(i + " [style=filled fillcolor=\"#cccccc\"]\n");
numChoices = getNumChoices(i);
for (j = 0; j < numChoices; j++) {
action = getAction(i, j);
@ -133,8 +129,6 @@ public abstract class MDPExplicit extends ModelExplicit implements MDP
}
}
}
out.print("}\n");
}
@Override
public void exportToDotFileWithStrat(PrismLog out, BitSet mark, int strat[])

23
prism/src/explicit/ModelExplicit.java

@ -319,7 +319,28 @@ public abstract class ModelExplicit implements Model
}
@Override
public abstract void exportToDotFile(PrismLog out, BitSet mark);
public void exportToDotFile(PrismLog out, BitSet mark)
{
int i;
// Header
out.print("digraph " + getModelType() + " {\nsize=\"8,5\"\nnode [shape=box];\n");
for (i = 0; i < numStates; i++) {
// Style for each state
if (mark != null && mark.get(i))
out.print(i + " [style=filled fillcolor=\"#cccccc\"]\n");
// Transitions for state i
exportTransitionsToDotFile(i, out);
}
// Footer
out.print("}\n");
}
/**
* Export the transitions from state {@code i} in Dot format to {@code out}.
* @param i State index
* @param out PrismLog for output
*/
protected abstract void exportTransitionsToDotFile(int i, PrismLog out);
@Override
public abstract void exportToPrismLanguage(String filename) throws PrismException;

10
prism/src/explicit/STPGAbstrSimple.java

@ -394,14 +394,10 @@ public class STPGAbstrSimple extends ModelExplicit implements STPG, NondetModelS
}
@Override
public void exportToDotFile(PrismLog out, BitSet mark)
protected void exportTransitionsToDotFile(int i, PrismLog out)
{
int i, j, k;
int j, k;
String nij, nijk;
out.print("digraph " + getModelType() + " {\nsize=\"8,5\"\nnode [shape=box];\n");
for (i = 0; i < numStates; i++) {
if (mark != null && mark.get(i))
out.print(i + " [style=filled fillcolor=\"#cccccc\"]\n");
j = -1;
for (DistributionSet distrs : trans.get(i)) {
j++;
@ -420,8 +416,6 @@ public class STPGAbstrSimple extends ModelExplicit implements STPG, NondetModelS
}
}
}
out.print("}\n");
}
@Override
public void exportToDotFileWithStrat(PrismLog out, BitSet mark, int strat[])

6
prism/src/param/ParamModel.java

@ -207,6 +207,12 @@ final class ParamModel extends ModelExplicit
throw new UnsupportedOperationException();
}
@Override
protected void exportTransitionsToDotFile(int i, PrismLog out)
{
throw new UnsupportedOperationException();
}
@Override
public void exportToPrismLanguage(String filename) throws PrismException
{

Loading…
Cancel
Save