コード例 #1
0
ファイル: loadlib.c プロジェクト: littlesome/xLua
/*
** Try to find a load function for module 'modname' at file 'filename'.
** First, change '.' to '_' in 'modname'; then, if 'modname' has
** the form X-Y (that is, it has an "ignore mark"), build a function
** name "luaopen_X" and look for it. (For compatibility, if that
** fails, it also tries "luaopen_Y".) If there is no ignore mark,
** look for a function named "luaopen_modname".
*/
static int loadfunc (lua_State *L, const char *filename, const char *modname) {
  const char *openfunc;
  const char *mark;
  modname = luaL_gsub(L, modname, ".", LUA_OFSEP);
  mark = strchr(modname, *LUA_IGMARK);
  if (mark) {
    int stat;
    openfunc = lua_pushlstring(L, modname, mark - modname);
    openfunc = lua_pushfstring(L, LUA_POF"%s", openfunc);
    stat = lookforfunc(L, filename, openfunc);
    if (stat != ERRFUNC) return stat;
    modname = mark + 1;  /* else go ahead and try old-style name */
  }
  openfunc = lua_pushfstring(L, LUA_POF"%s", modname);
  return lookforfunc(L, filename, openfunc);
}
コード例 #2
0
ファイル: libs_package.cpp プロジェクト: actboy168/YDWE
	static int loadfunc(lua_State *L, const char *filename, const char *modname) {
		const char *openfunc;
		const char *mark;
		modname = luaL_gsub(L, modname, ".", "_");
		mark = strchr(modname, *LUA_IGMARK);
		if (mark) {
			int stat;
			openfunc = lua_pushlstring(L, modname, mark - modname);
			openfunc = lua_pushfstring(L, "luaopen_%s", openfunc);
			stat = lookforfunc(L, filename, openfunc);
			if (stat != 2) return stat;
			modname = mark + 1;
		}
		openfunc = lua_pushfstring(L, "luaopen_%s", modname);
		return lookforfunc(L, filename, openfunc);
	}
コード例 #3
0
ファイル: loadlib.c プロジェクト: littlesome/xLua
static int ll_loadlib (lua_State *L) {
  const char *path = luaL_checkstring(L, 1);
  const char *init = luaL_checkstring(L, 2);
  int stat = lookforfunc(L, path, init);
  if (stat == 0)  /* no errors? */
    return 1;  /* return the loaded function */
  else {  /* error; error message is on stack top */
    lua_pushnil(L);
    lua_insert(L, -2);
    lua_pushstring(L, (stat == ERRLIB) ?  LIB_FAIL : "init");
    return 3;  /* return nil, error message, and where */
  }
}