От: | Mamut | http://dmitriid.com | |
Дата: | 17.05.07 07:59 | ||
Оценка: | 2 (1) |
Я рад объявить о "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))); } } }