实现C++类自动绑定到Squirrel的核心类我是这样写的:
template<class T>struct SqModuleBase
{
struct BaseT
{
T* pObject;
bool flag_created;
};
static T* getHandle(HSQUIRRELVM v)
{
BaseT* handle;
if(SQ_FAILED(sq_getinstanceup(v,1,(SQUserPointer*)(&handle),0))) return NULL;
return handle->pObject;
}
static int _sq_get(HSQUIRRELVM v,const SQChar* &var,BaseT* &handle)
{
if(SQ_FAILED(sq_getinstanceup(v,1,(SQUserPointer*)(&handle),0)) || handle==NULL)
return 0;//表示获取对象失败,立即返回
if(SqGetVar(v,var))
{
if(strcmp(var,"this")==0)
{
sq_pushuserpointer(v,(SQUserPointer)handle->pObject);