/********************************* tercpp: an open-source Translation Edit Rate (TER) scorer tool for Machine Translation. Copyright 2010-2013, Christophe Servan, LIUM, University of Le Mans, France Contact: christophe.servan@lium.univ-lemans.fr The tercpp tool and library are free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the licence, or (at your option) any later version. This program and library are distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA **********************************/ #ifndef __BESTSHIFTSTRUCT_H__ #define __BESTSHIFTSTRUCT_H__ #include #include #include #include #include "tools.h" #include "terShift.h" #include "terAlignment.h" using namespace std; using namespace TERCPPNS_Tools; namespace TERCPPNS_TERCpp { class bestShiftStruct { private: public: // alignmentStruct(); // alignmentStruct (int _start, int _end, int _moveto, int _newloc); // alignmentStruct (int _start, int _end, int _moveto, int _newloc, vector _shifted); // string toString(); // int distance() ; // bool leftShift(); // int size(); // alignmentStruct operator=(alignmentStruct t); // string vectorToString(vector vec); // int start; // int end; // int moveto; // int newloc; terShift * m_best_shift; terAlignment * m_best_align; bool * m_empty; bestShiftStruct(); ~bestShiftStruct(); inline void set(bestShiftStruct l_bestShiftStruct) { m_best_shift->set(l_bestShiftStruct.m_best_shift); m_best_align->set(l_bestShiftStruct.m_best_align); setEmpty(l_bestShiftStruct.getEmpty()); } inline void set(bestShiftStruct * l_bestShiftStruct) { m_best_shift->set(l_bestShiftStruct->m_best_shift); m_best_align->set(l_bestShiftStruct->m_best_align); setEmpty(l_bestShiftStruct->getEmpty()); } void setEmpty(bool b); void setBestShift(terShift * l_terShift); void setBestAlign(terAlignment * l_terAlignment); string toString(); bool getEmpty(); // vector nwords; // The words we shifted // char* alignment ; // for pra_more output // vector aftershift; // for pra_more output // This is used to store the cost of a shift, so we don't have to // calculate it multiple times. // double cost; }; } #endif