void CClause::DeleteMarkedHomonyms(int iW) { CSynWord& word = GetWords()[iW]; for(int iH = word.GetHomonymsCount() - 1 ; iH >= 0 ; iH-- ) { if ( word.m_Homonyms[iH].m_bDelete ) DeleteHomonym(iW, iH); } }
void CWord::DeleteHomonymWithPOS(const TGramBitSet& POS) { if (m_Homonyms.size() == 1) return; yvector<THomonymPtr> del_homs; for (size_t i = 0; i < m_Homonyms.size(); ++i) if (!m_Homonyms[i]->IsDeleted() && m_Homonyms[i]->HasPOS(POS)) { DeleteHomonym(*m_Homonyms[i]); del_homs.push_back(m_Homonyms[i]); } //if all homonyms are removed accidentally - roll back the operation if (GetRusHomonymsCount() == 0) for (size_t i = 0; i < del_homs.size(); ++i) UndeleteHomonym(*del_homs[i]); }
void CWord::DeleteAllHomonyms() { for (size_t i = 0; i < m_Homonyms.size(); ++i) DeleteHomonym(*m_Homonyms[i]); }
void CWord::DeleteHomonym(size_t i) { if (GetRusHomonymsCount() > 1) DeleteHomonym(*m_Homonyms[i]); }