// ------------------------------------------------------------------------------------------------ #ifdef SQMOD_PLUGIN_API /*vm*/ sqapi_open sq_open = NULL; sqapi_newthread sq_newthread = NULL; sqapi_seterrorhandler sq_seterrorhandler = NULL; sqapi_close sq_close = NULL; sqapi_setforeignptr sq_setforeignptr = NULL; sqapi_getforeignptr sq_getforeignptr = NULL; sqapi_setsharedforeignptr sq_setsharedforeignptr = NULL; sqapi_getsharedforeignptr sq_getsharedforeignptr = NULL; sqapi_setvmreleasehook sq_setvmreleasehook = NULL; sqapi_getvmreleasehook sq_getvmreleasehook = NULL; sqapi_setsharedreleasehook sq_setsharedreleasehook = NULL; sqapi_getsharedreleasehook sq_getsharedreleasehook = NULL; sqapi_setprintfunc sq_setprintfunc = NULL; sqapi_getprintfunc sq_getprintfunc = NULL; sqapi_geterrorfunc sq_geterrorfunc = NULL; sqapi_suspendvm sq_suspendvm = NULL; sqapi_wakeupvm sq_wakeupvm = NULL; sqapi_getvmstate sq_getvmstate = NULL; sqapi_getversion sq_getversion = NULL; /*compiler*/ sqapi_compile sq_compile = NULL; sqapi_compilebuffer sq_compilebuffer = NULL; sqapi_enabledebuginfo sq_enabledebuginfo = NULL; sqapi_notifyallexceptions sq_notifyallexceptions = NULL; sqapi_setcompilererrorhandler sq_setcompilererrorhandler = NULL; /*stack operations*/ sqapi_push sq_push = NULL; sqapi_pop sq_pop = NULL; sqapi_poptop sq_poptop = NULL; sqapi_remove sq_remove = NULL; sqapi_gettop sq_gettop = NULL; sqapi_settop sq_settop = NULL; sqapi_reservestack sq_reservestack = NULL; sqapi_cmp sq_cmp = NULL; sqapi_move sq_move = NULL; /*object creation handling*/ sqapi_newuserdata sq_newuserdata = NULL; sqapi_newtable sq_newtable = NULL; sqapi_newtableex sq_newtableex = NULL; sqapi_newarray sq_newarray = NULL; sqapi_newclosure sq_newclosure = NULL; sqapi_setparamscheck sq_setparamscheck = NULL; sqapi_bindenv sq_bindenv = NULL; sqapi_setclosureroot sq_setclosureroot = NULL; sqapi_getclosureroot sq_getclosureroot = NULL; sqapi_pushstring sq_pushstring = NULL; sqapi_pushfloat sq_pushfloat = NULL; sqapi_pushinteger sq_pushinteger = NULL; sqapi_pushbool sq_pushbool = NULL; sqapi_pushuserpointer sq_pushuserpointer = NULL; sqapi_pushnull sq_pushnull = NULL; sqapi_pushthread sq_pushthread = NULL; sqapi_gettype sq_gettype = NULL; sqapi_typeof sq_typeof = NULL; sqapi_getsize sq_getsize = NULL; sqapi_gethash sq_gethash = NULL; sqapi_getbase sq_getbase = NULL; sqapi_instanceof sq_instanceof = NULL; sqapi_tostring sq_tostring = NULL; sqapi_tobool sq_tobool = NULL; sqapi_getstringandsize sq_getstringandsize = NULL; sqapi_getstring sq_getstring = NULL; sqapi_getinteger sq_getinteger = NULL; sqapi_getfloat sq_getfloat = NULL; sqapi_getbool sq_getbool = NULL; sqapi_getthread sq_getthread = NULL; sqapi_getuserpointer sq_getuserpointer = NULL; sqapi_getuserdata sq_getuserdata = NULL; sqapi_settypetag sq_settypetag = NULL; sqapi_gettypetag sq_gettypetag = NULL; sqapi_setreleasehook sq_setreleasehook = NULL; sqapi_getreleasehook sq_getreleasehook = NULL; sqapi_getscratchpad sq_getscratchpad = NULL; sqapi_getfunctioninfo sq_getfunctioninfo = NULL; sqapi_getclosureinfo sq_getclosureinfo = NULL; sqapi_getclosurename sq_getclosurename = NULL; sqapi_setnativeclosurename sq_setnativeclosurename = NULL; sqapi_setinstanceup sq_setinstanceup = NULL; sqapi_getinstanceup sq_getinstanceup = NULL; sqapi_setclassudsize sq_setclassudsize = NULL; sqapi_newclass sq_newclass = NULL; sqapi_createinstance sq_createinstance = NULL; sqapi_setattributes sq_setattributes = NULL; sqapi_getattributes sq_getattributes = NULL; sqapi_getclass sq_getclass = NULL; sqapi_weakref sq_weakref = NULL; sqapi_getdefaultdelegate sq_getdefaultdelegate = NULL; sqapi_getmemberhandle sq_getmemberhandle = NULL; sqapi_getbyhandle sq_getbyhandle = NULL; sqapi_setbyhandle sq_setbyhandle = NULL; /*object manipulation*/ sqapi_pushroottable sq_pushroottable = NULL; sqapi_pushregistrytable sq_pushregistrytable = NULL; sqapi_pushconsttable sq_pushconsttable = NULL; sqapi_setroottable sq_setroottable = NULL; sqapi_setconsttable sq_setconsttable = NULL; sqapi_newslot sq_newslot = NULL; sqapi_deleteslot sq_deleteslot = NULL; sqapi_set sq_set = NULL; sqapi_get sq_get = NULL; sqapi_rawget sq_rawget = NULL; sqapi_rawset sq_rawset = NULL; sqapi_rawdeleteslot sq_rawdeleteslot = NULL; sqapi_newmember sq_newmember = NULL; sqapi_rawnewmember sq_rawnewmember = NULL; sqapi_arrayappend sq_arrayappend = NULL; sqapi_arraypop sq_arraypop = NULL; sqapi_arrayresize sq_arrayresize = NULL; sqapi_arrayreverse sq_arrayreverse = NULL; sqapi_arrayremove sq_arrayremove = NULL; sqapi_arrayinsert sq_arrayinsert = NULL; sqapi_setdelegate sq_setdelegate = NULL; sqapi_getdelegate sq_getdelegate = NULL; sqapi_clone sq_clone = NULL; sqapi_setfreevariable sq_setfreevariable = NULL; sqapi_next sq_next = NULL; sqapi_getweakrefval sq_getweakrefval = NULL; sqapi_clear sq_clear = NULL; /*calls*/ sqapi_call sq_call = NULL; sqapi_resume sq_resume = NULL; sqapi_getlocal sq_getlocal = NULL; sqapi_getcallee sq_getcallee = NULL; sqapi_getfreevariable sq_getfreevariable = NULL; sqapi_throwerror sq_throwerror = NULL; sqapi_throwobject sq_throwobject = NULL; sqapi_reseterror sq_reseterror = NULL; sqapi_getlasterror sq_getlasterror = NULL; /*raw object handling*/ sqapi_getstackobj sq_getstackobj = NULL; sqapi_pushobject sq_pushobject = NULL; sqapi_addref sq_addref = NULL; sqapi_release sq_release = NULL; sqapi_getrefcount sq_getrefcount = NULL; sqapi_resetobject sq_resetobject = NULL; sqapi_objtostring sq_objtostring = NULL; sqapi_objtobool sq_objtobool = NULL; sqapi_objtointeger sq_objtointeger = NULL; sqapi_objtofloat sq_objtofloat = NULL; sqapi_objtouserpointer sq_objtouserpointer = NULL; sqapi_getobjtypetag sq_getobjtypetag = NULL; sqapi_getvmrefcount sq_getvmrefcount = NULL; /*GC*/ sqapi_collectgarbage sq_collectgarbage = NULL; sqapi_resurrectunreachable sq_resurrectunreachable = NULL; /*serialization*/ sqapi_writeclosure sq_writeclosure = NULL; sqapi_readclosure sq_readclosure = NULL; /*mem allocation*/ sqapi_malloc sq_malloc = NULL; sqapi_realloc sq_realloc = NULL; sqapi_free sq_free = NULL; /*debug*/ sqapi_stackinfos sq_stackinfos = NULL; sqapi_setdebughook sq_setdebughook = NULL; sqapi_setnativedebughook sq_setnativedebughook = NULL; /*compiler helpers*/ sqapi_loadfile sqstd_loadfile = NULL; sqapi_dofile sqstd_dofile = NULL; sqapi_writeclosuretofile sqstd_writeclosuretofile = NULL; /*blob*/ sqapi_createblob sqstd_createblob = NULL; sqapi_getblob sqstd_getblob = NULL; sqapi_getblobsize sqstd_getblobsize = NULL; /*string*/ sqapi_format sqstd_format = NULL; #endif // SQMOD_PLUGIN_API // ------------------------------------------------------------------------------------------------ HSQEXPORTS sq_api_import(PluginFuncs * vcapi) { // Make sure a valid plugin api and reference to exports structure pointer was specified if (!vcapi) { return NULL; } size_t struct_size; // Attempt to find the main plugin ID int plugin_id = vcapi->FindPlugin((char *)(SQMOD_HOST_NAME)); // Attempt to retrieve the plugin exports const void ** plugin_exports = vcapi->GetPluginExports(plugin_id, &struct_size); // See if we have any imports from Squirrel if (plugin_exports == NULL || struct_size <= 0) { return NULL; } // Simply return the obtain poiner to the exports structure return *(sq_exports **)plugin_exports; } // ------------------------------------------------------------------------------------------------ SQRESULT sq_api_expand(HSQAPI sqapi) { if (!sqapi) return SQ_ERROR; #ifdef SQMOD_PLUGIN_API /*vm*/ sq_open = sqapi->open; sq_newthread = sqapi->newthread; sq_seterrorhandler = sqapi->seterrorhandler; sq_close = sqapi->close; sq_setforeignptr = sqapi->setforeignptr; sq_getforeignptr = sqapi->getforeignptr; sq_setsharedforeignptr = sqapi->setsharedforeignptr; sq_getsharedforeignptr = sqapi->getsharedforeignptr; sq_setvmreleasehook = sqapi->setvmreleasehook; sq_getvmreleasehook = sqapi->getvmreleasehook; sq_setsharedreleasehook = sqapi->setsharedreleasehook; sq_getsharedreleasehook = sqapi->getsharedreleasehook; sq_setprintfunc = sqapi->setprintfunc; sq_getprintfunc = sqapi->getprintfunc; sq_geterrorfunc = sqapi->geterrorfunc; sq_suspendvm = sqapi->suspendvm; sq_wakeupvm = sqapi->wakeupvm; sq_getvmstate = sqapi->getvmstate; sq_getversion = sqapi->getversion; /*compiler*/ sq_compile = sqapi->compile; sq_compilebuffer = sqapi->compilebuffer; sq_enabledebuginfo = sqapi->enabledebuginfo; sq_notifyallexceptions = sqapi->notifyallexceptions; sq_setcompilererrorhandler = sqapi->setcompilererrorhandler; /*stack operations*/ sq_push = sqapi->push; sq_pop = sqapi->pop; sq_poptop = sqapi->poptop; sq_remove = sqapi->remove; sq_gettop = sqapi->gettop; sq_settop = sqapi->settop; sq_reservestack = sqapi->reservestack; sq_cmp = sqapi->cmp; sq_move = sqapi->move; /*object creation handling*/ sq_newuserdata = sqapi->newuserdata; sq_newtable = sqapi->newtable; sq_newtableex = sqapi->newtableex; sq_newarray = sqapi->newarray; sq_newclosure = sqapi->newclosure; sq_setparamscheck = sqapi->setparamscheck; sq_bindenv = sqapi->bindenv; sq_setclosureroot = sqapi->setclosureroot; sq_getclosureroot = sqapi->getclosureroot; sq_pushstring = sqapi->pushstring; sq_pushfloat = sqapi->pushfloat; sq_pushinteger = sqapi->pushinteger; sq_pushbool = sqapi->pushbool; sq_pushuserpointer = sqapi->pushuserpointer; sq_pushnull = sqapi->pushnull; sq_pushthread = sqapi->pushthread; sq_gettype = sqapi->gettype; sq_typeof = sqapi->typeof_; sq_getsize = sqapi->getsize; sq_gethash = sqapi->gethash; sq_getbase = sqapi->getbase; sq_instanceof = sqapi->instanceof; sq_tostring = sqapi->tostring; sq_tobool = sqapi->tobool; sq_getstringandsize = sqapi->getstringandsize; sq_getstring = sqapi->getstring; sq_getinteger = sqapi->getinteger; sq_getfloat = sqapi->getfloat; sq_getbool = sqapi->getbool; sq_getthread = sqapi->getthread; sq_getuserpointer = sqapi->getuserpointer; sq_getuserdata = sqapi->getuserdata; sq_settypetag = sqapi->settypetag; sq_gettypetag = sqapi->gettypetag; sq_setreleasehook = sqapi->setreleasehook; sq_getreleasehook = sqapi->getreleasehook; sq_getscratchpad = sqapi->getscratchpad; sq_getfunctioninfo = sqapi->getfunctioninfo; sq_getclosureinfo = sqapi->getclosureinfo; sq_getclosurename = sqapi->getclosurename; sq_setnativeclosurename = sqapi->setnativeclosurename; sq_setinstanceup = sqapi->setinstanceup; sq_getinstanceup = sqapi->getinstanceup; sq_setclassudsize = sqapi->setclassudsize; sq_newclass = sqapi->newclass; sq_createinstance = sqapi->createinstance; sq_setattributes = sqapi->setattributes; sq_getattributes = sqapi->getattributes; sq_getclass = sqapi->getclass; sq_weakref = sqapi->weakref; sq_getdefaultdelegate = sqapi->getdefaultdelegate; sq_getmemberhandle = sqapi->getmemberhandle; sq_getbyhandle = sqapi->getbyhandle; sq_setbyhandle = sqapi->setbyhandle; /*object manipulation*/ sq_pushroottable = sqapi->pushroottable; sq_pushregistrytable = sqapi->pushregistrytable; sq_pushconsttable = sqapi->pushconsttable; sq_setroottable = sqapi->setroottable; sq_setconsttable = sqapi->setconsttable; sq_newslot = sqapi->newslot; sq_deleteslot = sqapi->deleteslot; sq_set = sqapi->set; sq_get = sqapi->get; sq_rawget = sqapi->rawget; sq_rawset = sqapi->rawset; sq_rawdeleteslot = sqapi->rawdeleteslot; sq_newmember = sqapi->newmember; sq_rawnewmember = sqapi->rawnewmember; sq_arrayappend = sqapi->arrayappend; sq_arraypop = sqapi->arraypop; sq_arrayresize = sqapi->arrayresize; sq_arrayreverse = sqapi->arrayreverse; sq_arrayremove = sqapi->arrayremove; sq_arrayinsert = sqapi->arrayinsert; sq_setdelegate = sqapi->setdelegate; sq_getdelegate = sqapi->getdelegate; sq_clone = sqapi->clone; sq_setfreevariable = sqapi->setfreevariable; sq_next = sqapi->next; sq_getweakrefval = sqapi->getweakrefval; sq_clear = sqapi->clear; /*calls*/ sq_call = sqapi->call; sq_resume = sqapi->resume; sq_getlocal = sqapi->getlocal; sq_getcallee = sqapi->getcallee; sq_getfreevariable = sqapi->getfreevariable; sq_throwerror = sqapi->throwerror; sq_throwobject = sqapi->throwobject; sq_reseterror = sqapi->reseterror; sq_getlasterror = sqapi->getlasterror; /*raw object handling*/ sq_getstackobj = sqapi->getstackobj; sq_pushobject = sqapi->pushobject; sq_addref = sqapi->addref; sq_release = sqapi->release; sq_getrefcount = sqapi->getrefcount; sq_resetobject = sqapi->resetobject; sq_objtostring = sqapi->objtostring; sq_objtobool = sqapi->objtobool; sq_objtointeger = sqapi->objtointeger; sq_objtofloat = sqapi->objtofloat; sq_objtouserpointer = sqapi->objtouserpointer; sq_getobjtypetag = sqapi->getobjtypetag; sq_getvmrefcount = sqapi->getvmrefcount; /*GC*/ sq_collectgarbage = sqapi->collectgarbage; sq_resurrectunreachable = sqapi->resurrectunreachable; /*serialization*/ sq_writeclosure = sqapi->writeclosure; sq_readclosure = sqapi->readclosure; /*mem allocation*/ sq_malloc = sqapi->malloc; sq_realloc = sqapi->realloc; sq_free = sqapi->free; /*debug*/ sq_stackinfos = sqapi->stackinfos; sq_setdebughook = sqapi->setdebughook; sq_setnativedebughook = sqapi->setnativedebughook; /*compiler helpers*/ sqstd_loadfile = sqapi->loadfile; sqstd_dofile = sqapi->dofile; sqstd_writeclosuretofile = sqapi->writeclosuretofile; /*blob*/ sqstd_createblob = sqapi->createblob; sqstd_getblob = sqapi->getblob; sqstd_getblobsize = sqapi->getblobsize; /*string*/ sqstd_format = sqapi->format; #endif // SQMOD_PLUGIN_API return SQ_OK; } // ------------------------------------------------------------------------------------------------ void sq_api_collapse() { #ifdef SQMOD_PLUGIN_API /*vm*/ sq_open = NULL; sq_newthread = NULL; sq_seterrorhandler = NULL; sq_close = NULL; sq_setforeignptr = NULL; sq_getforeignptr = NULL; sq_setsharedforeignptr = NULL; sq_getsharedforeignptr = NULL; sq_setvmreleasehook = NULL; sq_getvmreleasehook = NULL; sq_setsharedreleasehook = NULL; sq_getsharedreleasehook = NULL; sq_setprintfunc = NULL; sq_getprintfunc = NULL; sq_geterrorfunc = NULL; sq_suspendvm = NULL; sq_wakeupvm = NULL; sq_getvmstate = NULL; sq_getversion = NULL; /*compiler*/ sq_compile = NULL; sq_compilebuffer = NULL; sq_enabledebuginfo = NULL; sq_notifyallexceptions = NULL; sq_setcompilererrorhandler = NULL; /*stack operations*/ sq_push = NULL; sq_pop = NULL; sq_poptop = NULL; sq_remove = NULL; sq_gettop = NULL; sq_settop = NULL; sq_reservestack = NULL; sq_cmp = NULL; sq_move = NULL; /*object creation handling*/ sq_newuserdata = NULL; sq_newtable = NULL; sq_newtableex = NULL; sq_newarray = NULL; sq_newclosure = NULL; sq_setparamscheck = NULL; sq_bindenv = NULL; sq_setclosureroot = NULL; sq_getclosureroot = NULL; sq_pushstring = NULL; sq_pushfloat = NULL; sq_pushinteger = NULL; sq_pushbool = NULL; sq_pushuserpointer = NULL; sq_pushnull = NULL; sq_pushthread = NULL; sq_gettype = NULL; sq_typeof = NULL; sq_getsize = NULL; sq_gethash = NULL; sq_getbase = NULL; sq_instanceof = NULL; sq_tostring = NULL; sq_tobool = NULL; sq_getstringandsize = NULL; sq_getstring = NULL; sq_getinteger = NULL; sq_getfloat = NULL; sq_getbool = NULL; sq_getthread = NULL; sq_getuserpointer = NULL; sq_getuserdata = NULL; sq_settypetag = NULL; sq_gettypetag = NULL; sq_setreleasehook = NULL; sq_getreleasehook = NULL; sq_getscratchpad = NULL; sq_getfunctioninfo = NULL; sq_getclosureinfo = NULL; sq_getclosurename = NULL; sq_setnativeclosurename = NULL; sq_setinstanceup = NULL; sq_getinstanceup = NULL; sq_setclassudsize = NULL; sq_newclass = NULL; sq_createinstance = NULL; sq_setattributes = NULL; sq_getattributes = NULL; sq_getclass = NULL; sq_weakref = NULL; sq_getdefaultdelegate = NULL; sq_getmemberhandle = NULL; sq_getbyhandle = NULL; sq_setbyhandle = NULL; /*object manipulation*/ sq_pushroottable = NULL; sq_pushregistrytable = NULL; sq_pushconsttable = NULL; sq_setroottable = NULL; sq_setconsttable = NULL; sq_newslot = NULL; sq_deleteslot = NULL; sq_set = NULL; sq_get = NULL; sq_rawget = NULL; sq_rawset = NULL; sq_rawdeleteslot = NULL; sq_newmember = NULL; sq_rawnewmember = NULL; sq_arrayappend = NULL; sq_arraypop = NULL; sq_arrayresize = NULL; sq_arrayreverse = NULL; sq_arrayremove = NULL; sq_arrayinsert = NULL; sq_setdelegate = NULL; sq_getdelegate = NULL; sq_clone = NULL; sq_setfreevariable = NULL; sq_next = NULL; sq_getweakrefval = NULL; sq_clear = NULL; /*calls*/ sq_call = NULL; sq_resume = NULL; sq_getlocal = NULL; sq_getcallee = NULL; sq_getfreevariable = NULL; sq_throwerror = NULL; sq_throwobject = NULL; sq_reseterror = NULL; sq_getlasterror = NULL; /*raw object handling*/ sq_getstackobj = NULL; sq_pushobject = NULL; sq_addref = NULL; sq_release = NULL; sq_getrefcount = NULL; sq_resetobject = NULL; sq_objtostring = NULL; sq_objtobool = NULL; sq_objtointeger = NULL; sq_objtofloat = NULL; sq_objtouserpointer = NULL; sq_getobjtypetag = NULL; sq_getvmrefcount = NULL; /*GC*/ sq_collectgarbage = NULL; sq_resurrectunreachable = NULL; /*serialization*/ sq_writeclosure = NULL; sq_readclosure = NULL; /*mem allocation*/ sq_malloc = NULL; sq_realloc = NULL; sq_free = NULL; /*debug*/ sq_stackinfos = NULL; sq_setdebughook = NULL; sq_setnativedebughook = NULL; /*compiler helpers*/ sqstd_loadfile = NULL; sqstd_dofile = NULL; sqstd_writeclosuretofile = NULL; /*blob*/ sqstd_createblob = NULL; sqstd_getblob = NULL; sqstd_getblobsize = NULL; /*string*/ sqstd_format = NULL; #endif // SQMOD_PLUGIN_API }