Extended SWIG python interface (inspired by Kyle Ellrott): inference is possible...
[libdai.git] / include / dai / graph.h
index e9506af..d8ffb61 100644 (file)
@@ -1,11 +1,8 @@
 /*  This file is part of libDAI - http://www.libdai.org/
  *
- *  libDAI is licensed under the terms of the GNU General Public License version
- *  2, or (at your option) any later version. libDAI is distributed without any
- *  warranty. See the file COPYING for more details.
+ *  Copyright (c) 2006-2011, The libDAI authors. All rights reserved.
  *
- *  Copyright (C) 2006-2010  Joris Mooij  [joris dot mooij at libdai dot org]
- *  Copyright (C) 2006-2007  Radboud University Nijmegen, The Netherlands
+ *  Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
  */
 
 
@@ -64,7 +61,7 @@ namespace dai {
  *  \code
  *  for( size_t i = 0; i < nrNodes(); ++i ) {
  *      size_t _j = 0;
- *      foreach( const Neighbor &j, nb(i) ) {
+ *      bforeach( const Neighbor &j, nb(i) ) {
  *          assert( j == nb(i,j.iter) );
  *          assert( nb(j.node,j.dual).node == i );
  *          assert( _j = j.iter );
@@ -115,22 +112,6 @@ typedef std::pair<size_t,size_t> Edge;
  *  neighboring nodes.
  */
 class GraphAL {
-    public:
-        /// Describes the neighbor relationship of two nodes in a GraphAL.
-        /** \deprecated Please use dai::Neighbor instead
-         */
-        typedef dai::Neighbor Neighbor;
-
-        /// Describes the neighbors of some node.
-        /** \deprecated Please use dai::Neighbors instead
-         */
-        typedef dai::Neighbors Neighbors;
-
-        /// Represents an edge: an Edge(\a n1,\a n2) corresponds to the edge between node \a n1 and node \a n2.
-        /** \deprecated Please use dai::Edge instead
-         */
-        typedef dai::Edge Edge;
-
     private:
         /// Contains for each node a vector of its neighbors
         std::vector<Neighbors> _nb;
@@ -301,10 +282,10 @@ class GraphAL {
             for( size_t n1 = 0; n1 < nrNodes(); n1++ ) {
                 if( nb(n1).size() != x.nb(n1).size() )
                     return false;
-                foreach( const Neighbor &n2, nb(n1) )
+                bforeach( const Neighbor &n2, nb(n1) )
                     if( !x.hasEdge( n1, n2 ) )
                         return false;
-                foreach( const Neighbor &n2, x.nb(n1) )
+                bforeach( const Neighbor &n2, x.nb(n1) )
                     if( !hasEdge( n1, n2 ) )
                         return false;
             }
@@ -314,14 +295,21 @@ class GraphAL {
 
     /// \name Input and output
     //@{
-        /// Writes this GraphAL to an output stream in GraphViz .dot syntax
+        /// Writes a GraphAL to an output stream in GraphViz .dot syntax
         void printDot( std::ostream& os ) const;
 
-        /// Writes this GraphAL to an output stream
+        /// Writes a GraphAL to an output stream
         friend std::ostream& operator<<( std::ostream& os, const GraphAL& g ) {
             g.printDot( os );
             return os;
         }
+
+        /// Formats a GraphAL as a string
+        std::string toString() const {
+            std::stringstream ss;
+            ss << *this;
+            return ss.str();
+        }
     //@}
 };