SIP (программное обеспечение) - SIP (software)
Оригинальный автор (ы) | Фил Томпсон |
---|---|
Написано в | C, C ++ |
Лицензия | GPL и другие |
Интернет сайт | берег реки |
ГЛОТОК является программное обеспечение с открытым исходным кодом инструмент, используемый для подключения компьютерные программы или же библиотеки написано в 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, порт Python для платформы приложения и инструментария виджетов Qt
- QGIS, бесплатная кроссплатформенная настольная географическая информационная система (ГИС) с открытым исходным кодом
- QtiPlot, компьютерная программа для анализа и визуализации научных данных
Рекомендации
- ^ «Введение - SIP». riverbankcomputing.com. Получено 2010-08-14.
- ^ «Фил Томпсон говорит о PyQt». dot.kde.org. 2006 г.. Получено 2010-08-13.