Removed stuff from InfAlg, moved it to individual inference algorithms
[libdai.git] / src / alldai.cpp
index 872a7b5..cca6ec2 100644 (file)
@@ -21,6 +21,7 @@
 
 #include <string>
 #include <dai/alldai.h>
 
 #include <string>
 #include <dai/alldai.h>
+#include <dai/properties.h>
 
 
 namespace dai {
 
 
 namespace dai {
@@ -29,23 +30,36 @@ namespace dai {
 using namespace std;
 
 
 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 ) {
+#ifdef WITH_BP
     if( name == BP::Name ) 
         return new BP (fg, opts);
     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);
         return new MF (fg, opts);
-    else if( name == HAK::Name ) 
+#endif
+#ifdef WITH_HAK
+    if( name == HAK::Name ) 
         return new HAK (fg, opts);
         return new HAK (fg, opts);
-    else if( name == LC::Name )
+#endif
+#ifdef WITH_LC
+    if( name == LC::Name )
         return new LC (fg, opts);
         return new LC (fg, opts);
-    else if( name == TreeEP::Name )
+#endif
+#ifdef WITH_TREEEP
+    if( name == TreeEP::Name )
         return new TreeEP (fg, opts);
         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);
         return new JTree (fg, opts);
-    else
-        throw "Unknown inference algorithm";
+#endif
+#ifdef WITH_MR
+    if( name == MR::Name )
+        return new MR (fg, opts);
+#endif
+    throw "Unknown inference algorithm";
 }
 
 
 }