firebreath注册接口

对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()检测函数的参数以及生成需要的代码。

原文地址:https://www.cnblogs.com/howardhuo/p/4372178.html