对firebreath文档进行翻译,顺便做个笔记,原地址:http://www.firebreath.org/display/documentation/JSAPIAuto
综述:
你可能会对需要转换大量JavaScript的数据而感到很烦恼,虽然JSAPI和JSAPISimple提供了所有你需要实现的脚本类,而解决这个问题就是JSAPIAuto出现的目的。
考虑添加一个简单函数(两个数相加)到你的类中:
FB::variant add(const FB::VariantList& values) { if(values.size() != 2) throw FB::script_error("wrong number of arguments"); try { long a = values[0].convert_cast<long>(); long b = values[1].convert_cast<long>(); return a+b; } catch(FB::bad_variant_cast& e) { throw FB::script_error("conversion failed :("); } }
一个简单的函数要如此麻烦!但是,JSAPIAuto允许我们像以下代码这样做:
long add(long a, long b) { return a+b; }
通过引入辅助函数 FB::make_method()和FB::make_property(),我们可以很方便地添加函数和属性:
registerMethod("add", FB::make_method(this, &MyClass::add));
make_method()检测函数的参数以及生成需要的代码。