levenshteinCache.hh 864 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #pragma once
  2. #include <map>
  3. #include "levenshtein.hpp"
  4. enum eLevenshteinOperator: char
  5. {
  6. add = '+',
  7. rem = '-',
  8. mod = '!',
  9. equ = '='
  10. };
  11. template<class T> class LevenshteinCache
  12. {
  13. public:
  14. ~LevenshteinCache()
  15. {}
  16. void push(const T key, const eLevenshteinOperator &value)
  17. {
  18. cache[key] = value;
  19. }
  20. public:
  21. static LevenshteinCache<T> *instance()
  22. {
  23. if (LevenshteinCache<JSonElement *>::_instance)
  24. return LevenshteinCache<JSonElement *>::_instance;
  25. return LevenshteinCache<JSonElement *>::_instance = new LevenshteinCache<JSonElement *>();
  26. }
  27. private:
  28. LevenshteinCache()
  29. { }
  30. private:
  31. std::map<const T, eLevenshteinOperator> cache;
  32. private:
  33. static LevenshteinCache<T> *_instance;
  34. };