« ムービー保存忘れ | メイン | よくわからないクラスの追加 »

2005年05月12日

SmartScrollプラグイン開発:: Cで書いた関数をJavaScriptからコール

    

今日はつい本屋に寄って、ついJavaScript辞典 第2版を買ってしまった。
昨日からなんとなく触り始めただけなのに…
まあ、それはともかく、Cで書いた関数をJavaScriptからコールしてみた。
まずは実際に呼ばれる関数と登録用の変数を定義

static JSBool console_print(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
  JSString *str;
  str = JS_ValueToString( cx, argv[0]);
  wprintf( JS_GetStringChars(str) );
  return JS_TRUE;
}
static JSFunctionSpec my_functions[] = { {"console_print", console_print, 1}, {0} };

次に、グローバルオブジェクトの登録が終わった後に関数を登録し、JavaScriptからその関数をコールする。

JS_DefineFunctions(cx, globalObj, my_functions);
char *call_func_source="console_print(\"SpiderMonkey!!\\n\");";
JS_EvaluateScript(cx, globalObj, call_func_source, strlen(call_func_source), "sample.js", 0, &rval);

これも簡単に出来た。
後はクラスの登録が出来ればOK?
実際にはクラスのインスタンスをJavaScriptで書いた関数へ渡すことになるんだけど。

JavaScript側から関数をネイティブの関数経由で登録。
ネイティブ側からプロシージャ呼び出しがあった時に登録された関数をコール。
と言う処理は出来るのかな?
ま、順番に試していこう。



投稿者 Takenori : 2005年05月12日 22:33




comments powered by Disqus
Total : Today : Yesterday : なかのひと