[Bf-blender-cvs] [5516e52fad0] master: Fix QuadriFlow build error on FreeBSD and compiler warnings on Linux

Brecht Van Lommel noreply at git.blender.org
Thu Sep 19 11:37:29 CEST 2019


Commit: 5516e52fad046d648241409df01730079370e99b
Author: Brecht Van Lommel
Date:   Thu Sep 19 11:19:59 2019 +0200
Branches: master
https://developer.blender.org/rB5516e52fad046d648241409df01730079370e99b

Fix QuadriFlow build error on FreeBSD and compiler warnings on Linux

===================================================================

M	extern/quadriflow/3rd/lemon-1.3.1/lemon/arg_parser.cc
M	extern/quadriflow/3rd/lemon-1.3.1/lemon/network_simplex.h
A	extern/quadriflow/README.blender
A	extern/quadriflow/patches/blender.patch
M	extern/quadriflow/src/hierarchy.cpp

===================================================================

diff --git a/extern/quadriflow/3rd/lemon-1.3.1/lemon/arg_parser.cc b/extern/quadriflow/3rd/lemon-1.3.1/lemon/arg_parser.cc
index 35a73d9f308..0eeba8ab6c2 100644
--- a/extern/quadriflow/3rd/lemon-1.3.1/lemon/arg_parser.cc
+++ b/extern/quadriflow/3rd/lemon-1.3.1/lemon/arg_parser.cc
@@ -221,9 +221,8 @@ namespace lemon {
                                 const std::string &opt)
   {
     Opts::iterator o = _opts.find(opt);
-    Opts::iterator s = _opts.find(syn);
     LEMON_ASSERT(o!=_opts.end(), "Unknown option: '"+opt+"'");
-    LEMON_ASSERT(s==_opts.end(), "Option already used: '"+syn+"'");
+    LEMON_ASSERT(_opts.find(syn)==_opts.end(), "Option already used: '"+syn+"'");
     ParData p;
     p.help=opt;
     p.mandatory=false;
diff --git a/extern/quadriflow/3rd/lemon-1.3.1/lemon/network_simplex.h b/extern/quadriflow/3rd/lemon-1.3.1/lemon/network_simplex.h
index 6ccad33e68e..388e990ec3b 100644
--- a/extern/quadriflow/3rd/lemon-1.3.1/lemon/network_simplex.h
+++ b/extern/quadriflow/3rd/lemon-1.3.1/lemon/network_simplex.h
@@ -234,7 +234,7 @@ namespace lemon {
     int in_arc, join, u_in, v_in, u_out, v_out;
     Value delta;
 
-    const Value MAX;
+    const Value MAX_VALUE;
 
   public:
 
@@ -649,9 +649,9 @@ namespace lemon {
     NetworkSimplex(const GR& graph, bool arc_mixing = true) :
       _graph(graph), _node_id(graph), _arc_id(graph),
       _arc_mixing(arc_mixing),
-      MAX(std::numeric_limits<Value>::max()),
+      MAX_VALUE(std::numeric_limits<Value>::max()),
       INF(std::numeric_limits<Value>::has_infinity ?
-          std::numeric_limits<Value>::infinity() : MAX)
+          std::numeric_limits<Value>::infinity() : MAX_VALUE)
     {
       // Check the number types
       LEMON_ASSERT(std::numeric_limits<Value>::is_signed,
@@ -1076,9 +1076,9 @@ namespace lemon {
         for (int i = 0; i != _arc_num; ++i) {
           Value c = _lower[i];
           if (c >= 0) {
-            _cap[i] = _upper[i] < MAX ? _upper[i] - c : INF;
+            _cap[i] = _upper[i] < MAX_VALUE ? _upper[i] - c : INF;
           } else {
-            _cap[i] = _upper[i] < MAX + c ? _upper[i] - c : INF;
+            _cap[i] = _upper[i] < MAX_VALUE + c ? _upper[i] - c : INF;
           }
           _supply[_source[i]] -= c;
           _supply[_target[i]] += c;
@@ -1282,7 +1282,7 @@ namespace lemon {
         d = _flow[e];
         if (_pred_dir[u] == DIR_DOWN) {
           c = _cap[e];
-          d = c >= MAX ? INF : c - d;
+          d = c >= MAX_VALUE ? INF : c - d;
         }
         if (d < delta) {
           delta = d;
@@ -1297,7 +1297,7 @@ namespace lemon {
         d = _flow[e];
         if (_pred_dir[u] == DIR_UP) {
           c = _cap[e];
-          d = c >= MAX ? INF : c - d;
+          d = c >= MAX_VALUE ? INF : c - d;
         }
         if (d <= delta) {
           delta = d;
@@ -1559,7 +1559,7 @@ namespace lemon {
             _pi[_target[in_arc]]) >= 0) continue;
         findJoinNode();
         bool change = findLeavingArc();
-        if (delta >= MAX) return false;
+        if (delta >= MAX_VALUE) return false;
         changeFlow(change);
         if (change) {
           updateTreeStructure();
@@ -1598,7 +1598,7 @@ namespace lemon {
       while (pivot.findEnteringArc()) {
         findJoinNode();
         bool change = findLeavingArc();
-        if (delta >= MAX) return UNBOUNDED;
+        if (delta >= MAX_VALUE) return UNBOUNDED;
         changeFlow(change);
         if (change) {
           updateTreeStructure();
diff --git a/extern/quadriflow/README.blender b/extern/quadriflow/README.blender
new file mode 100644
index 00000000000..c88a6d43353
--- /dev/null
+++ b/extern/quadriflow/README.blender
@@ -0,0 +1,5 @@
+Project: QuadriFlow
+URL: https://github.com/hjwdzh/QuadriFlow
+License: MIT and Boost Software License
+Upstream version: 27a6867
+Local modifications: Apply patches/blender.patch
diff --git a/extern/quadriflow/patches/blender.patch b/extern/quadriflow/patches/blender.patch
new file mode 100644
index 00000000000..d131abc52e2
--- /dev/null
+++ b/extern/quadriflow/patches/blender.patch
@@ -0,0 +1,102 @@
+diff --git a/extern/quadriflow/3rd/lemon-1.3.1/lemon/arg_parser.cc b/extern/quadriflow/3rd/lemon-1.3.1/lemon/arg_parser.cc
+index 35a73d9..0eeba8a 100644
+--- a/extern/quadriflow/3rd/lemon-1.3.1/lemon/arg_parser.cc
++++ b/extern/quadriflow/3rd/lemon-1.3.1/lemon/arg_parser.cc
+@@ -221,9 +221,8 @@ namespace lemon {
+                                 const std::string &opt)
+   {
+     Opts::iterator o = _opts.find(opt);
+-    Opts::iterator s = _opts.find(syn);
+     LEMON_ASSERT(o!=_opts.end(), "Unknown option: '"+opt+"'");
+-    LEMON_ASSERT(s==_opts.end(), "Option already used: '"+syn+"'");
++    LEMON_ASSERT(_opts.find(syn)==_opts.end(), "Option already used: '"+syn+"'");
+     ParData p;
+     p.help=opt;
+     p.mandatory=false;
+diff --git a/extern/quadriflow/3rd/lemon-1.3.1/lemon/network_simplex.h b/extern/quadriflow/3rd/lemon-1.3.1/lemon/network_simplex.h
+index 6ccad33..388e990 100644
+--- a/extern/quadriflow/3rd/lemon-1.3.1/lemon/network_simplex.h
++++ b/extern/quadriflow/3rd/lemon-1.3.1/lemon/network_simplex.h
+@@ -234,7 +234,7 @@ namespace lemon {
+     int in_arc, join, u_in, v_in, u_out, v_out;
+     Value delta;
+ 
+-    const Value MAX;
++    const Value MAX_VALUE;
+ 
+   public:
+ 
+@@ -649,9 +649,9 @@ namespace lemon {
+     NetworkSimplex(const GR& graph, bool arc_mixing = true) :
+       _graph(graph), _node_id(graph), _arc_id(graph),
+       _arc_mixing(arc_mixing),
+-      MAX(std::numeric_limits<Value>::max()),
++      MAX_VALUE(std::numeric_limits<Value>::max()),
+       INF(std::numeric_limits<Value>::has_infinity ?
+-          std::numeric_limits<Value>::infinity() : MAX)
++          std::numeric_limits<Value>::infinity() : MAX_VALUE)
+     {
+       // Check the number types
+       LEMON_ASSERT(std::numeric_limits<Value>::is_signed,
+@@ -1076,9 +1076,9 @@ namespace lemon {
+         for (int i = 0; i != _arc_num; ++i) {
+           Value c = _lower[i];
+           if (c >= 0) {
+-            _cap[i] = _upper[i] < MAX ? _upper[i] - c : INF;
++            _cap[i] = _upper[i] < MAX_VALUE ? _upper[i] - c : INF;
+           } else {
+-            _cap[i] = _upper[i] < MAX + c ? _upper[i] - c : INF;
++            _cap[i] = _upper[i] < MAX_VALUE + c ? _upper[i] - c : INF;
+           }
+           _supply[_source[i]] -= c;
+           _supply[_target[i]] += c;
+@@ -1282,7 +1282,7 @@ namespace lemon {
+         d = _flow[e];
+         if (_pred_dir[u] == DIR_DOWN) {
+           c = _cap[e];
+-          d = c >= MAX ? INF : c - d;
++          d = c >= MAX_VALUE ? INF : c - d;
+         }
+         if (d < delta) {
+           delta = d;
+@@ -1297,7 +1297,7 @@ namespace lemon {
+         d = _flow[e];
+         if (_pred_dir[u] == DIR_UP) {
+           c = _cap[e];
+-          d = c >= MAX ? INF : c - d;
++          d = c >= MAX_VALUE ? INF : c - d;
+         }
+         if (d <= delta) {
+           delta = d;
+@@ -1559,7 +1559,7 @@ namespace lemon {
+             _pi[_target[in_arc]]) >= 0) continue;
+         findJoinNode();
+         bool change = findLeavingArc();
+-        if (delta >= MAX) return false;
++        if (delta >= MAX_VALUE) return false;
+         changeFlow(change);
+         if (change) {
+           updateTreeStructure();
+@@ -1598,7 +1598,7 @@ namespace lemon {
+       while (pivot.findEnteringArc()) {
+         findJoinNode();
+         bool change = findLeavingArc();
+-        if (delta >= MAX) return UNBOUNDED;
++        if (delta >= MAX_VALUE) return UNBOUNDED;
+         changeFlow(change);
+         if (change) {
+           updateTreeStructure();
+diff --git a/extern/quadriflow/src/hierarchy.cpp b/extern/quadriflow/src/hierarchy.cpp
+index c333256..8cc41da 100644
+--- a/extern/quadriflow/src/hierarchy.cpp
++++ b/extern/quadriflow/src/hierarchy.cpp
+@@ -1133,7 +1133,8 @@ void Hierarchy::propagateConstraints() {
+         auto& COw = mCOw[l];
+         auto& COw_next = mCOw[l + 1];
+         auto& toUpper = mToUpper[l];
+-        MatrixXd& S = mS[l];
++        // FIXME
++        // MatrixXd& S = mS[l];
+ 
+         for (uint32_t i = 0; i != mV[l + 1].cols(); ++i) {
+             Vector2i upper = toUpper.col(i);
diff --git a/extern/quadriflow/src/hierarchy.cpp b/extern/quadriflow/src/hierarchy.cpp
index c333256a139..8cc41da23d0 100644
--- a/extern/quadriflow/src/hierarchy.cpp
+++ b/extern/quadriflow/src/hierarchy.cpp
@@ -1133,7 +1133,8 @@ void Hierarchy::propagateConstraints() {
         auto& COw = mCOw[l];
         auto& COw_next = mCOw[l + 1];
         auto& toUpper = mToUpper[l];
-        MatrixXd& S = mS[l];
+        // FIXME
+        // MatrixXd& S = mS[l];
 
         for (uint32_t i = 0; i != mV[l + 1].cols(); ++i) {
             Vector2i upper = toUpper.col(i);



More information about the Bf-blender-cvs mailing list