00001 #pragma once 00002 #include "LRState.h" 00003 00004 namespace Moses 00005 { 00006 00007 class BidirectionalReorderingState 00008 : public LRState 00009 { 00010 private: 00011 const LRState *m_backward; 00012 const LRState *m_forward; 00013 public: 00014 BidirectionalReorderingState(const LRModel &config, 00015 const LRState *bw, 00016 const LRState *fw, size_t offset) 00017 : LRState(config, 00018 LRModel::Bidirectional, 00019 offset) 00020 , m_backward(bw) 00021 , m_forward(fw) 00022 { } 00023 00024 ~BidirectionalReorderingState() { 00025 delete m_backward; 00026 delete m_forward; 00027 } 00028 00029 virtual size_t hash() const; 00030 virtual bool operator==(const FFState& other) const; 00031 00032 LRState* 00033 Expand(const TranslationOption& topt, const InputType& input, 00034 ScoreComponentCollection* scores) const; 00035 }; 00036 00037 } 00038