[hunspell-fi-devel] libvoikko-0.2 - voikko_do_spell() optimointia

Reijo Tomperi reijo.tomperi at pp2.inet.fi
Tue Apr 25 16:41:42 EEST 2006


Reijo Tomperi wrote:

>libvoikko-0.2:ssa voikko_spell.c tiedostossa voikko_do_spell() 
>funktiossa, analyse_item() kutsu ei muuta parametrikseen saamaa 
>merkkijonoa, joten voimme antaa sille parametriksi alkuperäisen 
>merkkijonon kopion sijaan, jolloin vältymme yleensä muistin varaamiselta 
>ja kopioimiselta.
>
>Saavutettu hyöty on melko mitätön, mutta kun nyt tuon koodimuutoksen 
>tein, niin ajattelin laittaa eteenpäin.
>
>int voikko_do_spell(const char * word) {
>  
>
Unohtui taas kokonaan, että vanhassa C-standardissahan muuttujat piti 
esitellä funktion alussa. Eli jos haluamme tukea myö vanhempia kääntäjiä 
niin:

int voikko_do_spell(const char * word) {
    char * buffer;
    analyse_item(word, MORPHOLOGY);
    if (first_analysis_result()) return VOIKKO_SPELL_OK;
    if (voikko_options.ignore_dot && strlen(word) > 1 && 
word[strlen(word) - 1] == '.') {
        buffer = malloc(strlen(word) + 1);
        if (!buffer) return VOIKKO_INTERNAL_ERROR;
        strcpy(buffer, word);
        buffer[strlen(word) - 1] = '\0';
        analyse_item(buffer, MORPHOLOGY);
        free(buffer);
        if (first_analysis_result()) return VOIKKO_SPELL_OK;
    }
   
    return VOIKKO_SPELL_FAILED;
}



More information about the devel mailing list