Generalized VarSet to "template<typename T> small_set<T>"
[libdai.git] / src / alldai.cpp
index 872a7b5..ebabd1f 100644 (file)
@@ -21,6 +21,8 @@
 
 #include <string>
 #include <dai/alldai.h>
+#include <dai/properties.h>
+#include <dai/exceptions.h>
 
 
 namespace dai {
@@ -29,23 +31,38 @@ namespace dai {
 using namespace std;
 
 
-InfAlg *newInfAlg( const string &name, const FactorGraph &fg, const Properties &opts ) {
+InfAlg *newInfAlg( const string &name, const FactorGraph &fg, const PropertySet &opts ) {
+    if( name == ExactInf::Name )
+        return new ExactInf (fg, opts);
+#ifdef WITH_BP
     if( name == BP::Name ) 
         return new BP (fg, opts);
-    else if( name == MF::Name ) 
+#endif
+#ifdef WITH_MF
+    if( name == MF::Name ) 
         return new MF (fg, opts);
-    else if( name == HAK::Name ) 
+#endif
+#ifdef WITH_HAK
+    if( name == HAK::Name ) 
         return new HAK (fg, opts);
-    else if( name == LC::Name )
+#endif
+#ifdef WITH_LC
+    if( name == LC::Name )
         return new LC (fg, opts);
-    else if( name == TreeEP::Name )
+#endif
+#ifdef WITH_TREEEP
+    if( name == TreeEP::Name )
         return new TreeEP (fg, opts);
-    else if( name == MR::Name )
-        return new MR (fg, opts);
-    else if( name == JTree::Name )
+#endif
+#ifdef WITH_JTREE
+    if( name == JTree::Name )
         return new JTree (fg, opts);
-    else
-        throw "Unknown inference algorithm";
+#endif
+#ifdef WITH_MR
+    if( name == MR::Name )
+        return new MR (fg, opts);
+#endif
+    DAI_THROW(UNKNOWN_DAI_ALGORITHM);
 }