word map
This commit is contained in:
parent
7f062c49e4
commit
3aa4091e4d
@ -6,6 +6,7 @@ foreach(dir ${ALL_DIRECTORIES})
|
||||
endforeach(dir)
|
||||
|
||||
add_library(concordia SHARED
|
||||
word_map.cpp
|
||||
hash_generator.cpp
|
||||
concordia.cpp
|
||||
concordia_config.cpp
|
||||
|
@ -2,6 +2,7 @@
|
||||
#include <boost/filesystem.hpp>
|
||||
#include <boost/archive/binary_oarchive.hpp>
|
||||
#include <boost/archive/binary_iarchive.hpp>
|
||||
#include <boost/algorithm/string.hpp>
|
||||
#include <boost/serialization/map.hpp>
|
||||
#include <fstream>
|
||||
|
||||
@ -21,6 +22,13 @@ HashGenerator::~HashGenerator() {
|
||||
|
||||
vector<int> HashGenerator::generateHash(const string & sentence) {
|
||||
vector<int> result;
|
||||
vector<string> tokenTexts;
|
||||
boost::split(tokenTexts, sentence, boost::is_any_of(" "));
|
||||
|
||||
for(vector<string>::iterator it = tokenTexts.begin(); it != tokenTexts.end(); ++it) {
|
||||
string token = *it;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -4,8 +4,7 @@
|
||||
#include <string>
|
||||
#include <map>
|
||||
#include <vector>
|
||||
|
||||
#include "concordia/concordia_config.hpp"
|
||||
#include "concordia/concordia_exception.hpp"
|
||||
|
||||
/*!
|
||||
Class for generating a sentence hash.
|
||||
@ -28,7 +27,7 @@ public:
|
||||
|
||||
private:
|
||||
|
||||
map<int,string> _wordMap;
|
||||
map<string,int> _wordMap;
|
||||
|
||||
string _wordMapFilename;
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
add_library(concordia-tests
|
||||
test_concordia.cpp
|
||||
test_concordia_config.cpp
|
||||
test_word_map.cpp
|
||||
)
|
||||
|
||||
target_link_libraries(concordia-tests concordia ${LIBCONFIG_LIB} concordia-tests-common)
|
||||
|
23
concordia/t/test_word_map.cpp
Normal file
23
concordia/t/test_word_map.cpp
Normal file
@ -0,0 +1,23 @@
|
||||
#include "tests/unit-tests/unit_tests_globals.hpp"
|
||||
#include "concordia/word_map.hpp"
|
||||
|
||||
#include <string>
|
||||
|
||||
using namespace std;
|
||||
|
||||
BOOST_AUTO_TEST_SUITE(word_map)
|
||||
|
||||
BOOST_AUTO_TEST_CASE( WordCodeTest )
|
||||
{
|
||||
WordMap wordMap = WordMap();
|
||||
|
||||
BOOST_CHECK_EQUAL(wordMap.getWordCode("abc") , 0);
|
||||
BOOST_CHECK_EQUAL(wordMap.getWordCode("def") , 1);
|
||||
BOOST_CHECK_EQUAL(wordMap.getWordCode("abc") , 0);
|
||||
BOOST_CHECK_EQUAL(wordMap.getWordCode("ghi") , 2);
|
||||
BOOST_CHECK_EQUAL(wordMap.getWordCode("g") , 3);
|
||||
BOOST_CHECK_EQUAL(wordMap.getWordCode(".;?") , 4);
|
||||
BOOST_CHECK_EQUAL(wordMap.getWordCode("g") , 3);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_SUITE_END()
|
24
concordia/word_map.cpp
Normal file
24
concordia/word_map.cpp
Normal file
@ -0,0 +1,24 @@
|
||||
#include "concordia/word_map.hpp"
|
||||
|
||||
|
||||
WordMap::WordMap() throw(ConcordiaException) {
|
||||
_nextFree = 0;
|
||||
}
|
||||
|
||||
WordMap::~WordMap() {
|
||||
}
|
||||
|
||||
int WordMap::getWordCode(const string & word) {
|
||||
|
||||
if (_map.find(word) == _map.end() ) {
|
||||
int newCode = _nextFree;
|
||||
_map[word] = newCode;
|
||||
_nextFree++;
|
||||
return newCode;
|
||||
} else {
|
||||
return _map[word];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
34
concordia/word_map.hpp
Normal file
34
concordia/word_map.hpp
Normal file
@ -0,0 +1,34 @@
|
||||
#ifndef WORD_MAP_HDR
|
||||
#define WORD_MAP_HDR
|
||||
|
||||
#include <string>
|
||||
#include <map>
|
||||
#include "concordia/concordia_exception.hpp"
|
||||
|
||||
|
||||
/*!
|
||||
Class for generating a sentence hash.
|
||||
|
||||
*/
|
||||
|
||||
using namespace std;
|
||||
|
||||
class WordMap {
|
||||
public:
|
||||
explicit WordMap() throw(ConcordiaException);
|
||||
|
||||
/*! Destructor.
|
||||
*/
|
||||
virtual ~WordMap();
|
||||
|
||||
int getWordCode(const string & word);
|
||||
|
||||
private:
|
||||
|
||||
map<string,int> _map;
|
||||
|
||||
int _nextFree;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user