[Orxonox-commit 2535] r7240 - code/branches/consolecommands3/src/libraries/util

rgrieder at orxonox.net rgrieder at orxonox.net
Sat Aug 28 18:58:30 CEST 2010


Author: rgrieder
Date: 2010-08-28 18:58:30 +0200 (Sat, 28 Aug 2010)
New Revision: 7240

Modified:
   code/branches/consolecommands3/src/libraries/util/StringUtils.cc
Log:
C++ forbids non constant sized stack arrays.
Please check whether this is functionally equivalent (I cannot test the original version).

Modified: code/branches/consolecommands3/src/libraries/util/StringUtils.cc
===================================================================
--- code/branches/consolecommands3/src/libraries/util/StringUtils.cc	2010-08-28 16:35:49 UTC (rev 7239)
+++ code/branches/consolecommands3/src/libraries/util/StringUtils.cc	2010-08-28 16:58:30 UTC (rev 7240)
@@ -537,25 +537,29 @@
     {
         size_t cols = str1.size() + 1;
         size_t rows = str2.size() + 1;
-        int matrix[rows][cols];
+        int* matrix = new int[rows * cols];
 
         for (size_t r = 0; r < rows; ++r)
             for (size_t c = 0; c < cols; ++c)
-                matrix[r][c] = 0;
+                matrix[r*cols + c] = 0;
 
         for (size_t i = 1; i < cols; ++i)
-            matrix[0][i] = i;
+            matrix[0*cols + i] = i;
         for (size_t i = 1; i < rows; ++i)
-            matrix[i][0] = i;
+            matrix[i*cols + 0] = i;
 
         for (size_t r = 1; r < rows; ++r)
             for (size_t c = 1; c < cols; ++c)
-                matrix[r][c] = (str1[c-1] != str2[r-1]);
+                matrix[r*cols + c] = (str1[c-1] != str2[r-1]);
 
         for (size_t r = 1; r < rows; ++r)
             for (size_t c = 1; c < cols; ++c)
-                matrix[r][c] = std::min(std::min(matrix[r-1][c] + 1, matrix[r][c-1] + 1), matrix[r-1][c-1] + (str1[c-1] != str2[r-1]));
+                matrix[r*cols + c] = std::min(std::min(matrix[(r-1)*cols + c] + 1,
+                                                       matrix[r*cols + c-1] + 1),
+                                              matrix[(r-1)*cols + c-1] + (str1[c-1] != str2[r-1]));
 
-        return matrix[rows-1][cols-1];
+        int result = matrix[(rows-1)*cols + cols-1];
+        delete[] matrix;
+        return result;
     }
 }




More information about the Orxonox-commit mailing list