denizzzka/dpq2 — pull request #12 by NCrashed (2013-03-08 16:35:16+00:00)
Title: Dynamic bindings

Это продолжение тикета https://github.com/denizzzka/dpq2/issues/11 .
Реализовал:
* Возможность выбирать на этапе компиляции какие bindings использовать.
* Импортирование/загрузка только используемых функций с возможностью компиляции с полным набором функций.

Отлажено на: win7 x86_64 (PostgreSQL 9.2.3 x86), Fedora 17 x86_64 (PostgreSQL 9.1.8 x86_64).

Пришлось отойти от сборки через makefile, заменив скриптом на D. Через makefile тяжело реализовать прозрачную схему передачи флагов и режимов компиляции и условной компиляции. И для win еще нужно доставать make, что не всегда удобно.

Также добавил пакет dpq2.all, который инкапсулирует разные виды биндов под единый пакет, а также незаметно для пользователя подгружает dll/so и выгружает при завершении работы.

Проблема с size_t vs cint разрешилась использованием int, где явно в libpq не используется size_t. В моих тестах 64 битная libpq использовала int 4 байтной длины.

Пришлось пару раз добавить cast в основном коде, нашел баг в unittest для answer.d при тесте асинхронный запросов.