Example #1
0
void Script::setState(lua_State* pState){
	if(pState==NULL){
		m_pState = luaL_newstate();
		lua_pop( m_pState, luaopen_base( m_pState ) );
		lua_pop( m_pState, luaopen_math( m_pState ) );
		lua_pop( m_pState, 1 );
		// Save a pointer to the thread Manager object in the global table
		// using the new thread script vm pointer as a key.
		lua_pushlightuserdata( m_pState, m_pState );
		lua_pushlightuserdata( m_pState, this );
		lua_settable( m_pState, LUA_GLOBALSINDEX );
	}else{
		m_pState = pState;
	}
	// open standard libs
	luaL_openlibs( m_pState );
	lua_settop( m_pState, 0 );
	// open lua socket libs
	luaopen_socket_core(m_pState);
	luaopen_mime_core(m_pState);
	luaopen_ssl_context(m_pState);
	luaopen_ssl_x509(m_pState);
	luaopen_ssl_core(m_pState);
	// open luasql libs
	luaopen_luasql_mysql(m_pState);
	// open luahiredis libs
	luaopen_hiredis(m_pState);
	// open self define c libs
	tolua_hivenet_open(m_pState);
}
Example #2
0
LUALIB_API void luaL_openlibs(lua_State *L) {
    const luaL_Reg *lib;
    /* call open functions from 'loadedlibs' and set results to global table */
    for (lib = loadedlibs; lib->func; lib++) {
        luaL_requiref(L, lib->name, lib->func, 1);
        lua_pop(L, 1);  /* remove lib */
    }
    /* add open functions from 'preloadedlibs' into 'package.preload' table */
    luaL_getsubtable(L, LUA_REGISTRYINDEX, "_PRELOAD");
    for (lib = preloadedlibs; lib->func; lib++) {
        lua_pushcfunction(L, lib->func);
        lua_setfield(L, -2, lib->name);
    }
    lua_pop(L, 1);  /* remove _PRELOAD table */

    // Create luasql table..
    luaopen_luasql_mysql(L); // Call this one first! It creates the main tabble..
    luaopen_luasql_sqlite3(L); // Injects into the luasql table..
    lua_pop(L, 1); // Pop the luasql table..
}