[Javabdd-checkins] SF.net SVN: javabdd:[480] trunk/JavaBDD
Brought to you by:
joewhaley
From: <rob...@us...> - 2010-11-16 01:29:55
|
Revision: 480 http://javabdd.svn.sourceforge.net/javabdd/?rev=480&view=rev Author: robimalik Date: 2010-11-16 01:29:49 +0000 (Tue, 16 Nov 2010) Log Message: ----------- Fix reordering bugs. Modified Paths: -------------- trunk/JavaBDD/cudd_jni.c trunk/JavaBDD/net/sf/javabdd/BDDFactory.java trunk/JavaBDD/net/sf/javabdd/BuDDyFactory.java trunk/JavaBDD/net/sf/javabdd/JFactory.java Modified: trunk/JavaBDD/cudd_jni.c =================================================================== --- trunk/JavaBDD/cudd_jni.c 2010-10-14 01:42:49 UTC (rev 479) +++ trunk/JavaBDD/cudd_jni.c 2010-11-16 01:29:49 UTC (rev 480) @@ -1,5 +1,6 @@ #include <jni.h> #include <stdlib.h> + #include "util.h" #include "cudd.h" #include "cuddInt.h" @@ -369,7 +370,11 @@ { Cudd_ReorderingType cuddmethod = getCUDDReorderMethod(env, javamethod); if (!(*env)->ExceptionOccurred(env)) { - Cudd_AutodynEnable(manager, cuddmethod); + if (cuddmethod == CUDD_REORDER_NONE) { + Cudd_AutodynDisable(manager); + } else { + Cudd_AutodynEnable(manager, cuddmethod); + } } } Modified: trunk/JavaBDD/net/sf/javabdd/BDDFactory.java =================================================================== --- trunk/JavaBDD/net/sf/javabdd/BDDFactory.java 2010-10-14 01:42:49 UTC (rev 479) +++ trunk/JavaBDD/net/sf/javabdd/BDDFactory.java 2010-11-16 01:29:49 UTC (rev 480) @@ -66,46 +66,51 @@ * @param cachesize operation cache size * @return BDD factory object */ - public static BDDFactory init(String bddpackage, int nodenum, int cachesize) { - try { - if (bddpackage.equals("buddy")) - return BuDDyFactory.init(nodenum, cachesize); - if (bddpackage.equals("cudd")) - return CUDDFactory.init(nodenum, cachesize); - if (bddpackage.equals("cal")) - return CALFactory.init(nodenum, cachesize); - if (bddpackage.equals("j") || bddpackage.equals("java")) - return JFactory.init(nodenum, cachesize); - if (bddpackage.equals("u")) - return UberMicroFactory.init(nodenum, cachesize); - if (bddpackage.equals("micro")) - return MicroFactory.init(nodenum, cachesize); - if (bddpackage.equals("jdd")) - return JDDFactory.init(nodenum, cachesize); - if (bddpackage.equals("test")) - return TestBDDFactory.init(nodenum, cachesize); - if (bddpackage.equals("typed")) - return TypedBDDFactory.init(nodenum, cachesize); - if (bddpackage.equals("zdd")) { - BDDFactory bdd = JFactory.init(nodenum, cachesize); - ((JFactory)bdd).ZDD = true; - return bdd; - } - } catch (LinkageError e) { - System.out.println("Could not load BDD package "+bddpackage+": "+e.getLocalizedMessage()); - } - try { - Class c = Class.forName(bddpackage); - Method m = c.getMethod("init", new Class[] { int.class, int.class }); - return (BDDFactory) m.invoke(null, new Object[] { new Integer(nodenum), new Integer(cachesize) }); - } - catch (ClassNotFoundException _) {} - catch (NoSuchMethodException _) {} - catch (IllegalAccessException _) {} - catch (InvocationTargetException _) {} - // falling back to default java implementation. - return JFactory.init(nodenum, cachesize); + public static BDDFactory init(String bddpackage, int nodenum, int cachesize) + { + try { + if (bddpackage.equals("buddy")) { + return BuDDyFactory.init(nodenum, cachesize); + } else if (bddpackage.equals("cudd")) { + return CUDDFactory.init(nodenum, cachesize); + } else if (bddpackage.equals("cal")) { + return CALFactory.init(nodenum, cachesize); + } else if (bddpackage.equals("j") || bddpackage.equals("java")) { + return JFactory.init(nodenum, cachesize); + } else if (bddpackage.equals("u")) { + return UberMicroFactory.init(nodenum, cachesize); + } else if (bddpackage.equals("micro")) { + return MicroFactory.init(nodenum, cachesize); + } else if (bddpackage.equals("jdd")) { + return JDDFactory.init(nodenum, cachesize); + } else if (bddpackage.equals("test")) { + return TestBDDFactory.init(nodenum, cachesize); + } else if (bddpackage.equals("typed")) { + return TypedBDDFactory.init(nodenum, cachesize); + } else if (bddpackage.equals("zdd")) { + BDDFactory bdd = JFactory.init(nodenum, cachesize); + ((JFactory)bdd).ZDD = true; + return bdd; + } else { + System.err.println("Unknown BDD package: " + bddpackage); + } + } catch (LinkageError e) { + System.err.println("Could not load BDD package "+ bddpackage + + ": " + e.getLocalizedMessage()); } + try { + Class c = Class.forName(bddpackage); + Method m = c.getMethod("init", new Class[] { int.class, int.class }); + return (BDDFactory) m.invoke(null, new Object[] + { new Integer(nodenum), new Integer(cachesize) }); + } + catch (ClassNotFoundException _) {} + catch (NoSuchMethodException _) {} + catch (IllegalAccessException _) {} + catch (InvocationTargetException _) {} + // falling back to default java implementation. + return JFactory.init(nodenum, cachesize); + } /** * Logical 'and'. Modified: trunk/JavaBDD/net/sf/javabdd/BuDDyFactory.java =================================================================== --- trunk/JavaBDD/net/sf/javabdd/BuDDyFactory.java 2010-10-14 01:42:49 UTC (rev 479) +++ trunk/JavaBDD/net/sf/javabdd/BuDDyFactory.java 2010-11-16 01:29:49 UTC (rev 480) @@ -205,7 +205,7 @@ private static native void enableReorder0(); public int reorderVerbose(int v) { return reorderVerbose0(v); } private static native int reorderVerbose0(int v); - public void reorder(ReorderMethod m) { reorder0(m.id); } + public void reorder(ReorderMethod m) { if (varNum() > 1) reorder0(m.id); } private static native void reorder0(int method); public void autoReorder(ReorderMethod method) { autoReorder0(method.id); } private static native void autoReorder0(int method); Modified: trunk/JavaBDD/net/sf/javabdd/JFactory.java =================================================================== --- trunk/JavaBDD/net/sf/javabdd/JFactory.java 2010-10-14 01:42:49 UTC (rev 479) +++ trunk/JavaBDD/net/sf/javabdd/JFactory.java 2010-11-16 01:29:49 UTC (rev 480) @@ -227,7 +227,7 @@ public void disableReorder() { bdd_disable_reorder(); } public void enableReorder() { bdd_enable_reorder(); } public int reorderVerbose(int v) { return bdd_reorder_verbose(v); } - public void reorder(ReorderMethod m) { bdd_reorder(m.id); } + public void reorder(ReorderMethod m) { if (varNum() > 1) bdd_reorder(m.id); } public void autoReorder(ReorderMethod method) { bdd_autoreorder(method.id); } public void autoReorder(ReorderMethod method, int max) { bdd_autoreorder_times(method.id, max); } public void swapVar(int v1, int v2) { bdd_swapvar(v1, v2); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |