#ifndef _TDICT_H_ #define _TDICT_H_ #include #include #include "wordid.h" class Vocab; struct TD { static Vocab dict_; static void ConvertSentence(const std::string& sent, std::vector* ids); static void GetWordIDs(const std::vector& strings, std::vector* ids); static std::string GetString(const std::vector& str); static int AppendString(const WordID& w, int pos, int bufsize, char* buffer) { const char* word = TD::Convert(w); const char* const end_buf = buffer + bufsize; char* dest = buffer + pos; while(dest < end_buf && *word) { *dest = *word; ++dest; ++word; } return (dest - buffer); } static unsigned int NumWords(); static WordID Convert(const std::string& s); static const char* Convert(const WordID& w); }; struct ToTD { typedef WordID result_type; result_type operator()(std::string const& t) const { return TD::Convert(t); } }; #endif