JSXからemscriptenで生成したJSを呼ぶ #upcamp

#upcamp でハッカソンしてます。JSXからemscriptenで生成したJSを呼び出してみました。emscriptenはhomebrewでbrew install llvm --with-clangllvmを入れ、emccのshebangを修正するだけで動きました。

コンパイル は EXPORTED_FUNCTIONS を指定すること以外は特になにもしていません。
Cのコードは以下のとおりです。

double add(double a, double b) {
    return a + b;
}

JSXのコードは以下のようになります。

native class C {
  static function ccall.<T>(name : string, returnType : string, argsType : string[], args : variant[]) : T;
} = "require('./add.js')";

class _Main {
  static function main(args : string[]) : void {
    var r = C.ccall.<number>("add", "number", ["number", "number"], [10, 20] : variant[]);
    log r; # 30
  }
}

// vim: set tabstop=2 shiftwidth=2 expandtab:

ccall()はemscripten runtimeのAPIで、シグネチャを与えてCの関数を呼び出します。以外と簡単にできました。

全コードはgithubにあります。

https://github.com/gfx/jsx-call-emscripten-example