src/work/marci/graph_wrapper.h
changeset 330 7ac0d4e8a31c
parent 323 58bc28afea63
child 335 999eb3cd7b49
     1.1 --- a/src/work/marci/graph_wrapper.h	Thu Apr 15 08:06:43 2004 +0000
     1.2 +++ b/src/work/marci/graph_wrapper.h	Thu Apr 15 14:41:20 2004 +0000
     1.3 @@ -896,19 +896,20 @@
     1.4  
     1.5    
     1.6  
     1.7 -  template<typename Graph, typename Number, typename FlowMap, typename CapacityMap>
     1.8 +  template<typename Graph, typename Number, 
     1.9 +	   typename CapacityMap, typename FlowMap>
    1.10    class ResGraphWrapper : public GraphWrapper<Graph> {
    1.11    protected:
    1.12  //    typedef typename Graph::OutEdgeIt GraphOutEdgeIt;
    1.13  //    typedef typename Graph::InEdgeIt GraphInEdgeIt;
    1.14  //    typedef typename Graph::Edge GraphEdge;
    1.15 +    const CapacityMap* capacity;
    1.16      FlowMap* flow;
    1.17 -    const CapacityMap* capacity;
    1.18    public:
    1.19  
    1.20 -    ResGraphWrapper(Graph& _graph, FlowMap& _flow, 
    1.21 -		    const CapacityMap& _capacity) : 
    1.22 -      GraphWrapper<Graph>(_graph), flow(&_flow), capacity(&_capacity) { }
    1.23 +    ResGraphWrapper(Graph& _graph, const CapacityMap& _capacity, 
    1.24 +		    FlowMap& _flow) : 
    1.25 +      GraphWrapper<Graph>(_graph), capacity(&_capacity), flow(&_flow) { }
    1.26  
    1.27      class Edge; 
    1.28      class OutEdgeIt; 
    1.29 @@ -918,7 +919,7 @@
    1.30      typedef typename GraphWrapper<Graph>::Node Node;
    1.31      typedef typename GraphWrapper<Graph>::NodeIt NodeIt;
    1.32      class Edge : public Graph::Edge {
    1.33 -      friend class ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>;
    1.34 +      friend class ResGraphWrapper<Graph, Number, CapacityMap, FlowMap>;
    1.35      protected:
    1.36        bool forward; //true, iff forward
    1.37  //      typename Graph::Edge e;
    1.38 @@ -940,7 +941,7 @@
    1.39        } 
    1.40      };
    1.41  //     class Edge {
    1.42 -//       friend class ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>;
    1.43 +//       friend class ResGraphWrapper<Graph, Number,lksd FlowMap, CapacityMap>;
    1.44  //     protected:
    1.45  //       bool out_or_in; //true, iff out
    1.46  //       GraphOutEdgeIt out;
    1.47 @@ -967,7 +968,7 @@
    1.48  //       }
    1.49  //     };
    1.50      class OutEdgeIt {
    1.51 -      friend class ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>;
    1.52 +      friend class ResGraphWrapper<Graph, Number, CapacityMap, FlowMap>;
    1.53      protected:
    1.54        typename Graph::OutEdgeIt out;
    1.55        typename Graph::InEdgeIt in;
    1.56 @@ -978,7 +979,7 @@
    1.57  //      OutEdgeIt(const Edge& e) : Edge(e) { }
    1.58        OutEdgeIt(const Invalid& i) : out(i), in(i), forward(false) { }
    1.59  //the unique invalid iterator
    1.60 -      OutEdgeIt(const ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>& resG, Node v) { 
    1.61 +      OutEdgeIt(const ResGraphWrapper<Graph, Number, CapacityMap, FlowMap>& resG, Node v) { 
    1.62  	forward=true;
    1.63  	resG.graph->first(out, v);
    1.64  	while( resG.graph->valid(out) && !(resG.resCap(*this)>0) ) { resG.graph->next(out); }
    1.65 @@ -1000,13 +1001,13 @@
    1.66        }
    1.67      };
    1.68  //     class OutEdgeIt : public Edge {
    1.69 -//       friend class ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>;
    1.70 +//       friend class ResGraphWrapper<Graph, Number, FkklowMap, CapacityMap>;
    1.71  //     public:
    1.72  //       OutEdgeIt() { }
    1.73  //       //FIXME
    1.74  //       OutEdgeIt(const Edge& e) : Edge(e) { }
    1.75  //       OutEdgeIt(const Invalid& i) : Edge(i) { }
    1.76 -//       OutEdgeIt(const ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>& resG, Node v) : Edge() { 
    1.77 +//       OutEdgeIt(const ResGraphWrapper<Graph, Number, FdfvlowMap, CapacityMap>& resG, Node v) : Edge() { 
    1.78  // 	resG.graph->first(out, v);
    1.79  // 	while( resG.graph->valid(out) && !(resG.resCap(out)>0) ) { resG.graph->next(out); }
    1.80  // 	if (!resG.graph->valid(out)) {
    1.81 @@ -1038,7 +1039,7 @@
    1.82  //    class InEdgeIt : public Edge { };
    1.83  
    1.84      class InEdgeIt {
    1.85 -      friend class ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>;
    1.86 +      friend class ResGraphWrapper<Graph, Number, CapacityMap, FlowMap>;
    1.87      protected:
    1.88        typename Graph::OutEdgeIt out;
    1.89        typename Graph::InEdgeIt in;
    1.90 @@ -1049,7 +1050,7 @@
    1.91  //      OutEdgeIt(const Edge& e) : Edge(e) { }
    1.92        InEdgeIt(const Invalid& i) : out(i), in(i), forward(false) { }
    1.93  //the unique invalid iterator
    1.94 -      InEdgeIt(const ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>& resG, Node v) { 
    1.95 +      InEdgeIt(const ResGraphWrapper<Graph, Number, CapacityMap, FlowMap>& resG, Node v) { 
    1.96  	forward=true;
    1.97  	resG.graph->first(in, v);
    1.98  	while( resG.graph->valid(in) && !(resG.resCap(*this)>0) ) { resG.graph->next(in); }
    1.99 @@ -1072,14 +1073,14 @@
   1.100      };
   1.101  
   1.102      class EdgeIt {
   1.103 -      friend class ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>;
   1.104 +      friend class ResGraphWrapper<Graph, Number, CapacityMap, FlowMap>;
   1.105      protected:
   1.106        typename Graph::EdgeIt e;
   1.107        bool forward;
   1.108      public:
   1.109        EdgeIt() { }
   1.110        EdgeIt(const Invalid& i) : e(i), forward(false) { }
   1.111 -      EdgeIt(const ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>& resG) { 
   1.112 +      EdgeIt(const ResGraphWrapper<Graph, Number, CapacityMap, FlowMap>& resG) { 
   1.113  	forward=true;
   1.114  	resG.graph->first(e);
   1.115  	while (resG.graph->valid(e) && !(resG.resCap(*this)>0)) resG.graph->next(e);
   1.116 @@ -1094,13 +1095,13 @@
   1.117        }
   1.118      };
   1.119  //     class EdgeIt : public Edge {
   1.120 -//       friend class ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>;
   1.121 +//       friend class ResGraphWrapper<Graph, Number, FflowMap, CapacityMap>;
   1.122  //       NodeIt v; 
   1.123  //     public:
   1.124  //       EdgeIt() { }
   1.125  //       //EdgeIt(const EdgeIt& e) : Edge(e), v(e.v) { }
   1.126  //       EdgeIt(const Invalid& i) : Edge(i) { }
   1.127 -//       EdgeIt(const ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>& resG) : Edge() { 
   1.128 +//       EdgeIt(const ResGraphWrapper<Graph, Number, FlfowMap, CapacityMap>& resG) : Edge() { 
   1.129  // 	resG.graph->first(v);
   1.130  // 	if (resG.graph->valid(v)) resG.graph->first(out, v); else out=INVALID;
   1.131  // 	while (resG.graph->valid(out) && !(resG.resCap(out)>0) ) { resG.graph->next(out); }
   1.132 @@ -1317,9 +1318,9 @@
   1.133  
   1.134  //     template<typename T> class NodeMap : public Graph::NodeMap<T> { 
   1.135  //     public:
   1.136 -//       NodeMap(const ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>& _G) 
   1.137 +//       NodeMap(const ResGraphWrapper<Graph, Number, FlovwMap, CapacityMap>& _G) 
   1.138  // 	: Graph::NodeMap<T>(_G.gw) { }
   1.139 -//       NodeMap(const ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>& _G, 
   1.140 +//       NodeMap(const ResGraphWrapper<Graph, Number, FlowvMap, CapacityMap>& _G, 
   1.141  // 	      T a) : Graph::NodeMap<T>(_G.gw, a) { }
   1.142  //     };
   1.143  
   1.144 @@ -1337,8 +1338,8 @@
   1.145      class EdgeMap {
   1.146        typename Graph::EdgeMap<T> forward_map, backward_map; 
   1.147      public:
   1.148 -      EdgeMap(const ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>& _G) : forward_map(*(_G.graph)), backward_map(*(_G.graph)) { }
   1.149 -      EdgeMap(const ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>& _G, T a) : forward_map(*(_G.graph), a), backward_map(*(_G.graph), a) { }
   1.150 +      EdgeMap(const ResGraphWrapper<Graph, Number, CapacityMap, FlowMap>& _G) : forward_map(*(_G.graph)), backward_map(*(_G.graph)) { }
   1.151 +      EdgeMap(const ResGraphWrapper<Graph, Number, CapacityMap, FlowMap>& _G, T a) : forward_map(*(_G.graph), a), backward_map(*(_G.graph), a) { }
   1.152        void set(Edge e, T a) { 
   1.153  	if (e.forward) 
   1.154  	  forward_map.set(e.out, a);