#pragma once #include #include "levenshtein.hpp" enum eLevenshteinOperator: char { add = '+', rem = '-', mod = '!', equ = '=' }; template class LevenshteinCache { public: ~LevenshteinCache() {} void push(const T key, const eLevenshteinOperator &value) { cache[key] = value; } public: static LevenshteinCache *instance() { if (LevenshteinCache::_instance) return LevenshteinCache::_instance; return LevenshteinCache::_instance = new LevenshteinCache(); } private: LevenshteinCache() { } private: std::map cache; private: static LevenshteinCache *_instance; };