summaryrefslogtreecommitdiff
path: root/klm/lm/enumerate_vocab.hh
diff options
context:
space:
mode:
Diffstat (limited to 'klm/lm/enumerate_vocab.hh')
-rw-r--r--klm/lm/enumerate_vocab.hh29
1 files changed, 29 insertions, 0 deletions
diff --git a/klm/lm/enumerate_vocab.hh b/klm/lm/enumerate_vocab.hh
new file mode 100644
index 00000000..7a2f7d12
--- /dev/null
+++ b/klm/lm/enumerate_vocab.hh
@@ -0,0 +1,29 @@
+#ifndef LM_ENUMERATE_VOCAB__
+#define LM_ENUMERATE_VOCAB__
+
+#include "lm/word_index.hh"
+#include "util/string_piece.hh"
+
+namespace lm {
+namespace ngram {
+
+/* If you need the actual strings in the vocabulary, inherit from this class
+ * and implement Add. Then put a pointer in Config.enumerate_vocab.
+ * Add is called once per n-gram. index starts at 0 and increases by 1 each
+ * time.
+ */
+class EnumerateVocab {
+ public:
+ virtual ~EnumerateVocab() {}
+
+ virtual void Add(WordIndex index, const StringPiece &str) = 0;
+
+ protected:
+ EnumerateVocab() {}
+};
+
+} // namespace ngram
+} // namespace lm
+
+#endif // LM_ENUMERATE_VOCAB__
+