diff EditDistance.cpp @ 16:06166d6c083b

Add configuration processing. Cache DB values Add a custom RBTree to save space. Track multiple DB connections properly. More testing. Add ValueExistsException.
author Tom Fredrik Blenning Klaussen <bfg@blenning.no>
date Tue, 28 Aug 2012 18:58:02 +0200
parents b5943e4bf676
children fda70a362ed5
line wrap: on
line diff
--- a/EditDistance.cpp	Sat Aug 25 01:42:13 2012 +0200
+++ b/EditDistance.cpp	Tue Aug 28 18:58:02 2012 +0200
@@ -1,10 +1,13 @@
 #include "EditDistance.hpp"
+#include "CompileTimeConstants.h"
+#include "ConfigurationProcessing.hpp"
 
 #include <QtCore/QList>
 
 #define CharComparer(A, B) (QChar(A) == QChar(B))
 
-EditDistance::cacheType EditDistance::cache;
+EditDistance::cacheType* EditDistance::cache = 0;
+//EditDistance::cacheType EditDistance::cache;
 
 QString EditDistance::removeDiacritics(QString in)
 {
@@ -27,9 +30,13 @@
     b = removeDiacritics(b);
   }
 
-  OrderedPair<QString> lup(a, b);
+  OrderedPair<UniqueString> lup(a, b);
 
-  boost::optional<int> res = cache.value(lup);
+  if (cache == 0) {
+    QString cacheLocation = processSetupVariables(EDITDISTANCE_CACHE_LOCATION);
+    EditDistance::cache = new cacheType(cacheLocation, "EditLUT");
+  }
+  boost::optional<int> res = cache->value(lup);
   if (res)
     return *res;
 
@@ -74,7 +81,7 @@
   
   // Return final value
   int retVal = d[a.size()][ b.size()];
-  cache.insert(lup, retVal);
+  cache->insert(lup, retVal);
 
   return retVal;
 }