initlua(void) { PyObject *m; m = Py_InitModule("lua", lua_methods); if (!L) { L = lua_open(); luaopen_base(L); luaopen_table(L); luaopen_io(L); luaopen_string(L); luaopen_debug(L); luaopen_loadlib(L); luaopen_python(L); lua_settop(L, 0); } }
PyMODINIT_FUNC PyInit_lua(void) { PyObject *m; #if PY_MAJOR_VERSION >= 3 if (PyType_Ready(&LuaObject_Type) < 0) return NULL; m = PyModule_Create(&lua_module); if (m == NULL) return NULL; #else if (PyType_Ready(&LuaObject_Type) < 0) return; m = Py_InitModule3("lua", lua_methods, "Lunatic-Python Python-Lua bridge"); if (m == NULL) return; #endif Py_INCREF(&LuaObject_Type); if (!LuaState) { #if defined(WIN32) FILE* file; char filename[_MAX_PATH]; char* slashptr; GetModuleFileName(GetModuleHandle("lua.pyd"), filename, _MAX_PATH); slashptr = strrchr(filename, '\\'); if (slashptr) { slashptr++; strcpy(slashptr, "lua.link"); file = fopen(filename, "r"); if (file) { char buffer[ MAX_PATH ]; if (fgets(buffer, sizeof(buffer), file) != NULL) { char *ptr = buffer + strlen(buffer) - 1; size_t len; while (ptr != buffer && (*ptr == '\n' || *ptr == '\r')) *ptr-- = 0; ++ptr; if (*ptr != '/' || *ptr != '\\') { *ptr++ = '/'; *ptr = 0; } if (buffer[0] == '/' || (buffer[1] && buffer[1] == ':')) strcpy(filename, buffer); else strcpy(slashptr, buffer); len = strlen(filename); #ifdef _DEBUG strcpy(filename + len, "lua51_debug.dll"); #else strcpy(filename + len, "lua51.dll"); #endif LoadLibrary(filename); } fclose(file); } } #endif /* WIN32 */ LuaState = luaL_newstate(); luaL_openlibs(LuaState); luaopen_python(LuaState); lua_settop(LuaState, 0); } #if PY_MAJOR_VERSION >= 3 return m; #endif }