SWIG

SWIG

SWIG (Simplified Wrapper and Interface Generator) ist ein Programmierwerkzeug, das in C oder C++ geschriebene Module für andere Programmiersprachen, insbesondere Skriptsprachen, verfügbar macht.

SWIG ist ein Open-Source-Projekt und betriebssystemunabhängig (plattformübergreifend) einsetzbar.

Als Ausgangssprachen werden C und C++, als Zielsprachen die Skriptsprachen Tcl, Perl, Python, Ruby, PHP, Lua und des Weiteren auch Java, C#, Scheme, Ocaml und Go unterstützt.

Funktionsweise

Die Vielzahl moderner Programmiersprachen ist nur deshalb sinnvoll nutzbar, weil alle diese Sprachen auf einen breiten Bestand bereits existierender, in Programmbibliotheken gebündelter Software zugreifen können. Betriebssystemnahe Bibliotheken sind ganz überwiegend in C geschrieben. Eine Möglichkeit, C-Bibliotheken einzubinden, gehört deshalb zum Grundumfang jeder universell einsetzbaren Skriptsprache; eine Sprache muss einen solchen Mechanismus besitzen, um als Zielsprache in SWIG aufgenommen werden zu können.

Das Einbinden erfolgt in der Regel so, dass der Quellcode der Ausgangsbibliothek unverändert bleibt, und zusätzliche C-Funktionen, sogenannte Wrapper, erstellt werden. Diese Wrapper dienen als Schnittstelle zwischen der Bibliothek und der Zielsprache und können aus der Zielsprache aufgerufen werden, Parameter aus der Zielsprache übernehmen und Ergebnisse an diese zurückgeben. Da die Wrapper-Funktionen nur eine Schnittstellenanpassung vornehmen, rufen diese ihrerseits die entsprechende Funktion der Ausgangsbibliothek auf. Um eine einfache Nutzung in der Zielsprache zu erreichen, ist es meist auch nötig in dieser Sprache die Aufrufe über Konstantendefinitionen und/oder Wrapper zu kapseln.

Diesen Prozess automatisiert SWIG weitgehend. Man muss lediglich die Header-Datei der Ausgangsbibliothek um einige spezifische Instruktionen erweitern oder ihn in einen SWIG-spezifischen Super-Header einbinden. Dann erzeugt SWIG C-Quelltext, der die Wrapper für sämtliche Funktionen der Ausgangsbibliothek enthält. Daneben wird auch der benötigte Wrapper-Code für die Zielsprache erzeugt. Bei Java z.B. die Aufrufe über das JNI.

Für die Erzeugung der Wrapper ist kein Zugriff auf den Quellcode der Ausgangsbibliothek erforderlich. Die Wrapper werden mit einem plattformspezifischen Compiler übersetzt und entweder mit in die Ausgangsbibliothek gelinkt oder in eine eigene Bibliothek geschrieben.

Da Swig lediglich ein Codegenerator ist und der Code durch den Compiler/Linker in die Bibliothek hineingeschrieben wird, ist bei der Nutzung aus der Zielsprache keine weitere Laufzeitumgebung notwendig.

Grenzen

Die Grenzen von SWIG werden im Wesentlichen durch die Zielsprache bestimmt. Es handelt sich dabei um alle C/C++-Sprachelemente, die dort nicht sinnvoll abgebildet werden können. Ein klassisches Beispiel ist die Mehrfachvererbung von C++, die es in anderen Sprachen kaum gibt. In diesen Fällen kann eine Anpassung des Quellcodes der Ausgangsbibliothek oder ein nochmaliges Kapseln notwendig werden.

Weblinks


Wikimedia Foundation.

Игры ⚽ Поможем написать курсовую

Schlagen Sie auch in anderen Wörterbüchern nach:

  • SWIG — Тип Инструмент для разработки Разработчики Сообщество Написана на C, C++ Операционная система POSIX, MS Windows Последняя версия 2.0.4 (21 мая 2011) Лицензия …   Википедия

  • Swig — Тип Инструмент для разработки Разработчики Сообщество ОС MS Windows Версия 1.3.33 23 ноября 2007 Лицензия Лицензия в стиле BSD Сайт …   Википедия

  • Swig — Swig, v. t. [Cf. D. zwelgen to swallow, E. swallow, v.t.] 1. To drink in long draughts; to gulp; as, to swig cider. [Colloq.] [1913 Webster] 2. To suck. [Obs. or Archaic] [1913 Webster] The lambkins swig the teat. Creech. [1913 Webster] …   The Collaborative International Dictionary of English

  • swig — [swıg] v past tense and past participle swigged present participle swigging [T] informal to drink something in large mouthfuls, especially from a bottle = ↑gulp ▪ He sat swigging beer and smoking. >swig n ▪ She took a long swig of coke …   Dictionary of contemporary English

  • Swig — Swig, v. t. [Cf. Prov. E. swig to leak out, AS. sw[=i]jian to be silent, sw[=i]can to evade, escape.] 1. To castrate, as a ram, by binding the testicles tightly with a string, so that they mortify and slough off. [Prov. Eng.] [1913 Webster] 2.… …   The Collaborative International Dictionary of English

  • swig — [ swıg ] verb intransitive or transitive INFORMAL to drink something from a bottle, can, glass, etc. carelessly and in large amounts ╾ swig noun count …   Usage of the words and phrases in modern English

  • swig — swig·gle; swig; swig·ger; …   English syllables

  • Swig — Swig, n. 1. A long draught. [Colloq.] Marryat. [1913 Webster] 2. (Naut.) A tackle with ropes which are not parallel. [1913 Webster] 3. A beverage consisting of warm beer flavored with spices, lemon, etc. [Prov. Eng.] [1913 Webster] …   The Collaborative International Dictionary of English

  • SWIG — (de l anglais Simplified Wrapper and Interface Generator) est un outil dont le code source est libre. Il permet de connecter des logiciels ou bibliothèques logicielles écrites en C/C++ avec des langages de scripts tels que : Tcl, Perl,… …   Wikipédia en Français

  • swig — [swig] Informal vt., vi. swigged, swigging [< ?] to drink, esp. in great gulps or quantities n. an instance of swigging; deep draft, esp. of liquor swigger n …   English World dictionary

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”