void encodeLetter(std::string& encoding, char letter, char lastLetter) const { auto digit = encodedDigit(letter); if (NotADigit != digit && (lastDigit(encoding) != digit || isVowel(lastLetter))) { encoding += digit; } }
MatrixHexEncoder::FnBitMap MatrixHexEncoder::operator()(uint16_t number) { return [number, this]() -> std::vector<uint8_t> { std::vector<uint8_t> digits; auto fnEncodeDigit = [&digits, this](uint8_t n) { EncoderType encodedDigit(_encoder(n)); digits.push_back(0); digits.insert(digits.end(), encodedDigit.begin(), encodedDigit.end()); }; fnEncodeDigit(number); fnEncodeDigit(number >> 4); fnEncodeDigit(number >> 8); fnEncodeDigit(number >> 12); return digits; }; }
void encodeHead(std::string& encoding, const std::string& word) const { encoding += encodedDigit(word.front()); }
void Soundex::encodeLetter(std::string& encoding, char letter, char prevLetter) const { auto digit = encodedDigit(letter); if (digit != NotADigit && (digit != lastDigit(encoding) || isVowel(prevLetter))) encoding += digit; }