sq_push 関数のオーバーロード
スクリプトの関数に引数を渡すときは、下のような感じに値をpushしていく。
sq_pushinteger(v, 10); // in t型 sq_pushfloat (v, 0.45f); // float 型 std::string str("Squireel"); sq_pushstring(v, "Squireel", str.size()); // 文字列
ただ、これだと渡す型用の関数を逐一選んで呼ばないとだめなので以下のように関数でラッピング。
namesapce squirrel{ void push(HSQUIRRELVM v, int rhs){ ::sq_pushinteger(v, rhs); } void push(HSQUIRRELVM v, float rhs){ ::sq_pushfloat(v, rhs); } void push(HSQUIRRELVM v, const char* rhs){ ::sq_pushstring(v, rhs, strlen(rhs) ); } }; // namesapce squirrel{ squirrel::push(v, 10); // int 型が push される squirrel::push(v, "Squirrel"); // 文字列も問題なく呼ばれる
引数の型のオーバーロードで解決。
これですっきり。