Пример #1
0
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);
	}
}
Пример #2
0
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]);
}
Пример #3
0
void CWord::DeleteAllHomonyms()
{
    for (size_t i = 0; i < m_Homonyms.size(); ++i)
        DeleteHomonym(*m_Homonyms[i]);
}
Пример #4
0
void CWord::DeleteHomonym(size_t i)
{
    if (GetRusHomonymsCount() > 1)
        DeleteHomonym(*m_Homonyms[i]);
}