Олег Цилюрик: да я как бы понимаю что можно взять libpq, и обложить её своими классами и будет всё красиво, но их как бы нужно писать, потом тестить, я вот и спрашивал может есть что-то готовое? Какой-то умелец который взял стандартную Си либу и сделал под неё обёртку из классов с удобным интерфейсом
Да, я знаю что есть обкатанное Си решение libpq, но я не хочу Си, меня не устраивает функциональный стиль, тягать за собой индификатор соединения, даёшь классы :) По поводу ODBC то мне по сути не нужно универсальное решение, бд будет только постгрес и я думаю мне нужны будут специфические особенности, от части именно по этому я и выбрал постгрес.
То есть условия у меня как-бы 2
1) с++ стиль с классами
2) никаких универсальных методов, всё должно быть заточено чисто под постгрес с фишками и производительностью.
@jcmvbkbc у меня винда, попробовал запустить php в gdb (gdb.exe -nx -fullname -quiet -args path/to/php) пишет "no debuging symbols found", вполне логично, php то релизный. Как быть?
@jcmvbkbc
3) я предполагал что спросите, там всё в порядке я просто добавляю туда пару своих методов и переопределяю некоторые операторы. Я и так раньше наследовал std::string
4) В этом то вся загвоздка, расширения php это динамические либы, я не представляю как их дебажить.
С учётом пунктов 1 и 2 код вышел такой, но он всё равно падает :( уже даже не знаю куда смотреть :(
class Ealloc : public std::allocator< char >
{
public:
pointer allocate( size_type size, allocator::const_pointer ptr = nullptr );
void deallocate( pointer , size_type );
};
// ...
Data::Ealloc::pointer Data::Ealloc::allocate(size_type size, allocator::const_pointer ptr)
{
return ptr == nullptr ?
static_cast< pointer >( emalloc(size) ) :
static_cast< pointer >( erealloc(const_cast< void* >(ptr), size) );
}
@jcmvbkbc изменил destroy на deallocate, но php всё равно падает. Падает так же на вызове newStr += '1', то есть с аллокатором что-то не так, но вот что. Мне кажется что переопределить 2 метода мало, наверное basic_string вызывает ещё что-то...
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.