JavaScriptをC++からのスクリプトとして使う(クラス編)


C++で定義してあるクラスをJavaScript側で使いたいことがあります。今回はその説明をしてJavaScript編を終了にしたいと思います。

こんな感じのJavaScriptを実行させて、C++側にあるPointというクラスを扱うことを考えていきたいと思います。

C++でクラスの定義

このようなクラスを作り、下記に示すようにメンバ変数へのアクセスを許可するための関数を作ります。

続いて、Pointクラスを生成・破棄するための関数も用意しておきます。生成時には破棄の時にどの関数で処理させるかを指定させています。

ここまででクラスの準備は整ったので、JavaScriptエンジンにこれらの関数群を登録します。
前回の関数の登録のときの処理と割と似ています。

あとはこれを実行させてみることにします。

今までと違い、最後の方で V8::IdleNotification() を呼び出してみました。これを実行するとその時点で不要となっているデータを回収する動作が入ります(GCですね)
今回は、スクリプトに書いてあるようにfoo=nullを入れているので、少なくともこのデータが回収されることを期待しています。ためしにDispose関数にブレークポイントを設定してみると、IdleNotification実行後に呼び出されていることを確認出来るかと思います。

まとめ

これで、JavaScriptから関数やクラスを扱うことが出来るようになりました。組込スクリプトとしてのLuaで出来ていたことの多くはこれでJavaScriptでも務まりそうな気がします。速度やメモリの点はもしかすると及ばないのかもしれませんが、今の時代JavaScriptは結構多くの場所で使われているイメージがあり、使える人は多いと思っています。この点から組込スクリプトとしてJavaScriptも悪くないかと考えています。

使い勝手をよくするためにはJavaScript-C++のバインダのプログラムは用意しないと手軽感はありませんが、自分で作るちょっとした何かのツールではスクリプトとしてJavaScript対応を考えてみたいなと思っているところです。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする