diff --git a/prism/src/dv/DoubleVector.java b/prism/src/dv/DoubleVector.java index 5ff58d28..b8e6483b 100644 --- a/prism/src/dv/DoubleVector.java +++ b/prism/src/dv/DoubleVector.java @@ -293,22 +293,22 @@ public class DoubleVector switch (relOp) { case GEQ: - sol = new JDDNode( + sol = JDD.ptrToNode( DV_BDDGreaterThanEquals(v, bound, vars.array(), vars.n(), odd.ptr()) ); break; case GT: - sol = new JDDNode( + sol = JDD.ptrToNode( DV_BDDGreaterThan(v, bound, vars.array(), vars.n(), odd.ptr()) ); break; case LEQ: - sol = new JDDNode( + sol = JDD.ptrToNode( DV_BDDLessThanEquals(v, bound, vars.array(), vars.n(), odd.ptr()) ); break; case LT: - sol = new JDDNode( + sol = JDD.ptrToNode( DV_BDDLessThan(v, bound, vars.array(), vars.n(), odd.ptr()) ); break; @@ -331,7 +331,7 @@ public class DoubleVector { JDDNode sol; - sol = new JDDNode( + sol = JDD.ptrToNode( DV_BDDInterval(v, lo, hi, vars.array(), vars.n(), odd.ptr()) ); @@ -347,7 +347,7 @@ public class DoubleVector { JDDNode sol; - sol = new JDDNode( + sol = JDD.ptrToNode( DV_BDDCloseValueAbs(v, value, epsilon, vars.array(), vars.n(), odd.ptr()) ); @@ -363,7 +363,7 @@ public class DoubleVector { JDDNode sol; - sol = new JDDNode( + sol = JDD.ptrToNode( DV_BDDCloseValueRel(v, value, epsilon, vars.array(), vars.n(), odd.ptr()) ); @@ -379,7 +379,7 @@ public class DoubleVector { JDDNode sol; - sol = new JDDNode( + sol = JDD.ptrToNode( DV_ConvertToMTBDD(v, vars.array(), vars.n(), odd.ptr()) ); diff --git a/prism/src/jdd/JDD.java b/prism/src/jdd/JDD.java index 6d9bbca3..071cd2bc 100644 --- a/prism/src/jdd/JDD.java +++ b/prism/src/jdd/JDD.java @@ -281,7 +281,7 @@ public class JDD */ public static JDDNode Create() { - return new JDDNode(DD_Create()); + return ptrToNode(DD_Create()); } /** @@ -293,7 +293,7 @@ public class JDD if (Double.isInfinite(value)) return value > 0 ? JDD.PlusInfinity() : JDD.MinusInfinity(); else - return new JDDNode(DD_Constant(value)); + return ptrToNode(DD_Constant(value)); } /** @@ -302,7 +302,7 @@ public class JDD */ public static JDDNode PlusInfinity() { - return new JDDNode(DD_PlusInfinity()); + return ptrToNode(DD_PlusInfinity()); } /** @@ -311,7 +311,7 @@ public class JDD */ public static JDDNode MinusInfinity() { - return new JDDNode(DD_MinusInfinity()); + return ptrToNode(DD_MinusInfinity()); } /** @@ -320,7 +320,7 @@ public class JDD */ public static JDDNode Var(int i) { - return new JDDNode(DD_Var(i)); + return ptrToNode(DD_Var(i)); } /** @@ -331,7 +331,7 @@ public class JDD { if (DebugJDD.debugEnabled) DebugJDD.decrement(dd); - return new JDDNode(DD_Not(dd.ptr())); + return ptrToNode(DD_Not(dd.ptr())); } /** @@ -344,7 +344,7 @@ public class JDD DebugJDD.decrement(dd1); DebugJDD.decrement(dd2); } - return new JDDNode(DD_Or(dd1.ptr(), dd2.ptr())); + return ptrToNode(DD_Or(dd1.ptr(), dd2.ptr())); } /** @@ -358,7 +358,7 @@ public class JDD DebugJDD.decrement(dd2); } - return new JDDNode(DD_And(dd1.ptr(), dd2.ptr())); + return ptrToNode(DD_And(dd1.ptr(), dd2.ptr())); } /** @@ -371,7 +371,7 @@ public class JDD DebugJDD.decrement(dd1); DebugJDD.decrement(dd2); } - return new JDDNode(DD_Xor(dd1.ptr(), dd2.ptr())); + return ptrToNode(DD_Xor(dd1.ptr(), dd2.ptr())); } /** @@ -384,7 +384,7 @@ public class JDD DebugJDD.decrement(dd1); DebugJDD.decrement(dd2); } - return new JDDNode(DD_Implies(dd1.ptr(), dd2.ptr())); + return ptrToNode(DD_Implies(dd1.ptr(), dd2.ptr())); } /** @@ -397,7 +397,7 @@ public class JDD DebugJDD.decrement(dd1); DebugJDD.decrement(dd2); } - return new JDDNode(DD_Apply(op, dd1.ptr(), dd2.ptr())); + return ptrToNode(DD_Apply(op, dd1.ptr(), dd2.ptr())); } /** @@ -408,7 +408,7 @@ public class JDD { if (DebugJDD.debugEnabled) DebugJDD.decrement(dd); - return new JDDNode(DD_MonadicApply(op, dd.ptr())); + return ptrToNode(DD_MonadicApply(op, dd.ptr())); } /** @@ -421,7 +421,7 @@ public class JDD DebugJDD.decrement(dd); DebugJDD.decrement(cube); } - return new JDDNode(DD_Restrict(dd.ptr(), cube.ptr())); + return ptrToNode(DD_Restrict(dd.ptr(), cube.ptr())); } /** @@ -435,7 +435,7 @@ public class JDD DebugJDD.decrement(dd2); DebugJDD.decrement(dd3); } - return new JDDNode(DD_ITE(dd1.ptr(), dd2.ptr(), dd3.ptr())); + return ptrToNode(DD_ITE(dd1.ptr(), dd2.ptr(), dd3.ptr())); } /** @@ -482,7 +482,7 @@ public class JDD { if (DebugJDD.debugEnabled) DebugJDD.decrement(dd); - return new JDDNode(DD_PermuteVariables(dd.ptr(), old_vars.array(), new_vars.array(), old_vars.n())); + return ptrToNode(DD_PermuteVariables(dd.ptr(), old_vars.array(), new_vars.array(), old_vars.n())); } /** @@ -493,7 +493,7 @@ public class JDD { if (DebugJDD.debugEnabled) DebugJDD.decrement(dd); - return new JDDNode(DD_SwapVariables(dd.ptr(), old_vars.array(), new_vars.array(), old_vars.n())); + return ptrToNode(DD_SwapVariables(dd.ptr(), old_vars.array(), new_vars.array(), old_vars.n())); } /** @@ -502,7 +502,7 @@ public class JDD */ public static JDDNode VariablesGreaterThan(JDDVars x_vars, JDDVars y_vars) { - return new JDDNode(DD_VariablesGreaterThan(x_vars.array(), y_vars.array(), x_vars.n())); + return ptrToNode(DD_VariablesGreaterThan(x_vars.array(), y_vars.array(), x_vars.n())); } /** @@ -511,7 +511,7 @@ public class JDD */ public static JDDNode VariablesGreaterThanEquals(JDDVars x_vars, JDDVars y_vars) { - return new JDDNode(DD_VariablesGreaterThanEquals(x_vars.array(), y_vars.array(), x_vars.n())); + return ptrToNode(DD_VariablesGreaterThanEquals(x_vars.array(), y_vars.array(), x_vars.n())); } /** @@ -520,7 +520,7 @@ public class JDD */ public static JDDNode VariablesLessThan(JDDVars x_vars, JDDVars y_vars) { - return new JDDNode(DD_VariablesLessThan(x_vars.array(), y_vars.array(), x_vars.n())); + return ptrToNode(DD_VariablesLessThan(x_vars.array(), y_vars.array(), x_vars.n())); } /** @@ -529,7 +529,7 @@ public class JDD */ public static JDDNode VariablesLessThanEquals(JDDVars x_vars, JDDVars y_vars) { - return new JDDNode(DD_VariablesLessThanEquals(x_vars.array(), y_vars.array(), x_vars.n())); + return ptrToNode(DD_VariablesLessThanEquals(x_vars.array(), y_vars.array(), x_vars.n())); } /** @@ -538,7 +538,7 @@ public class JDD */ public static JDDNode VariablesEquals(JDDVars x_vars, JDDVars y_vars) { - return new JDDNode(DD_VariablesEquals(x_vars.array(), y_vars.array(), x_vars.n())); + return ptrToNode(DD_VariablesEquals(x_vars.array(), y_vars.array(), x_vars.n())); } // wrapper methods for dd_abstr @@ -551,7 +551,7 @@ public class JDD { if (DebugJDD.debugEnabled) DebugJDD.decrement(dd); - return new JDDNode(DD_ThereExists(dd.ptr(), vars.array(), vars.n())); + return ptrToNode(DD_ThereExists(dd.ptr(), vars.array(), vars.n())); } /** @@ -562,7 +562,7 @@ public class JDD { if (DebugJDD.debugEnabled) DebugJDD.decrement(dd); - return new JDDNode(DD_ForAll(dd.ptr(), vars.array(), vars.n())); + return ptrToNode(DD_ForAll(dd.ptr(), vars.array(), vars.n())); } /** @@ -573,7 +573,7 @@ public class JDD { if (DebugJDD.debugEnabled) DebugJDD.decrement(dd); - return new JDDNode(DD_SumAbstract(dd.ptr(), vars.array(), vars.n())); + return ptrToNode(DD_SumAbstract(dd.ptr(), vars.array(), vars.n())); } /** @@ -584,7 +584,7 @@ public class JDD { if (DebugJDD.debugEnabled) DebugJDD.decrement(dd); - return new JDDNode(DD_ProductAbstract(dd.ptr(), vars.array(), vars.n())); + return ptrToNode(DD_ProductAbstract(dd.ptr(), vars.array(), vars.n())); } /** @@ -595,7 +595,7 @@ public class JDD { if (DebugJDD.debugEnabled) DebugJDD.decrement(dd); - return new JDDNode(DD_MinAbstract(dd.ptr(), vars.array(), vars.n())); + return ptrToNode(DD_MinAbstract(dd.ptr(), vars.array(), vars.n())); } /** @@ -606,7 +606,7 @@ public class JDD { if (DebugJDD.debugEnabled) DebugJDD.decrement(dd); - return new JDDNode(DD_MaxAbstract(dd.ptr(), vars.array(), vars.n())); + return ptrToNode(DD_MaxAbstract(dd.ptr(), vars.array(), vars.n())); } // wrapper methods for dd_term @@ -619,7 +619,7 @@ public class JDD { if (DebugJDD.debugEnabled) DebugJDD.decrement(dd); - return new JDDNode(DD_GreaterThan(dd.ptr(), threshold)); + return ptrToNode(DD_GreaterThan(dd.ptr(), threshold)); } /** @@ -630,7 +630,7 @@ public class JDD { if (DebugJDD.debugEnabled) DebugJDD.decrement(dd); - return new JDDNode(DD_GreaterThanEquals(dd.ptr(), threshold)); + return ptrToNode(DD_GreaterThanEquals(dd.ptr(), threshold)); } /** @@ -641,7 +641,7 @@ public class JDD { if (DebugJDD.debugEnabled) DebugJDD.decrement(dd); - return new JDDNode(DD_LessThan(dd.ptr(), threshold)); + return ptrToNode(DD_LessThan(dd.ptr(), threshold)); } /** @@ -652,7 +652,7 @@ public class JDD { if (DebugJDD.debugEnabled) DebugJDD.decrement(dd); - return new JDDNode(DD_LessThanEquals(dd.ptr(), threshold)); + return ptrToNode(DD_LessThanEquals(dd.ptr(), threshold)); } /** @@ -663,7 +663,7 @@ public class JDD { if (DebugJDD.debugEnabled) DebugJDD.decrement(dd); - return new JDDNode(DD_Equals(dd.ptr(), value)); + return ptrToNode(DD_Equals(dd.ptr(), value)); } /** @@ -674,7 +674,7 @@ public class JDD { if (DebugJDD.debugEnabled) DebugJDD.decrement(dd); - return new JDDNode(DD_Interval(dd.ptr(), lower, upper)); + return ptrToNode(DD_Interval(dd.ptr(), lower, upper)); } /** @@ -685,7 +685,7 @@ public class JDD { if (DebugJDD.debugEnabled) DebugJDD.decrement(dd); - return new JDDNode(DD_RoundOff(dd.ptr(), places)); + return ptrToNode(DD_RoundOff(dd.ptr(), places)); } /** @@ -723,7 +723,7 @@ public class JDD { if (DebugJDD.debugEnabled) DebugJDD.decrement(dd); - return new JDDNode(DD_RestrictToFirst(dd.ptr(), vars.array(), vars.n())); + return ptrToNode(DD_RestrictToFirst(dd.ptr(), vars.array(), vars.n())); } // wrapper methods for dd_info @@ -861,7 +861,7 @@ public class JDD */ public static JDDNode GetSupport(JDDNode dd) { - return new JDDNode(DD_GetSupport(dd.ptr())); + return ptrToNode(DD_GetSupport(dd.ptr())); } /** @@ -949,7 +949,7 @@ public class JDD { if (DebugJDD.debugEnabled) DebugJDD.decrement(dd); - return new JDDNode(DD_SetVectorElement(dd.ptr(), vars.array(), vars.n(), index, value)); + return ptrToNode(DD_SetVectorElement(dd.ptr(), vars.array(), vars.n(), index, value)); } /** @@ -960,7 +960,7 @@ public class JDD { if (DebugJDD.debugEnabled) DebugJDD.decrement(dd); - return new JDDNode(DD_SetMatrixElement(dd.ptr(), rvars.array(), rvars.n(), cvars.array(), cvars.n(), rindex, cindex, value)); + return ptrToNode(DD_SetMatrixElement(dd.ptr(), rvars.array(), rvars.n(), cvars.array(), cvars.n(), rindex, cindex, value)); } /** @@ -971,7 +971,7 @@ public class JDD { if (DebugJDD.debugEnabled) DebugJDD.decrement(dd); - return new JDDNode(DD_Set3DMatrixElement(dd.ptr(), rvars.array(), rvars.n(), cvars.array(), cvars.n(), lvars.array(), lvars.n(), rindex, cindex, lindex, value)); + return ptrToNode(DD_Set3DMatrixElement(dd.ptr(), rvars.array(), rvars.n(), cvars.array(), cvars.n(), lvars.array(), lvars.n(), rindex, cindex, lindex, value)); } /** @@ -989,7 +989,7 @@ public class JDD */ public static JDDNode Identity(JDDVars rvars, JDDVars cvars) { - return new JDDNode(DD_Identity(rvars.array(), cvars.array(), rvars.n())); + return ptrToNode(DD_Identity(rvars.array(), cvars.array(), rvars.n())); } /** @@ -1000,7 +1000,7 @@ public class JDD { if (DebugJDD.debugEnabled) DebugJDD.decrement(dd); - return new JDDNode(DD_Transpose(dd.ptr(), rvars.array(), cvars.array(), rvars.n())); + return ptrToNode(DD_Transpose(dd.ptr(), rvars.array(), cvars.array(), rvars.n())); } /** @@ -1013,7 +1013,7 @@ public class JDD DebugJDD.decrement(dd1); DebugJDD.decrement(dd2); } - return new JDDNode(DD_MatrixMultiply(dd1.ptr(), dd2.ptr(), vars.array(), vars.n(), method)); + return ptrToNode(DD_MatrixMultiply(dd1.ptr(), dd2.ptr(), vars.array(), vars.n(), method)); } /** @@ -1333,6 +1333,16 @@ public class JDD { DD_ExportMatrixToSpyFile(dd.ptr(), rvars.array(), rvars.n(), cvars.array(), cvars.n(), depth, filename); } + + /** + * Convert a (referenced) ptr returned from Cudd into a JDDNode. + *
[ REFS: none ] + */ + public static JDDNode ptrToNode(long ptr) + { + return new JDDNode(ptr); + } + } //------------------------------------------------------------------------------ diff --git a/prism/src/mtbdd/PrismMTBDD.java b/prism/src/mtbdd/PrismMTBDD.java index 5f082be8..0860ba5c 100644 --- a/prism/src/mtbdd/PrismMTBDD.java +++ b/prism/src/mtbdd/PrismMTBDD.java @@ -139,7 +139,7 @@ public class PrismMTBDD { long ptr = PM_Reachability(trans01.ptr(), rows.array(), rows.n(), cols.array(), cols.n(), start.ptr()); //if (ptr == 0) throw new PrismException(getErrorMessage()); - return new JDDNode(ptr); + return JDD.ptrToNode(ptr); } // pctl until probability 1 precomputation (probabilistic/dtmc) @@ -148,7 +148,7 @@ public class PrismMTBDD { long ptr = PM_Prob1(trans01.ptr(), reach.ptr(), rows.array(), rows.n(), cols.array(), cols.n(), b1.ptr(), b2.ptr(), no.ptr()); //if (ptr == 0) throw new PrismException(getErrorMessage()); - return new JDDNode(ptr); + return JDD.ptrToNode(ptr); } // pctl until probability 0 precomputation (probabilistic/dtmc) @@ -157,7 +157,7 @@ public class PrismMTBDD { long ptr = PM_Prob0(trans01.ptr(), reach.ptr(), rows.array(), rows.n(), cols.array(), cols.n(), b1.ptr(), b2.ptr()); //if (ptr == 0) throw new PrismException(getErrorMessage()); - return new JDDNode(ptr); + return JDD.ptrToNode(ptr); } // pctl until probability 1 precomputation - there exists (nondeterministic/mdp) @@ -166,7 +166,7 @@ public class PrismMTBDD { long ptr = PM_Prob1E(trans01.ptr(), reach.ptr(), rows.array(), rows.n(), cols.array(), cols.n(), nd.array(), nd.n(), b1.ptr(), b2.ptr(), no.ptr()); //if (ptr == 0) throw new PrismException(getErrorMessage()); - return new JDDNode(ptr); + return JDD.ptrToNode(ptr); } // pctl until probability 1 precomputation - for all (nondeterministic/mdp) @@ -175,7 +175,7 @@ public class PrismMTBDD { long ptr = PM_Prob1A(trans01.ptr(), reach.ptr(), nondetMask.ptr(), rows.array(), rows.n(), cols.array(), cols.n(), nd.array(), nd.n(), no.ptr(), b2.ptr()); //if (ptr == 0) throw new PrismException(getErrorMessage()); - return new JDDNode(ptr); + return JDD.ptrToNode(ptr); } // pctl until probability 0 precomputation - there exists (nondeterministic/mdp) @@ -184,7 +184,7 @@ public class PrismMTBDD { long ptr = PM_Prob0E(trans01.ptr(), reach.ptr(), nondetMask.ptr(), rows.array(), rows.n(), cols.array(), cols.n(), nd.array(), nd.n(), b1.ptr(), b2.ptr()); //if (ptr == 0) throw new PrismException(getErrorMessage()); - return new JDDNode(ptr); + return JDD.ptrToNode(ptr); } // pctl until probability 0 precomputation - for all (nondeterministic/mdp) @@ -193,7 +193,7 @@ public class PrismMTBDD { long ptr = PM_Prob0A(trans01.ptr(), reach.ptr(), rows.array(), rows.n(), cols.array(), cols.n(), nd.array(), nd.n(), b1.ptr(), b2.ptr()); //if (ptr == 0) throw new PrismException(getErrorMessage()); - return new JDDNode(ptr); + return JDD.ptrToNode(ptr); } //------------------------------------------------------------------------------ @@ -206,7 +206,7 @@ public class PrismMTBDD { long ptr = PM_ProbBoundedUntil(trans.ptr(), odd.ptr(), rows.array(), rows.n(), cols.array(), cols.n(), yes.ptr(), maybe.ptr(), bound); if (ptr == 0) throw new PrismException(getErrorMessage()); - return new JDDNode(ptr); + return JDD.ptrToNode(ptr); } // pctl until (probabilistic/dtmc) @@ -215,7 +215,7 @@ public class PrismMTBDD { long ptr = PM_ProbUntil(trans.ptr(), odd.ptr(), rows.array(), rows.n(), cols.array(), cols.n(), yes.ptr(), maybe.ptr()); if (ptr == 0) throw new PrismException(getErrorMessage()); - return new JDDNode(ptr); + return JDD.ptrToNode(ptr); } // pctl cumulative reward (probabilistic/dtmc) @@ -224,7 +224,7 @@ public class PrismMTBDD { long ptr = PM_ProbCumulReward(trans.ptr(), sr.ptr(), trr.ptr(), odd.ptr(), rows.array(), rows.n(), cols.array(), cols.n(), bound); if (ptr == 0) throw new PrismException(getErrorMessage()); - return new JDDNode(ptr); + return JDD.ptrToNode(ptr); } // pctl inst reward (probabilistic/dtmc) @@ -233,7 +233,7 @@ public class PrismMTBDD { long ptr = PM_ProbInstReward(trans.ptr(), sr.ptr(), odd.ptr(), rows.array(), rows.n(), cols.array(), cols.n(), time); if (ptr == 0) throw new PrismException(getErrorMessage()); - return new JDDNode(ptr); + return JDD.ptrToNode(ptr); } // pctl reach reward (probabilistic/dtmc) @@ -242,7 +242,7 @@ public class PrismMTBDD { long ptr = PM_ProbReachReward(trans.ptr(), sr.ptr(), trr.ptr(), odd.ptr(), rows.array(), rows.n(), cols.array(), cols.n(), goal.ptr(), inf.ptr(), maybe.ptr()); if (ptr == 0) throw new PrismException(getErrorMessage()); - return new JDDNode(ptr); + return JDD.ptrToNode(ptr); } // transient (probabilistic/dtmc) @@ -251,7 +251,7 @@ public class PrismMTBDD { long ptr = PM_ProbTransient(trans.ptr(), odd.ptr(), init.ptr(), rows.array(), rows.n(), cols.array(), cols.n(), time); if (ptr == 0) throw new PrismException(getErrorMessage()); - return new JDDNode(ptr); + return JDD.ptrToNode(ptr); } //------------------------------------------------------------------------------ @@ -264,7 +264,7 @@ public class PrismMTBDD { long ptr = PM_NondetBoundedUntil(trans.ptr(), odd.ptr(), nondetMask.ptr(), rows.array(), rows.n(), cols.array(), cols.n(), nondet.array(), nondet.n(), yes.ptr(), maybe.ptr(), bound, minmax); if (ptr == 0) throw new PrismException(getErrorMessage()); - return new JDDNode(ptr); + return JDD.ptrToNode(ptr); } // pctl until (nondeterministic/mdp) @@ -273,7 +273,7 @@ public class PrismMTBDD { long ptr = PM_NondetUntil(trans.ptr(), odd.ptr(), nondetMask.ptr(), rows.array(), rows.n(), cols.array(), cols.n(), nondet.array(), nondet.n(), yes.ptr(), maybe.ptr(), minmax); if (ptr == 0) throw new PrismException(getErrorMessage()); - return new JDDNode(ptr); + return JDD.ptrToNode(ptr); } // pctl inst reward (nondeterministic/mdp) @@ -282,7 +282,7 @@ public class PrismMTBDD { long ptr = PM_NondetInstReward(trans.ptr(), sr.ptr(), odd.ptr(), nondetMask.ptr(), rows.array(), rows.n(), cols.array(), cols.n(), nondet.array(), nondet.n(), time, minmax, init.ptr()); if (ptr == 0) throw new PrismException(getErrorMessage()); - return new JDDNode(ptr); + return JDD.ptrToNode(ptr); } // pctl reach reward (nondeterministic/mdp) @@ -291,7 +291,7 @@ public class PrismMTBDD { long ptr = PM_NondetReachReward(trans.ptr(), sr.ptr(), trr.ptr(), odd.ptr(), nondetMask.ptr(), rows.array(), rows.n(), cols.array(), cols.n(), nondet.array(), nondet.n(), goal.ptr(), inf.ptr(), maybe.ptr(), minmax); if (ptr == 0) throw new PrismException(getErrorMessage()); - return new JDDNode(ptr); + return JDD.ptrToNode(ptr); } //------------------------------------------------------------------------------ @@ -305,7 +305,7 @@ public class PrismMTBDD long mult = (multProbs == null) ? 0 : multProbs.ptr(); long ptr = PM_StochBoundedUntil(trans.ptr(), odd.ptr(), rows.array(), rows.n(), cols.array(), cols.n(), yes.ptr(), maybe.ptr(), time, mult); if (ptr == 0) throw new PrismException(getErrorMessage()); - return new JDDNode(ptr); + return JDD.ptrToNode(ptr); } // csl cumulative reward (stochastic/ctmc) @@ -314,7 +314,7 @@ public class PrismMTBDD { long ptr = PM_StochCumulReward(trans.ptr(), sr.ptr(), trr.ptr(), odd.ptr(), rows.array(), rows.n(), cols.array(), cols.n(), time); if (ptr == 0) throw new PrismException(getErrorMessage()); - return new JDDNode(ptr); + return JDD.ptrToNode(ptr); } // steady state (stochastic/ctmc) @@ -323,7 +323,7 @@ public class PrismMTBDD { long ptr = PM_StochSteadyState(trans.ptr(), odd.ptr(), init.ptr(), rows.array(), rows.n(), cols.array(), cols.n()); if (ptr == 0) throw new PrismException(getErrorMessage()); - return new JDDNode(ptr); + return JDD.ptrToNode(ptr); } // transient (stochastic/ctmc) @@ -332,7 +332,7 @@ public class PrismMTBDD { long ptr = PM_StochTransient(trans.ptr(), odd.ptr(), init.ptr(), rows.array(), rows.n(), cols.array(), cols.n(), time); if (ptr == 0) throw new PrismException(getErrorMessage()); - return new JDDNode(ptr); + return JDD.ptrToNode(ptr); } //------------------------------------------------------------------------------ @@ -382,7 +382,7 @@ public class PrismMTBDD { long ptr = PM_Power(odd.ptr(), rows.array(), rows.n(), cols.array(), cols.n(), a.ptr(), b.ptr(), init.ptr(), transpose); if (ptr == 0) throw new PrismException(getErrorMessage()); - return new JDDNode(ptr); + return JDD.ptrToNode(ptr); } // jor method @@ -391,7 +391,7 @@ public class PrismMTBDD { long ptr = PM_JOR(odd.ptr(), rows.array(), rows.n(), cols.array(), cols.n(), a.ptr(), b.ptr(), init.ptr(), transpose, omega); if (ptr == 0) throw new PrismException(getErrorMessage()); - return new JDDNode(ptr); + return JDD.ptrToNode(ptr); } //------------------------------------------------------------------------------ diff --git a/prism/src/odd/ODDUtils.java b/prism/src/odd/ODDUtils.java index d4041dbe..0c91683b 100644 --- a/prism/src/odd/ODDUtils.java +++ b/prism/src/odd/ODDUtils.java @@ -97,7 +97,7 @@ public class ODDUtils */ public static JDDNode SingleIndexToDD(int i, ODDNode odd, JDDVars vars) { - return new JDDNode(ODD_SingleIndexToDD(i, odd.ptr(), vars.array(), vars.n())); + return JDD.ptrToNode(ODD_SingleIndexToDD(i, odd.ptr(), vars.array(), vars.n())); } //------------------------------------------------------------------------------