blob: 15fae68500fa12722a88bd94f42acb3e64b86fc2 [file] [log] [blame]
#ifndef KENLM_INTERPOLATE_SPLIT_WORKER_H_
#define KENLM_INTERPOLATE_SPLIT_WORKER_H_
#include "util/stream/chain.hh"
#include "util/stream/stream.hh"
namespace lm {
namespace interpolate {
class SplitWorker {
public:
/**
* Constructs a split worker for a particular order. It writes the
* split-off backoff values to the backoff chain and the ngram id and
* probability to the sort chain for each ngram in the input.
*/
SplitWorker(std::size_t order, util::stream::Chain &backoff_chain,
util::stream::Chain &sort_chain);
/**
* The callback invoked to handle the input from the ngram intermediate
* files.
*/
void Run(const util::stream::ChainPosition& position);
private:
/**
* The ngram order we are reading/writing for.
*/
std::size_t order_;
/**
* The stream to write to for the backoff values.
*/
util::stream::Stream backoff_input_;
/**
* The stream to write to for the ngram id + probability values.
*/
util::stream::Stream sort_input_;
};
}
}
#endif