LOK

SWIG (z anglického Simplified Wrapper and Interface Generator ) je softwarový nástroj s otevřeným zdrojovým kódem , který umožňuje propojit software nebo softwarové knihovny napsané v C / C ++ s skriptovacími jazyky, jako jsou: Tcl , Perl , Python , Ruby , PHP , Lua nebo jiné programovací jazyky jako Java , C # , Scheme a OCaml . Výstupy lze také vytvářet ve formátu XML nebo Lisp  S-výrazy .

Funkce

Cílem je být schopen volat nativní funkce (napsané v C nebo C ++) jinými programovacími jazyky, předávat těmto funkcím komplexní data typu, chránit paměť před nevhodnými verzemi, dědit objekty z tříd mezi jazyky atd. Programátor zapíše soubor rozhraní obsahující seznam funkcí C / C ++ viditelných pro tlumočníka. SWIG sestaví soubor rozhraní a vygeneruje kód v C / C ++ a v cílovém programovacím jazyce. SWIG vygeneruje konverzní kód pro funkce s jednoduchými argumenty; konverzní kód se složitými typy argumentů musí být napsán programátorem. Nástroj SWIG poskytuje spojení mezi C / C ++ a dalším cílovým programovacím jazykem. V závislosti na jazyce má odkaz dvě podoby:

SWIG se nepoužívá k volání funkcí interpretovaných nativním kódem, toto musí být implementováno ručně programátorem.

Příklady

SWIG zabalí jednoduché deklarace typu C vytvořením rozhraní, které odpovídá tomu, jak by se deklarace používaly v programu C. Například následující soubor rozhraní:

%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"

V tomto souboru jsou dvě funkce sin()​ a strcmp()​, globální proměnná Foo​a dvě konstanty  STATUS​ a  VERSION​. Když SWIG vytvoří rozšiřující modul, jsou tyto deklarace přístupné jako funkce, proměnné, konstanty skriptu. V Pythonu:

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

Dodatky

Související články

externí odkazy