00001
00002
00003 #ifndef moses_ScoreProducer_h
00004 #define moses_ScoreProducer_h
00005
00006 #include <string>
00007 #include <limits>
00008
00009 namespace Moses
00010 {
00011
00012 class Hypothesis;
00013 class ScoreComponentCollection;
00014 class ScoreIndexManager;
00015 class FFState;
00016
00024 class ScoreProducer
00025 {
00026 private:
00027 static unsigned int s_globalScoreBookkeepingIdCounter;
00028 unsigned int m_scoreBookkeepingId;
00029
00030 ScoreProducer(const ScoreProducer&);
00031
00032 #define UNASSIGNED std::numeric_limits<unsigned int>::max()
00033
00034 protected:
00035
00036
00037 ScoreProducer();
00038 virtual ~ScoreProducer();
00039
00040 public:
00042 unsigned int GetScoreBookkeepingID() const {
00043 return m_scoreBookkeepingId;
00044 }
00045 void CreateScoreBookkeepingID() {
00046 m_scoreBookkeepingId = s_globalScoreBookkeepingIdCounter++;
00047 }
00050 virtual size_t GetNumScoreComponents() const = 0;
00051
00053 virtual std::string GetScoreProducerDescription(unsigned idx=0) const = 0;
00054
00056 virtual std::string GetScoreProducerWeightShortName(unsigned idx=0) const = 0;
00057
00059 virtual size_t GetNumInputScores() const {
00060 return 0;
00061 };
00062
00063 virtual bool IsStateless() const = 0;
00064
00065 };
00066
00067
00068 }
00069
00070 #endif