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

你可能感兴趣的:(接口)