-
// main.cpp
-
#include <iostream>
-
#include <sqplus.h>
-
-
#ifdef _DEBUG
-
# pragma comment(lib, "squirrelD.lib")
-
# pragma comment(lib, "sqplusD.lib")
-
# pragma comment(lib, "sqstdlibD.lib")
-
# pragma comment(lib, "sqdbglibD.lib")
-
#else
-
# pragma comment(lib, "squirrel.lib")
-
# pragma comment(lib, "sqplus.lib")
-
# pragma comment(lib, "sqstdlib.lib")
-
# pragma comment(lib, "sqdbglib.lib")
-
#endif //_DEBUG
-
-
class Hoge
-
{
-
public:
-
Hoge() : data_(1230) {}
-
explicit Hoge(int data) : data_(data) {}
-
~Hoge() {}
-
void print() { std::cout <<data_ <<std::endl; }
-
-
static void bind() {
-
SqPlus::SQClassDef<Hoge>(_T("Hoge")).
-
staticFunc(Hoge::constructHoge, _T("constructor")).
-
func(&Hoge::print, _T("print")).
-
var(&Hoge::data_, _T("data_"));
-
}
-
-
static int constructHoge(int data, HSQUIRRELVM v) {
-
return SqPlus::PostConstruct<hoge>(v, new Hoge(data), SqPlus::ReleaseClassPtr</hoge><hoge>::release);
-
}
-
-
private:
-
int data_;
-
};
-
-
int main(int argc, char** argv)
-
{
-
SquirrelVM::Init();
-
-
//----------------------------------------------------
-
// バインド
-
//----------------------------------------------------
-
// 変数
-
int intValue = 100;
-
float floatValue = 1.234f;
-
// 文字列は ScriptStringVar を使う
-
SqPlus::ScriptStringVar8 charValue = _T("hoge");
-
-
// バインド
-
SqPlus::BindVariable(&intValue , _T("intValue"));
-
SqPlus::BindVariable(&floatValue, _T("floatValue"));
-
SqPlus::BindVariable(&charValue , _T("charValue"));
-
-
-
//----------------------------------------------------
-
// Squirrel スクリプト側にクラスをバインド
-
//----------------------------------------------------
-
Hoge::bind();
-
-
-
//----------------------------------------------------
-
// スクリプトの読み込みとコンパイル
-
//----------------------------------------------------
-
SquirrelObject obj = SquirrelVM::CompileScript(_T("helloworld.nut"));
-
-
-
//----------------------------------------------------
-
// スクリプトの実行
-
//----------------------------------------------------
-
try {
-
SquirrelVM::RunScript(obj);
-
} catch (SquirrelError& e) {
-
// error 処理
-
}
-
-
// 変更された後の値
-
std::cout <<"intValue = " <<intValue <<std::endl;
-
-
SquirrelVM::Shutdown();
-
-
return 0;
-
}