00001 #pragma once 00002 00003 #include "StackVec.h" 00004 00005 #include <list> 00006 #include "TargetPhraseCollection.h" 00007 00008 namespace Moses 00009 { 00010 00011 class TargetPhraseCollection; 00012 class Range; 00013 class TargetPhrase; 00014 class InputPath; 00015 class InputType; 00016 class ChartCellLabel; 00017 00018 class ChartParserCallback 00019 { 00020 public: 00021 virtual ~ChartParserCallback() {} 00022 00023 virtual void Add(const TargetPhraseCollection &, const StackVec &, const Range &) = 0; 00024 00025 virtual bool Empty() const = 0; 00026 00027 virtual void AddPhraseOOV(TargetPhrase &phrase, std::list<TargetPhraseCollection::shared_ptr > &waste_memory, const Range &range) = 0; 00028 00029 virtual void EvaluateWithSourceContext(const InputType &input, const InputPath &inputPath) = 0; 00030 00031 virtual float GetBestScore(const ChartCellLabel *chartCell) const = 0; 00032 00033 }; 00034 00035 } // namespace Moses