view CachedEditDistance.hpp @ 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

#ifndef CACHEDEDITDISTANCE_HPP
#define CACHEDEDITDISTANCE_HPP

#include "DBCache.hpp"

#include "EditDistance.hpp"

template<typename Value>
struct InsertRegulator<OrderedPair<UniqueString>, Value >
{
  uint n;
  void start()
  {
    n = 0;
    HuffmanString::getSet().setAutoRebuild(false);
  }

  static void finish()
  {
    HuffmanString::getSet().rebuild();
    HuffmanString::getSet().setAutoRebuild(true);
  }

  void next()
  {
    if (++n == 2048)
      HuffmanString::getSet().rebuild();
  }
};

class CachedEditDistance {
protected:
  typedef DBCache<OrderedPair<UniqueString>, int, true> cacheType;
public:
  static int Compute(QString a, QString b, bool removeDiacritics = false);
  static void removeDiacriticsNoCopy(QString& in)
  {
    EditDistance::removeDiacriticsNoCopy(in);
  }
  static QString removeDiacritics(const QString& in)
  {
    return EditDistance::removeDiacritics(in);
  }

  static cacheType* cache;
};

#endif //CACHEDEDITDISTANCE_HPP