| namespace search { | |
| class ContextBase { | |
| public: | |
| explicit ContextBase(const Config &config) : config_(config) {} | |
| VertexNode *NewVertexNode() { | |
| VertexNode *ret = vertex_node_pool_.construct(); | |
| assert(ret); | |
| return ret; | |
| } | |
| void DeleteVertexNode(VertexNode *node) { | |
| vertex_node_pool_.destroy(node); | |
| } | |
| unsigned int PopLimit() const { return config_.PopLimit(); } | |
| Score LMWeight() const { return config_.LMWeight(); } | |
| const Config &GetConfig() const { return config_; } | |
| private: | |
| boost::object_pool<VertexNode> vertex_node_pool_; | |
| Config config_; | |
| }; | |
| template <class Model> class Context : public ContextBase { | |
| public: | |
| Context(const Config &config, const Model &model) : ContextBase(config), model_(model) {} | |
| const Model &LanguageModel() const { return model_; } | |
| private: | |
| const Model &model_; | |
| }; | |
| } // namespace search | |