squirrelへのクラス登録、引数と戻り値にC++型を使えるように

忘れてた。

class model {
    void setvisible(bool flag);
    bool isvisible() const;
};
class loader {
public:
    model& loadmodel(const char* path);
};
vm.creg<model>("Model")
    .variable("visible",&model::isvisible,&model::setvisible);
vm.creg<loader>("Loader")
    .function("loadmodel",&loader::model);

として、squirrelから

loader<-Loader();
model<-loader.loadmodel("data/model.dat");
model.visible=true;

とかできんと使えんよな。
newしたポインタをまんま返すと所有権が消失してメモリリークになるとか、使い方にコツが必要なものの思ったようにコーディングできるとこまではできた。後は本格的に使いはじめるとどうなるか。
前々から作りたかったスクリプトへのバインディング処理、だいたいできた感じです。満足。
スクリプトによるメインループとかも仕込んだし、次は実際にモデル読み込めるようにして、スクリプトからロード実行、表示とかやるか。
モデル読み込みにもちょこっとやりたいことがあるので次はそれだ!
でもその前にベクトルクラスのバインディングせんとな〜。