concordia-library/concordia/word_map.cpp

27 lines
553 B
C++
Raw Normal View History

2013-11-12 22:08:37 +01:00
#include "concordia/word_map.hpp"
#include <climits>
2013-11-12 22:08:37 +01:00
2019-01-18 13:30:51 +01:00
WordMap::WordMap() {
2013-11-12 22:08:37 +01:00
_nextFree = 0;
}
WordMap::~WordMap() {
}
2019-01-18 13:30:51 +01:00
INDEX_CHARACTER_TYPE WordMap::getWordCode(const std::string & word) {
2013-11-14 15:44:50 +01:00
if (_map.find(word) == _map.end()) {
if (_nextFree == INDEX_CHARACTER_TYPE_MAX_VALUE) {
throw ConcordiaException("Word map capacity limit reached!");
}
INDEX_CHARACTER_TYPE newCode = _nextFree;
2013-11-12 22:08:37 +01:00
_map[word] = newCode;
_nextFree++;
return newCode;
} else {
2013-11-14 15:44:50 +01:00
return _map[word];
2013-11-12 22:08:37 +01:00
}
}