Xtalを取り扱う際の基本的な流れは以下の通り。
1.xtal::Settingを定義し、利用する機能を設定する。
※重要:このxtal::Settingの定義データは、xtal::uninitialize()を実行するまで保持しておく事
2.xtal::initialize()を実行して、VMを生成する。
3.C++側の関数やクラスをXtalで使えるようにする場合、ここでバインド*1を行う。
4.load関数、もしくはcompile系関数で、Xtalスクリプトをコンパイルする。
5.call関数で実行(もしくはXtal内関数・クラスを定義)する。
※Xtal内関数やXtal内クラスは、ここで初めて利用可能になる。
6.利用開始!
7.終了前に、不要なXtalに関連するオブジェクトを削除する。
※重要:削除しておかないと、8.で落ちる。
(例:4.のcompile系関数でコンパイルした結果を格納するCodePtrなど。)
削除するには、xtal::nullを代入すればいいらしい...?
8.xtal::uninitialize()を実行して、VMを解放する。
スクリプトの管理クラスを作るのであれば、1〜5を初期処理として、7〜8を終了処理として作るのがベターか....な?
C++のクラスをXtalにバインドする場合は、Xtalで利用したいC++クラス内のメソッドやメンバ変数などを定義するマクロを組まなければならない。