SIP (программное обеспечение)
Оригинальный автор(ы) | Фил Томпсон |
---|---|
Написано в | С , С++ |
Лицензия | GPL и другие |
Веб-сайт | береговые вычисления |
SIP — это программный инструмент с открытым исходным кодом, используемый для соединения компьютерных программ или библиотек, написанных на C или C++, с языком сценариев Python . Это альтернатива SWIG .
SIP был первоначально разработан в 1998 году для PyQt — привязок Python для набора инструментов Qt GUI — но подходит для создания привязок для любой библиотеки C или C++. [1]
Концепция
[ редактировать ]SIP принимает набор файлов спецификации (.sip), описывающих API , и генерирует необходимый код C++. Затем он компилируется для создания модулей расширения Python. Файл .sip по сути представляет собой файл заголовка класса, из которого некоторые элементы удалены (поскольку SIP не включает в себя полноценный анализатор C++) и некоторые добавлены (поскольку C++ не всегда предоставляет достаточно информации о том, как работает API).
Для PyQt v4 я использую внутренний инструмент (написанный, конечно, с использованием PyQt) под названием Metasip. Это своего рода IDE для SIP. Он использует GCC -XML для анализа последних файлов заголовков и сохраняет соответствующие данные в формате XML в проекте Metasip. Затем Metasip выполняет эквивалент сравнения с предыдущей версией API и отмечает любые изменения, на которые необходимо обратить внимание. Эти изменения затем вносятся через графический интерфейс и отмечаются галочкой в списке TODO. Создание файлов .sip выполняется одним нажатием кнопки. В моем репозитории Subversion PyQt v4 представляет собой всего лишь XML-файл размером 20 МБ. Обновление PyQt v4 для минорной версии Qt v4 занимает около получаса. Что касается того, как работает сгенерированный код, я не думаю, что он сильно отличается от того, как работает любой другой генератор привязок. Python имеет очень хороший C API для написания модулей расширения — это одна из причин, почему так много сторонних инструментов имеют привязки Python. Для каждого класса C++ код, сгенерированный SIP, создает соответствующий класс Python, реализованный на C. [2]
— Фил Томпсон, разработчик и сопровождающий
Известные приложения, использующие SIP
[ редактировать ]- PyQt , порт платформы приложений и набора виджетов Qt на Python.
- QGIS — бесплатная кроссплатформенная настольная географическая информационная система (ГИС) с открытым исходным кодом.
- QtiPlot — компьютерная программа для анализа и визуализации научных данных.
- калибр (программное обеспечение) — бесплатный кроссплатформенный менеджер электронных книг с открытым исходным кодом.
- Veusz — бесплатная кроссплатформенная программа с открытым исходным кодом для визуализации научных данных.
Ссылки
[ редактировать ]- ^ «Введение — СИП» . RiverbankComputing.com . Проверено 14 августа 2010 г.
- ^ «Фил Томпсон рассказывает о PyQt» . dot.kde.org. 2006 год . Проверено 13 августа 2010 г.