static lua_CFunction ll_sym(lua_State *L, void *lib, const char *sym) { lua_CFunction f = (lua_CFunction)GetProcAddress((HINSTANCE)lib, sym); if (f == NULL) pusherror(L); return f; }
static void *ll_load (lua_State *L, const char *path, int seeglb) { HMODULE lib = LoadLibraryExA(path, NULL, LUA_LLE_FLAGS); (void)(seeglb); /* not used: symbols are 'global' by default */ if (lib == NULL) pusherror(L); return lib; }
static void *alien_load (lua_State *L, const char *libname) { HINSTANCE lib = LoadLibrary(libname); if (lib == NULL) pusherror(L); return lib; }
static void *ll_load (lua_State *L, const char *path) { HINSTANCE lib = LoadLibraryA(path); if (lib == NULL) pusherror(L); return lib; }
static bool searchVar(_stdString* path,XOScript* scr) { //namespace.class.var означает глобальную переменную //var означает локальную переменную int gv=_stdStr::indexof(path,'.'); global=gv>0; if(global) { _stdList* parts=_stdStr::split(path,'.'); _stdString*nm=(_stdString*)_stdLst::get(parts,0); _stdString*cl=(_stdString*)_stdLst::get(parts,1); _stdString*vn=(_stdString*)_stdLst::get(parts,2); //поиск пространсва имён for(int i =0;i<scr->Namespaces->count;i++) { XONamespace* xs=(XONamespace*)_stdLst::get(scr->Namespaces,i); if(_stdStr::compareWith(xs->name,nm)) { //поиск класса for(int j =0;j<xs->Classes->count;j++) { XOClass* xc=(XOClass*)_stdLst::get(xs->Classes,j); if(_stdStr::compareWith(xc->name,cl)) { //поиск переменной for(int k =0;k<xc->Variables->count;k++) { XOVariable* xv=(XOVariable*)_stdLst::get(xc->Variables,k); if(_stdStr::compareWith(vn,xv->name)) { //ДА! НАЙДЕНА! PATH[0]=i;PATH[1]=j;PATH[2]=k; _stdLst::DELasSTDSTRINGs(parts); return false; } }//---v } }//---c } }//---n _stdLst::DELasSTDSTRINGs(parts); //НИЧЕГО не найдено pusherror("Global var not defined!: ",path->ptr); }else{ //поиск конкретно в функции XONamespace* xs=(XONamespace*)_stdLst::get(scr->Namespaces,CPATH[0]); XOClass* xc=(XOClass*)_stdLst::get(xs->Classes,CPATH[1]); XOFunction* xf=0; xf=(XOFunction*)_stdLst::get(xc->Functions,CPATH[2]); if(CPATH[2]<0)xf=xc->illuminator; for(int u =0;u<xf->Variables->count;u++) { XOVariable* xv=(XOVariable*)_stdLst::get(xf->Variables,u); if(_stdStr::compareWith(path,xv->name)) { //ДА! НАЙДЕНА! PATH[0]=u; PATH[1]=-1; PATH[2]=-1; return false; } } } //НИЧЕГО не найдено pusherror("Local var not defined!: ",path->ptr); }