| |
| |
| |
| |
| |
| |
|
|
| #include "InputType.h" |
| #include "System.h" |
| #include <iostream> |
|
|
| using namespace std; |
|
|
| namespace Moses2 |
| { |
| |
| InputType::XMLOption::XMLOption(MemPool &pool, const std::string &nodeName, size_t vStartPos) |
| :startPos(vStartPos) |
| ,prob(0) |
| ,m_entity(NULL) |
| { |
| m_nodeName = pool.Allocate<char>(nodeName.size() + 1); |
| strcpy(m_nodeName, nodeName.c_str()); |
| } |
|
|
| void InputType::XMLOption::SetTranslation(MemPool &pool, const std::string &val) |
| { |
| m_translation = pool.Allocate<char>(val.size() + 1); |
| strcpy(m_translation, val.c_str()); |
| } |
|
|
| void InputType::XMLOption::SetEntity(MemPool &pool, const std::string &val) |
| { |
| m_entity = pool.Allocate<char>(val.size() + 1); |
| strcpy(m_entity, val.c_str()); |
| } |
|
|
| std::string InputType::XMLOption::Debug(const System &system) const |
| { |
| std::stringstream out; |
| out << "[" << startPos << "," << phraseSize << "]=" |
| << m_nodeName << "," |
| << m_translation << "," |
| << prob; |
| if (m_entity) { |
| out << "," << m_entity; |
| } |
| return out.str(); |
| } |
|
|
| |
|
|
| InputType::InputType(MemPool &pool) |
| :m_reorderingConstraint(pool) |
| ,m_xmlOptions(pool) |
| ,m_xmlCoverageMap(pool) |
| { |
| } |
|
|
| InputType::~InputType() |
| { |
| |
| } |
|
|
| void InputType::Init(const System &system, size_t size, int max_distortion) |
| { |
| m_reorderingConstraint.InitializeWalls(size, max_distortion); |
|
|
| if (system.options.input.xml_policy != XmlPassThrough) { |
| m_xmlCoverageMap.assign(size, false); |
| } |
| } |
|
|
| void InputType::AddXMLOption(const System &system, const XMLOption *xmlOption) |
| { |
| m_xmlOptions.push_back(xmlOption); |
|
|
| if (system.options.input.xml_policy != XmlPassThrough) { |
| for(size_t j = xmlOption->startPos; j < xmlOption->startPos + xmlOption->phraseSize; ++j) { |
| m_xmlCoverageMap[j]=true; |
| } |
| } |
| } |
|
|
| bool InputType::XmlOverlap(size_t startPos, size_t endPos) const |
| { |
| for (size_t pos = startPos; pos <= endPos ; pos++) { |
| if (pos < m_xmlCoverageMap.size() && m_xmlCoverageMap[pos]) { |
| return true; |
| } |
| } |
| return false; |
| } |
|
|
| std::string InputType::Debug(const System &system) const |
| { |
| cerr << "InputType::Debug" << endl; |
| return ""; |
| } |
|
|
| } |
|
|