[voikko-devel] Ehdotus: lisäys libvoikkoon

Harri Pitkänen hatapitk at cc.jyu.fi
Wed Jan 10 19:31:05 EET 2007


On Wednesday 10 January 2007 08:06, Hannu Väisänen wrote:
> Libvoikon voikko_init* -funktiot alustavat myös malagan. Se on
> järkevää oikoluvussa, mutta jos libvoikkoa käyttää jossain muussa
> ohjelmassa (esim. Sukijassa tunnistettaessa väärin kirjoitettuja
> sanoja), libvoikko olisi voitava alustaa ilman malagaa. Tätä varten
> ehdotan libvoikkoon lisättäväksi kaksi funktiota
>
> voikko_init_with_path_without_malaga
> voikko_terminate_without_malaga
>
> Ne toimivat samalla tavalla kuin funktiot voikko_init_with_path ja
> voikko_terminate, mutta eivät tee mitään malagalle.

Hmm. Mahtaakohan tuollainen toimia kunnolla todellisissa sovelluksissa? 
Tämähän tarkoittaisi sitä, että kutsuva sovellus itse käyttää suoraan 
Suomi-malagan Voikko-versiota, enkä heti kyllä keksi mikä muu kuin libvoikko 
voisi järkevästi niin tehdä. Sukija ei ainakaan niin tietääkseni tee :)

Jos sovelluksen on käytettävä sekä malagaa että libvoikkoa suoraan, parempi 
olisi toimia jotenkin seuraavasti:

terminate_libmalaga();
const char * voikko_error = voikko_init(&handle, "fi_FI", 0);
[ käytetään Voikkoa mihin käytetään ]
voikko_terminate(handle);
init_libmalaga(sovelluksen_oma_malaga_projekti);


> Seuraava projekti: subversionin opettelu. (-:
>
>
> Libvoikon diffi:
>
> ...

Jos olet ihan varma, että tarvitset tällaisen ominaisuuden libvoikkoon, niin 
kaipa sen voi lisätä. Tuo diffi ei kyllä toimi, koska se on tehty vanhaa 
versiota varten. SVN:ssä on noilta osin tapahtunut oleellisiakin muutoksia 
Windows-tuen takia. Lisäksi ei kannata tehdä funktiota 
voikko_init_with_path_without_malaga, koska sanaston polkua ei tarvita jos 
malaga on jo alustettu. Parempi on toteuttaa voikko_init_without_malaga. 
Koodin kopioimista pitäisi myös välttää, nämä init-funktiot voivat käyttää 
toisiaan hyväksi alustusvaiheessa.

Ja tuo uusi funktio pitäisi tiedostossa voikko.h olla mukana vain 
ehdollisesti, eli

#ifdef USE_VOIKKO_UNSTABLE_API
...
#endif

koska tuota kutsuva ohjelma ei voi luottaa so-versionumeroihin 
yhteensopivuusasioissa. Suomi-malagan ja libvoikon välinen rajapinta kun on 
tavallaan libvoikon sisäinen asia ja voi muuttua jokaisen version välillä.

Harri



More information about the devel mailing list