HUIKKA

SWIG (englanninkielisestä yksinkertaistetusta kääreestä ja käyttöliittymägeneraattorista ) on avoimen lähdekoodin ohjelmistotyökalu , jonka avulla C / C ++: lla kirjoitetut ohjelmistot tai ohjelmistokirjastot voidaan liittää komentosarjakieliin , kuten: Tcl , Perl , Python , Ruby , PHP , Lua tai muihin ohjelmointikielet, kuten Java , C # , Scheme ja OCaml . Lähdöt voidaan tehdä myös XML- tai Lisp  S-lausekemuodossa .

Toiminto

Tavoitteena on pystyä kutsumaan natiivifunktioita (kirjoitettu C- tai C ++ -muodoilla) muilla ohjelmointikielillä, välittämään monimutkaisia ​​tietoja näille toiminnoille, suojaamaan muistia sopimattomilta julkaisuilta, perimään esineitä kielien välisistä luokista jne. Ohjelmoija kirjoittaa liitäntätiedoston, joka sisältää luettelon tulkeille näkyvistä C / C ++ -toiminnoista. SWIG kokoaa käyttöliittymätiedoston ja luo koodin C / C ++: lla ja kohdeprogrammi kielellä. SWIG luo muunnoskoodin funktioille yksinkertaisilla argumenteilla; Ohjelmoijan on kirjoitettava monimutkaisia ​​argumentteja sisältävä muuntokoodi. SWIG-työkalu tarjoaa linkin C / C ++: n ja muun kohdekielen välillä. Kielestä riippuen linkki on kahdessa muodossa:

SWIG: tä ei käytetä alkuperäisen koodin tulkitsemien toimintojen kutsumiseen, ohjelmoijan on toteutettava tämä manuaalisesti.

Esimerkkejä

SWIG kääri yksinkertaiset C-ilmoitukset luomalla käyttöliittymän, joka vastaa ilmoitusten käyttöä C-ohjelmassa. Esimerkiksi seuraava käyttöliittymätiedosto:

%module example %inline %{ extern double sin(double x); extern int strcmp(const char *, const char *); extern int Foo; %} #define STATUS 50 #define VERSION "1.1"

Tässä tiedostossa on kaksi toimintoa sin()​ ja strcmp()​globaali muuttuja Foo​sekä kaksi vakiota  STATUS​ ja  VERSION​. Kun SWIG luo laajennusmoduulin, nämä ilmoitukset ovat käytettävissä komentosarjan funktioina, muuttujina ja vakioina. Pythonissa:

>>> example.sin(3) 0.141120008 >>> example.strcmp('Dave','Mike') -1 >>> print example.cvar.Foo 42 >>> print example.STATUS 50 >>> print example.VERSION 1.1

Liitteet

Aiheeseen liittyvät artikkelit

Ulkoiset linkit