Some small fixes
authorJoris Mooij <joris.mooij@tuebingen.mpg.de>
Thu, 8 Apr 2010 16:10:50 +0000 (18:10 +0200)
committerJoris Mooij <joris.mooij@tuebingen.mpg.de>
Thu, 8 Apr 2010 16:10:50 +0000 (18:10 +0200)
- Added operator<<( std::ostream&, const GraphAL& )
- Fixed a bug in FactorGraph::MarkovGraph()
- Fixed some build issues for the MatLab interface

ChangeLog
Makefile
include/dai/graph.h
src/factorgraph.cpp
src/graph.cpp
tests/unit/graph.cpp

index e0345fa..0a16f97 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -132,6 +132,7 @@ git HEAD
   - Fixed bug in createGraphRegular()
   - Added GraphAL::hasEdge(size_t,size_t)
   - Added GraphAL::operator==( const GraphAL& )
+  - Added operator<<( std::ostream&, const GraphAL& )
 * Improved smallset.h/cpp:
   - The sizeHint argument of the iterator constructor
      SmallSet::SmallSet( TIterator begin, TIterator end, size_t sizeHint=0 )
index e83da4e..da8033e 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -208,11 +208,11 @@ endif
 matlab/dai$(ME) : $(SRC)/matlab/dai.cpp $(HEADERS) $(SOURCES) $(SRC)/matlab/matlab.cpp
        $(MEX) -output $@ $< $(SRC)/matlab/matlab.cpp $(SOURCES)
 
-matlab/dai_readfg$(ME) : $(SRC)/matlab/dai_readfg.cpp $(HEADERS) $(SRC)/matlab/matlab.cpp $(SRC)/factorgraph.cpp $(SRC)/exceptions.cpp $(SRC)/bipgraph.cpp
-       $(MEX) -output $@ $< $(SRC)/matlab/matlab.cpp $(SRC)/factorgraph.cpp $(SRC)/exceptions.cpp $(SRC)/bipgraph.cpp
+matlab/dai_readfg$(ME) : $(SRC)/matlab/dai_readfg.cpp $(HEADERS) $(SRC)/matlab/matlab.cpp $(SRC)/factorgraph.cpp $(SRC)/exceptions.cpp $(SRC)/bipgraph.cpp $(SRC)/graph.cpp $(SRC)/factor.cpp $(SRC)/util.cpp
+       $(MEX) -output $@ $< $(SRC)/matlab/matlab.cpp $(SRC)/factorgraph.cpp $(SRC)/exceptions.cpp $(SRC)/bipgraph.cpp $(SRC)/graph.cpp $(SRC)/factor.cpp $(SRC)/util.cpp
 
-matlab/dai_writefg$(ME) : $(SRC)/matlab/dai_writefg.cpp $(HEADERS) $(SRC)/matlab/matlab.cpp $(SRC)/factorgraph.cpp $(SRC)/exceptions.cpp $(SRC)/bipgraph.cpp
-       $(MEX) -output $@ $< $(SRC)/matlab/matlab.cpp $(SRC)/factorgraph.cpp $(SRC)/exceptions.cpp $(SRC)/bipgraph.cpp
+matlab/dai_writefg$(ME) : $(SRC)/matlab/dai_writefg.cpp $(HEADERS) $(SRC)/matlab/matlab.cpp $(SRC)/factorgraph.cpp $(SRC)/exceptions.cpp $(SRC)/bipgraph.cpp $(SRC)/graph.cpp $(SRC)/factor.cpp $(SRC)/util.cpp
+       $(MEX) -output $@ $< $(SRC)/matlab/matlab.cpp $(SRC)/factorgraph.cpp $(SRC)/exceptions.cpp $(SRC)/bipgraph.cpp $(SRC)/graph.cpp $(SRC)/factor.cpp $(SRC)/util.cpp
 
 matlab/dai_potstrength$(ME) : $(SRC)/matlab/dai_potstrength.cpp $(HEADERS) $(SRC)/matlab/matlab.cpp $(SRC)/exceptions.cpp
        $(MEX) -output $@ $< $(SRC)/matlab/matlab.cpp $(SRC)/exceptions.cpp
index b72a2b4..b2e0623 100644 (file)
@@ -297,6 +297,12 @@ class GraphAL {
     //@{
         /// Writes this GraphAL to an output stream in GraphViz .dot syntax
         void printDot( std::ostream& os ) const;
+
+        /// Writes this GraphAL to an output stream
+        friend std::ostream& operator<<( std::ostream& os, const GraphAL& g ) {
+            g.printDot( os );
+            return os;
+        }
     //@}
 };
 
index 15b3adf..bf4b317 100644 (file)
@@ -273,7 +273,7 @@ GraphAL FactorGraph::MarkovGraph() const {
         foreach( const Neighbor &I, nbV(i) )
             foreach( const Neighbor &j, nbF(I) )
                 if( i < j )
-                    G.addEdge( i, j );
+                    G.addEdge( i, j, true );
     return G;
 }
 
index b3d46d9..501fa75 100644 (file)
@@ -203,7 +203,7 @@ bool GraphAL::isTree() const {
 
 
 void GraphAL::printDot( std::ostream& os ) const {
-    os << "graph G {" << endl;
+    os << "graph GraphAL {" << endl;
     os << "node[shape=circle,width=0.4,fixedsize=true];" << endl;
     for( size_t n = 0; n < nrNodes(); n++ )
         os << "\tx" << n << ";" << endl;
index 4e1aff8..92dcb5f 100644 (file)
@@ -432,10 +432,23 @@ BOOST_AUTO_TEST_CASE( StreamTest ) {
     G.addEdge( 3, 2 );
 
     std::stringstream ss;
+    std::string s;
+
     G.printDot( ss );
+    std::getline( ss, s ); BOOST_CHECK_EQUAL( s, "graph GraphAL {" );
+    std::getline( ss, s ); BOOST_CHECK_EQUAL( s, "node[shape=circle,width=0.4,fixedsize=true];" );
+    std::getline( ss, s ); BOOST_CHECK_EQUAL( s, "\tx0;" );
+    std::getline( ss, s ); BOOST_CHECK_EQUAL( s, "\tx1;" );
+    std::getline( ss, s ); BOOST_CHECK_EQUAL( s, "\tx2;" );
+    std::getline( ss, s ); BOOST_CHECK_EQUAL( s, "\tx3;" );
+    std::getline( ss, s ); BOOST_CHECK_EQUAL( s, "\tx0 -- x1;" );
+    std::getline( ss, s ); BOOST_CHECK_EQUAL( s, "\tx0 -- x2;" );
+    std::getline( ss, s ); BOOST_CHECK_EQUAL( s, "\tx1 -- x3;" );
+    std::getline( ss, s ); BOOST_CHECK_EQUAL( s, "\tx2 -- x3;" );
+    std::getline( ss, s ); BOOST_CHECK_EQUAL( s, "}" );
 
-    std::string s;
-    std::getline( ss, s ); BOOST_CHECK_EQUAL( s, "graph G {" );
+    ss << G;
+    std::getline( ss, s ); BOOST_CHECK_EQUAL( s, "graph GraphAL {" );
     std::getline( ss, s ); BOOST_CHECK_EQUAL( s, "node[shape=circle,width=0.4,fixedsize=true];" );
     std::getline( ss, s ); BOOST_CHECK_EQUAL( s, "\tx0;" );
     std::getline( ss, s ); BOOST_CHECK_EQUAL( s, "\tx1;" );