00001 #include "HReorderingBackwardState.h"
00002
00003 namespace Moses
00004 {
00005
00007
00008
00009 HReorderingBackwardState::
00010 HReorderingBackwardState(const HReorderingBackwardState *prev,
00011 const TranslationOption &topt,
00012 ReorderingStack reoStack)
00013 : LRState(prev, topt), m_reoStack(reoStack)
00014 { }
00015
00016 HReorderingBackwardState::
00017 HReorderingBackwardState(const LRModel &config, size_t offset)
00018 : LRState(config, LRModel::Backward, offset)
00019 { }
00020
00021 size_t HReorderingBackwardState::hash() const
00022 {
00023 size_t ret = m_reoStack.hash();
00024 return ret;
00025 }
00026
00027 bool HReorderingBackwardState::operator==(const FFState& o) const
00028 {
00029 const HReorderingBackwardState& other
00030 = static_cast<const HReorderingBackwardState&>(o);
00031 bool ret = m_reoStack == other.m_reoStack;
00032 return ret;
00033 }
00034
00035 LRState*
00036 HReorderingBackwardState::
00037 Expand(const TranslationOption& topt, const InputType& input,
00038 ScoreComponentCollection* scores) const
00039 {
00040 HReorderingBackwardState* nextState;
00041 nextState = new HReorderingBackwardState(this, topt, m_reoStack);
00042 Range swrange = topt.GetSourceWordsRange();
00043 int reoDistance = nextState->m_reoStack.ShiftReduce(swrange);
00044 ReorderingType reoType = m_configuration.GetOrientation(reoDistance);
00045 CopyScores(scores, topt, input, reoType);
00046 return nextState;
00047 }
00048
00049 }
00050