#include "concordia/hash_generator.hpp" #include #include #include #include #include HashGenerator::HashGenerator(const string & wordMapFilePath) throw(ConcordiaException) : _wordMapFilePath(wordMapFilePath), _wordMap(boost::shared_ptr(new WordMap)) { if (boost::filesystem::exists(_wordMapFilePath)) { ifstream ifs(_wordMapFilePath.c_str(), std::ios::binary); boost::archive::binary_iarchive ia(ifs); boost::shared_ptr restoredWordMap(new WordMap); ia >> *_wordMap; } } HashGenerator::~HashGenerator() { } vector HashGenerator::generateHash( const string & sentence) { vector result; vector tokenTexts; boost::split(tokenTexts, sentence, boost::is_any_of(" ")); for (vector::iterator it = tokenTexts.begin(); it != tokenTexts.end(); ++it) { string token = *it; INDEX_CHARACTER_TYPE code = _wordMap->getWordCode(token); result.push_back(code); } return result; } void HashGenerator::serializeWordMap() { ofstream ofs(_wordMapFilePath.c_str(), std::ios::binary); boost::archive::binary_oarchive oa(ofs); oa << *_wordMap; }