1.1 --- a/CMakeLists.txt Tue May 12 12:09:55 2009 +0100
1.2 +++ b/CMakeLists.txt Wed May 13 09:50:14 2009 +0100
1.3 @@ -18,10 +18,11 @@
1.4 FIND_PACKAGE(COIN)
1.5
1.6 IF(MSVC)
1.7 - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4250 /wd4355 /wd4800 /wd4996")
1.8 + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4250 /wd4355 /wd4503 /wd4800 /wd4996")
1.9 # Suppressed warnings:
1.10 # C4250: 'class1' : inherits 'class2::member' via dominance
1.11 # C4355: 'this' : used in base member initializer list
1.12 +# C4503: 'function' : decorated name length exceeded, name was truncated
1.13 # C4800: 'type' : forcing value to bool 'true' or 'false' (performance warning)
1.14 # C4996: 'function': was declared deprecated
1.15 ENDIF(MSVC)
2.1 --- a/lemon/Makefile.am Tue May 12 12:09:55 2009 +0100
2.2 +++ b/lemon/Makefile.am Wed May 13 09:50:14 2009 +0100
2.3 @@ -1,6 +1,7 @@
2.4 EXTRA_DIST += \
2.5 lemon/lemon.pc.in \
2.6 - lemon/CMakeLists.txt
2.7 + lemon/CMakeLists.txt \
2.8 + lemon/config.h.cmake
2.9
2.10 pkgconfig_DATA += lemon/lemon.pc
2.11
2.12 @@ -16,7 +17,7 @@
2.13 lemon/bits/windows.cc
2.14
2.15 nodist_lemon_HEADERS = lemon/config.h
2.16 -
2.17 +
2.18 lemon_libemon_la_CXXFLAGS = \
2.19 $(AM_CXXFLAGS) \
2.20 $(GLPK_CFLAGS) \
3.1 --- a/lemon/concepts/graph_components.h Tue May 12 12:09:55 2009 +0100
3.2 +++ b/lemon/concepts/graph_components.h Wed May 13 09:50:14 2009 +0100
3.3 @@ -71,6 +71,11 @@
3.4 /// Assignment operator for the item.
3.5 GraphItem& operator=(const GraphItem&) { return *this; }
3.6
3.7 + /// \brief Assignment operator for INVALID.
3.8 + ///
3.9 + /// This operator makes the item invalid.
3.10 + GraphItem& operator=(Invalid) { return *this; }
3.11 +
3.12 /// \brief Equality operator.
3.13 ///
3.14 /// Equality operator.
3.15 @@ -96,6 +101,7 @@
3.16 struct Constraints {
3.17 void constraints() {
3.18 _GraphItem i1;
3.19 + i1=INVALID;
3.20 _GraphItem i2 = i1;
3.21 _GraphItem i3 = INVALID;
3.22
3.23 @@ -221,14 +227,7 @@
3.24 /// Besides the core graph item functionality each arc should
3.25 /// be convertible to the represented edge.
3.26 Edge(const Arc&) {}
3.27 -
3.28 - /// \brief Assign an arc to an edge.
3.29 - ///
3.30 - /// This function assigns an arc to an edge.
3.31 - /// Besides the core graph item functionality each arc should
3.32 - /// be convertible to the represented edge.
3.33 - Edge& operator=(const Arc&) { return *this; }
3.34 - };
3.35 + };
3.36
3.37 /// \brief Return one end node of an edge.
3.38 ///
3.39 @@ -353,10 +352,12 @@
3.40 void constraints() {
3.41 checkConcept<Base, _Digraph >();
3.42 typename _Digraph::Node node;
3.43 + node=INVALID;
3.44 int nid = digraph.id(node);
3.45 nid = digraph.id(node);
3.46 node = digraph.nodeFromId(nid);
3.47 typename _Digraph::Arc arc;
3.48 + arc=INVALID;
3.49 int eid = digraph.id(arc);
3.50 eid = digraph.id(arc);
3.51 arc = digraph.arcFromId(eid);
4.1 --- a/lemon/edge_set.h Tue May 12 12:09:55 2009 +0100
4.2 +++ b/lemon/edge_set.h Wed May 13 09:50:14 2009 +0100
4.3 @@ -84,6 +84,12 @@
4.4
4.5 ListArcSetBase() : first_arc(-1), first_free_arc(-1) {}
4.6
4.7 + Node addNode() {
4.8 + LEMON_ASSERT(false,
4.9 + "This graph structure does not support node insertion");
4.10 + return INVALID; // avoid warning
4.11 + }
4.12 +
4.13 Arc addArc(const Node& u, const Node& v) {
4.14 int n;
4.15 if (first_free_arc == -1) {
4.16 @@ -416,6 +422,12 @@
4.17
4.18 ListEdgeSetBase() : first_arc(-1), first_free_arc(-1) {}
4.19
4.20 + Node addNode() {
4.21 + LEMON_ASSERT(false,
4.22 + "This graph structure does not support node insertion");
4.23 + return INVALID; // avoid warning
4.24 + }
4.25 +
4.26 Edge addEdge(const Node& u, const Node& v) {
4.27 int n;
4.28
4.29 @@ -816,6 +828,12 @@
4.30
4.31 SmartArcSetBase() {}
4.32
4.33 + Node addNode() {
4.34 + LEMON_ASSERT(false,
4.35 + "This graph structure does not support node insertion");
4.36 + return INVALID; // avoid warning
4.37 + }
4.38 +
4.39 Arc addArc(const Node& u, const Node& v) {
4.40 int n = arcs.size();
4.41 arcs.push_back(ArcT());
4.42 @@ -1112,6 +1130,12 @@
4.43
4.44 SmartEdgeSetBase() {}
4.45
4.46 + Node addNode() {
4.47 + LEMON_ASSERT(false,
4.48 + "This graph structure does not support node insertion");
4.49 + return INVALID; // avoid warning
4.50 + }
4.51 +
4.52 Edge addEdge(const Node& u, const Node& v) {
4.53 int n = arcs.size();
4.54 arcs.push_back(ArcT());
5.1 --- a/test/min_cost_flow_test.cc Tue May 12 12:09:55 2009 +0100
5.2 +++ b/test/min_cost_flow_test.cc Wed May 13 09:50:14 2009 +0100
5.3 @@ -93,22 +93,24 @@
5.4 struct Constraints {
5.5 void constraints() {
5.6 checkConcept<concepts::Digraph, GR>();
5.7 +
5.8 + const Constraints& me = *this;
5.9
5.10 - MCF mcf(g);
5.11 + MCF mcf(me.g);
5.12 const MCF& const_mcf = mcf;
5.13
5.14 b = mcf.reset()
5.15 - .lowerMap(lower)
5.16 - .upperMap(upper)
5.17 - .costMap(cost)
5.18 - .supplyMap(sup)
5.19 - .stSupply(n, n, k)
5.20 + .lowerMap(me.lower)
5.21 + .upperMap(me.upper)
5.22 + .costMap(me.cost)
5.23 + .supplyMap(me.sup)
5.24 + .stSupply(me.n, me.n, me.k)
5.25 .run();
5.26
5.27 c = const_mcf.totalCost();
5.28 x = const_mcf.template totalCost<double>();
5.29 - v = const_mcf.flow(a);
5.30 - c = const_mcf.potential(n);
5.31 + v = const_mcf.flow(me.a);
5.32 + c = const_mcf.potential(me.n);
5.33 const_mcf.flowMap(fm);
5.34 const_mcf.potentialMap(pm);
5.35 }
5.36 @@ -120,15 +122,16 @@
5.37 typedef concepts::ReadMap<Arc, Cost> CAM;
5.38 typedef concepts::WriteMap<Arc, Value> FlowMap;
5.39 typedef concepts::WriteMap<Node, Cost> PotMap;
5.40 +
5.41 + GR g;
5.42 + VAM lower;
5.43 + VAM upper;
5.44 + CAM cost;
5.45 + NM sup;
5.46 + Node n;
5.47 + Arc a;
5.48 + Value k;
5.49
5.50 - const GR &g;
5.51 - const VAM &lower;
5.52 - const VAM &upper;
5.53 - const CAM &cost;
5.54 - const NM ⊃
5.55 - const Node &n;
5.56 - const Arc &a;
5.57 - const Value &k;
5.58 FlowMap fm;
5.59 PotMap pm;
5.60 bool b;