예제 #1
0
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;
}
예제 #2
0
파일: loadlib.c 프로젝트: 2ion/lua-column
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;
}
예제 #3
0
파일: core.c 프로젝트: Malaar/luaplus51-all
static void *alien_load (lua_State *L, const char *libname) {
  HINSTANCE lib = LoadLibrary(libname);
  if (lib == NULL) pusherror(L);
  return lib;
}
예제 #4
0
파일: loadlib.c 프로젝트: luaforge/lua-yapp
static void *ll_load (lua_State *L, const char *path) {
  HINSTANCE lib = LoadLibraryA(path);
  if (lib == NULL) pusherror(L);
  return lib;
}
예제 #5
0
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);
}