SWIG software | |
---|---|
Genere | Libreria software (non in lista) wrapper (non in lista) |
Sviluppatore | Dave Beazley e SWIG developers |
Ultima versione | 4.2.1 (24 febbraio 2024) |
Sistema operativo | Multipiattaforma |
Linguaggio | C C++ |
Licenza | licenza multipla: GNU LGPL GNU GPL (licenza libera) |
Lingua | inglese |
Sito web | swig.org |
SWIG (Simplified Wrapper and Interface Generator - Wrapper semplificato e generatore di interfacce) è un wrapper open source utilizzato per collegare i programmi per elaboratore o librerie scritte in C o C++ con linguaggi di scripting come Lua, Perl, PHP, Python, R, Ruby, Tcl e altri linguaggi come C Sharp, Java, JavaScript, Go, Modula-3, OCaml, Octave, e Scheme. L'output può essere anche in formato XML o S-expressioni Lisp.
L'obiettivo è quello di consentire la chiamata di funzioni native (C o C++) da altri linguaggi di programmazione passando tipi di dati complessi, mantenendo la memoria libera e l'ereditarietà delle classi dei vari linguaggi, ecc. Il programmatore scrive un file di interfaccia che contiene un elenco di funzioni C/C++ che devono essere rese visibili a un interprete. SWIG compila il file di interfaccia e genera normale codice C/C++ e il codice nel linguaggio di programmazione di destinazione. SWIG genera codice di conversione (Marshalling)[1] o serializzazione per le funzioni con argomenti semplici; il codice di conversione per i tipi complessi di argomenti deve essere scritto dal programmatore. Lo strumento SWIG crea codice sorgente che fornisce il collante tra C/C++ e il linguaggio di destinazione. A seconda del linguaggio software, questo collante è disponibile in due forme:
SWIG non viene utilizzato per chiamare le funzioni interpretate da codice nativo, questo deve essere fatto dal programmatore manualmente.
Ci sono due ragioni principali per incorporare un motore di scripting in un programma C/C++ esistente:
Ci sono diversi motivi per creare librerie dinamiche che possono essere caricate in interpreti ancora esistenti, tra cui:
Per Python similari funzioni sono offerte da SIP e Boost.python library.