Это руководство описывает объектно-ориентированную версию API Firebird4.0.
Данный документ является переводом файла doc/Using_OO_API.html
,который входит в поставку Firebird.
Описываемые интерфейсы находятся в файлеinclude/firebird/FirebirdInterface.idl
. С помощью инструмента CLOOP наоснове этого IDL файла можно сгенерировать файл интерфейсов дляконкретного языка программирования (IdlFbInterfaces.h
илиFirebird.pas
).
CLOOP — Cross Language Object Oriented Programming. Этот инструмент невходит в поставку Firebird. Его можно найти в исходных кодахhttps://github.com/FirebirdSQL/firebird/tree/master/extern/cloop.После того как инструмент будет собран, можно сгенерировать API для вашегоязыка программирования.
Для Object Pascal файл с объектным API генерируется следующей командой:
cloop FirebirdInterface.idl pascal Firebird.pas Firebird --uses SysUtils \
--interfaceFile Pascal.interface.pas \
--implementationFile Pascal.implementation.pas \
--exceptionClass FbException --prefix I \
--functionsFile fb_get_master_interface.pas
Файлы Pascal.interface.pas
, Pascal.implementation.pas
иfb_get_master_interface.pas
можно найти по адресуhttps://github.com/FirebirdSQL/firebird/tree/master/src/misc/pascal.
Note
|
В данном случае для интерфейсов Firebird API будет добавлен префикс I,так как это принято в Object Pascal. |
В полученном файле Firebird.pas
отсутствуют isc_*
константы. Этиконстанты для языков C/C++ можно найти под адресуhttps://github.com/FirebirdSQL/firebird/blob/B4_0_Release/src/include/consts_pub.h.Для получения констант для языка Pascal воспользуемся AWK скриптом дляпреобразования синтаксиса. В Windows вам потребуется установить Gawk forWindows или воспользоваться Windows Subsystem for Linux (доступно вWindows 10). Это делается следующей командой:
awk -f Pascal.Constants.awk consts_pub.h > const.pas
Содержимое полученного файла необходимо скопировать в пустую секциюconst файла Firebird.pas
сразу после implementation. ФайлPascal.Constants.awk
, можно найти по адресуhttps://github.com/FirebirdSQL/firebird/tree/B4_0_Release/src/misc/pascal.