WikiDer > SIP (программное обеспечение)

SIP (software)
ГЛОТОК
Оригинальный автор (ы)Фил Томпсон
Написано вC, C ++
ЛицензияGPL и другие
Интернет сайтберег реки.co.Великобритания/программного обеспечения/глоток/вступление

ГЛОТОК является программное обеспечение с открытым исходным кодом инструмент, используемый для подключения компьютерные программы или же библиотеки написано в 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, компьютерная программа для анализа и визуализации научных данных

Рекомендации

  1. ^ «Введение - SIP». riverbankcomputing.com. Получено 2010-08-14.
  2. ^ «Фил Томпсон говорит о PyQt». dot.kde.org. 2006 г.. Получено 2010-08-13.