본문 바로가기

프로그래밍/API

luaL_namespace() - 독립된 namespace 생성...


lua로 개발하다 보면 기본 namespace와 독립적인 공간이 필요할때가 있다.
즉, _G와 분리된 공간..

아래 소스는 이러한 처리를 해 주는 소스로, _G와 독립된 namespace를 갖도록 만들어 준다.

void luaL_namespace( lua_State *L)
{
 lua_newtable( L); { /* T1: global */
  lua_newtable( L); { /* T2: metatable */
   lua_pushliteral( L, "__index"); {
    lua_pushvalue( L, LUA_GLOBALSINDEX);
   } lua_settable( L, -3); /* T2에 __index 항목을 추가한다. */
  } lua_setmetatable( L, -2); /* T1를 metatable을 설정(T2) */
 } lua_replace( L, LUA_GLOBALSINDEX); /* T1을 새로운 _G로 교환 */
}

참 재미있는 lua다~