| namespace lm { | |
| namespace builder { | |
| // Sum counts for the same n-gram. | |
| struct CombineCounts { | |
| bool operator()(void *first_void, const void *second_void, const SuffixOrder &compare) const { | |
| NGram<BuildingPayload> first(first_void, compare.Order()); | |
| // There isn't a const version of NGram. | |
| NGram<BuildingPayload> second(const_cast<void*>(second_void), compare.Order()); | |
| if (memcmp(first.begin(), second.begin(), sizeof(WordIndex) * compare.Order())) return false; | |
| first.Value().count += second.Value().count; | |
| return true; | |
| } | |
| }; | |
| } // namespace builder | |
| } // namespace lm | |