SIP (oprogramowanie)
Oryginalni autorzy | Phila Thompsona |
---|---|
Napisane w | C , C++ |
Licencja | GPL i inne |
Strona internetowa |
SIP to narzędzie oprogramowania typu open source służące do łączenia programów komputerowych lub bibliotek napisanych w języku C lub C++ z językiem skryptowym Python . Jest to alternatywa dla SWIG .
SIP został pierwotnie opracowany w 1998 roku dla PyQt — powiązań Pythona dla zestawu narzędzi Qt GUI — ale nadaje się do generowania powiązań dla dowolnej biblioteki C lub C++.
Pojęcie
SIP pobiera zestaw plików specyfikacji (.sip) opisujących API i generuje wymagany kod C++. Jest to następnie kompilowane w celu wytworzenia modułów rozszerzeń Pythona. Plik .sip jest zasadniczo plikiem nagłówkowym klasy, z którego usunięto niektóre elementy (ponieważ SIP nie zawiera pełnego parsera C++) i dodano kilka elementów (ponieważ C++ nie zawsze dostarcza wystarczających informacji o działaniu interfejsu API).
Dla PyQt v4 używam wewnętrznego narzędzia (oczywiście napisanego przy użyciu PyQt) o nazwie metasip. To jest coś w rodzaju IDE dla SIP. Używa GCC -XML do analizowania najnowszych plików nagłówkowych i zapisywania odpowiednich danych w formacie XML w projekcie metasip. Metasip następnie wykonuje odpowiednik porównania z poprzednią wersją API i zaznacza wszelkie zmiany, którym należy się przyjrzeć. Zmiany te są następnie wprowadzane przez GUI i zaznaczane na liście TODO. Generowanie plików .sip to tylko jedno kliknięcie. W moim repozytorium Subversion PyQt v4 to w zasadzie tylko 20-milionowy plik XML. Aktualizacja PyQt v4 dla mniejszej wersji Qt v4 to około pół godziny pracy. Jeśli chodzi o sposób działania wygenerowanego kodu, nie sądzę, aby różnił się on bardzo od działania dowolnego innego generatora powiązań. Python ma bardzo dobre C API do pisania modułów rozszerzeń - to jeden z powodów, dla których tak wiele narzędzi innych firm ma powiązania z Pythonem. Dla każdej klasy C++ kod wygenerowany przez SIP tworzy odpowiednią klasę Pythona zaimplementowaną w C.
— Phil Thompson, programista i opiekun
Wybitne aplikacje korzystające z SIP
- PyQt , port Pythona struktury aplikacji i zestawu narzędzi widżetów Qt
- QGIS , darmowy i wieloplatformowy system informacji geograficznej (GIS) dla komputerów stacjonarnych
- QtiPlot , program komputerowy do analizy i wizualizacji danych naukowych
- calibre (oprogramowanie) , darmowy i wieloplatformowy menedżer e-booków typu open source
- Veusz , darmowy i wieloplatformowy program typu open source do wizualizacji danych naukowych