Exemple #1
0
/*
 * \param word
 */
void
ISpellChecker::wrongletter (ichar_t *word)
{
    register int	i;
    register int	j;
    register int	n;
    ichar_t		savechar;
    ichar_t		newword[INPUTWORDLEN + MAXAFFIXLEN];

    n = icharlen (word);
    icharcpy (newword, word);
#ifndef NO_CAPITALIZATION_SUPPORT
    upcase (newword);
#endif

    for (i = 0; i < n; i++)
	{
		savechar = newword[i];
		for (j=0; j < m_Trynum; ++j)
		{
			if (m_Try[j] == savechar)
				continue;
			else if (isboundarych (m_Try[j])  &&  (i == 0  ||  i == n - 1))
				continue;
			newword[i] = m_Try[j];
			if (good (newword, 0, 1, 0, 0))
			{
				if (ins_cap (newword, word) < 0)
					return;
			}
		}
		newword[i] = savechar;
	}
}
Exemple #2
0
/*
 * \param word
 */
void
ISpellChecker::missingletter (ichar_t *word)
{
    ichar_t		newword[INPUTWORDLEN + MAXAFFIXLEN + 1];
    register ichar_t *	p;
    register ichar_t *	r;
    register int	i;

    icharcpy (newword + 1, word);
    for (p = word, r = newword;  *p != 0;  )
	{
		for (i = 0;  i < m_Trynum;  i++)
	    {
			if (isboundarych (m_Try[i])  &&  r == newword)
				continue;
			*r = m_Try[i];
			if (good (newword, 0, 1, 0, 0))
			{
				if (ins_cap (newword, word) < 0)
					return;
			}
	    }
		*r++ = *p++;
	}
    for (i = 0;  i < m_Trynum;  i++)
	{
		if (isboundarych (m_Try[i]))
			continue;
		*r = m_Try[i];
		if (good (newword, 0, 1, 0, 0))
		{
			if (ins_cap (newword, word) < 0)
				return;
		}
	}
}
Exemple #3
0
/*!
 * \param wchars Characters in -w option, if any
 */
void ISpellChecker::initckch(char *wchars)
{
    register ichar_t c;
    char num[4];

    for(c = 0; c < static_cast< ichar_t >(SET_SIZE + m_hashheader.nstrchars); ++c)
    {
        if(iswordch(c))
        {
            if(!mylower(c))
            {
                m_Try[m_Trynum] = c;
                ++m_Trynum;
            }
        }
        else if(isboundarych(c))
        {
            m_Try[m_Trynum] = c;
            ++m_Trynum;
        }
    }
    if(wchars != NULL)
    {
        while(m_Trynum < SET_SIZE && *wchars != '\0')
        {
            if(*wchars != 'n' && *wchars != '\\')
            {
                c = *wchars;
                ++wchars;
            }
            else
            {
                ++wchars;
                num[0] = '\0';
                num[1] = '\0';
                num[2] = '\0';
                num[3] = '\0';
                if(isdigit(wchars[0]))
                {
                    num[0] = wchars[0];
                    if(isdigit(wchars[1]))
                    {
                        num[1] = wchars[1];
                        if(isdigit(wchars[2]))
                            num[2] = wchars[2];
                    }
                }
                if(wchars[-1] == 'n')
                {
                    wchars += strlen(num);
                    c = atoi(num);
                }
                else
                {
                    wchars += strlen(num);
                    c = 0;
                    if(num[0])
                        c = num[0] - '0';
                    if(num[1])
                    {
                        c <<= 3;
                        c += num[1] - '0';
                    }
                    if(num[2])
                    {
                        c <<= 3;
                        c += num[2] - '0';
                    }
                }
            }
            /*	    	c &= NOPARITY;*/
            if(!m_hashheader.wordchars[c])
            {
                m_hashheader.wordchars[c] = 1;
                m_hashheader.sortorder[c] = m_hashheader.sortval++;
                m_Try[m_Trynum] = c;
                ++m_Trynum;
            }
        }
    }
}