|
#pragma once |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#include <string> |
|
#include <vector> |
|
#include <iostream> |
|
#include <fstream> |
|
#include <boost/shared_ptr.hpp> |
|
#include "Vocab.h" |
|
|
|
namespace Moses |
|
{ |
|
class Word; |
|
} |
|
|
|
namespace OnDiskPt |
|
{ |
|
class Vocab; |
|
|
|
|
|
|
|
|
|
class Word |
|
{ |
|
friend std::ostream& operator<<(std::ostream&, const Word&); |
|
|
|
private: |
|
bool m_isNonTerminal; |
|
uint64_t m_vocabId; |
|
|
|
public: |
|
explicit Word() { |
|
} |
|
|
|
explicit Word(bool isNonTerminal) |
|
:m_isNonTerminal(isNonTerminal) |
|
,m_vocabId(0) { |
|
} |
|
|
|
Word(const Word ©); |
|
~Word(); |
|
|
|
|
|
void CreateFromString(const std::string &inString, Vocab &vocab); |
|
bool IsNonTerminal() const { |
|
return m_isNonTerminal; |
|
} |
|
|
|
size_t WriteToMemory(char *mem) const; |
|
size_t ReadFromMemory(const char *mem); |
|
size_t ReadFromFile(std::fstream &file); |
|
|
|
uint64_t GetVocabId() const { |
|
return m_vocabId; |
|
} |
|
|
|
void SetVocabId(uint64_t vocabId) { |
|
m_vocabId = vocabId; |
|
} |
|
|
|
void DebugPrint(std::ostream &out, const Vocab &vocab) const; |
|
inline const std::string &GetString(const Vocab &vocab) const { |
|
return vocab.GetString(m_vocabId); |
|
} |
|
|
|
int Compare(const Word &compare) const; |
|
bool operator<(const Word &compare) const; |
|
bool operator==(const Word &compare) const; |
|
|
|
}; |
|
|
|
typedef boost::shared_ptr<Word> WordPtr; |
|
} |
|
|
|
|