Я рад объявить о "eipp": erlang bindings for c++. Мой работодатель позволил мне опубликовать исходные коды этой библиотеки, за что спасибо http://www.norscan.com .
Целью eipp является предоставление простого, безопасного и эффективного интерфейса к эрланговскому External Term Format из c++. Работа все еще ведется (см. http://code.google.com/p/eipp/), но то, что уже есть, похоже, уже полезно в работе. Пример работающего кода лучше, чем описание в тысячу слов, поэтому ниже я привел полноценный пример порта. Юнит тесты тоже являются неплохими примерами работы, во всяком случае, пока я не создал нормальныю документацию
#include <iostream>
#include"eipp.h"#include"eipp_packet.h"using namespace eipp;
using namespace std;
int main()
{
while(1)
{
atom_t cmd; // тип atom... ну, представьте себе std::string
et data; // общий тип "erlang term"
// ожидаем кортеж в виде {CmdAtom, Data}
untuple(cmd,data)=binary_to_term(receive4(cin));
// Пока поддерживается только одна команда...if(cmd=="times2")
{
int num=data; // "et" может быть приведено ко множеству типов
num*=2;
send4(cout,term_to_binary(tuple("ok",num)));
}
}
}
M>>Возможно, упор делается на то, что не надо писать многого, когда можно писать мало:
G>Зараззза ! Как забрать с googlecode сабвершеном хоть что-то забрать ? Не дается ! Причем ни на один проект G>Может, оно регистрацию жаждет ?
Оттуда и пытался. Но — не выходит каменный цветок !
M>У меня чекаутнулось нормально
У меня с гуглкода вообще ничего не берется. Почему, не знаю
M>http://files.rsdn.ru/9088/eipp.zip M>Здесь только что чекаутнутый eipp со сгенеренным eipp.h (в оригинале его нет, надо make прогонять)
Гран мерси
Здравствуйте, gandalfgrey, Вы писали:
G>Здравствуйте, Mamut, Вы писали:
M>>Возможно, упор делается на то, что не надо писать многого, когда можно писать мало:
G>А освобождение термов по free_term() там автоматическое ?
Если ты вдруг на рассылку не подписан, глянь здесь
Здравствуйте, Курилка, Вы писали:
К>Если ты вдруг на рассылку не подписан, глянь здесь
Подписан, но как-то пропустил
Там используются boost::shared_ptr, так что можно полагаться на автоматическое освобождение ( надеюсь )