view CachedEditDistance.cpp @ 115:404795616b1e default tip

Added a lot of common files to ignore
author Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
date Sat, 25 Mar 2017 17:43:57 +0100
parents 9744ec195be3
children
line wrap: on
line source

#include "CachedEditDistance.hpp"

#include "CompileTimeConstants.h"
#include "ConfigurationProcessing.hpp"

CachedEditDistance::cacheType* CachedEditDistance::cache = 0;
//CachedEditDistance::cacheType CachedEditDistance::cache;

int CachedEditDistance::Compute(QString a, QString b, bool remove) {
  if (remove) {
    removeDiacriticsNoCopy(a);
    removeDiacriticsNoCopy(b);
  }

  if ( a == b)
    return 0;

  OrderedPair<UniqueString> lup(a, b);

  if (cache == 0) {
    QString cacheLocation = processSetupVariables(EDITDISTANCE_CACHE_LOCATION);
    CachedEditDistance::cache = new cacheType(cacheLocation, "EditLUT");
  }
  boost::optional<int> res = cache->value(lup);
  if (res)
    return *res;

  int retVal = EditDistance::Compute(a, b, false);

  cache->insert(lup, retVal);

  return retVal;
}