$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r53547 - in sandbox/SOC/2009/function_graph: boost/function_graph libs/test
From: mlopez7_at_[hidden]
Date: 2009-06-01 12:11:58
Author: lopezeant
Date: 2009-06-01 12:11:58 EDT (Mon, 01 Jun 2009)
New Revision: 53547
URL: http://svn.boost.org/trac/boost/changeset/53547
Log:
cleaned file, constructor fixed
Text files modified: 
   sandbox/SOC/2009/function_graph/boost/function_graph/function_graph.hpp |    38 ++++++++++++++++++++++----------------  
   sandbox/SOC/2009/function_graph/libs/test/test1.cpp                     |    39 +++++++++++++++++++-------------------- 
   2 files changed, 41 insertions(+), 36 deletions(-)
Modified: sandbox/SOC/2009/function_graph/boost/function_graph/function_graph.hpp
==============================================================================
--- sandbox/SOC/2009/function_graph/boost/function_graph/function_graph.hpp	(original)
+++ sandbox/SOC/2009/function_graph/boost/function_graph/function_graph.hpp	2009-06-01 12:11:58 EDT (Mon, 01 Jun 2009)
@@ -35,13 +35,23 @@
     typedef typename function_type::first_argument_type vertex_type;
     //typedef typename function_type::second_argument_type second_vertex_type;
     
+    /** Constructor - Default */
+    function_graph_base()
+    { }
+    
+    /** Constructors to allow for initialization of edge */
+    function_graph_base(function_type const& f)
+        : edge_(f)
+    { }
+    
     // Allow access to the function edge_ holds, not edge_ itself.
     edge_type edge(vertex_type v1, vertex_type v2)
     { return edge_(v1, v2); }
     
     // Set the edge_ function
-    void set_edge_function(function_type edge_function)
+    void set_function(function_type edge_function)
     { edge_ = edge_function; }
+    
     function_type edge_;
 };
 
@@ -54,7 +64,7 @@
  * variant will be instantiated for meaningless types such as graph<int>.
  * Obviously, that should fail.
  */
-//template <typename T> struct function_graph { };
+template <typename T> struct function_graph { };
 
 /**
  * function_graph is a class designed to handle implicit graphs and more.
@@ -65,11 +75,10 @@
  * is part of the interface. Paired with it is the default constructor.
  */
 template <typename Edge, typename Vertex>
-struct function_graph //<function<Edge(Vertex, Vertex)> >
-    : private function_graph_base <function <Edge(Vertex, Vertex)> >
+struct function_graph <function<Edge(Vertex, Vertex)> >
+    : public function_graph_base <function <Edge(Vertex, Vertex)> >
 {
-    typedef function_graph_base <function<Edge(Vertex, Vertex)> > Base;
-    
+    typedef function_graph_base <function <Edge(Vertex, Vertex)> > Base;
 public:
 
     typedef typename Base::function_type function_type;
@@ -79,26 +88,22 @@
 
     /** 
      * Constructor: default 
-     * @note Exists only when set_edge is used
      */
     function_graph()
     { }
     
     /** Constructor: takes a boost::function or functor */
     function_graph(function_type const& f)
-        //: edge_(f)
-    { edge_ = f;}
+        : Base(f)
+    { }
     
     
     /** Set the function of the implicit graph */    
-    using Base::set_edge_function;
+    using Base::set_function;
     
     /** Edge function from Base */
     using Base::edge;
-
-private:
-    Base::edge_;
-
+    
 private:
 };
 
@@ -108,12 +113,13 @@
  * the form E(U,V) will match the empty class causing compiler errors.
  */
 
-/*template <typename Edge, typename Vertex>
+template <typename Edge, typename Vertex>
 struct function_graph<Edge(Vertex, Vertex)>
     : private function_graph_base< function<Edge(Vertex, Vertex)> >
-{ };*/
+{ };
 
 }   // graph namespace
 }   // boost namespace
 
 #endif /*FUNCTION_GRAPH_HPP_*/
+
Modified: sandbox/SOC/2009/function_graph/libs/test/test1.cpp
==============================================================================
--- sandbox/SOC/2009/function_graph/libs/test/test1.cpp	(original)
+++ sandbox/SOC/2009/function_graph/libs/test/test1.cpp	2009-06-01 12:11:58 EDT (Mon, 01 Jun 2009)
@@ -1,8 +1,3 @@
-/**
- * This file is intended test compilation only.
- */
-
-
 #include <iostream>
 #include <boost/function.hpp>
 #include <functional>
@@ -10,26 +5,30 @@
 #include <vector>
 #include "function_graph.hpp"
 
-// test boost function
-struct int_less_than {
-    bool operator()(int a, int b) { return a < b; }
+template <typename T>
+struct less_than {
+    bool operator()(T a, T b) { return a < b; }
 }; 
 
 int main()
 {
-    // create two boost functions
-    boost::function2<bool,int,int> h = int_less_than();
-    boost::function2<bool,int,int> g = int_less_than();
-
-    // test constructor
-    boost::graph::function_graph<bool, int> implicitG1(h);
-
-    // set the edge function
-    implicitG1.set_edge_function(g);
-
-    // test the edge function
-    implicitG1.edge(1,2);
+    ////////
+    // Create a boost function and function graph.
+    typedef boost::function<bool(int,int)> function_type;
+    typedef boost::graph::function_graph<function_type> graph;
+    function_type f = less_than<int>();
+    function_type g = less_than<int>();
+    graph funcGraph(f);
+    
+    ////////
+    // Set a new function to the graph.
+    funcGraph.set_function(g);
     
+    ////////
+    // Check the edge output.
+    std::cout << "2 < 1 check ";
+    if(funcGraph.edge(2,1)) std::cout << "passes." << "\n";
+    else std::cout << "fails." << "\n";
     
     return 0;
 }